oracle歸檔模式轉換

2021-04-25 06:28:17 字數 3112 閱讀 1286

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

1.select name,log_mode from v$database;

name               log_mode

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

query           noarchivelog

2.使用archive log list 命令

database log mode              no archive mode

automatic archival             disabled

archive destination            /data/oracle/product/10.2.0/db_1//dbs/arch

oldest online log sequence     739

current log sequence           741

二。什麼是oracle歸檔模式?

oracle資料庫有聯機重做日誌,這個日誌是記錄對資料庫所做的修改,比如插入,刪除,更新資料等,對這些操作都會記錄在聯機重做日誌裡。一般資料庫至少要有2個聯機重做日誌組。當乙個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成為當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去寫聯機重做日誌組1,就這樣反覆進行。

如果資料庫處於非歸檔模式,聯機日誌在切換時就會丟棄. 而在歸檔模式下,當發生日誌切換的時候,被切換的日誌會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌 2,這時聯機重做日誌1的內容會被拷貝到另外乙個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的檔案叫歸檔重做日誌。

資料庫使用歸檔方式執行時才可以進行災難性恢復。

1.歸檔日誌模式和非歸檔日誌模式的區別

非歸檔模式只能做冷備份,並且恢復時只能做完全備份.最近一次完全備份到系統出錯期間的資料不能恢復.

歸檔模式可以做熱備份,並且可以做增量備份,可以做部分恢復.

用archive log list 可以檢視期模式狀態時歸檔模式還是非歸檔模式.

三。配置資料庫的歸檔模式

改變非歸檔模式到歸檔模式:

1)sql>shutdown normal/immediate;

2)sql>start mount;

3)sql>alter database archivelog;

4)sql>alter database open;

5)sql>做一次完全備份,因為非歸檔日誌模式下產生的備份日誌對於歸檔模式已經不可用了.這一步非非常重要!

改變歸檔模式到非歸檔模式:

1)sql>shutdown normal/immediate;

2)sql>start mount;

3)sql>alter database noarchivelog;

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:/oracle/archivedlog";

遠端歸檔目標:

sql>log_archive_dest_2 = "service=standby_db1";

強制的歸檔目標,如果出錯,600秒後重試:

sql>alter system set log_archive_dest_4 = "location=e:/oracle/archivedlog mandatory reopen=600";

可選的歸檔目標,如果出錯,放棄歸檔:

sql>alter system set log_archive_dest_3 = "location=e:/oracle/archivedlog 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;

Oracle歸檔模式轉換程為非歸檔模式的方法

在歸檔日誌模式下,有可能會遇到歸檔日誌大小超過最大值而出現討厭的ora 00257錯誤,前面說了如何把歸檔日誌空間變大。而在普通的開發環境下,其實是根本用不著歸檔日誌的,設個時候我們就把資料庫的歸檔日誌給禁用了,也就是說把資料庫變為非歸檔日誌模式,應該怎麼做呢。在這裡所有的操作要在資料庫的那台機器上...

oracle歸檔模式

一。檢視oracle資料庫是否為歸檔模式 1 1.select name,log mode from v database name log mode query noarchivelog 2.使用archive log list 命令 database log mode no archive mo...

oracle歸檔模式

一。檢視oracle資料庫是否為歸檔模式 1.select name,log mode fromv database name log mode query noarchivelog 2.使用 archive log list 命令 databaselogmode no archive mode a...