Oracle 歸檔和非歸檔模式之間的切換

kuqlan發表於2012-06-10

Oracle 資料執行模式有 歸檔和非歸檔模式兩種,資料庫安裝後的預設情況及相互切換方法如下:

1、在Linux4.7+Oracle10g環境:當資料庫建立時,如果沒有選擇flash_recovery_area並不啟用歸檔操作,則模式設定如下:

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /opt/oracle/product/10.2.0/dbs/arch

Oldest online log sequence 15

Current log sequence 17

SQL>

[@more@]

要改變為歸檔模式並改變預設的歸檔檔案路徑的具體操作步驟如下:

在作業系統建立歸檔所需的獨立目錄,如果放到預設目錄,則該步驟不用執行:

[root@dbserv ~]# cd /opt/

[root@dbserv opt]# mkdir backup

[root@dbserv opt]# chown -R oracle:oinstall backup/

[root@dbserv opt]# chmod -R 755 backup/

關閉資料庫並將重啟至mount狀態

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /opt/oracle/product/10.2.0/dbs/arch

Oldest online log sequence 15

Current log sequence 17

更改預設歸檔路徑並將資料庫改為歸檔模式(要注意location字元及等號前後無空格):

SQL> alter system set log_archive_dest_1='location=/opt/backup';

System altered.

SQL> alter database archivelog;

Database altered.

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /opt/backup

Oldest online log sequence 15

Next log sequence to archive 17

Current log sequence 17

如果要返回非歸檔模式,則在mount狀態下執行如下命令即可:

SQL> alter database noarchivelog;

2、在Linux4.7+Oracle10g環境:當資料庫建立時,如果選擇flash_recovery_area並不啟用歸檔操作,則模式設定如下:

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 4

Current log sequence 6

這裡的USE_DB_RECOVERY_FILE_DEST指的是,當資料庫建立時如果選用flash_recovery_area的預設路徑,則個如下:

SQL> show parameter db_recovery_file_dest

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest string /opt/oracle/flash_recovery_are

a

db_recovery_file_dest_size big integer 2G

該路徑建庫是也可以自定義,當然建庫完畢後也可以如下命令修改:

SQL> alter system set db_recovery_file_dest='/opt/backup' scope=spfile;

System altered.

SQL> show parameter db_recovery_file_dest;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest string /opt/oracle

db_recovery_file_dest_size big integer 2G

修改後,實際效果是新生成的archivelog已經在新路徑下儲存, 但是flashback缺仍然在原來的路徑下生成,因此整個修改過程應該如下:

1 alter system set db_recovery_file_dest='xxx' scope=spfile;

2 shutdown immediate;

3 startup mount

4 alter database flashback off;

5 alter database flashback on;

6 alter database open;

以上過程中,步驟45是必須的;

如果要返回非歸檔模式,則在mount狀態下執行如下命令即可:

SQL> alter database noarchivelog;

3、在Windows+Oracle10g環境:當資料庫建立時,如果沒有選擇flash_recovery_area並不啟用歸檔操作,則模式設定如下:

SQL> archive log list

資料庫日誌模式 存檔模式

自動存檔 啟用

存檔終點 D:oracleproduct10.2.0db10gRDBMS

最早的聯機日誌序列 0

下一個存檔日誌序列 1

當前日誌序列 1

修改過程跟Linux環境一樣,即關閉資料庫,在Nomont狀態下:

SQL> alter system set log_archive_dest_1='location=D:oraclebackuparchive';

系統已更改。

SQL> alter database archivelog;

資料庫已更改。

SQL> archive log list;

資料庫日誌模式 存檔模式

自動存檔 啟用

存檔終點 D:oraclebackuparchive

最早的聯機日誌序列 4

下一個存檔日誌序列 6

當前日誌序列 6

SQL>

關於在Windows上艱苦時啟用flash_recovery_area功能,跟Linux環境一樣;

4DB_RECOVERY_FILE_DESTlog_archive_dest_nlog_archive_dest的說明:

DB_RECOVERY_FILE_DEST引數是預設的flash recovery area的路徑,裡面存放有歸檔日誌、閃回日誌以及rman的備份檔案等檔案。如果歸檔原來不在閃回去,設定歸檔日誌存放在閃回區,可以使用如下命令:

SQL> alter system set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST';

System altered.

log_archive_dest_n與DB_RECOVERY_FILE_DEST引數都可以用來存放歸檔日誌,但二者的關係是:不設定log_archive_dest_n時,使用DB_RECOVERY_FILE_DEST來存檔案;當設定了log_archive_dest_n時,則使用log_archive_dest_n來存放歸檔日誌。

log_archive_dest_nlog_archive_dest Log_archive_duplex_dest引數不相容,如果設定了log_archive_dest引數,需要先將其清空:

SQL> alter system set log_archive_dest='';

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

相關文章