SMON進程、PMON進程、LGWR/ARCH
SMON 進程:system monitor instance monitor 系統監控、實例監控進程
說明及作用:在實例關閉時,會清理臨時段,整理空閑空間free space;
實例非正常關閉後,啟動實例時,做instance recovery ;
SMON如何判斷是否需要實例恢復: --在數據庫mount狀態,可以通過last_change#是否未Null;
select name,checkpoint_change#,last_change# from v$datafile;
--數據庫在一致性關庫的時候會觸發ckpt,完全檢查點,控制文件會記錄相應的值;
前滾,通過redo日誌查詢到離數據庫最近的一次檢查點SCN為起始點,通過應用redo往前滾走到redo日誌的最後一刻,重演操作,也就是將數據庫的臟塊還原,隨後應用Undo,回滾事物的方式將未提交的事物回滾,確保事務一致性後,數據庫open;
PMON:SMON是實例級別的管理,那麽 進程誰管理呢?
PMON: process cleanup 進程清理
說明:用戶連接數據庫,會產生一個會話分配一個server process提供服務,以及分配一個Uga,正常情況下,會話退出,釋放資源。但是如果異常退出呢?比如客戶端死機,server process 不會正常退出,持有的資源還在不斷消耗,PMON進程會監控進程,一旦發現後,釋放資源,回滾事物:鎖、內存等消耗釋放
監控進程,將Instance註冊到listener,Oracle自動的,如果數據庫多個實例,然而監聽程序就一個,需要將實例註冊到監聽中,讓其識別;如果配置的是動態監聽,數據庫啟動,需要等待Pmon進程去註冊,可能需要等待一段時間,可以通過命令手工註冊:alter system register;
LGWR: 日誌寫進程:
說明:從log buffer 寫入redo log files文件中;
在單實例環境下,只有一個Log buffer,因此設置多個lgwn進程沒有意義,日誌是串行寫進程,順序寫;
12c可以有00-99個lgwr進程;
觸發條件:1.commit提交,commit操作只涉及到了LGWR進程,提示commit成功,只表明log buffer 寫入了log file文件且在redo undo中事物標記commit提交標識;
2. 每3s
3、1/3滿:存儲的數據,在Log buffer中存儲三分之一就觸發條件;
4、 1M累計
5、 DBWR寫臟塊前 寫入redo log file 文件中,ORACLE 一定要記住,日誌先行’
ARCN 歸檔進程,作為日誌文件的補充;
Oracle如何保證恢復的完全恢復,就是應用redo 日誌來解決的恢復問題;
Oracle的日誌文件有個特點: 循環覆蓋寫,最少一個單實例數據庫所需的redo file文件最少兩組,A寫滿,切換B,如果B寫滿,在循環使用A, 如果是非歸檔模式下,則覆蓋文件;
在生成環境下,為了確保數據0丟失,因此保留日誌文件是非常有必要的,因此會開啟歸檔,開啟歸檔後,在A切換B之後,立刻馬上,A寫滿的日誌文件會在ARCN的進程引導下按照歸檔文件命名規則,生成一個歸檔文件;
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch
SQL> startup force mount; --設置歸檔,需要數據庫一致性關閉數據,並啟動到mount狀態
ORA-00265: instance recovery required, cannot set ARCHIVELOG mode
SQL>alter database open;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log list; Database log mode Archive Mode
SQL> alter database open;
--開啟歸檔後,歸檔進程的數量
SQL> show parameter arch
log_archive_max_processes integer 4 --歸檔進程數量
--查詢當前狀態:
select dest_id,dest_name,status,binding,name_space,destination,log_sequence from v$archive_dest where status=‘VALID‘;
1 LOG_ARCHIVE_DEST_1 VALID OPTIONAL SYSTEM /u01/guidang/ 0
2 LOG_ARCHIVE_DEST_2 VALID OPTIONAL SYSTEM /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/ 0
---參數,標識數據庫,歸檔文件命名規則
log_archive_format string %t_%s_%r.dbf
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch
SQL> show parameter log_arch
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_2 string
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0
--更改歸檔路徑:
如下,設置了兩個歸檔參數,兩個歸檔互為備份,Location本地,server遠程
mkdir -p /xxx目錄,權限需要註意,chown -R oracle.oinstall
alter system set log_archive_dest_1="location=/u01/guidang/";
SQL> alter system set log_archive_dest_2="location=/picclife/app/oracle/product/11.2.0/dbhome_1/dbs/arch/";
SMON進程、PMON進程、LGWR/ARCH