這是一位大師的講oracle時(shí)的第一節(jié)課的課件,專門講如何學(xué)習(xí)oracle
東臺(tái)網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,東臺(tái)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為東臺(tái)成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的東臺(tái)做網(wǎng)站的公司定做!
一、目前學(xué)習(xí)Oracle的兩派人--------1.只是操作,2.學(xué)習(xí)理論深入了解
二、Oracle的重要性
三、學(xué)習(xí)前提
學(xué)習(xí)Oracle的前提是:熟悉Linux操作系統(tǒng)、Unix操作系統(tǒng)、存儲(chǔ)、帶庫(kù)。主要是管理和操作系統(tǒng)原理
四、學(xué)習(xí)方法
1、sql、pl/sql(網(wǎng)上有很多的視頻,可以做一個(gè)簡(jiǎn)單的入手,然后看幾本書,多做實(shí)驗(yàn))
作為oracle的基本功,需要大家對(duì)sql和plsql非常的熟悉。特別是sql里面的多表連接、子查詢、各種新版本的函數(shù),以及plsql里面的所有語(yǔ)法。建議大家拿出足夠的時(shí)間來(lái)研究這兩塊。不要認(rèn)為這是開(kāi)發(fā)人員的工作,他也是DBA的重要工作,而且對(duì)DBA的要求更高,你不但能看懂,還要能夠找出問(wèn)題。學(xué)些這方面知識(shí)的要點(diǎn)就是:多練、多思考,多測(cè)試。
2、Oracle管理(體系結(jié)構(gòu))(這一塊一定要聽(tīng)課,而且是要聽(tīng)“大師”的課、多討論)
這是Oracle的難點(diǎn),Orcle技術(shù)博大精深,主要的難點(diǎn)就集中在這里面。包括Oracle的存儲(chǔ)管理、對(duì)象管理、內(nèi)存和進(jìn)程、undo管理、初始化參數(shù)、數(shù)據(jù)字典視圖、安全、latch和lock、權(quán)限和角色、資源調(diào)度、閃回、日志原理等。
學(xué)習(xí)這一塊知識(shí)的時(shí)候,一個(gè)重點(diǎn)是:要知道原理和“根”,知道表面的東西沒(méi)有任何意義。
知道原理以后,通過(guò)實(shí)驗(yàn)去證明,將原理總結(jié)出來(lái)。
這一塊學(xué)習(xí)的好還是不好,直接決定了以后的一個(gè)備份恢復(fù)、優(yōu)化、排錯(cuò)。
這一塊雖然是研究管理,但是更加注重原理和體系結(jié)構(gòu)的分析和解剖。
應(yīng)該叫做“深入剖析Oracle體系結(jié)構(gòu)”,多深都需要。
在這一部分的學(xué)習(xí)中,已經(jīng)學(xué)習(xí)了很多優(yōu)化的內(nèi)容,在學(xué)習(xí)任何一個(gè)知識(shí)點(diǎn)的時(shí)候,我們都離不開(kāi)對(duì)性能的分析。
3、備份恢復(fù)(聽(tīng)聽(tīng)課、看幾本書,多做做實(shí)驗(yàn)、多討論)
有了第二部分的鋪墊,這一章的學(xué)習(xí)相對(duì)有意思,前提是我們對(duì)Oracle的日志原理研究得較深,對(duì)oracle的內(nèi)存和進(jìn)程研究得較深。策劃一個(gè)完美和正確的備份計(jì)劃和實(shí)施方案(具體要分析出原理),實(shí)施備份;對(duì)各種損壞進(jìn)行恢復(fù)(還是要能夠夠分析出原理);另外可以做一些高難度的恢復(fù)實(shí)驗(yàn)(還是老話、要能夠分析出原理)。
4、優(yōu)化(單實(shí)例優(yōu)化)(還是要聽(tīng)課,最好聽(tīng)一些專題性的,深入講解的專家課,還是要看一些經(jīng)典的書籍,特別是英文書)
這一塊完全是第一部分和第二部分的一個(gè)結(jié)合。這一塊的學(xué)習(xí)沒(méi)有最深,只有更深,學(xué)習(xí)方法和第二部分類似。
首先需要大家掌握一些Oracle的優(yōu)化方面的基礎(chǔ)知識(shí),例如深入分析索引原理、分區(qū)、等待事件、時(shí)間統(tǒng)計(jì)模型、動(dòng)態(tài)性能視圖、操作系統(tǒng)的一些性能優(yōu)化和查看命令,例如:top、iostat、vmstat、sar、pmap、prstat、filemon、nmon、svmon等。
最關(guān)鍵的還是要做三件事情:Oracle的動(dòng)態(tài)性能視圖、Oracle的報(bào)告(trace、statspack、awr、addm、ash)、執(zhí)行計(jì)劃;對(duì)這三塊要熟悉和分析出來(lái)。這個(gè)部分的分析和動(dòng)手實(shí)驗(yàn)很重要。
5、RAC(可以聽(tīng)聽(tīng)課,有了前面的基礎(chǔ)以后,基本上自己就能看懂書了,因此,可以看書,也可以聽(tīng)一些專題課)
現(xiàn)在RAC的使用越來(lái)越多,學(xué)習(xí)RAC的重點(diǎn)還是:基礎(chǔ)原理+RAC優(yōu)化。
RAC系統(tǒng)的優(yōu)化分為兩個(gè)步驟:RAC系統(tǒng)優(yōu)化和單實(shí)例優(yōu)化;根據(jù)RAC的基礎(chǔ)原理,能夠設(shè)計(jì)高性能的RAC系統(tǒng),能夠分析RAC性能問(wèn)題。對(duì)RAC的動(dòng)態(tài)性能視圖、等待事件、報(bào)告,能夠看懂和分析。
6、GC、DG、Stream、Gold Gate等
對(duì)于這些工具和組件,我們熟悉其體系結(jié)構(gòu),原理,一些監(jiān)控性能的工具等。
學(xué)習(xí)這些部分的幾個(gè)點(diǎn):熟悉體系結(jié)構(gòu)、原理;搭建;監(jiān)控(包括故障和性能);排錯(cuò)和優(yōu)化。
7、SQL優(yōu)化(看一本經(jīng)典的英文書籍、多做實(shí)驗(yàn)、多實(shí)踐、多分析)
為什么單獨(dú)的拿出來(lái)呢?因?yàn)檫@部分需要持之以恒的進(jìn)行研究和實(shí)驗(yàn),而且工作中幾乎是每天都要做的事情。
目前這方面,有一些比較經(jīng)典的中文書,值得大家去看看。
8、PL/SQL深度學(xué)習(xí)
在這部分學(xué)習(xí)的時(shí)候,就要時(shí)時(shí)刻刻注意性能,主要是注意測(cè)試。
9、綜合性項(xiàng)目實(shí)戰(zhàn):
模擬環(huán)境:
規(guī)劃、搭建、測(cè)試、管理、排錯(cuò)、優(yōu)化、分析
實(shí)戰(zhàn)環(huán)境:
同上
Oracle的安全措施主要有三個(gè)方面,一是用戶標(biāo)識(shí)和鑒定;二是授權(quán)和檢查機(jī)制;三是審計(jì)技術(shù)(是否使用審計(jì)技術(shù)可由用戶靈活選擇);除此之外,Oracle還允許用戶通過(guò)觸發(fā)器靈活定義自己的安全性措施。
一、用戶標(biāo)識(shí)和鑒定
在Oracle中,最外層的安全性措施是讓用戶標(biāo)識(shí)自己的名字,然后由系統(tǒng)進(jìn)行核實(shí)。Oracle允許用戶重復(fù)標(biāo)識(shí)三次,如果三次未通過(guò),系統(tǒng)自動(dòng)退出。
二、授權(quán)與檢查機(jī)制
Oracle的權(quán)限包括系統(tǒng)權(quán)限和數(shù)據(jù)庫(kù)對(duì)象的權(quán)限兩類,采用非集中的授權(quán)機(jī)制,即DBA負(fù)責(zé)授予與回收系統(tǒng)權(quán)限,每個(gè)用戶授予與回收自己創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象的權(quán)限。
Oracle允許重復(fù)授權(quán),即可將某一權(quán)限多次授予同一用戶,系統(tǒng)不會(huì)出錯(cuò)。Oracle也允許無(wú)效回收,即用戶沒(méi)有某種權(quán)限,但回收此權(quán)限的操作仍算成功。
1. 系統(tǒng)權(quán)限
Oracle提供了80多種系統(tǒng)權(quán)限,如創(chuàng)建會(huì)話、創(chuàng)建表、創(chuàng)建視圖、創(chuàng)建用戶等。DBA在創(chuàng)建一個(gè)用戶時(shí)需要將其中的一些權(quán)限授予該用戶。
Oracle支持角色的概念。所謂角色就是一組系統(tǒng)權(quán)限的集合,目的在于簡(jiǎn)化權(quán)限管理。Oracle除允許DBA定義角色外,還提供了預(yù)定義的角色,如CONNECT,RESOURCE和DBA。
具有CONNECT角色的用戶可以登錄數(shù)據(jù)庫(kù),執(zhí)行數(shù)據(jù)查詢和操縱。即可以執(zhí)行ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等操作。
RESOURCE角色可以創(chuàng)建表,即執(zhí)行CREATE TABLE操作。創(chuàng)建表的用戶將擁有對(duì)該表的所有權(quán)限。
DBA角色可以執(zhí)行某些授權(quán)命令,創(chuàng)建表,對(duì)任何表的數(shù)據(jù)進(jìn)行操縱。它涵蓋了前兩種角色,此外還可以執(zhí)行一些管理操作,DBA角色擁有最高級(jí)別的權(quán)限。
例如DBA建立一用戶U1后,欲將ALTER TABLE,CREATE VIEW,CREATE INDEX,DROP TABLE,DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT,UPDATE,DELETE,AUDIT,NOAUDIT等系統(tǒng)權(quán)限授予U1,則可以只簡(jiǎn)單地將CONNECT角色授予U1即可:
GRANT CONNECT TO U1;
這樣就可以省略十幾條GRANT語(yǔ)句。
2. 數(shù)據(jù)庫(kù)對(duì)象的權(quán)限
在Oracle中,可以授權(quán)的數(shù)據(jù)庫(kù)對(duì)象包括基本表、視圖、序列、同義詞、存儲(chǔ)過(guò)程、函數(shù)等,其中最重要的是基本表。
對(duì)于基本表Oracle支持三個(gè)級(jí)別的安全性:表級(jí)、行級(jí)和列級(jí)。
(1)表級(jí)安全性
表的創(chuàng)建者或者DBA可以把表級(jí)權(quán)限授予其他用戶,表級(jí)權(quán)限包括:
ALTER:修改表定義
DELETE:刪除表記錄
INDEX:在表上建索引
INSERT:向表中插入數(shù)據(jù)記錄
SELECT:查找表中記錄
UPDATE:修改表中的數(shù)據(jù)
ALL:上述所有權(quán)限
表級(jí)授權(quán)使用GRANT和REVOKE語(yǔ)句。
(2)行級(jí)安全性
Oracle行級(jí)安全性由視圖實(shí)現(xiàn)。用視圖定義表的水平子集,限定用戶在視圖上的操作,就為表的行級(jí)提供了保護(hù)。視圖上的授權(quán)與回收與表級(jí)完全相同。
例如,只允許用戶U2查看Student表中信息系學(xué)生的數(shù)據(jù),則首先創(chuàng)建信息系學(xué)生的視圖S_IS,然后將該視圖的SELECT權(quán)限授予U2用戶。
由于ORACLE數(shù)據(jù)庫(kù)產(chǎn)品是當(dāng)前數(shù)據(jù)庫(kù)技術(shù)的典型代表,她的產(chǎn)品除了數(shù)據(jù)庫(kù)系統(tǒng)外,還有應(yīng)用系統(tǒng)、開(kāi)發(fā)工具等。剛接觸Oracle的人員都有這樣的感覺(jué):Oracle的產(chǎn)品太多,每個(gè)產(chǎn)品內(nèi)容精深,不知道從哪兒開(kāi)始學(xué)才好。為了用少量時(shí)間更好地理解和使用oracle 數(shù)據(jù)庫(kù)系統(tǒng),有必要對(duì)oracle的一些基本術(shù)語(yǔ)及概念進(jìn)行了解,下面給出一些在管理中經(jīng)常用到的概念和術(shù)語(yǔ),供初學(xué)者快速了解Oracle數(shù)據(jù)庫(kù)系統(tǒng)提供方便。
§1.1 ORACLE7和ORACLE8
ORACLE7是一種完全的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),它不支持面向?qū)ο蟆?/p>
ORACLE8 則是一個(gè)引入面向?qū)ο蟮臄?shù)據(jù)庫(kù)系統(tǒng),它既非純的面向?qū)ο蟮臄?shù)據(jù)庫(kù)也非純的關(guān)系數(shù)據(jù)庫(kù),它是兩者的結(jié)合,因此叫做“對(duì)象關(guān)系數(shù)據(jù)庫(kù)”。
§1.2 ORACLE8 特點(diǎn)
ORACLE8 于 1997年6月正式發(fā)布,它包括了幾乎所有的數(shù)據(jù)庫(kù)技術(shù),因此被認(rèn)為是未來(lái)企業(yè)級(jí)主選數(shù)據(jù)庫(kù)之一。主要有以下特點(diǎn):
1.對(duì)象/關(guān)系模型
ORACLE8對(duì)于對(duì)象模型采取較為現(xiàn)實(shí)和謹(jǐn)慎的態(tài)度,使用了對(duì)象/關(guān)系模型,即在完全支持傳統(tǒng)關(guān)系模型的基礎(chǔ)上,為對(duì)象機(jī)制提供了有限的支持。ORACLE8不僅能夠處理傳統(tǒng)的表結(jié)構(gòu)信息,而且能夠管理由C++,Smalltalk 以及其它開(kāi)發(fā)工具生成的多媒體數(shù)據(jù)類型,如文本,視頻,圖形,空間對(duì)向等。這種做法允許現(xiàn)有軟件開(kāi)發(fā)產(chǎn)品與工具軟件及ORACLE8應(yīng)用軟件共存,保護(hù)了客戶的投資。
2.數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的動(dòng)態(tài)可伸縮性
ORACLE8引入了連接存儲(chǔ)池(connection polling)和多路復(fù)用(multiplexing)機(jī)制,提供了對(duì)大型對(duì)象的支持。當(dāng)需要支持一些特殊數(shù)據(jù)類型時(shí),用戶可以創(chuàng)建軟件插件(catridge )來(lái)實(shí)現(xiàn)。ORACLE8采用了高級(jí)網(wǎng)絡(luò)技術(shù),提高共享池和連接管理器來(lái)提高系統(tǒng)的可括性,容量可從幾 GB 到 幾百 TB 字節(jié),可允許10萬(wàn)用戶同時(shí)并行訪問(wèn),ORACLE 的數(shù)據(jù)庫(kù)中每個(gè)表可以容納 1000列,能滿足目前數(shù)據(jù)庫(kù)及數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用的需要。
ORACLE 公司稱,ORACLE8可以支持達(dá) 512PB的數(shù)據(jù)量。但目前還未有哪一家用戶的數(shù)據(jù)庫(kù)的數(shù)據(jù)量達(dá)到這個(gè)數(shù)量。下面是幾種常用數(shù)據(jù)量的等價(jià)關(guān)系:
1MB = 1024 KB
1GB = 1Gigabyte Byte = 1024 MB
1TB = 1TeraByte = 1024 GB = 1024*1024MB
1PB = 1PeraByte = 1024 TB = 1024 * 1024 * 1024 MB
1EB = 1ExaByte = 1024 PB = 1024 * 1024 *1024 *1024 MB
3.系統(tǒng)的可用性和易用性
ORACLE8提供了靈活多樣的數(shù)據(jù)分區(qū)功能,一個(gè)分區(qū)可以是一個(gè)大型表,也可以是索引易于管理的小塊,可以根據(jù)數(shù)據(jù)的取值分區(qū)。有效地提高了系統(tǒng)操作能力及數(shù)據(jù)可用性 ,減少I/O 瓶頸。ORACLE8還對(duì)并行處理進(jìn)行了改進(jìn),在位圖索引,查詢,排序,連接和一般索引掃描等操作引入并行處理,提高了單個(gè)查詢的并行度。ORACLE8通過(guò)并行服務(wù)器(Parallel Server Option )來(lái)提高系統(tǒng)的可用性。
4.系統(tǒng)的可管理性和數(shù)據(jù)安全功能
ORACLE8提供了自動(dòng)備份和恢復(fù)功能,改進(jìn)了對(duì)大規(guī)模和更加細(xì)化的分布式操作系統(tǒng)的支持,如加強(qiáng)了SQL 操作復(fù)制的并行性。為了幫助客戶有效地管理整個(gè)數(shù)據(jù)庫(kù)和應(yīng)用系統(tǒng),ORACLE還提供了企業(yè)管理系統(tǒng)(ORACLE Enterprise Manager),數(shù)據(jù)庫(kù)管理員可以從一個(gè)集中控制臺(tái)拖放式圖形用戶界面管理ORACLE的系統(tǒng)環(huán)境。
ORACLE8通過(guò)安全服務(wù)器中提供的安全服務(wù),加強(qiáng)了ORACLE Web Server 中原有的用戶驗(yàn)證和用戶管理。
5.面向網(wǎng)絡(luò)計(jì)算
ORACLE8i在 與JAVA VM 及 CORBA ORB 集成后,將成為NCA(網(wǎng)絡(luò)計(jì)算機(jī)體結(jié)構(gòu))的核心部件。NCA是ORACLE 關(guān)于分布式對(duì)象與網(wǎng)絡(luò)計(jì)算機(jī)的戰(zhàn)略規(guī)劃。ORACLE8 對(duì)NCA產(chǎn)生了巨大影響,簡(jiǎn)化了應(yīng)用軟件的化分,推動(dòng)了瘦型客戶機(jī)及Web 應(yīng)用軟件的發(fā)展。在ORACLE8 FOR NT 中還提共了新產(chǎn)品Web 發(fā)布助理(Web Publishing Assistant ORACLE),提供了一種在WORD WIDE WEB 上發(fā)布數(shù)據(jù)庫(kù)信息的簡(jiǎn)便,有效的方法。
6.對(duì)多平臺(tái)的支持與開(kāi)放性
網(wǎng)絡(luò)結(jié)構(gòu)往往含有多個(gè)平臺(tái),ORACLE8 可以運(yùn)行于目前所有主流平臺(tái)上,如
SUN Solarise, Sequent Dynix/PTX,Intel Nt,HP_UX,DEC_UNIX,IBM AIX 和 SP等。ORACLE8 的異構(gòu)服務(wù)為同其它數(shù)據(jù)源以及使用SQL 和PL/SQL的服務(wù)進(jìn)行通訊提供了必要的基礎(chǔ)設(shè)施。ORACLE8 繼續(xù)至力于對(duì)開(kāi)放標(biāo)準(zhǔn)規(guī)范SQL3,JDBC,JSQL和CORBA 的支持。
§1.3 ORACLE8和ORACLE8i
當(dāng) ORACLE 8 第一次發(fā)行時(shí),它提供了優(yōu)于 ORACLE 7 的性能和選件,但是它基本是ORACLE7 的引擎。 在ORACLE8 的后來(lái)版本中不斷作過(guò)多次的完善,出現(xiàn) ORACLE 8.0.X 版本。然而1998年初發(fā)行(推出)的 ORACLE 8I 可以被看作是 ORACLE 8 的功能擴(kuò)展集。
由于ORACLE 8I 比 ORACLE 8 提供了更多的功能,它除了共同的RDBMS功能外,還提供了許多與INTERNET 有關(guān)的能力,最重要的是它將 JAVA 集成為一種內(nèi)部的數(shù)據(jù)語(yǔ)言,這種語(yǔ)言可充當(dāng)或替代品,而且它還集成了一個(gè)WEB服務(wù)器和開(kāi)發(fā)平臺(tái)(Web DB )。對(duì)ORACLE 8.0.x 來(lái)說(shuō)只到 ORACLE 8.0.5 版本就終止了,接著就推出了 ORACLE8i 8.1.5版本,ORACLE8i 8.1.5版本也經(jīng)常被稱為Release 1;而ORACLE8i 8.1.6版本被稱為Release 2;ORACLE8i 8.1.7版本被稱為Release 3。
§1.4 ORACLE8i和ORACLE9i
在正式進(jìn)入21世紀(jì)前的2000年年底,ORACLE公司正式發(fā)布了ORACLE 9i 新數(shù)據(jù)庫(kù)系統(tǒng)。原先預(yù)料可能會(huì)有ORACLE 8i V8.1.8等版本,但ORACLE8i版本只推出8.1.7就被Oracle9i所代替。ORACLE公司和其它的軟件公司一樣,為了搶占市場(chǎng),不再愿意在原來(lái)版本上再作更多的改進(jìn)和優(yōu)化工作,而是直接的推出新產(chǎn)品這樣一種策略。ORACLE9i 與ORACLE8i 比較,ORACLE 9i 主要包括下面三大部分:
l 數(shù)據(jù)庫(kù)核心(Database )
l 應(yīng)用服務(wù)器(Application Server )
l 開(kāi)發(fā)工具集(Developer Suite )
Oracle9i 主要焦點(diǎn)(Oracle9i Focus ):
l 電子商務(wù)智能化( E-Business Intelligence )
l 應(yīng)用開(kāi)發(fā)( Applications Development )
l 應(yīng)用主機(jī)( Applications Hosting )
l 門戶與內(nèi)容( Portals and Content )
l 電子商務(wù)連續(xù)性( E-Business Continuity )
Oracle9i 為了結(jié)合 Internet 市場(chǎng)設(shè)計(jì)。Oracle9i適合并勝任市場(chǎng)上所有的苛刻要求。
l Oracle9I實(shí)時(shí)應(yīng)用( Oracle9i Real Application)
l Oracle9I高可用性(Oracle9i High Availability)
l Oracle9I 系統(tǒng)管理( Oracle9i Systems Management )
l Oracle9I 安全( Oracle9i Security)
Oracle9i 數(shù)據(jù)庫(kù)服務(wù)(Oracle9i Database Services):
l 商業(yè)智能與數(shù)據(jù)倉(cāng)庫(kù)( Business Intelligence and Data Warehousing)
l Oracle9I動(dòng)態(tài)服務(wù)( Oracle9i Dynamic Services)
l Oracle9I JAVA 和XML(Oracle9i Java and XML)
l 電子商務(wù)集成( E-Business Integration )
§1.5 ORACLE OAS和ORACLE iAS
目前的ORACLE公司的iAS 的早期版本是 ORACLE Web Server ,后來(lái)第4版改名為ORACLE APPLICATION SERVER ,2000年底前又改名為 ORACLE9i Internet Application Server(ORACLE iAS)。目前的iAS可以與ORACLE8i 或ORACLE9i 結(jié)合在一起的綜合開(kāi)發(fā)工具。為創(chuàng)建和部署任何基于網(wǎng)絡(luò)的應(yīng)用程序提供了一個(gè)完整的Internet 平臺(tái),iAS包括了門戶、事務(wù)應(yīng)用、商業(yè)智能工具、無(wú)線上網(wǎng)應(yīng)用和企業(yè)集成等。
Oracle Internet Application Server 提供了行業(yè)中最全面的中間層產(chǎn)品,包括通信、表示、商業(yè)邏輯、數(shù)據(jù)緩存和系統(tǒng)服務(wù)等。
1.通信服務(wù):
基于Apache 的ORACLE HTTP Server,主要包括下面模塊:
mod_jserv:將對(duì)servlet 的HTTP請(qǐng)求分發(fā)到Oracle iAS 的Servlet 引擎。
Mod_perl:將perl 程序的HTTP 請(qǐng)求分發(fā)到Apache Web Server 的Perl Interpreter。
Mod_ssl:提供基于SSL證書的公共密鑰,它被用來(lái)在客戶端和Apache Server 之間進(jìn)行加密通信。
Mod_plsql:Oracle 專用模塊,用來(lái)將HTTP請(qǐng)求傳到數(shù)據(jù)庫(kù)內(nèi)的PL/SQL和Java存儲(chǔ)過(guò)程。
2. 表示服務(wù)
提供下面方法進(jìn)行內(nèi)容表示:
Oracle portal(Oracle 門戶)
Apache Jserver (Apache Java 服務(wù)器)
Perl Interpreter( Perl 解釋程序 )
Oracle JavaServer Pager(JSP)
Oracle PL/SQL Server Pages(PSP)
3.商業(yè)邏輯服務(wù)
可提供以下服務(wù)組件:
Oracle8i JVM( Java 虛擬機(jī))
Oracle8i PL/SQL
Java 商業(yè)組件(BC4J)
Form Service
Report Service
Discoverer Viewer
4.數(shù)據(jù)管理服務(wù)
Oracle 8i cache
5.系統(tǒng)服務(wù)
Oracle Enterprise Manager(Oracle 企業(yè)管理器)
Oracle Advanced Security (Oracle 高級(jí)安全性)
Developer's KITS(開(kāi)發(fā)工具),包括:
l Oracle database client developer's Kit
l Oracle XML developer's Kit(XDK)
l Oracle LDAP developer's Kit
§1.6 ORACLE Application R11i
Oracle 公司除了提供完美的數(shù)據(jù)庫(kù)系統(tǒng)外,也提供完整的解決方案的套件,即全套應(yīng)用系統(tǒng),通常稱作 Oracle Application R11i。它是一全面集成的電子商務(wù)套件。它包括:
1.?dāng)?shù)據(jù)倉(cāng)庫(kù)平臺(tái)
l Oracle 8i 企業(yè)級(jí)數(shù)據(jù)庫(kù)服務(wù)器
l Oracle Warehouse Builder(數(shù)據(jù)倉(cāng)庫(kù)構(gòu)造器)
2.商業(yè)智能工具集
l Oracle Discoverer
l Oracle Express產(chǎn)品系列
l Oracle darwin
3.Oracle 金融服務(wù)應(yīng)用
l 績(jī)效管理
l 客戶關(guān)系管理
l 風(fēng)險(xiǎn)管理
4.ORACLE財(cái)務(wù)系統(tǒng)
基于Internet 的財(cái)務(wù)管理系統(tǒng)包括下面模塊:
l 商業(yè)智能管理
l 預(yù)算管理
l 合并管理
l 現(xiàn)金預(yù)測(cè)管理
l 員工費(fèi)用管理
l Oracle 財(cái)務(wù)分析系統(tǒng)
l Oracle 項(xiàng)目管理系統(tǒng)
l 工作流程管理
l 預(yù)警系統(tǒng)
§1.7 ORACLE 服務(wù)器組件
l 過(guò)程組件
可以用于建立過(guò)程、觸發(fā)器(封裝),這些代碼可以存放在數(shù)據(jù)庫(kù)服務(wù)器中。Oracle,Sybase,Informix,Sql Server 都把這些所謂存儲(chǔ)過(guò)程存放在數(shù)據(jù)庫(kù)內(nèi),而DB2則把這些所謂存儲(chǔ)過(guò)程存放在服務(wù)器的另外一個(gè)專門分區(qū)內(nèi)。
l 分布選件
可以支持多臺(tái)服務(wù)器(在不同的地方)間的通信,即每個(gè)服務(wù)器上均有Oracle系統(tǒng),而分布選件就是把這些不同的地方的數(shù)據(jù)庫(kù)系統(tǒng)管理起來(lái)的部件。
l 并行選件
對(duì)一臺(tái)具有多個(gè)CPU的機(jī)器能進(jìn)行并行查詢、充分利用計(jì)算機(jī)的性能。
l 并行服務(wù)器
對(duì)于多臺(tái)機(jī)器(有自己的處理器)共同訪問(wèn)同一個(gè)硬盤這樣的結(jié)構(gòu)進(jìn)行管理,為用戶提供很高的容錯(cuò)性。當(dāng)某臺(tái)機(jī)器出現(xiàn)故障時(shí),可以安排用戶使用(登錄)到另一臺(tái)機(jī)器上。當(dāng)兩臺(tái)都出現(xiàn)故障時(shí),則整個(gè)系統(tǒng)都不能使用。
l 圖象選件
可以存儲(chǔ)、管理和提供實(shí)時(shí)的,全屏幕的圖象和高質(zhì)量的聲音給網(wǎng)絡(luò)上的用戶。
l 企業(yè)管理器
Oracle 提供一個(gè)幫助用戶管理系統(tǒng),應(yīng)用網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)工具“Oracle企業(yè)管理器(OEM)”.
l 空間數(shù)據(jù)選件(Spatial data option)
空間數(shù)據(jù)選件是一種存儲(chǔ)和檢索數(shù)據(jù)的新方法,在查詢中系統(tǒng)根據(jù)所關(guān)心的數(shù)據(jù)進(jìn)行組織,因此,數(shù)據(jù)庫(kù)性能的主要決定因素是所感興趣的數(shù)據(jù)庫(kù)集的大小。
l 上下文選件
是一種文本管理方案,它把非結(jié)構(gòu)化的文本數(shù)據(jù)管理如同結(jié)構(gòu)化一樣。可以建立和開(kāi)展基于文本的帶有類似SQL接口的應(yīng)用。這種方法只有 ORACLE8 及以后版本能支持。
l Web服務(wù)器
可以通過(guò)WWW來(lái)訪問(wèn)Oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
l OLAP選件
聯(lián)機(jī)分析處理,Oracle提供Oracle Express作為聯(lián)機(jī)分析處理。
§1.8 目前ORACLE8i 的主要產(chǎn)品
(Oracle9i產(chǎn)品在最后一天介紹)
l SQL*Plus
Oracle的SQL*Plus是標(biāo)準(zhǔn)SQL的一個(gè)超集,它除提供符合SQL標(biāo)準(zhǔn)的語(yǔ)句外,還提供一些Oracle特定的外加語(yǔ)句,set,column,Ttitle等。
l Oralce Forms
Oracle Forms的前身是SQL*Forms。SQL*Forms和Oracle Forms都是為用戶提供輸入、查詢、修改等功能的開(kāi)發(fā)工具,前者是在字符終端上運(yùn)行。后者是在圖形終端上運(yùn)行。Oracle Forms除了在許多觸發(fā)器及功能鍵繼承前者外,大部分的設(shè)計(jì)界面都發(fā)生了變化。
SQL*Forms不含Menu功能,Menu專門為一個(gè)產(chǎn)品叫SQL*Menu;而Oracle Forms 把Menu,Library 等融為一體,使功能更強(qiáng)大。
l Oracle Reports
Oracle Reports的先前版本是SQL*Reportwriter,自從Oracle7以后,將其發(fā)展為能支持Windows界面的開(kāi)發(fā)工具,在最新版本中,它可以訪問(wèn)其他主要數(shù)據(jù)庫(kù),如Sybase, Informix, DB2 ,Microsoft SQL Server等。
l Oracle Book
Oracle Book提供一個(gè)共享Oracle產(chǎn)品文本的聯(lián)機(jī)文檔生成與瀏覽工具。
l Oracle Loader
Oracle Loader早期就提供一個(gè)ODL(Oracle data Loader)數(shù)據(jù)加載工具。該工具可以把多種格式的文本數(shù)據(jù)加載到Oracle表中。后來(lái)的版本更名為SQL*Loader,現(xiàn)在叫Oracle Loader,目前版本可以把多媒體數(shù)據(jù)加載到數(shù)據(jù)庫(kù)系統(tǒng)中。
l Developer/2000 和 Oracle Developer
是一個(gè)綜合產(chǎn)品的總稱,它包括:
l Oracle Reports
l Oracle Forms
l Oracle Graphics
l Procedure Builder
四個(gè)部件,它的先前名稱叫CDE產(chǎn)品(即協(xié)同開(kāi)發(fā)環(huán)境),現(xiàn)在Oracle的開(kāi)發(fā)工具叫Oracle Developer。
l ORACLE Designer(Designer /2000)
ORACLE Designer 的前身是 Designer/2000,而Designer/2000的前身是SQL*Case,它是一個(gè)數(shù)據(jù)庫(kù)Case工具(計(jì)算機(jī)輔助設(shè)計(jì)工具),它目前版本包含:
Business Process Reengineering
Modellers
Generators
l Personal Oracle
95年后,Oracle 提供了可以在Dos,Windows3.x,Windows95,Windows NT 等不同的單機(jī)版,它的基本使用方法完全同工作組版和企業(yè)版一樣。
l SQL*Net和Net 8
SQL*Net和Net 8都提供在網(wǎng)絡(luò)下的訪問(wèn)Oracle數(shù)據(jù)庫(kù)的產(chǎn)品。SQL*Net 分為SQL*Net V1 和SQL*Net V2。SQL*Net V1主要支持字符終端方式,如Dos,終端服務(wù)器方式;SQL*Net V2.x主要支持圖形終端與Oracle的連接,而Net 8則是Oracle 8網(wǎng)絡(luò)產(chǎn)品SQL*Net V2.x的升級(jí)版。
l Oracle Jdeveloper
Oracle 最新產(chǎn)品,它是一個(gè)具有高效生產(chǎn)力的3GL編程工具,它可以使編程人員在Java中嵌入SQL語(yǔ)句,編寫能訪問(wèn)數(shù)據(jù)庫(kù)的Java程序。
l Oracle Express
可以在線分析處理的工具,利用它可以方便地進(jìn)行各種數(shù)據(jù)分析。
l PRO*C, PRO*COBOL, PRO*FORTRAN等
可以提供與3GL接口的工具,利用它可以在高級(jí)語(yǔ)言中嵌入 SQL語(yǔ)句,從而達(dá)到訪問(wèn)Oracle數(shù)據(jù)庫(kù)的目的。
l 財(cái)務(wù)軟件( ORACLE Financials )
ORACLE Financials 是 ORACLE APPLICATION 中用于財(cái)務(wù)管理的應(yīng)用程序模塊。包括財(cái)務(wù)會(huì)計(jì),管理會(huì)計(jì)。
l 供應(yīng)鏈與制造應(yīng)用軟件
包括:
l 銷售定單管理
l 供應(yīng)商管理
l 新產(chǎn)品工程設(shè)計(jì)管理
l 物料管理
l 成本管理
l 質(zhì)量管理
Sql性能非常差的時(shí)候,oracle提供了SQL_TRACE來(lái)跟蹤sql的執(zhí)行情況。
注:分析sql的方式比較多,還有根據(jù)優(yōu)化器、sql執(zhí)行計(jì)劃來(lái)分析。
SQL_TRACE能夠?qū)ql執(zhí)行的過(guò)程輸出到一個(gè)trace文件里面。
首先設(shè)置自己定義的trace文件的標(biāo)識(shí)方便查找。
alter session set tracefile_identifier='mytest';
然后對(duì)當(dāng)前會(huì)話啟動(dòng)SQL_TRACE,最好不要一直打開(kāi)該開(kāi)關(guān),代價(jià)比較大。
alter session set sql_trace=true;
然后我們執(zhí)行一條sql語(yǔ)句。
最后關(guān)閉該開(kāi)關(guān)的狀態(tài)。
alter session set sql_trace=false;
我們可以從目錄%ORACLE_BASE%/diag/rdbms/orcl/orcl/trace(11g版本的路徑,如果是10g的應(yīng)該不一樣)中
找到自己定義的trace文件。
原始的trace文件的可讀性不高,我們一般使用oracle自帶的工具,tkprof來(lái)處理這個(gè)trace文件。我們可以查看tkprof的幫助。
tkprof orcl_ora_3820_mytest.trc out.txt
我們來(lái)看剛才生成的trace文件,頭部信息描述了tkprof 的版本以及報(bào)告中一些列的含義,對(duì)于任何一條sql語(yǔ)句,都應(yīng)該包含Parse—sql分析階段,Execute—sql執(zhí)行階段,F(xiàn)etch—數(shù)據(jù)提取階段,橫向的列如圖所示,包含消耗cpu時(shí)間0.00秒,操作總耗時(shí)0.04秒,物理讀取了0個(gè)數(shù)據(jù)塊,沒(méi)有發(fā)生current方式的讀取(一般在update會(huì)發(fā)生),一共提取記錄1條。
Misses in library cache during parse: 0表示這是一次軟分析(關(guān)于硬分析和軟分析下面會(huì)接著談到)
Optimizer mode: ALL_ROWS表示oracle的優(yōu)化器模式為ALL_ROWS。這也就是前面提到的另外的分析方式優(yōu)化器。
下面是sql執(zhí)行的具體計(jì)劃,可以看到執(zhí)行計(jì)劃選擇的是全表掃描。
經(jīng)過(guò)處理以后的trace文件的確比較容易看明白,它有助于我們分析sql的性能問(wèn)題。
下面我通過(guò)一個(gè)trace實(shí)例來(lái)解釋一下,為什么OLTP系統(tǒng)中需要變量綁定機(jī)制。
當(dāng)用戶和數(shù)據(jù)庫(kù)建立連接,并發(fā)送一條sql語(yǔ)句以后,oracle會(huì)對(duì)該sql進(jìn)行hash函數(shù)運(yùn)算(hash算法提供了一種快速存取數(shù)據(jù)的方法,它用一種算法建立鍵值與真實(shí)值之間的對(duì)應(yīng)關(guān)系,每一個(gè)真實(shí)值只能有一個(gè)鍵值,但是一個(gè)鍵值可以對(duì)應(yīng)多個(gè)真實(shí)值,以方便存取),得到一個(gè)hash值,然后到共享池中尋找是否有匹配的hash值的sql存在,如果有,就直接使用該sql的執(zhí)行計(jì)劃去執(zhí)行sql。如果沒(méi)有,oracle就會(huì)認(rèn)為這是一條新的sql語(yǔ)句,然后按照語(yǔ)法分析,語(yǔ)義分析,生成執(zhí)行計(jì)劃,執(zhí)行sql這些步驟來(lái)執(zhí)行最終把結(jié)果返回給用戶。這些步驟也被成為硬分析,可以想象,如果減少硬分析,能夠大大降低數(shù)據(jù)庫(kù)花費(fèi)在sql解析上的資源開(kāi)銷。
我們先執(zhí)行一條sql 1000次,比較綁定變量和不綁定變量的差異。得到結(jié)果以后,要計(jì)算實(shí)際的消耗,我們需要把OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS以及OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS的時(shí)間累計(jì)起來(lái),前者表示數(shù)據(jù)字典表的相關(guān)的信息,包含權(quán)限控制等,后者表示sql所衍生出的遞歸sql語(yǔ)句的信息。可以看到綁定變量的,整條語(yǔ)句執(zhí)行時(shí)間為0.22+0.02=0.24秒,CPU時(shí)間0.18+0.03=0.21秒,分析次數(shù)3次,執(zhí)行次數(shù)1003次。而不綁定變量的時(shí)候,整條語(yǔ)句執(zhí)行時(shí)間為0.28+1.29=1.57秒,CPU時(shí)間0.31+1.26=1.57秒,分析次數(shù)1002次,執(zhí)行次數(shù)1003次??梢?jiàn)綁定變量的確能夠帶來(lái)更低的開(kāi)銷。(如何設(shè)計(jì)數(shù)據(jù)庫(kù)中使用綁定變量也是和系統(tǒng)息息相關(guān)的,很多數(shù)據(jù)庫(kù)問(wèn)題都是在設(shè)計(jì)以后就已經(jīng)存在的)
應(yīng)用級(jí)調(diào)優(yōu)分析:
就通常所說(shuō)的三層架構(gòu)來(lái)說(shuō),中間件這一層能夠起到一個(gè)緩沖池的作用,如果并發(fā)用戶數(shù)到3000這個(gè)數(shù)量級(jí)的時(shí)候,中間件能夠控制不是所有的用戶都能直接連接到數(shù)據(jù)庫(kù),當(dāng)然這里的程序會(huì)快速響應(yīng)用戶請(qǐng)求,保證緩沖池的隊(duì)列等待不會(huì)很久。
對(duì)應(yīng)用這一級(jí)別的調(diào)優(yōu),主要集中在app程序,中間件的監(jiān)控,集群配置等方面。如果是發(fā)現(xiàn)應(yīng)用級(jí)別的問(wèn)題,首先要分析是配置問(wèn)題,還是程序本身的問(wèn)題。如果并發(fā)用戶數(shù)很大,中間件的線程池最大值配置過(guò)小,會(huì)導(dǎo)致在請(qǐng)求隊(duì)列堆積,表現(xiàn)就是線程監(jiān)控視圖中,請(qǐng)求的隊(duì)列堆積比較多,一般可以調(diào)整線程池最大值來(lái)解決。我們來(lái)看看weblogic的監(jiān)控視圖。
考慮到如果為每一個(gè)請(qǐng)求都創(chuàng)建一個(gè)新線程來(lái)處理的話,那么我們難以在系統(tǒng)中實(shí)現(xiàn)足夠數(shù)量的線程。不受限制的創(chuàng)建線程可能耗盡系統(tǒng)資源,因此引入了線程池。線程池的思想是在進(jìn)程開(kāi)始時(shí)創(chuàng)建一定數(shù)量的線程并將它們置入一個(gè)池(pool)中,線程在這個(gè)池中等待工作。當(dāng)服務(wù)器接收到一個(gè)請(qǐng)求時(shí),它就從池中喚醒一個(gè)線程(如果有可用的線程),由它來(lái)處理請(qǐng)求。一旦線程服務(wù)完畢,它就返回線程池等待后面的工作。
線程池利用已存在的線程服務(wù)請(qǐng)求要比等待創(chuàng)建一個(gè)線程要快,并且線程池限制了線程的數(shù)量。
如果懷疑是程序的問(wèn)題,我們一般可以通過(guò)java自帶的工具來(lái)幫助分析,工具很多。這里我主要提到一個(gè)jdk1.6以后附帶的jvisualvm。
我們打開(kāi)jdk1.6,找到并運(yùn)行jvisualvm.exe。
我們發(fā)現(xiàn)應(yīng)用程序分為本地,遠(yuǎn)程兩部分。本地包含本地運(yùn)行的java進(jìn)程,遠(yuǎn)程能夠通過(guò)配置連接到遠(yuǎn)程服務(wù)器上的java進(jìn)程。我們先啟動(dòng)一個(gè)tomcat。可以看到本地應(yīng)用程序已經(jīng)打開(kāi)了一個(gè)帶有tomcat以及進(jìn)程標(biāo)識(shí)id的菜單。雙擊打開(kāi)。這里我們一般關(guān)心2個(gè)視圖。監(jiān)視、線程。
其中監(jiān)視視圖比較關(guān)心垃圾回收活動(dòng)(顧名思義,回收那些在程序里面不再使用到的內(nèi)存空間),堆內(nèi)存變化。如果在壓力測(cè)試過(guò)程中,堆內(nèi)存變化是一個(gè)逐漸上漲的趨勢(shì),并且經(jīng)過(guò)多次手動(dòng)gc回收,還是保持這個(gè)趨勢(shì),說(shuō)明內(nèi)存泄漏的可能性很大。如果猜測(cè)有內(nèi)存泄漏,可以通過(guò)分析java的heap dump。JVM (java虛擬機(jī))記錄下問(wèn)題發(fā)生時(shí)系統(tǒng)的運(yùn)行狀態(tài)并將其存儲(chǔ)在轉(zhuǎn)儲(chǔ)(dump)文件中。Heap dump就是這樣一種文件形式。
線程視圖比較關(guān)心線程的當(dāng)前執(zhí)行狀態(tài),這里可以生成另一種轉(zhuǎn)儲(chǔ)文件 Java dump。Java dump,也叫做 Thread dump,是 JVM 故障診斷中最重要的轉(zhuǎn)儲(chǔ)文件之一。JVM 的許多問(wèn)題都可以使用這個(gè)文件進(jìn)行診斷,其中比較典型的包括線程阻塞,CPU 使用率過(guò)高,JVM Crash,堆內(nèi)存不足,和類裝載等問(wèn)題。其中線程阻塞更加常見(jiàn)。
原文轉(zhuǎn)自:
-- 首先,以超級(jí)管理員的身份登錄oracle
sqlplus sys/bjsxt as sysdba
--然后,解除對(duì)scott用戶的鎖
alter user scott account unlock;
--那么這個(gè)用戶名就能使用了。
--(默認(rèn)全局?jǐn)?shù)據(jù)庫(kù)名orcl)
1、select ename, sal * 12 from emp; --計(jì)算年薪
2、select 2*3 from dual; --計(jì)算一個(gè)比較純的數(shù)據(jù)用dual表
3、select sysdate from dual; --查看當(dāng)前的系統(tǒng)時(shí)間
4、select ename, sal*12 anuual_sal from emp; --給搜索字段更改名稱(雙引號(hào) keepFormat 別名有特殊字符,要加雙引號(hào))。
5、--任何含有空值的數(shù)學(xué)表達(dá)式,最后的計(jì)算結(jié)果都是空值。
6、select ename||sal from emp; --(將sal的查詢結(jié)果轉(zhuǎn)化為字符串,與ename連接到一起,相當(dāng)于Java中的字符串連接)
7、select ename||'afasjkj' from emp; --字符串的連接
8、select distinct deptno from emp; --消除deptno字段重復(fù)的值
9、select distinct deptno , job from emp; --將與這兩個(gè)字段都重復(fù)的值去掉
10、select * from emp where deptno=10; --(條件過(guò)濾查詢)
11、select * from emp where empno 10; --大于 過(guò)濾判斷
12、select * from emp where empno 10 --不等于 過(guò)濾判斷
13、select * from emp where ename 'cba'; --字符串比較,實(shí)際上比較的是每個(gè)字符的AscII值,與在Java中字符串的比較是一樣的
14、select ename, sal from emp where sal between 800 and 1500; --(between and過(guò)濾,包含800 1500)
15、select ename, sal, comm from emp where comm is null; --(選擇comm字段為null的數(shù)據(jù))
16、select ename, sal, comm from emp where comm is not null; --(選擇comm字段不為null的數(shù)據(jù))
17、select ename, sal, comm from emp where sal in (800, 1500,2000); --(in 表范圍)
18、select ename, sal, hiredate from emp where hiredate '02-2月-1981'; --(只能按照規(guī)定的格式寫)
19、select ename, sal from emp where deptno =10 or sal 1000;
20、select ename, sal from emp where deptno =10 and sal 1000;
21、select ename, sal, comm from emp where sal not in (800, 1500,2000); --(可以對(duì)in指定的條件進(jìn)行取反)
22、select ename from emp where ename like '%ALL%'; --(模糊查詢)
23、select ename from emp where ename like '_A%'; --(取第二個(gè)字母是A的所有字段)
24、select ename from emp where ename like '%/%%'; --(用轉(zhuǎn)義字符/查詢字段中本身就帶%字段的)
25、select ename from emp where ename like '%$%%' escape '$'; --(用轉(zhuǎn)義字符/查詢字段中本身就帶%字段的)
26、select * from dept order by deptno desc; (使用order by desc字段 對(duì)數(shù)據(jù)進(jìn)行降序排列 默認(rèn)為升序asc);
27、select * from dept where deptno 10 order by deptno asc; --(我們可以將過(guò)濾以后的數(shù)據(jù)再進(jìn)行排序)
28、select ename, sal, deptno from emp order by deptno asc, ename desc; --(按照多個(gè)字段排序 首先按照deptno升序排列,當(dāng)detpno相同時(shí),內(nèi)部再按照ename的降序排列)
29、select lower(ename) from emp; --(函數(shù)lower() 將ename搜索出來(lái)后全部轉(zhuǎn)化為小寫);
30、select ename from emp where lower(ename) like '_a%'; --(首先將所搜索字段轉(zhuǎn)化為小寫,然后判斷第二個(gè)字母是不是a)
31、select substr(ename, 2, 3) from emp; --(使用函數(shù)substr() 將搜素出來(lái)的ename字段從第二個(gè)字母開(kāi)始截,一共截3個(gè)字符)
32、select chr(65) from dual; --(函數(shù)chr() 將數(shù)字轉(zhuǎn)化為AscII中相對(duì)應(yīng)的字符)
33、select ascii('A') from dual; --(函數(shù)ascii()與32中的chr()函數(shù)是相反的 將相應(yīng)的字符轉(zhuǎn)化為相應(yīng)的Ascii編碼) )
34、select round(23.232) from dual; --(函數(shù)round() 進(jìn)行四舍五入操作)
35、select round(23.232, 2) from dual; --(四舍五入后保留的小數(shù)位數(shù) 0 個(gè)位 -1 十位)
36、select to_char(sal, '$99,999.9999')from emp; --(加$符號(hào)加入千位分隔符,保留四位小數(shù),沒(méi)有的補(bǔ)零)
37、select to_char(sal, 'L99,999.9999')from emp; --(L 將貨幣轉(zhuǎn)化為本地幣種此處將顯示¥人民幣)
38、select to_char(sal, 'L00,000.0000')from emp; --(補(bǔ)零位數(shù)不一樣,可到數(shù)據(jù)庫(kù)執(zhí)行查看)
39、select to_char(hiredate, 'yyyy-MM-DD HH:MI:SS') from emp; --(改變?nèi)掌谀J(rèn)的顯示格式)
40、select to_char(sysdate, 'yyyy-MM-DD HH:MI:SS') from dual; --(用12小時(shí)制顯示當(dāng)前的系統(tǒng)時(shí)間)
41、select to_char(sysdate, 'yyyy-MM-DD HH24:MI:SS') from dual; --(用24小時(shí)制顯示當(dāng)前的系統(tǒng)時(shí)間)
42、select ename, hiredate from emp where hiredate to_date('1981-2-20 12:24:45','YYYY-MM-DD HH24:MI:SS'); --(函數(shù)to-date 查詢公司在所給時(shí)間以后入職的人員)
43、select sal from emp where sal to_number('$1,250.00', '$9,999.99'); --(函數(shù)to_number()求出這種薪水里帶有特殊符號(hào)的)
44、select ename, sal*12 + nvl(comm,0) from emp; --(函數(shù)nvl() 求出員工的"年薪 + 提成(或獎(jiǎng)金)問(wèn)題")
45、select max(sal) from emp; -- (函數(shù)max() 求出emp表中sal字段的最大值)
46、select min(sal) from emp; -- (函數(shù)max() 求出emp表中sal字段的最小值)
47、select avg(sal) from emp; --(avg()求平均薪水);
48、select to_char(avg(sal), '999999.99') from emp; --(將求出來(lái)的平均薪水只保留2位小數(shù))
49、select round(avg(sal), 2) from emp; --(將平均薪水四舍五入到小數(shù)點(diǎn)后2位)
50、select sum(sal) from emp; --(求出每個(gè)月要支付的總薪水)
------------------------/組函數(shù)(共5個(gè)):將多個(gè)條件組合到一起最后只產(chǎn)生一個(gè)數(shù)據(jù)------min() max() avg() sum() count()----------------------------/
51、select count(*) from emp; --求出表中一共有多少條記錄
52、select count(*) from emp where deptno=10; --再要求一共有多少條記錄的時(shí)候,還可以在后面跟上限定條件
53、select count(distinct deptno) from emp; --統(tǒng)計(jì)部門編號(hào)前提是去掉重復(fù)的值
------------------------聚組函數(shù)group by() --------------------------------------
54、select deptno, avg(sal) from emp group by deptno; --按照deptno分組,查看每個(gè)部門的平均工資
55、select max(sal) from emp group by deptno, job; --分組的時(shí)候,還可以按照多個(gè)字段進(jìn)行分組,兩個(gè)字段不相同的為一組
56、select ename from emp where sal = (select max(sal) from emp); --求出
57、select deptno, max(sal) from emp group by deptno; --搜素這個(gè)部門中薪水最高的的值
--------------------------------------------------having函數(shù)對(duì)于group by函數(shù)的過(guò)濾 不能用where--------------------------------------
58、select deptno, avg(sal) from emp group by deptno having avg(sal) 2000; (order by )--求出每個(gè)部門的平均值,并且要 2000
59、select avg(sal) from emp where sal 1200 group by deptno having avg(sal) 1500 order by avg(sal) desc;--求出sal1200的平均值按照deptno分組,平均值要1500最后按照sal的倒序排列
60、select ename,sal from emp where sal (select avg(sal) from emp); --求那些人的薪水是在平均薪水之上的。
61、select ename, sal from emp join (select max(sal) max_sal ,deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno=t.deptno); --查詢每個(gè)部門中工資最高的那個(gè)人
------------------------------/等值連接--------------------------------------
62、select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno; --自連接,把一張表當(dāng)成兩張表來(lái)用
63、select ename, dname from emp, dept; --92年語(yǔ)法 兩張表的連接 笛卡爾積。
64、select ename, dname from emp cross join dept; --99年語(yǔ)法 兩張表的連接用cross join
65、select ename, dname from emp, dept where emp.deptno = dept.deptno; -- 92年語(yǔ)法 表連接 + 條件連接
66、select ename, dname from emp join dept on(emp.deptno = dept.deptno); -- 新語(yǔ)法
67、select ename,dname from emp join dept using(deptno); --與66題的寫法是一樣的,但是不推薦使用using : 假設(shè)條件太多
--------------------------------------/非等值連接------------------------------------------/
68、select ename,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal); --兩張表的連接 此種寫法比用where更清晰
69、select ename, dname, grade from emp e
join dept d on(e.deptno = d.deptno)
join salgrade s on (e.sal between s.losal and s.hisal)
where ename not like '_A%'; --三張表的連接
70、select e1.ename, e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno); --自連接第二種寫法,同62
71、select e1.ename, e2.ename from emp e1 left join emp e2 on(e1.mgr = e2.empno); --左外連接 把左邊沒(méi)有滿足條件的數(shù)據(jù)也取出來(lái)
72、select ename, dname from emp e right join dept d on(e.deptno = d.deptno); --右外連接
73、select deptno, avg_sal, grade from (select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal);--求每個(gè)部門平均薪水的等級(jí)
74、select ename from emp where empno in (select mgr from emp); -- 在表中搜索那些人是經(jīng)理
75、select sal from emp where sal not in(select distinct e1.sal from emp e1 join emp e2 on(e1.sal e2.sal)); -- 面試題 不用組函數(shù)max()求薪水的最大值
76、select deptno, max_sal from
(select avg(sal) max_sal,deptno from emp group by deptno)
where max_sal =
(select max(max_sal) from
(select avg(sal) max_sal,deptno from emp group by deptno)
);--求平均薪水最高的部門名稱和編號(hào)。
77、select t1.deptno, grade, avg_sal from
(select deptno, grade, avg_sal from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on(t.avg_sal between s.losal and s.hisal)
) t1
join dept on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade) from
(select deptno, grade, avg_sal from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on(t.avg_sal between s.losal and s.hisal)
)
)--求平均薪水等級(jí)最低的部門的名稱 哈哈 確實(shí)比較麻煩
78、create view v$_dept_avg_sal_info as
select deptno, grade, avg_sal from
(select deptno, avg(sal) avg_sal from emp group by deptno) t
join salgrade s on(t.avg_sal between s.losal and s.hisal);
--視圖的創(chuàng)建,一般以v$開(kāi)頭,但不是固定的
79、select t1.deptno, grade, avg_sal from v$_dept_avg_sal_info t1
join dept on (t1.deptno = dept.deptno)
where t1.grade =
(
select min(grade) from
v$_dept_avg_sal_info t1
)
)--求平均薪水等級(jí)最低的部門的名稱 用視圖,能簡(jiǎn)單一些,相當(dāng)于Java中方法的封裝
80、---創(chuàng)建視圖出現(xiàn)權(quán)限不足時(shí)候的解決辦法:
conn sys/admin as sysdba;
--顯示:連接成功 Connected
grant create table, create view to scott;
-- 顯示: 授權(quán)成功 Grant succeeded
81、-------求比普通員工最高薪水還要高的經(jīng)理人的名稱 -------
select ename, sal from emp where empno in
(select distinct mgr from emp where mgr is not null)
and sal
(
select max(sal) from emp where empno not in
(select distinct mgr from emp where mgr is not null)
)
82、---面試題:比較效率
select * from emp where deptno = 10 and ename like '%A%';--好,將過(guò)濾力度大的放在前面
select * from emp where ename like '%A%' and deptno = 10;
83、-----表的備份
create table dept2 as select * from dept;
84、-----插入數(shù)據(jù)
insert into dept2 values(50,'game','beijing');
----只對(duì)某個(gè)字段插入數(shù)據(jù)
insert into dept2(deptno,dname) values(60,'game2');
85、-----將一個(gè)表中的數(shù)據(jù)完全插入另一個(gè)表中(表結(jié)構(gòu)必須一樣)
insert into dept2 select * from dept;
86、-----求前五名員工的編號(hào)和名稱(使用虛字段rownum 只能使用 或 = 要使用 必須使用子查詢)
select empno,ename from emp where rownum = 5;
86、----求10名雇員以后的雇員名稱--------
select ename from (select rownum r,ename from emp) where r 10;
87、----求薪水最高的前5個(gè)人的薪水和名字---------
select ename, sal from (select ename, sal from emp order by sal desc) where rownum =5;
數(shù)據(jù)庫(kù)安全性問(wèn)題一直是圍繞著數(shù)據(jù)庫(kù)管理員的惡夢(mèng),數(shù)據(jù)庫(kù)數(shù)據(jù)的丟失
以及數(shù)據(jù)庫(kù)被非法用戶的侵入使得數(shù)據(jù)庫(kù)管理員身心疲憊不堪。本文圍繞數(shù)據(jù)
庫(kù)的安全性問(wèn)題提出了一些安全性策略,希望對(duì)數(shù)據(jù)庫(kù)管理員有所幫助,不再
夜夜惡夢(mèng)。數(shù)據(jù)庫(kù)安全性問(wèn)題應(yīng)包括兩個(gè)部分:
一、數(shù)據(jù)庫(kù)數(shù)據(jù)的安全
它應(yīng)能確保當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)DownTime時(shí),當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)媒體被破
壞時(shí)以及當(dāng)數(shù)據(jù)庫(kù)用戶誤操作時(shí),數(shù)據(jù)庫(kù)數(shù)據(jù)信息不至于丟失。
二、數(shù)據(jù)庫(kù)系統(tǒng)不被非法用戶侵入
它應(yīng)盡可能地堵住潛在的各種漏洞,防止非法用戶利用它們侵入數(shù)據(jù)
庫(kù)系統(tǒng)。
對(duì)于數(shù)據(jù)庫(kù)數(shù)據(jù)的安全問(wèn)題,數(shù)據(jù)庫(kù)管理員可以參考有關(guān)系統(tǒng)雙機(jī)
熱備份功能以及數(shù)據(jù)庫(kù)的備份和恢復(fù)的資料。
以下就數(shù)據(jù)庫(kù)系統(tǒng)不被非法用戶侵入這個(gè)問(wèn)題作進(jìn)一步的闡述。
組和安全性:
在操作系統(tǒng)下建立用戶組也是保證數(shù)據(jù)庫(kù)安全性的一種有效方法。
Oracle程序?yàn)榱税踩阅康囊话惴譃閮深悾阂活愃械挠脩舳伎蓤?zhí)行,
另一類只DBA可執(zhí)行。在Unix環(huán)境下組設(shè)置的配置文件是/etc/group,
關(guān)于這個(gè)文件如何配置,請(qǐng)參閱Unix的有關(guān)手冊(cè),以下是保證安全性的
幾種方法:
(1) 在安裝Oracle Server前,創(chuàng)建數(shù)據(jù)庫(kù)管理員組(DBA)而且
分配root和Oracle軟件擁有者的用戶ID給這個(gè)組。DBA能執(zhí)
行的程序只有710權(quán)限。在安裝過(guò)程中SQL*DBA系統(tǒng)權(quán)限命令
被自動(dòng)分配給DBA組。
(2) 允許一部分Unix用戶有限制地訪問(wèn)Oracle服務(wù)器系統(tǒng),增加
一個(gè)由授權(quán)用戶組的Oracle組,確保給Oracle服務(wù)器實(shí)用例
程Oracle組ID,公用的可執(zhí)行程序,比如SQL*Plus,SQL*Fo
rms等,應(yīng)該可被這組執(zhí)行,然后該這個(gè)實(shí)用例程的權(quán)限為
710,它將允許同組的用戶執(zhí)行,而其他用戶不能。
(3) 改那些不會(huì)影響數(shù)據(jù)庫(kù)安全性的程序的權(quán)限為711。
注:在我們的系統(tǒng)中為了安裝和調(diào)試的方便,Oracle數(shù)據(jù)庫(kù)中
的兩個(gè)具有DBA權(quán)限的用戶Sys和System的缺省密碼是manager。
為了您數(shù)據(jù)庫(kù)系統(tǒng)的安全,我們強(qiáng)烈建議您該掉這兩個(gè)用戶的
密碼,具體操作如下:
在SQL*DBA下鍵入:
alter user sys indentified by password;
alter user system indentified by password;
其中password為您為用戶設(shè)置的密碼。
Oracle服務(wù)器實(shí)用例程的安全性:
以下是保護(hù)Oracle服務(wù)器不被非法用戶使用的幾條建議:
(1) 確保$ORACLE_HOME/bin目錄下的所有程序的擁有權(quán)歸Oracle
軟件擁有者所有;
(2) 給所有用戶實(shí)用便程(sqiplus,sqiforms,exp,imp等)711權(quán)
限,使服務(wù)器上所有的用戶都可訪問(wèn)Oracle服務(wù)器;
(3) 給所有的DBA實(shí)用例程(比如SQL*DBA)700權(quán)限。Oracle服務(wù)器
和Unix組當(dāng)訪問(wèn)本地的服務(wù)器時(shí),您可以通過(guò)在操作系統(tǒng)下把
Oracle服務(wù)器的角色映射到Unix的組的方式來(lái)使用Unix管理服
務(wù)器的安全性,這種方法適應(yīng)于本地訪問(wèn)。
在Unix中指定Oracle服務(wù)器角色的格式如下:
ora_sid_role[_dla]
其中
sid 是您Oracle數(shù)據(jù)庫(kù)的oracle_sid;
role 是Oracle服務(wù)器中角色的名字;
d (可選)表示這個(gè)角色是缺省值;
a (可選)表示這個(gè)角色帶有WITH ADMIN選項(xiàng),
您只可以把這個(gè)角色授予其他角色,不能是其他用戶。
以下是在/etc/group文件中設(shè)置的例子:
ora_test_osoper_d:NONE:1:jim,narry,scott
ora_test_osdba_a:NONE:3:pat
ora_test_role1:NONE:4:bob,jane,tom,mary,jim
bin: NONE:5:root,oracle,dba
root:NONE:7:root
詞組“ora_test_osoper_d”表示組的名字;詞組“NONE”表示這
個(gè)組的密碼;數(shù)字1表示這個(gè)組的ID;接下來(lái)的是這個(gè)組的成員。前兩
行是Oracle服務(wù)器角色的例子,使用test作為sid,osoper和osdba作
為Oracle服務(wù)器角色的名字。osoper是分配給用戶的缺省角色,osdba
帶有WITH ADMIN選項(xiàng)。為了使這些數(shù)據(jù)庫(kù)角色起作用,您必須shutdown
您的數(shù)據(jù)庫(kù)系統(tǒng),設(shè)置Oracle數(shù)據(jù)庫(kù)參數(shù)文件initORACLE_SID.ora中
os_roles參數(shù)為True,然后重新啟動(dòng)您的數(shù)據(jù)庫(kù)。如果您想讓這些角色
有connect internal權(quán)限,運(yùn)行orapwd為這些角色設(shè)置密碼。當(dāng)您嘗
試connect internal時(shí),您鍵入的密碼表示了角色所對(duì)應(yīng)的權(quán)限。
SQL*DBA命令的安全性:
如果您沒(méi)有SQL*PLUS應(yīng)用程序,您也可以使用SQL*DBA作SQL查權(quán)
限相關(guān)的命令只能分配給Oracle軟件擁有者和DBA組的用戶,因?yàn)檫@些
命令被授予了特殊的系統(tǒng)權(quán)限。
(1) startup
(2) shutdown
(3) connect internal
數(shù)據(jù)庫(kù)文件的安全性:
Oracle軟件的擁有者應(yīng)該這些數(shù)據(jù)庫(kù)文件
($ORACLE_HOME/dbs/*.dbf)設(shè)置這些文件的使用權(quán)限為0600:文件的
擁有者可讀可寫,同組的和其他組的用戶沒(méi)有寫的權(quán)限。
Oracle軟件的擁有者應(yīng)該擁有包含數(shù)據(jù)庫(kù)文件的目錄,為了增加
安全性,建議收回同組和其他組用戶對(duì)這些文件的可讀權(quán)限。
網(wǎng)絡(luò)安全性:
當(dāng)處理網(wǎng)絡(luò)安全性時(shí),以下是額外要考慮的幾個(gè)問(wèn)題。
(1) 在網(wǎng)絡(luò)上使用密碼
在網(wǎng)上的遠(yuǎn)端用戶可以通過(guò)加密或不加密方式鍵入密碼,
當(dāng)您用不加密方式鍵入密碼時(shí),您的密碼很有可能被非法用
戶截獲,導(dǎo)致破壞了系統(tǒng)的安全性。
(2) 網(wǎng)絡(luò)上的DBA權(quán)限控制
您可以通過(guò)下列兩種方式對(duì)網(wǎng)絡(luò)上的DBA權(quán)限進(jìn)行控制:
A 設(shè)置成拒絕遠(yuǎn)程DBA訪問(wèn);
B 通過(guò)orapwd給DBA設(shè)置特殊的密碼。
建立安全性策略:
系統(tǒng)安全性策略
(1) 管理數(shù)據(jù)庫(kù)用戶
數(shù)據(jù)庫(kù)用戶是訪問(wèn)Oracle數(shù)據(jù)庫(kù)信息的途徑,因此,
應(yīng)該很好地維護(hù)管理數(shù)據(jù)庫(kù)用戶的安全性。按照數(shù)據(jù)庫(kù)系統(tǒng)
的大小和管理數(shù)據(jù)庫(kù)用戶所需的工作量,數(shù)據(jù)庫(kù)安全性管理
者可能只是擁有create,alter,或drop數(shù)據(jù)庫(kù)用戶的一個(gè)
特殊用戶,或者是擁有這些權(quán)限的一組用戶,應(yīng)注意的是,只
有那些值得信任的個(gè)人才應(yīng)該有管理數(shù)據(jù)庫(kù)用戶的權(quán)限。
(2) 用戶身份確認(rèn)
數(shù)據(jù)庫(kù)用戶可以通過(guò)操作系統(tǒng),網(wǎng)絡(luò)服務(wù),或數(shù)據(jù)庫(kù)進(jìn)行
身份確認(rèn),通過(guò)主機(jī)操作系統(tǒng)進(jìn)行用戶身份認(rèn)證的優(yōu)點(diǎn)有:
A 用戶能更快,更方便地聯(lián)入數(shù)據(jù)庫(kù);
B 通過(guò)操作系統(tǒng)對(duì)用戶身份確認(rèn)進(jìn)行集中控制:如果操作
系統(tǒng)與數(shù)據(jù)庫(kù)用戶信息一致,那么Oracle無(wú)須存儲(chǔ)和管
理用戶名以及密碼;
C 用戶進(jìn)入數(shù)據(jù)庫(kù)和操作系統(tǒng)審計(jì)信息一致。
(3) 操作系統(tǒng)安全性
A 數(shù)據(jù)庫(kù)管理員必須有create和delete文件的操作系統(tǒng)權(quán)限;
B 一般數(shù)據(jù)庫(kù)用戶不應(yīng)該有create或delete與數(shù)據(jù)庫(kù)相關(guān)文
件的操作系統(tǒng)權(quán)限;
C 如果操作系統(tǒng)能為數(shù)據(jù)庫(kù)用戶分配角色,那么安全性管理者
必須有修改操作系統(tǒng)帳戶安全性區(qū)域的操作系統(tǒng)權(quán)限。
數(shù)據(jù)的安全性策略:
數(shù)據(jù)的生考慮應(yīng)基于數(shù)據(jù)的重要性。如果數(shù)據(jù)不是很重要,那么數(shù)
據(jù)的安全性策略可以稍稍放松一些。然而,如果數(shù)據(jù)很重要,那么應(yīng)該
有一謹(jǐn)慎的安全性策略,用它來(lái)維護(hù)對(duì)數(shù)據(jù)對(duì)象訪問(wèn)的有效控制。
用戶安全性策略:
(1) 一般用戶的安全性
A 密碼的安全性
如果用戶是通過(guò)數(shù)據(jù)庫(kù)進(jìn)行用戶身份的確認(rèn),那么建議
使用密碼加密的方式與數(shù)據(jù)庫(kù)進(jìn)行連接。這種方式的設(shè)置方
法如下:
在客戶端的oracle.ini文件中設(shè)置
ora_encrypt_login數(shù)為true;
在服務(wù)器端的initORACLE_SID.ora文件中設(shè)置
dbling_encypt_login參數(shù)為true。
B 權(quán)限管理
對(duì)于那些用戶很多,應(yīng)用程序和數(shù)據(jù)對(duì)象很豐富的數(shù)據(jù)
庫(kù),應(yīng)充分利用“角色”這個(gè)機(jī)制所帶的方便性對(duì)權(quán)限進(jìn)行
有效管理。對(duì)于復(fù)雜的系統(tǒng)環(huán)境,“角色”能大大地簡(jiǎn)化權(quán)
限的管理。
(2) 終端用戶的安全性
您必須針對(duì)終端用戶制定安全性策略。例如,對(duì)于一個(gè)有
很多用戶的大規(guī)模數(shù)據(jù)庫(kù),安全性管理者可以決定用戶組分類,
為這些用戶組創(chuàng)建用戶角色,把所需的權(quán)限和應(yīng)用程序角色授
予每一個(gè)用戶角色,以及為用戶分配相應(yīng)的用戶角色。當(dāng)處理
特殊的應(yīng)用要求時(shí),安全性管理者也必須明確地把一些特定的
權(quán)限要求授予給用戶。您可以使用“角色”對(duì)終端用戶進(jìn)行權(quán)
限管理。
數(shù)據(jù)庫(kù)管理者安全性策略:
(1) 保護(hù)作為sys和system用戶的連接
當(dāng)數(shù)據(jù)庫(kù)創(chuàng)建好以后,立即更改有管理權(quán)限的sys和system用
戶的密碼,防止非法用戶訪問(wèn)數(shù)據(jù)庫(kù)。當(dāng)作為sys和system用戶
連入數(shù)據(jù)庫(kù)后,用戶有強(qiáng)大的權(quán)限用各種方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行改動(dòng)。
(2) 保護(hù)管理者與數(shù)據(jù)庫(kù)的連接
應(yīng)該只有數(shù)據(jù)庫(kù)管理者能用管理權(quán)限連入數(shù)據(jù)庫(kù),當(dāng)以sysdba
或startup,shutdown,和recover或數(shù)據(jù)庫(kù)對(duì)象(例如create,
drop,和delete等)進(jìn)行沒(méi)有任何限制的操作。
(3) 使用角色對(duì)管理者權(quán)限進(jìn)行管理
應(yīng)用程序開(kāi)發(fā)者的安全性策略:
(1) 應(yīng)用程序開(kāi)發(fā)者和他們的權(quán)限
數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)者是唯一一類需要特殊權(quán)限組完成自己
工作的數(shù)據(jù)庫(kù)用戶。開(kāi)發(fā)者需要諸如create table,create
procedure等系統(tǒng)權(quán)限,然而,為了限制開(kāi)發(fā)者對(duì)數(shù)據(jù)庫(kù)的操作,
只應(yīng)該把一些特定的系統(tǒng)權(quán)限授予開(kāi)發(fā)者。
(2) 應(yīng)用程序開(kāi)發(fā)者的環(huán)境
A 程序開(kāi)發(fā)者不應(yīng)與終端用戶競(jìng)爭(zhēng)數(shù)據(jù)庫(kù)資源;
B 用程序開(kāi)發(fā)者不能損害數(shù)據(jù)庫(kù)其他應(yīng)用產(chǎn)品。
(3) free和controlled應(yīng)用程序開(kāi)發(fā)
應(yīng)用程序開(kāi)發(fā)者有一下兩種權(quán)限:
A free development
應(yīng)用程序開(kāi)發(fā)者允許創(chuàng)建新的模式對(duì)象,包括table,index,
procedure,package等,它允許應(yīng)用程序開(kāi)發(fā)者開(kāi)發(fā)獨(dú)立于其
他對(duì)象的應(yīng)用程序。
B controlled development
應(yīng)用程序開(kāi)發(fā)者不允許創(chuàng)建新的模式對(duì)象。所有需要table,
indes procedure等都由數(shù)據(jù)庫(kù)管理者創(chuàng)建,它保證了數(shù)據(jù)
庫(kù)管理者能完全控制數(shù)據(jù)空間的使用以及訪問(wèn)數(shù)據(jù)庫(kù)信息的
途徑。但有時(shí)應(yīng)用程序開(kāi)發(fā)者也需這兩種權(quán)限的混和。
(4) 應(yīng)用程序開(kāi)發(fā)者的角色和權(quán)限
數(shù)據(jù)庫(kù)安全性管理者能創(chuàng)建角色來(lái)管理典型的應(yīng)用程序開(kāi)
發(fā)者的權(quán)限要求。
A create系統(tǒng)權(quán)限常常授予給應(yīng)用程序開(kāi)發(fā)者,以到于
他們能創(chuàng)建他的數(shù)據(jù)對(duì)象。
B 數(shù)據(jù)對(duì)象角色幾乎不會(huì)授予給應(yīng)用程序開(kāi)發(fā)者使用的
角色。
(5) 加強(qiáng)應(yīng)用程序開(kāi)發(fā)者的空間限制
作為數(shù)據(jù)庫(kù)安全性管理者,您應(yīng)該特別地為每個(gè)應(yīng)用程
序開(kāi)發(fā)者設(shè)置以下的一些限制:
A 開(kāi)發(fā)者可以創(chuàng)建table或index的表空間;
B 在每一個(gè)表空間中,開(kāi)發(fā)者所擁有的空間份額。應(yīng)用程
序管理者的安全在有許多數(shù)據(jù)庫(kù)應(yīng)用程序的數(shù)據(jù)庫(kù)系統(tǒng)
中,您可能需要一應(yīng)用程序管理者,應(yīng)用程序管理者應(yīng)
負(fù)責(zé)以下的任務(wù):
C 為每一個(gè)應(yīng)用程序創(chuàng)建角色以及管理每一個(gè)應(yīng)用程序
的角色;
D 創(chuàng)建和管理數(shù)據(jù)庫(kù)應(yīng)用程序使用的數(shù)據(jù)對(duì)象;
E 需要的話,維護(hù)和更新應(yīng)用程序代碼和Oracle的存儲(chǔ)
過(guò)程和程序包。