Oracle歸檔模式和非歸檔模式

lhrbest發表於2017-04-23

Oracle歸檔模式和非歸檔模式



解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點?

答:歸檔模式是指可以備份所有的資料庫transactions並恢復到任意一個時間點。

        非歸檔模式則相反,不能恢復到任意一個時間點。

        但是非歸檔模式可以帶來資料庫效能上的少許提高。

記憶方式:歸檔模式>熱備份>恢復任意時間點>效能少許下降

                      非歸檔模式>冷備份>恢復完全備份>效能少許提高


一。檢視oracle資料庫是否為歸檔模式:

  1. 1.select name,log_mode from v$database;  
  2. NAME               LOG_MODE  
  3. ------------------ ------------------------  
  4. QUERY             NOARCHIVELOG  
  5. 2.使用ARCHIVE LOG LIST 命令  
  6. Database log mode                 No Archive Mode  
  7. Automatic archival                   Disabled  
  8. Archive destination                  /data/oracle/product/10.2.0/db_1//dbs/arch  
  9. Oldest online log sequence     739  
  10. Current log sequence              741  
 
二。什麼是Oracle歸檔模式?
  Oracle資料庫有聯機重做日誌,這個日誌是記錄對資料庫所做的修改,比如插入,刪除,更新資料等,對這些操作都會記錄在聯機重做日誌裡。一般資料庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成為當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去寫聯機重做日誌組1,就這樣反覆進行。
  如果資料庫處於非歸檔模式,聯機日誌在切換時就會丟棄. 而在歸檔模式下,當發生日誌切換的時候,被切換的日誌會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌2,這時聯機重做日誌1的內容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的檔案叫歸檔重做日誌。
  資料庫使用歸檔方式執行時才可以進行災難性恢復。
1.歸檔日誌模式和非歸檔日誌模式的區別
非歸檔模式只能做冷備份,並且恢復時只能做完全備份.最近一次完全備份到系統出錯期間的資料不能恢復.
歸檔模式可以做熱備份,並且可以做增量備份,可以做部分恢復.
用ARCHIVE LOG LIST 可以檢視期模式狀態時歸檔模式還是非歸檔模式
===============================================================
三。配置資料庫的歸檔模式
 
改變非歸檔模式到歸檔模式:
Sql程式碼
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下資料   
  2. 2)SQL>START MOUNT;                                啟動資料庫例項到mount狀態,但不要開啟   
  3. 3)SQL>ALTER DATABASE ARCHIVELOG;      設定資料庫為歸檔日誌模式   
  4. 4)SQL>ALTER DATABASE OPEN;                  開啟資料庫   
  5. 5)SQL>archive log list;                                確認資料庫現在處於歸檔日誌模式   
  6. 6)SQL>archive log all;                                 將這個時間點的redo logs歸檔  
[sql] view plain copy
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下資料  
  2. 2)SQL>START MOUNT;                                啟動資料庫例項到mount狀態,但不要開啟  
  3. 3)SQL>ALTER DATABASE ARCHIVELOG;      設定資料庫為歸檔日誌模式  
  4. 4)SQL>ALTER DATABASE OPEN;                  開啟資料庫  
  5. 5)SQL>archive log list;                                確認資料庫現在處於歸檔日誌模式  
  6. 6)SQL>archive log all;                                 將這個時間點的redo logs歸檔  
 
 
5)SQL>做一次完全備份,因為非歸檔日誌模式下產生的備份日誌對於歸檔模式已經不可用了.這一步非非常重要!
Sql程式碼
  1. SQL>alter tablespace users begin bacup;  
[sql] view plain copy
  1. SQL>alter tablespace users begin bacup;  
 
====================
如果停止歸檔模式就用
alter database noarchivelog 
========================
 

改變歸檔模式到非歸檔模式:
Sql程式碼 
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;         
  2. 2)SQL>START MOUNT;       
  3. 3)SQL>ALTER DATABASE NOARCHIVELOG;    
  4. 4)SQL>ALTER DATABASE OPEN;    
[sql] view plain copy
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;        
  2. 2)SQL>START MOUNT;      
  3. 3)SQL>ALTER DATABASE NOARCHIVELOG;   
  4. 4)SQL>ALTER DATABASE OPEN;    
  
 

