本文從問(wèn)題入手來(lái)對(duì)oracle數(shù)據(jù)庫(kù)組件的一些問(wèn)題做出仔細(xì)的分析。 1、由哪些組件組成; 2、建立連接時(shí)需要哪些組件; Oracle兩部分:實(shí)例和數(shù)據(jù)庫(kù) 實(shí)例由以下組成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。數(shù)據(jù)庫(kù)由物理文件組 成,其中必須有
本文從問(wèn)題入手來(lái)對(duì)Oracle數(shù)據(jù)庫(kù)組件的一些問(wèn)題做出仔細(xì)的分析。??? 1、由哪些組件組成;
??? 2、建立連接時(shí)需要哪些組件;
??? Oracle兩部分:實(shí)例和數(shù)據(jù)庫(kù)
??? 實(shí)例由以下組成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。數(shù)據(jù)庫(kù)由物理文件組 成,其中必須有的文件是:數(shù)據(jù)文件,控制文件,重做日志,另外還有:參數(shù)文件,口令文件,歸檔日志文件(這三個(gè)不是必須的)。
??? 用戶(hù)建立連接后,啟動(dòng)一個(gè)服務(wù)器進(jìn)程,用來(lái)將來(lái)代替用戶(hù)進(jìn)程完成SQLCOMMAND,再通過(guò)Oracle實(shí)例實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的相關(guān)文件進(jìn)行改變(數(shù)據(jù)進(jìn)行讀取或修改)。
??? 用戶(hù)進(jìn)程不可以直接操作數(shù)據(jù)庫(kù),而必須通過(guò)建立連接后,再通過(guò)服務(wù)器進(jìn)程來(lái)完成。
??? OracleSERVER由兩個(gè)部分組成,
??? 1、INSTANCE:又由內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程。
??? 2、DATABASE:又由數(shù)據(jù)文件,日志文件和控制文件組成。
??? CONTROLFILE是用來(lái)連接實(shí)例和DATABASE:
@@######@@ |
SQL>ALTERDATABASEOPEN:在OPEN的過(guò)程對(duì)DATABASE的數(shù)據(jù)文件和重做日志文件進(jìn)行一次性的驗(yàn)證,驗(yàn)證它們的狀態(tài)。
OracleINSTANCE:存取數(shù)據(jù)庫(kù)的一個(gè)手段。
一個(gè)DATABASE與INSTANCE之間是1:N的關(guān)系,一個(gè)INSTANCE只能操作一個(gè)DATABASE,由內(nèi)存結(jié)構(gòu)(共享池,
BUFFERCACHE,REDOLOGBUFFERCACHE)及相應(yīng)的進(jìn)程結(jié)構(gòu)組成(PMON,SMON,CKPT)。
@@######@@ |
SQL>SELECT*FROMV$BGPROCESS;
將看到在這個(gè)系統(tǒng)中所有可能使用到的進(jìn)程,其中PADDR并不每個(gè)進(jìn)程都分配到有效的地址,即并不是每個(gè)進(jìn)程都是必須的。
SQL>SELECT*FROMV$BGPROCESSWHEREPADDR”00”
將顯示所有必需的進(jìn)程。
ESTABLISHINGACONNECTIONANDCREATINGASESSION
連接到Oracle實(shí)例包括建立一個(gè)用戶(hù)連接及創(chuàng)建會(huì)話。
SQL>SELECT*FROMV$CONTROLFILES;–顯示現(xiàn)系統(tǒng)下由幾個(gè)控制文件組成。
SQL>SELECT*FROMV$DATAFILE;–顯示由幾個(gè)數(shù)據(jù)文件組成。
SQL>SELECT*FROMV$LOGFILE;–顯示由幾個(gè)日志文件組成。
OracleMEMORYSTRUCTURE(內(nèi)存結(jié)構(gòu))
由兩部分組成:
1、SGA是動(dòng)態(tài)的,其最大值由SGA_MAX_SIZE指定,SGA的內(nèi)存由SGACOMPONENTS來(lái)動(dòng)態(tài)調(diào)整。
2、PGA是不共享的,即其包含的信息是不一樣的,有兩個(gè)可享的內(nèi)存可以由SGA配置:
@@######@@ |
SQL>ALTERSYSTEMSETDB_CACHE_SIZE=20M;
所有內(nèi)存大小總和不能大于SGA_MAX_SIZE的值,當(dāng)提示信息出現(xiàn)?號(hào)或亂碼時(shí),是由于系統(tǒng)的語(yǔ)言問(wèn)題。
可以通過(guò)ALTERSESSIONSETNLS_LANGUAGE=”AMERICAN”或ALTERSESSIONSETNLS_LANGUAGE=”SIMPLE
CHINESE”。
SHAREDPOOL(共享池)
LIBRARYCACHE庫(kù)緩存;
DATADICTIONARYCACHE數(shù)據(jù)字典緩存,有的地方又稱(chēng)行CACHE,由SHARED_POOL_SIZE指定大小。
SQL>ALTERSYSTEMSETSHARED_POOL_SIZE=64M;
LIBRARYCACHE主要為提高代碼的共享,存儲(chǔ)的是最近使用的SQL和PL/SQL代碼。
用最近最少使用(LRU)算法;
包括兩個(gè)結(jié)構(gòu)1:共享SQL代碼2:共享PL/SQL代碼;
不可直接定義,而由SHAREDPOOLSIZE決定。
DATADICTONARYCACHE。
如:SQL>SELECT*FROMAUTHORS;
執(zhí)行此命令的過(guò)程是:首先確認(rèn)是否存在AUTHORS,,然后確認(rèn)字段存不存在,再檢查語(yǔ)法,最后驗(yàn)證權(quán)限,而這些信息就屬于DATADICTIONARYCACHE的內(nèi)容。其包含的信息有:DATABASEFILES,表,索引,字段,用戶(hù),權(quán)限和其他數(shù)據(jù)庫(kù)對(duì)象。
主要用來(lái)改變系統(tǒng)的感應(yīng)時(shí)間和性能。
通過(guò)改變SHAREDPOOL大小來(lái)設(shè)置,DATADICTIONARYCACHE不能單獨(dú)設(shè)置大小
SQL>SHUTDOWNIMMEDIATE SQL>STARTUPNOMOUNT SQL>ALTERDATABASEMOUNT
SQL>SHOWSGA---顯示DATABASE內(nèi)存結(jié)構(gòu)信息 SQL>SETWRAPOFF SQL>SETLINESIZE200
<1>LARGEPOOL <2>JAVAPOOL SQL>SHOWPARAMETERSHARED SQL>SHOWPARAMETERDB_CACHE SQL>SHOWPARAMETERLOG