日誌文件管理
在上大學期間王強老師的課程中的整理以及修改,對日誌文件的管理講解很詳細,
一、增加日誌組
實例1:爲oracle數據庫增加一個重做日誌組,組號自動分配,組中包含兩個日誌成員,大小爲
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
或
sqlplusw sys/wangwang as sysdba
2. 增加日誌組:
alter database jlfx add logfile ('d:\log\log
或
alter database dog add logfile ('d:\log\log
3. 查詢日誌信息(包括組號,成員數,成員,每個成員的大小):
SQL> col member format a50
SQL> select a.group#,a.members,a.bytes,b.member from v$log a, v$logfile b where a.group#=b.group#;
GROUP# MEMBERS BYTES MEMBER
------- ---------- ---------- ------------------------ ----------------------------------------------------------------------------------
3 1 10485760 D:\ORACLE\PRODUCT\
2 1 10485760 D:\ORACLE\PRODUCT\
1 1 10485760 D:\ORACLE\PRODUCT\
或
SQL> select group#,member from v$logfile;
GROUP# MEMBER
------ -------------------------------------------------------------------------------------
3 D:\ORACLE\PRODUCT\
2 D:\ORACLE\PRODUCT\
1 D:\ORACLE\PRODUCT\
或
SQL> select group#,members,bytes from v$log;
GROUP# MEMBERS BYTES
-------------------- ---------- ---------- ---------- ----------
1 1 10485760
2 1 10485760
3 1 10485760
實例2:爲oracle數據庫再增加一個重做日誌組,指定組號,組中包含兩個日誌成員,大小爲
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 增加日誌組:
SQL> alter database jlfx add logfile group 5 ('d:\log\log
或
SQL> alter database dog add logfile group 5 ('d:\log\log
3. 查詢日誌信息:
SQL> col member format a50
SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group# order by a.group#;
或
SQL> select group#,member from v$logfile;
或
SQL> select group#,members,bytes from v$log;
二、增加日誌成員
實例3:爲oracle服務器的第4個重做日誌組增加一個日誌成員"log
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 增加日誌成員:
SQL> alter database jlfx add logfile member 'd:\log\log
或
SQL> alter database dog add logfile member 'd:\log\log
3. 查詢日誌信息:
SQL> col member format a50
SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;
或SQL> select group#,member from v$logfile;(顯示用戶數據庫日誌組和成員)
或SQL> select group#,members,bytes from v$log;
練習:爲每個日誌組添加一個日誌成員。
三、刪除日誌組(注意:current/active狀態下或只有兩個日誌組都不能刪除該日誌組)
實例4:刪除日誌組4
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 查看日誌組的狀態(只有INACTIVE和UNUSED狀態的可刪除)
SQL> select group#,status,members,bytes from v$log;
3. 刪除日誌組4(下面的命令只是邏輯刪除,要物理刪除得用os命令)
SQL> alter database jlfx drop logfile group 4;
或
SQL> alter database dog drop logfile group 4;
此時不能再往日誌組4中添加成員,如:
alter database dog add logfile member 'd:\log\log4d.log' to group 4;
出現錯誤信息:
第 1 行出現錯誤:
ORA-00359: 日誌文件組 4 不存在
如果2號日誌組是當前日誌組,執行刪除2號日誌組的操作,則會出現錯誤。
SQL> alter database dog drop logfile group 2;
錯誤提示信息如下:
alter database dog drop logfile group 2
*
第 1 行出現錯誤:
ORA-01623: 日誌 2 是實例 dog (線程 1) 的當前日誌 - 無法刪除
ORA-00312: 聯機日誌 2 線程 1: 'D:\ORACLE\PRODUCT\
4. 查詢日誌信息:
SQL> col member format a50
SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;
或SQL> select group#,member from v$logfile;
或SQL> select group#,members,bytes from v$log;
四、刪除日誌成員(注意:current狀態下或日誌組中只有一個日誌成員時不能刪除)
實例5:刪除日誌組5中的第2個日誌組成員
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 查看日誌組的狀態
SQL> select group#,status,members,bytes from v$log;
3. 刪除日誌組4中的第2、3個日誌組成員
SQL> alter database dog drop logfile member 'd:\log\log4b.log', 'd:\log\log
4. 查詢日誌信息:
SQL> col member format a50
SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;
或SQL> select group#,member from v$logfile;
或SQL> select group#,members,bytes,status from v$log;
注意:日誌組中只有一個日誌成員時不能刪除,如:
SQL> alter database dog drop logfile member 'd:\log\log
此時,出現如下信息:
第 1 行出現錯誤:
ORA-00361: 無法刪除最後一個日誌成員 d:\log\log
五、清空重做日誌
實例6:清空重做日誌組4
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 關閉數據庫
SQL> shutdown immediate
刪除4號日誌組的所有成員,再啓動則出現錯誤:
3. 啓動數據庫
SQL> startup
ORACLE 例程已經啓動。
錯誤提示信息如下:
Total System Global Area 285212672 bytes
Fixed Size 1248552 bytes
Variable Size 71303896 bytes
Database Buffers 205520896 bytes
Redo Buffers 7139328 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日誌組 4 (用於線程 1) 的成員
ORA-00312: 聯機日誌 4 線程 1: 'D:\LOG\LOG
ORA-00312: 聯機日誌 4 線程 1: 'D:\LOG\LOG
ORA-00312: 聯機日誌 4 線程 1: 'D:\LOG\LOG4B.LOG'
查看數據庫的啓動狀態:
SQL> select status from v$instance;
或 直接啓動數據庫到加載狀態(特別注意)
SQL> startup mount
4. 清空重做日誌組4,恢復該日誌組的成員
SQL> alter database clear logfile group 4;
5. 查詢日誌信息:
SQL> col member format a50
SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;
或
SQL> select a.group#,a.status,a.members from v$log a,v$logfile b where a.group#=b.group#;
6.改變日誌的模式
SQL> alter system switch logfile;
六、移動日誌文件
實例7:移動日誌文件,觀察日誌文件丟失時的現象,並重新定位。
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 關閉數據庫
shutdown
3. 物理移動日誌成員到目標位置
將文件d:\oracle\product\
4. 打開數據庫
startup;
5. 執行rename命令,重新定位日誌文件
alter database jlfx rename file 'd:\oracle\product\
或
alter database dog rename file 'd:\log\log4b.log' to 'd:\log4b.log';
6. 打開數據庫
alter database open;
7. 查詢日誌信息:
col member format a50
select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;
七、手工日誌切換
實例8:強制切換日誌,顯示日誌狀態
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 查看日誌組的狀態
select group#,sequence#,members,status from v$log;
3. 手工日誌切換( 在open狀態下操作)
alter system switch logfile;
4. 查看日誌組及成員的狀態
select group#,sequence#,members,status from v$log;
八、日誌歸檔(歸檔模式:archivelog,非歸檔模式:noarchivelog)
注意:數據庫只有在加載狀態下才能修改日誌模式
實例9:查看數據庫的日誌操作模式,然後將數據庫修改爲歸檔模式
操作步驟如下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 關閉數據庫,然後加載數據庫
shutdown immediate
startup mount
3. 查看歸檔模式
archive log list;
或 select name,log_mode from v$database;
4. 修改歸檔模式
alter database archivelog(開啓數據庫的歸檔模式)
alter database noarchivelog(關閉數據庫的歸檔模式)