1. 程式人生 > >檢視oracle資料庫是否歸檔和修改歸檔模式

檢視oracle資料庫是否歸檔和修改歸檔模式

分為非歸檔模式(NOARCHIVELOG) 和歸檔模式(ARCHIVELOG)。非歸檔模式不產生歸檔日誌,雖然節省了硬碟空間,但是備份方案選擇很有限,通常只能選擇冷備份。還原也只能還原到備份那一時刻的資料,通常也僅在開發時使用(據說在資料倉庫中也使用),Oracle安裝預設就是非歸檔模式。在生產環境中我們因該使用歸檔模式,它會產生歸檔日誌,可以使用多種備份和還原方案,對與Oracle管理員來說應該更改模式是必然的選擇。

首先檢視資料庫現有模式可使用以下語句

select name,log_mode from v$database;

也可以用下面的語句
archive log list;(該方法需要as sysdba)


對於非歸檔模式的資料庫該為歸檔模式(主要以Oracle 10g為參考)使用以下步驟:

1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';

該語句含義是確定歸檔日誌的路徑,實際上Oracle 10g可以生成多份一樣的日誌,儲存多個位置,以防不測
例如再新增一個日誌位置可使用以下語句

SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';

2.關閉資料庫
SQL> shutdown immediate

3.啟動資料mount狀態:
SQL> startup mount;

4、修改資料庫為歸檔模式:
SQL> alter database archivelog;

5、開啟資料庫,查詢:
SQL> alter database open;

修改日誌檔案命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

修改完成後可以檢視日誌模式是否修改成功!
特別指出的是在Oracle 9i中還要修改引數alter system set log_archive_start = true才能生效,oracle 10g中已經廢除了該引數,所以不需要設定該引數。

自動歸檔預設是禁用,需要修改parameter log_archive_start=TRUE才能啟用自動歸檔。 
  SQL> show parameter log_archive_start

  NAME                                 TYPE        value



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

  log_archive_start                     boolean    FALSE

  SQL> archive log list

  資料庫日誌模式            存檔模式

  自動存檔                      禁用

  存檔終點                      /oracle/oracle9i/u01/product/9201/dbs/arch

  最早的概要日誌序列     18

  下一個存檔日誌序列     19

  當前日誌序列               20

  SQL> alter system set log_archive_start=TRUE scope=spfile;

  系統已更改。

  SQL> startup force

  ORACLE 例程已經啟動。

  Total System Global Area  320308312 bytes

  Fixed Size                730200 bytes

  Variable Size            285212672 bytes

  Database Buffers      33554432 bytes

  Redo Buffers            811008 bytes

  資料庫裝載完畢。

  資料庫已經開啟。

  SQL> archive log list

  資料庫日誌模式                     存檔模式

  自動存檔                              啟用

  存檔終點                         /oracle/oracle9i/u01/product/9201/dbs/arch

  最早的概要日誌序列             19

  下一個存檔日誌序列          21

  當前日誌序列                       21

  SQL> show parameter log_archive_start

  NAME                        TYPE     value

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

  log_archive_start            boolean   TRUE

  SQL> 

  自動歸檔模式下強制歸檔

  SQL> alter system switch logfile;

  SQL> select * from v$log;