1、oracle啓動3個步驟: 一、nomount(只須要參數文件) a、依次尋找$ORACLE_HOME/database/中的如下文件: spfile$ORACLE_SID.ora,spfile.ora,init$ORACLE_SID.ora 注:在$ORACLE_HOME/admin/pfile/中有第一次啓動數據庫是用的pfile=init.ora.<時間>?? unix:$ORACLE_HOME/dbs/ b、其餘日誌文件在$ORACLE_HOME/admin/中。 c、控制文件,重作日誌,表空間文件在如下目錄中: $ORACLE_HOME/oradata/$ORACLE_SID/ [使用rman target /能夠在沒有參數文件nomount,db_name=DUMMY] 二、mount a、尋找控制文件 b、尋找口令文件pwd<sid>.ora或orapw c、unix中在mount後會有lk<sid>文件 三、open a、根據控制文件尋找日誌文件和數據文件 b、檢查控制文件和數據文件的checkpoint cnt是否一致 c、檢查控制文件和數據文件的scn是否一致 d、啓動在線日誌,提供對外服務等 2、檢查點相關: 一、檢查點設置 8i:FAST_START_IO_TARGET,LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL 9i:FAST_START_MTTR_TARGET 10g:自動檢查點調整 二、轉儲控制文件 alter session set events 'immediate trace name CONTROLF level 10'; 三、轉儲數據文件頭 alter session set events 'immediate trace name file_hdrs level 10'; 3、關閉數據庫 一、shutdown immediate;正常結束,徹底檢查點 二、shutdown abort;非正常結束,下次啓動時,系統會自動根據重作日誌重作事務 4、數據字典 一、內部RDBMS(X$)表,能夠從v$fixed_table查到,能夠經過查看一些系統視圖的執行計劃找到。 二、數據字典表,一般以「$」結尾,rdbms/admin/sql.bsq中建立 三、動態性能視圖,一般以「V$」開頭(含GV$開頭),v$synonym->sys.v_$view->sys.v$view->X$table,v$fixed_view_definition記錄其餘視圖的建立過程。rdbms/admin/catalog.sql中建立 四、數據字典視圖,user_*,all_*,dba_*,是x$table,table$的視圖 5、內存管理 a、sga v$sgastat,v$sgainfo 一、fixed size(實例的通用信息,後臺進程須要訪問的信息,不含用戶信息) 二、variable size shared pool(sql區,執行計劃,數據字典,內庫等) large pool(相關服務器模式,並行計算和RMAN) java pool streams pool(若是沒有定義,則包含在shared pool中) 三、database buffers buffer cache(default pool,keep pool,recycle pool) 9i以前由db_block_buffers(塊數量)和db_block_size(塊大小)決定; 9i以後新參數db_cache_size,定義主塊(db_block_size定義的塊)組成的default緩衝池大小,最小單位爲granule,9i新概念,if(sga<128MB) granule=4MB else granule=16MB. 四、redo buffers(沒有定義時,在fixed size中) redo log buffer(由log_buffer決定) b、系統參數shmmax unix下一般爲32MB,此爲每一個共享內存塊的大小,若是sga大於這個參數值,就會分配多個共享內存塊。建議調整shmmax參數,使一個sga在一個塊中。 c、sga的管理 一、8i中,由pfile靜止定義參數大小 二、9i中,能夠動態調整spfile參數 各個內存必須是granule的整數倍,自動向上取整, sga各個內存相加不能超過SGA_MAX_SIZE, SGA最低位3個granule,分別是fixed sga(redo),buffer cache,shared pool. 有V_$DB_CACHE_ADVICE,V_$SHARED_POOL_ADVICE對緩衝池和共享池的建議值, 三、10g中,ASMM 新參數SGA_TARGET,系統動態自動調整,可是必須小於SGA_MAX_SIZE,能夠自動調整的參數:buffer cache,shared pool,java pool,large pool.記錄到spfile中的參數以'__'開頭。 須要手動調整的參數:非標準block_size的cache,keep/recycle buffer cache,redo log buffer,stream pool. sga_target=0,表示手動調整。 d、pga(在服務器進程啓動或建立是分配,運行時再分配排序、鏈接等,一般包含私有sql區,存放綁定信息、運行是內存結構等,和session信息等) 一、8i中,有如下主要參數:sort_area_size,hash_area_size,bitmap_merge_size,create_bitmap_area_size.(show parameter area_size) 二、9i,自動化sql執行內存管理,新參數: pga_aggregate_target--全部session最大pga內存(10M……4096G-1)bytes.只對專用服務器模式有效,10g纔對共享有效。 workarea_size_policy--開關pga內存自動管理。 e、pga_aggregate_target(同時限制全局pga分配和私有工做區內存分配) 一、串行,單個sql操做能用的pga=min(5%pga_aggregate_target,100mb);並行,單個sql操做能用的pga=30%pga_aggregate_target/dop(並行度) 二、pga分可調整內存和不可調整內存,可調整內存是由sql工做區使用的,啓動自動pga調整後,可調整內存+不可調整內存<=pga_aggregate_target. 三、參數設置,oracle的建議方案: 對於OLTP系統,pga_aggregate_target=(<total physical memory>*80%)*20%;對於DSS(決策支持系統)系統,pga_aggregate_target=(<total physical memory>*80%)*50%. 四、能夠經過v$process.pga_used_mem看每一個進程使用pga的狀況,可是在aix系統中實際使用內存可能比這個大。 五、sql工做區的3種方式: optimal,內存完成;onepass,少許磁盤io;multipass,大量磁盤io。select name,value from v$sysstat where name like 'workarea executions%' f、pga的調整建議 v$pga_target_advece,v$pga_target_advice_histogram提供優化建議值。