3.啟用自動歸檔: LOG_ARCHIVE_START=TRUE
歸檔模式下,日誌檔案組不允許被覆蓋(重寫),當日志檔案寫滿之後,如果沒有進行手動歸檔,那麼系統將掛起,知道歸檔完成為止.
這時只能讀而不能寫.
執行過程中關閉和重啟歸檔日誌程式
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START
 
4.手動歸檔: LOG_ARCHIVE_START=FALSE
歸檔當前日誌檔案
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
歸檔序號為052的日誌檔案
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
歸檔所有日誌檔案
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改變歸檔日誌目標
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
 
5.歸檔模式和非歸檔模式的轉換
 
第4步的逆過程.
 
6.配置多個歸檔程式
Q:什麼時候需要使用多個歸檔程式?
A:如果歸檔過程會消耗大量的時間,那麼可以啟動多個歸檔程式,這是個動態引數,可以用ALTER SYSTEM動態修改.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
Oracle9i中最多可以指定10個歸檔程式
與歸檔程式有關的動態效能檢視
v$bgprocess,v$archive_processes
 

7.配置歸檔目標,多歸檔目標,遠端歸檔目標,歸檔日誌格式
歸檔目標 LOG_ARCHIVE_DEST_n
本地歸檔目標:
SQL>LOG_ARCHIVE_DEST_1 = "LOCATION=D:ORACLEARCHIVEDLOG";
遠端歸檔目標:
SQL>LOG_ARCHIVE_DEST_2 = "SERVICE=STANDBY_DB1";
強制的歸檔目標,如果出錯,600秒後重試:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = "LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600";
可選的歸檔目標,如果出錯,放棄歸檔:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = "LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL";
 
歸檔目標狀態:關閉歸檔目標和開啟歸檔目標
關閉歸檔目標1
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER 
開啟歸檔目標2
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE
 
歸檔日誌格式
LOG_ARCHIVE_FORMAT
 
8.獲取歸檔日誌資訊
V$ARCHVIED_LOG
V$ARCHVIE_DEST
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
 
ARCHIVE LOG LIST;



oracle11g RAC 啟動歸檔模式 

根據客戶要求,需要將歸檔日誌存放在ASM上。因此需要在ASM建歸檔路徑

ASMCMD> mkdir arch

ASMCMD> cd arch

ASMCMD> pwd 
+data1/kdcs/arch

修改歸檔路徑引數

SQL> alter system set log_archive_dest_1='location=+data1/kdcs/arch' scope=spfile sid='*';

System altered.

關閉資料庫,全部節點都要關閉

[grid@zhcs-db1 ~]$ srvctl stop database -d kdcs

檢查資料庫關閉後狀態

[grid@zhcs-db1 ~]$ crsctl stat res -t 
-------------------------------------------------------------------------------- 
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
-------------------------------------------------------------------------------- 
Local Resources 
-------------------------------------------------------------------------------- 
ora.DATA1.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.LISTENER.lsnr 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.OCR_DISK.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.asm 
               ONLINE  ONLINE       zhcs-db1                 Started             
               ONLINE  ONLINE       zhcs-db2                 Started             
ora.gsd 
               OFFLINE OFFLINE      zhcs-db1                                     
               OFFLINE OFFLINE      zhcs-db2                                     
ora.net1.network 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.ons 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.registry.acfs 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
-------------------------------------------------------------------------------- 
Cluster Resources 
-------------------------------------------------------------------------------- 
ora.LISTENER_SCAN1.lsnr 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.cvu 
      1        OFFLINE OFFLINE                                                   
ora.kdcs.db 
      1        OFFLINE OFFLINE                               Instance Shutdown   
      2        OFFLINE OFFLINE                               Instance Shutdown   
ora.kdcs.ser_scanip.svc 
      1        OFFLINE OFFLINE                                                   
      2        OFFLINE OFFLINE                                                   
ora.oc4j 
      1        ONLINE  ONLINE       zhcs-db2                                     
ora.scan1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db2.vip 
      1        ONLINE  ONLINE       zhcs-db2         

將一個節點資料庫啟動到mount狀態

[grid@zhcs-db1 ~]$ srvctl start instance -d kdcs -i kdcs1 -o mount

