在上大學期間王強老師的課程中的整理以及修改,對日誌文件的管理講解很詳細,sql
1、增長日誌組數據庫
實例1:爲oracle數據庫增長一個重作日誌組,組號自動分配,組中包含兩個日誌成員,大小爲10M,並查詢動態性能視圖肯定可否成功。操做步驟以下:服務器
1. 以系統管理員身份登入:oracle
sqlplusw sys/jlfx as sysdbaide
或性能
sqlplusw sys/wangwang as sysdbaspa
2. 增長日誌組:線程
alter database jlfx add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;日誌
或orm
alter database dog add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;
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\10.2.0\ORADATA\DOG\REDO03.LOG
2 1 10485760 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG
1 1 10485760 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG
或
SQL> select group#,member from v$logfile;
GROUP# MEMBER
------ -------------------------------------------------------------------------------------
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO03.LOG
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG
或
SQL> select group#,members,bytes from v$log;
GROUP# MEMBERS BYTES
-------------------- ---------- ---------- ---------- ----------
1 1 10485760
2 1 10485760
3 1 10485760
實例2:爲oracle數據庫再增長一個重作日誌組,指定組號,組中包含兩個日誌成員,大小爲10M,並查詢動態性能視圖肯定可否成功操做步驟以下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 增長日誌組:
SQL> alter database jlfx add logfile group 5 ('d:\log\log5a.log','d:\log5b.log') size 10M;
或
SQL> alter database dog add logfile group 5 ('d:\log\log5a.log','d:\log5b.log') size 10M;
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;
2、增長日誌成員
實例3:爲oracle服務器的第4個重作日誌組增長一個日誌成員"log4c.lg".
操做步驟以下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 增長日誌成員:
SQL> alter database jlfx add logfile member 'd:\log\log4c.log' to group 4;
或
SQL> alter database dog add logfile member 'd:\log\log4c.log' to group 4;
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;
練習:爲每一個日誌組添加一個日誌成員。
3、刪除日誌組(注意: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\10.2.0\ORADATA\DOG\REDO02.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 from v$log;
4、刪除日誌成員(注意: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\log4c.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\log4a.log';
此時,出現以下信息:
第 1 行出現錯誤:
ORA-00361: 沒法刪除最後一個日誌成員 d:\log\log4a.log (組 4)
5、清空重作日誌
實例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\LOG4A.LOG'
ORA-00312: 聯機日誌 4 線程 1: 'D:\LOG\LOG4C.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;
6、移動日誌文件
實例7:移動日誌文件,觀察日誌文件丟失時的現象,並從新定位。
操做步驟以下:
1. 以系統管理員身份登入:
sqlplusw sys/jlfx as sysdba
2. 關閉數據庫
shutdown
3. 物理移動日誌成員到目標位置
將文件d:\oracle\product\10.2.0\oradata\jlfx\REDO03.log 移動到 d:\REDO03.log;
4. 打開數據庫
startup;
5. 執行rename命令,從新定位日誌文件
alter database jlfx rename file 'd:\oracle\product\10.2.0\oradata\jlfx\REDO03.log' to 'd:\REDO03.log';
或
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#;
7、手工日誌切換
實例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;
8、日誌歸檔(歸檔模式: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(關閉數據庫的歸檔模式)