1. 程式人生 > >SMON進程、PMON進程、LGWR/ARCH

SMON進程、PMON進程、LGWR/ARCH

down 一個 引導 通過命令 automatic 以及 有意 內存 sele

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