修改資料庫的歸檔模式並啟動資料庫

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

檢查狀態 
SQL> archive log list; 
Database log mode              Archive Mode 
Automatic archival             Enabled 
Archive destination            +DATA1/kdcs/arch 
Oldest online log sequence     86 
Next log sequence to archive   87 
Current log sequence           87 
SQL>

啟動2節點資料庫

[grid@zhcs-db1 ~]$ srvctl start instance -d kdcs -i kdcs2

檢查叢集狀態

[grid@zhcs-db1 ~]$ crsctl stat res -t 
-------------------------------------------------------------------------------- 
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
-------------------------------------------------------------------------------- 
Local Resources 
-------------------------------------------------------------------------------- 
ora.DATA1.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.LISTENER.lsnr 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.OCR_DISK.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.asm 
               ONLINE  ONLINE       zhcs-db1                 Started             
               ONLINE  ONLINE       zhcs-db2                 Started             
ora.gsd 
               OFFLINE OFFLINE      zhcs-db1                                     
               OFFLINE OFFLINE      zhcs-db2                                     
ora.net1.network 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.ons 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.registry.acfs 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
-------------------------------------------------------------------------------- 
Cluster Resources 
-------------------------------------------------------------------------------- 
ora.LISTENER_SCAN1.lsnr 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.cvu 
      1        OFFLINE OFFLINE                                                   
ora.kdcs.db 
      1        ONLINE  ONLINE       zhcs-db1                 Open                
      2        ONLINE  ONLINE       zhcs-db2                 Open                
ora.kdcs.ser_scanip.svc 
      1        ONLINE  ONLINE       zhcs-db1                                     
      2        ONLINE  ONLINE       zhcs-db2                                     
ora.oc4j 
      1        ONLINE  ONLINE       zhcs-db2                                     
ora.scan1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db2.vip 
      1        ONLINE  ONLINE       zhcs-db2                                     
[grid@zhcs-db1 ~]$




RMAN備份及恢復歸檔日誌的語法 

一.備份所有歸檔日誌檔案
   RMAN> backup archivelog all delete input;
二: restore archivelog 的各種選項
   1.恢復全部歸檔日誌檔案
     RMAN> restore archivelog all;
   2.只恢復5到8這四個歸檔日誌檔案
     RMAN> restore archivelog from logseq 5 until logseq 8;
   3.恢復從第5個歸檔日誌起
     RMAN> restore archivelog from logseq 5;
   4.恢復7天內的歸檔日誌
     RMAN> restore archivelog from time 'sysdate-7';
   5. sequence between 寫法
     RMAN> restore archivelog sequence between 1 and 3;
   6.恢復到哪個日誌檔案為止
     RMAN> restore archivelog until logseq 3;
   7.從第五個日誌開始恢復
     RMAN> restore archivelog low logseq 5;
   8.到第5個日誌為止
     RMAN> restore archivelog high logseq 5;
三:如果想改變恢復到另外路徑下 則可用下面語句
   set archivelog destination to 'd:\backup';

   RMAN> run
   2> {allocate channel ci type disk;
   3> set archivelog destination to 'd:\backup';
   4> restore archivelog all;
   5> release channel ci;
   6> }

 




【MOS】配置RMAN清除已應用到備庫的歸檔日誌 (文件 ID 1577382.1) 

文件內容

目標
解決方案
參考


適用於:

Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 10.2.0.5 [發行版 10.2]
本文件所含資訊適用於所有平臺

目標

我們需要利用RMAN自動從FRA清除已經應用到備庫的歸檔日誌。

 

 

1) Bug 6216036:

在10g中,使用CONFIGURE命令配置的歸檔日誌刪除策略
僅適用於自動刪除閃回恢復區的歸檔日誌。
其他的刪除機制,如DELETE ARCHIVELOG或DELETE INPUT不遵守這個配置。


2)APPLIED ON STANDBY - 啟用閃回恢復區刪除已應用在屬性為mandatory的備庫的歸檔日誌。

更多資訊請檢視 Oracle Data Guard Concepts and Administration

http://docs.oracle.com/cd/B19306_01/backup.102/b14194/rcmsynta015.htm#sthref289


在11g此限制已解除。

 

 

