oracle執行方式之歸檔方式與不歸檔方式的轉換
1、瞭解ORACLE的執行方式
ORACLE資料庫有兩種執行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當資料庫發生故障時最大限度恢復資料庫,可以保證不丟失任何已提交的資料;二是不歸檔方式(NOARCHIVELOG),只能恢復資料庫到最近的回收點(冷備份或是邏輯備份)。
如何改變資料庫的執行方式,一般情況下為NOARCHIVELOG方式。當資料庫建立好以後,根據我們的需要把需要執行在歸檔方式的資料庫改成ARCHIVELOG方式。
2、檢視檢視當前資料庫是否處於歸檔模式
首先要檢視歸檔與不歸檔方式,需要我們切換使用者到oracle使用者,使用命令:su - oracle;在使用如下兩種方式檢視:
- 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;