首先查看數據庫現有模式可使用以下語句
select name,log_mode from v$database;
也可以用下面的語句
archive log list;(該方法需要as sysdba)
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /export/home/oracle/product/8.1.7/dbs/arch
Oldest online log sequence 28613
Current log sequence 28615
SQL> SELECT NAME,LOG_MODE FROM V$DATABASE;
NAME LOG_MODE
-------- ------------
BIGSUN NOARCHIVELOG
對於非歸檔模式的數據庫該爲歸檔模式(主要以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中還要修改參數log_archive_start = true才能生效,oracle 10g中已經廢除了該參數,所以不需要設置該參數。
Oracle 9i啓動歸檔
1,sqlplus "/ as sysdba" 在DOS命令行下運行進入SQL管理員操作控制檯。
2,shutdown immediate; 關閉ORACLE數據庫。
3,startup mount; 啓動數據庫到mount狀態
4,alter database archivelog(noarchivelog); 啓用(禁止)歸檔模式。
5,alter database open; 打開數據庫。
6,archive log list; 查看是否開啓了歸檔模式
7,archive log start(stop); 開啓(停止)歸檔模式。
8, alter system switch logfile; --強制系統進行日誌切換,可馬上觀察到歸檔日誌的產生
歸檔模式轉化爲非歸檔模式
在這裏所有的操作要在數據庫的那臺機器上操作,用SYS用戶進行登錄,首先設置歸檔進程關閉。
alter system set log_archive_start=false scope=spfile;
然後關閉數據庫
shutdown immediate
再後面把數據庫啓動到mount的模式
startup mount
關閉flash閃回數據庫模式,如果不關閉的話,在後面關閉歸檔日誌的時候就會出現討厭的ORA-38774錯誤。
alter database flashback off
接着把數據庫改爲非歸檔模式
alter database noarchivelog;
都修改好了以後,然後打開數據庫
Alter database open;
察看一下歸檔日誌的空間大小
select * from v$recovery_file_dest;
接着看一下log日誌的狀態
select * from v$log;
再看一下閃回日誌使用狀況
select * from v$flash_recovery_area_usage;
這些都沒有問題以後,數據庫問題就解決了。