oracle歸檔模式學習筆記(一)


一、什麼是oracle歸檔模式:
oracle數據庫有聯機重做日誌,這個日誌是記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作
都會記錄在聯機重做日誌裏。一般數據庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿時候,就會發
生日誌切換,這時聯機重做日誌組2成爲當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去
寫聯機重做日誌組1,就這樣反覆進行。
如果數據庫處於非歸檔模式,聯機日誌在切換時就會丟棄,而在歸檔模式下,當發生日誌切換的時候,被切換的日誌
會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌2,這時聯機
重做日誌1的內容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的文件叫歸檔重做日誌。
數據庫使用歸檔方式運行時纔可以進行災難性恢復。

二、歸檔模式與非歸檔模式區別
非歸檔模式只能做冷備份,並且恢復時只能做完全備份。最近一次完全備份到系統出錯期間的數據不能恢復,
歸檔模式可以做熱備份,並且可以做增量備份,可以做部分恢復。
用archive log list 可以查看當前的模式狀態是歸檔模式還是非歸檔模式

三、開啓歸檔模式
SQL> alter database archivelog
  2  ;
alter database archivelog
*
第 1 行出現錯誤:
ORA-01126: 數據庫必須已裝載到此實例並且不在任何實例中打開

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。

SQL> alter database archivelog
  2  ;
alter database archivelog
*
第 1 行出現錯誤:
ORA-01034: ORACLE not available

SQL> startup mount
ORACLE 例程已經啓動。

Total System Global Area  612368384 bytes
Fixed Size                  1292036 bytes
Variable Size             230689020 bytes
Database Buffers          373293056 bytes
Redo Buffers                7094272 bytes
數據庫裝載完畢。

SQL> alter database archivelog
  2  ;

數據庫已更改。

此時如果需要操作庫表,則需要先執行一條命令用來打開數據庫開關,即

SQL> alter database open
  2  ;

數據庫已更改。

注:啓用歸檔模式必須是在數據庫處理於裝載狀態時進行,其步驟一般爲
a. 關閉數據庫shutdown immediate
b. 裝載數據庫startup mount
(mount 是裝載數據庫,比如讀取控制文件信息,看下數據文件是否存在之類,但是不打開,startup是啓動打開 startup 要經歷三部曲 nomount+ mount +open
 oracle啓動分爲三步:
 nomount --根據參數文件啓動實例(instance)
 mount --加載控制文件,讓實例和數據庫相關聯
 open --根據控制文件找到並打開數據文件和日誌文件,從而打開數據庫)
c. 更改爲歸檔日誌模式alter database archivelog
d. 打開數據庫alter database open

另外,由非歸檔模式改爲歸檔模式後,要做一次完全備份,因爲非歸檔模式下產生的備份日誌對於歸檔模式已經不可用了,這一步非常重要!


四、禁用歸檔模式
a.SQL>shutdown immediate
b.SQL>startup mount
c.SQL>alter database noachivelog
d.SQL>alter database open

五、自動歸檔和手動歸檔
在自動歸檔過程中,將啓用ARCn後臺進程,該進程在重做日誌文件填滿後複製這些文件;
在手動歸檔過程中,必須使用SQL*PLUS 或 Oracle Enterprise Manager 複製這些文件;

啓用自動歸檔或手動歸檔的原則
1.在決定使用哪種歸檔模式(自動歸檔或手動歸檔)之前,必須將數據庫設置爲歸檔(ARCHIVELOG)模式;
2.如果未切換到ARCHIVELOG模式,將導致ARCn無法複製重做日誌文件;
3.啓用歸檔進程之前,應徹底關閉數據(使用正常、立即或事務處理選項);

注:如果由於某種原因導致歸檔進程(ARCn)失敗,一旦事務處理活動填滿了所有重做日誌,oracle服務器就會停止。
將數據庫設置爲ARCHIVELOG模式將通知Oracle服務器不要覆蓋聯機重做日誌,除非這些日誌已經歸檔。
因此,聯機重做日誌的歸檔必須與系統中的事務處理活動(生成重做日誌)保持同步。

1).啓用自動歸檔,
 a.設置初始化參數:LOG_ARCHIVE_START=true
 SQL>  alter system set log_archive_start=true;
  alter system set log_archive_start=true
                  *
  第 1 行出現錯誤:
  ORA-02095: 無法修改指定的初始化參數
  
 SQL> alter system set log_archive_start=true scope=spfile;
  註解:有些參數不能動態修改,需要使用ALTER SYSTEM SET parameter = value  SCOPE = SPFILE,然後重新啓動數據庫才能生效。
     而ALTER SYSTEM SET parameter = value 使用的默認SCOPE = BOTH,包括同時修改spfile 和當前的設置

 運行過程中,關閉和重啓歸檔日誌進行
 SQL>ARCHIVE LOG STOP
 SQL>ARCHIVE LOG START

  b.例程啓動後啓用自動歸檔:ALTER SYSTEM ARCHIVE LOG START;
2).手動歸檔,設置初始化參數LOG_ARCHIVE_START=FALSE
 例程啓動後禁用自動歸檔(即手動歸檔):ALTER SYSTEM ARCHIVE LOG STOP
  歸檔當前的日誌文件
  SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
  歸檔序號爲022的日誌文件
  SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 022;
  歸檔所有日誌文件
  SQL>ALTER SYSTEM ARCHIVE LOG ALL;
  改變歸檔日誌目標
  SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章