解決方案

DataGuard的配置中,當資料庫滿足下列條件時,FRA下的歸檔日誌將被自動清除,。如果您需要在主庫清除,將其設定在主庫。

1) 11g之前,如果不使用mandatory ARCHIVELOG目標,資料庫(主庫和備庫)必須更改下面的引數並重新啟動:      

SQL> alter system set "_log_deletion_policy"='ALL' scope=spfile;

2) 在RMAN中配置下列引數(主庫和備庫):

    RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

 

警告:對於10g,如果設定了APPLIED ON STANDBY, 即使FRA 中的檔案沒有備份也會被清除。

 11g: 從11g 開始,我們對歸檔日誌刪除策略的配置進行了增強,包含了 APPLIED ON [ALL] STANDBY [BACKED UP n TIMES TO DEVICE TYPE ] 選項。該選項確認歸檔日誌已經被應用,並且在主庫進行過備份後才可以被清除。

 

3) 歸檔日誌必須已應用到備庫。執行下面的查詢列出所有已應用到備庫的歸檔日誌:

select a.thread#, a.sequence#, a.applied
from v$archived_log a, v$database d
where a.activation# = d.activation#
and a.applied='YES'
/

4) FRA有空間壓力

當歸檔日誌從FRA自動刪除,你會看到資料庫的alert.log報出以下資訊:

Sat Jun 18 01:00:32 2011
Deleted Oracle managed file /opt/app/oracle/FRA/ORA102/archivelog/2011_05_30/o1_mf_1_151_6y71q675_.arc
Deleted Oracle managed file /opt/app/oracle/FRA/ORA102/archivelog/2011_05_31/o1_mf_1_151_6y87pzg4_.arc


 

參考

NOTE:331924.1 - RMAN backups in Max Performance/Max Availability Data Guard Environment
BUG:6216036 - RMAN+DG ARCHIVELOG DELETION POLICY APPLIED ON STANDBY NOT RESPECTED
NOTE:740322.1 - RMAN Archived Redo Logs Are Deleted Before Being Applied at Standby Database










ORA-00257  刪除歸檔日誌





遇到ORA-00257的錯誤,需要做的就是刪除歸檔日誌,釋放空間。需要強調的是:如果資料庫擁有物理備份機制,請先備份歸檔日誌,再做刪除操作。以下是無備份機制的步驟處理:


1、 在作業系統bash下,宣告運算元據庫例項:

orcl1:/home/oracle@db1>export ORACLE_SID=orcl1

2、 執行RMAN命令:

orcl1:/home/oracle@db1>rman target /

3、 檢查歸檔日誌狀態

RMAN>crosscheck archivelog all;

4、 刪除無效歸檔日誌

RMAN>delete noprompt expired archivelog all;

5、 執行rman命令刪除歸檔日誌(7天前):

RMAN>delete archivelog all completed before 'sysdate-7';

      

以下是有備份機制的處理步驟:

1、 在作業系統bash下,宣告運算元據庫例項:

orcl1:/home/oracle@db1>export ORACLE_SID=orcl1

2、 執行RMAN命令:

orcl1:/home/oracle@db1>rman target /

3、 檢查歸檔日誌狀態

RMAN>crosscheck archivelog all;

4、 刪除無效歸檔日誌

RMAN>delete noprompt expired archivelog all;

5、 執行備份歸檔日誌並刪除操作:

RMAN>backup archivelog all format '$ORA_BACKUP_LOCATION/ARCHBAK_%d_%T_%s' tag arch_bak delete all input;

     

  注意:$ORA_BACKUP_LOCATION變數為歸檔日誌備份路徑,ARCHBAK_%d_%T_%s為歸檔日誌備份檔名格式。請根據實際情況進行具體設定。






About Me

...............................................................................................................................

● 本文整理自網路

● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● QQ群:230161599     微信群:私聊

● 聯絡我請加QQ好友(646634621),註明新增緣由

● 於 2017-04-28 09:00 ~ 2017-04-30 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

...............................................................................................................................

拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。

Oracle歸檔模式和非歸檔模式
DBA筆試面試講解
歡迎與我聯絡

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2137829/,如需轉載,請註明出處,否則將追究法律責任。

相關文章