一、 數據庫的啟動和關閉
1、Oracle Server主要由兩部分組成:Instance和Database。Instance是指一組后臺進程/線程和一塊共享內存區域,
而Database是指存儲在磁盤上的一組物理文件.
2、Oracle數據庫的啟動主要包含3個步驟:
(1)啟動數據庫到nomount(未加載)狀態; startup nomount
(2)啟動數據庫到mount(加載)狀態; alter database mount
(3)啟動數據庫到open(打開)狀態; alter database open
3、啟動的第一步,Oracle首先尋找參數文件(pfile/spfile),然后根據參數文件中的設置,創建實例,分配內存,
啟動后臺進程。
4、Oracle首先spfile<sid>.ora文件作為啟動參數文件;如果該文件不存在,則選擇spfile.ora,
然后是init<sid>.ora文件。
5、在SQL*PLUS中通過show parameter spfile命令來檢查數據庫是否使用了spfile文件。
6、參數文件中,通常需要最少的參數是 db_name,設置了這個參數之后,數據庫實例就可以啟動。
7、查看參數文件缺省路徑:
show parameter dump_dest
show parameter control_files
show parameter db_name //顯示實例名
show paramter compatible //顯示兼容
8、在使用RMAN(Recovery Manager)時存在更為特殊的情況,Oracle允許在不存在參數文件的情況下啟動一個實例,
數據庫的 db_name會被缺省命名為DUMMY
9、LSNRCTL> status //查看監聽狀態
LSNRCTL> start //啟動監聽
10、關閉數據庫 shutdown immediate 而非 shutdown, shutdown 會不正常關閉
shutdown 正常關閉,等待所有的用戶斷開連接
shutdown immediate 使用這個命令迫使每個用戶執行完成當前的SQL語句后立即斷開連接
shutdown transactional 執行Transaction關閉,迫使用戶在當前執行完成后斷開連接
shutdown abort 終止實例,停止所有的操作?;謴推茐牡奈募?,數據庫文件不能同其他數據庫文件保持一致
11、啟動數據庫到mount狀態
SQL>alter database mount;
在mount數據庫過程中,Oracle需要找到控制文件并鎖定控制文件。如果控制文件全部丟失此時就會報出如下錯誤:
ORA-00205:error in identifying controlfile,check alert log for more info
12、啟動數據庫open階段
SQL>alter database open;
13、SCN (System Change Number) 系統改變號
//獲取當前SCN select dbms_flashback.get_system_change_number from dual;
14、查檢點 (Checkpoint) 減少崩潰恢復(Crash Recovery)時間
二、參數及參數文件
1、初始化參數的分類,分為3類:推導參數、操作系統依賴參數和可變參數
2、推導參數(Derived Parameters)
推導參數通常來自于其他參數的運算,依賴其他參數得出。所以這類參數通常不需要修改。如果強制修改,那么修改值會覆蓋推導值。
常見的此類參數有很多,例如,SESSION參數,在Oracle文檔中,該參數按以下公式運算得出:
SESSION = (1.1*PROCESSES) + 5
缺省情況下,當PROCESSES被修改時,此參數會自動計算并生效
3、操作系統依賴參數
某些參數的有效值或取值范圍依賴或者受限于操作系統,如db_cache_size參數,設置Oracle使用的內存大小,該參數的最大值就要
受限于物理內存。這一類參數通常被稱為操作系統依賴參數。
4.可變參數
可變參數通常可以調整,有些設置的是限制條件,如OPEN_CURSORS;有的參數是設置容量,如DB_CACHE_SIZE等。這類參數通常可以
為DBA或最終用戶調整,從而產生限制性能變化,對Oracle至關重要。
5、初始化參數通常還有一些其他分類方式
a.按照修改方式劃分,初始化參數又可以分為靜態參數和動態參數。
靜態參數只能在參數文件中修改,在重新啟動后方能生效;動態參數可以動態調整,調整后通??梢粤⒓瓷?。
b.按照獲取方式不同,初始化參數又可以分為顯示參數和隱式參數。
顯示參數可以通過v$parameter查詢得到;而隱含參數通常以“_”開關,必須通過查詢系統表方能獲得這些參數。
6、SPFILE的搜索順序
重新啟動數據庫,使用startup命令,Oracle將會按照以下順序在缺省目錄中搜索參數文件。
(1) spfile<ORACLE_SID>.ora,其缺省目錄如下:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
(2) spfile.ora,其缺省目錄如下:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
(3) init<ORACLE_SID>.ora, 其缺省目錄如:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
創建了spfile,重新啟動數據庫,Oracle會按順序搜索以上目錄,spfile就會自動生效。
7、警報日志文件
控制警報日志文件位置的初始化參數是BACKGROUND_DUMP_DEST:
SQL> show parameter background_dump_dest
其缺省文件名為alert_<sid>.log
三、數據字典
1、數據字典由4部分組成:內部RDBMS(X$)表、數據字典表、動態性能(V$)視圖和數據字典視圖
2、數據字典表(Data Dictionary Table)用以存儲表、索引、約束以及其它數據庫結構的信息。
這些對象通常以"$"結尾(如tab$、obj$、ts$等)
sql.bsq是非常重要的一個文件,其中包含了數據字典表的定義及注釋說明,該文件位于$ORACLE_HOME/rdbms/admin目錄下。
3、動態性能視圖(Dynamic Performance View) 記錄了數據庫運行時信息和統計數據
從Oracle 8開始,GV$視圖開始被引入,其含義為Global V$,除了一些特例外,每個V$視圖都有一個對應的GV$視圖存在。
注意,每個V$視圖都包含類似語句:
where inst_id = USERENV('Instance')
用于限制返回當前實例信息
4、Oracle的X$表信息可以從v$fixed_table中查到:
SQL> select count(*) from v$fixed_table where name like 'X$%';
四、內存管理
1、SGA 指系統全局區(System Global Area)
一塊用于加載數據、對象并保存運行狀態和數據庫控制信息的一塊內存區域,在數據庫實例啟動時分配,當實例關閉時釋放,
每個實例都擁有自己的SGA區
2、數據緩沖區 (Buffer Cache) 的大小由初始化參數db_cache_size (8i中是db_block_size*db_block_buffers)決定
3、對于SGA各部分設置,可以從數據庫的視圖中查詢得到:
select * from v$sga;
show sga
4、SGA總和受參數SGA_MAX_SIZE設置的影響
show parameter sga_max_size
Variable Size 包括 shared_pool_size、java_pool_size和large_pool_size部分
五、Buffer Cache 與 Shared Pool 原理
Buffer Cache 與 Shared Pool是SGA中的最重要和最復雜的兩個部分
1、在Buffer Cache中,Oracle通過幾個鏈表進行內存管理,其中最為熟知的是LRU List和Dirty List(也經常被稱為Write List,從8i開始,
因為算法的改變,也被稱為Checkpoint Queue),各種List上存放的是指向具體Buffer的指針。
六、重做(Redo)
1、重做(Redo)和撤消(Undo)是Oracle的重要特性,用以保證事務的可恢復性和可撤消性。
2、在數據庫中,Redo的功能主要通過3個組件來實現:Redo Log Buffer、LGWR后臺進程和Redo Log File(在歸檔模式下,
Redo Log File最終會寫出為歸檔日志文件)
3、日志文件的狀態:CURRENT、ACTIVE、INACTIVE和UNUSED
(1).CURRENT
指當前的日志文件,該日志文件是活動的,當前正在被使用的,在進行崩潰恢復時,CURRENT的日志文件是必須的。
(2).ACTIVE
指活動的非當前日志,該日志可以已經完成歸檔也可能沒有歸檔,活動的日志文件在Crash恢復時會被用到。
(3).INACTIVE
指非活動日志,該日志在實例恢復時不再需要,但是在介質恢復時可能會用到。
日志是否完成歸檔,可以根據V$LOG.ARCHIVED字段進行判斷
select * from v$log;
(4).UNUSED
指該日志從未被定入,這類日志可能是剛被添加到數據庫或者在RESETLOGS之后被重置。被使用之后,該狀態會被改變。
七、等待事件
1、通過查詢V$EVENT_NAME視圖
select count(*) from v$evnet_name;
2、等待事件可以分為空閑(idle)等待和非空閑(non-idle)等待事件
.空閑事件指Oracle正等待某種工作,在診斷和優化數據庫的時候,不用過多注意這部分事件。
.非空閑等待事件專門針對Oracle的活動,指數據庫任務或應用運行過程中發生的等待,在調整數據庫的時候應該關注與研究
posted on 2010-12-20 10:07
譚明 閱讀(414)
評論(0) 編輯 收藏 所屬分類:
Oracle DBA