轉自:
http://database.51cto.com/art/200707/51422.htm
【引自相濡以沫的部落格】Oracle兩部分:執行個體和資料庫
執行個體由以下組成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。資料庫由物理檔案組成,其中必須有的檔案是:資料檔案,控制檔案,重做日誌。另外還有:參數檔案,口令檔案,歸檔記錄檔(這三個不是必須的)。
使用者建立串連後,啟動一個伺服器處理序,用來將來代替使用者進程完成SQLCOMMAND,再通過Oracle執行個體實現對資料庫的相關檔案進行改變(資料進行讀取或修改)。
使用者進程不可以直接操作資料庫,而必須通過建立串連後,再通過伺服器處理序來完成。
OracleSERVER由兩個部分組成,
1、INSTANCE:由記憶體結構和後台進程組成。
2、DATABASE:由資料檔案,記錄檔和控制檔案組成<這三個檔案是必需的>。
CONTROLFILE是用來串連執行個體和DATABASE:
sql>SHUTDOWNIMMEDIATE sql>STARTUPNOMOUNT sql>ALTERDATABASEMOUNT |
以上三個過程就是通過CONTROLFILE來串連執行個體和資料庫。
sql>ALTERDATABASEOPEN:在OPEN的過程對DATABASE的資料檔案和重做記錄檔進行一次性的驗證,驗證它們的狀態。
OracleINSTANCE:存取資料庫的一個手段。
一個DATABASE與INSTANCE之間是1:N的關係,一個INSTANCE只能操作一個DATABASE,由記憶體結構(共用池,BUFFERCACHE,REDOLOGBUFFERCACHE)及相應的進程結構組成(PMON<程式監控進程>,SMON<系統監控進程>,CKPT<檢查點進程>)。
sql>SHOWSGA---顯示DATABASE記憶體結構資訊 sql>SETWRAPOFF sql>SETLINESIZE200 |
以上這兩個是設定行寬。
sql>SELECT*FROMV$BGPROCESS;
|
將看到在這個系統中所有可能使用到的進程,其中PADDR並不每個進程都分配到有效地址,即並不是每個進程都是必須的。
sql>SELECT*FROMV$BGPROCESSWHEREPADDR<>'00' |
將顯示所有必需的進程。
ESTABLISHINGACONNECTIONANDCREATINGASESSION
串連到Oracle執行個體
包括建立一個使用者串連及建立會話。
sql>SELECT*FROMV$CONTROLFILES;--顯示現系統下由幾個控制檔案組成。 sql>SELECT*FROMV$DATAFILE;--顯示由幾個資料檔案組成。 sql>SELECT*FROMV$LOGFILE;--顯示由幾個記錄檔組成。 |
Oracle MEMORY STRUCTURE(記憶體結構)
由兩部分組成:
1、SGA是動態,其最大值由SGA_MAX_SIZE指定,SGA的記憶體由SGACOMPONENTS來動態調整。
2、PGA是不共用的,即其包含的資訊是不一樣的,有兩個可享的記憶體可以由SGA配置:
(1)LARGEPOOL (2)JAVAPOOL sql>SHOWPARAMETERSHARED sql>SHOWPARAMETERDB_CACHE sql>SHOWPARAMETERLOG |
以上三個命令是用於查看相關記憶體資訊。
sql>ALTERSYSTEMSETDB_CACHE_SIZE=20M; |
所有記憶體大小總和不能大於SGA_MAX_SIZE的值,當提示資訊出現?號或亂碼時,是由於系統的語言問題。
可以通過ALTERSESSIONSETNLS_LANGUAGE='AMERICAN'或ALTERSESSIONSETNLS_LANGUAGE="SIMPLE CHINESE"。
SHAREDPOOL(共用池)
(1)LIBRARYCACHE庫緩衝;
(2)DATADICTIONARYCACHE資料字典緩衝,有的地方又稱行CACHE,由SHARED_POOL_SIZE指定大小。
sql>ALTERSYSTEMSETSHARED_POOL_SIZE=64M; |
LIBRARYCACHE主要為提高代碼的共用,儲存的是最近使用的SQL和PL/SQL代碼。
(1)用最近最少使用(LRU)演算法;
(2)包括兩個結構1:共用SQL代碼;2:共用PL/SQL代碼;
(3)不可直接定義,而由SHAREDPOOLSIZE決定。
DATADICTONARYCACHE。
如:SQL>SELECT*FROMAUTHORS;
執行此命令的過程是:首先確認是否存在AUTHORS,然後確認欄位存不存在,再檢查文法,最後驗證許可權,而這些資訊就屬於DATADICTIONARYCACHE的內容。其包含的資訊有:DATABASEFILES,表,索引,欄位,使用者,許可權和其他資料庫物件。
(1)主要用來改變系統的感應時間和效能。
(2)通過改變SHAREDPOOL大小來設定,DATADICTIONARYCACHE不能單獨設定大小。