1. 程式人生 > >oracle執行方式之歸檔方式與不歸檔方式的轉換

oracle執行方式之歸檔方式與不歸檔方式的轉換

1、瞭解ORACLE的執行方式

     ORACLE資料庫有兩種執行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當資料庫發生故障時最大限度恢復資料庫,可以保證不丟失任何已提交的資料;二是不歸檔方式(NOARCHIVELOG),只能恢復資料庫到最近的回收點(冷備份或是邏輯備份)。

    如何改變資料庫的執行方式,一般情況下為NOARCHIVELOG方式。當資料庫建立好以後,根據我們的需要把需要執行在歸檔方式的資料庫改成ARCHIVELOG方式。

2、檢視檢視當前資料庫是否處於歸檔模式

    首先要檢視歸檔與不歸檔方式,需要我們切換使用者到oracle使用者,使用命令:su - oracle;在使用如下兩種方式檢視:

  1. select name, log_mode from v$database;

           

            ****  log_mode的值為 NOARCHIVELOG 表示資料庫處於非歸檔模式

           

            ***  log_mode的值為 ARCHIVELOG 表示資料庫處於歸檔模式

     2. archive log list; 

        這種方式需要oracle最高許可權(sysdba)

          (1)、進入Sqlplus控制檯,命令:sqlplus /nolog;

          (2)、以系統管理員登入,命令:connect /as sysdba;  

          (3)、查詢當前歸檔方式,命令:archive log list;

            

               Database log mode 的值為 No Archive Mode;

               Automatic archival 的值為 Disabled,表示當前資料庫處於非歸檔模式

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

               Database log mode 的值為 Archive Mode

               Automatic archival 的值為 Enabled, 表示資料庫已開啟歸檔模式

3、將不歸檔模式改為歸檔模式(以下命令均在Sqlplus控制檯輸入)

(1)、關閉資料庫,命令:shutdown immediate;

(2)、啟動資料庫到mount狀態,命令:startup mount;

(3)、修改資料庫為歸檔模式,命令:alter database archivelog;

(4)、開啟資料庫,命令:alter database open;

(5)、查詢資料庫是否已處於歸檔模式,命令:archive log list;如果Database log mode 的值為 Archive Mode,並且Automatic archival 的值為 Enabled, 表示資料庫已開啟歸檔模式;

(6)、修改日誌檔案命名格式

    alter system set log_archive_max_processes = 5; 

    alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

(7)、更改日誌檔案路徑

    alter system set log_archive_dest_1='location=/data/archivelog/orcl';當我們使用archive log list命令顯示時,會看到Archive destination的值更改為 /data/archivelog/orcl,

假如有需要,可以生成多份一樣的日誌,以防不測,在新增一份日誌儲存位置命令:alter system set log_archive_dest_2='location=/bak/orcl/archive_log';

4、將Oracle資料庫設定為非歸檔模式
1)、關閉資料庫 
shutdown immediate 
2)、再後面把資料庫啟動到mount的模式 
startup mount 
3)、關閉flash閃回資料庫模式,如果不關閉的話,在後面關閉歸檔日誌的時候就會出現討厭的ora-38774錯誤。 
alter database flashback off 
4)、接著把資料庫改為非歸檔模式 
alter database noarchivelog; 
5)、都修改好了以後,然後開啟資料庫 
alter database open; 
6)、察看一下歸檔日誌的空間大小 
select * from v$recovery_file_dest; 
接著看一下log日誌的狀態 
select * from v$log; 
再看一下閃回日誌使用狀況 
select * from v$flash_recovery_area_usage;