詳細的日誌文件的管理不可不看

 日誌文件管理

在上大學期間王強老師的課程中的整理以及修改,對日誌文件的管理講解很詳細,

一、增加日誌組

實例1:爲oracle數據庫增加一個重做日誌組,組號自動分配,組中包含兩個日誌成員,大小爲10M,並查詢動態性能視圖確定能否成功。操作步驟如下:

1. 以系統管理員身份登入:

       sqlplusw   sys/jlfx  as  sysdba

      

sqlplusw  sys/wangwang as sysdba

 

2. 增加日誌組:

       alter database jlfx add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;

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;

 

二、增加日誌成員

實例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;

 

練習:爲每個日誌組添加一個日誌成員。

 


三、刪除日誌組(注意:current/active狀態下或只有兩個日誌組都不能刪除該日誌組)

實例4:刪除日誌組4

操作步驟如下:

1. 以系統管理員身份登入:

       sqlplusw   sys/jlfx  as  sysdba

 

2. 查看日誌組的狀態(只有INACTIVEUNUSED狀態的可刪除)

       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;

 

 


四、刪除日誌成員(注意:current狀態下或日誌組中只有一個日誌成員時不能刪除)

實例5:刪除日誌組5中的第2個日誌組成員

操作步驟如下:

1. 以系統管理員身份登入:

       sqlplusw   sys/jlfx  as  sysdba

 

2. 查看日誌組的狀態

       SQL> select group#,status,members,bytes  from v$log;

 

3. 刪除日誌組4中的第23個日誌組成員

       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)

 


五、清空重做日誌

實例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;

 

六、移動日誌文件

實例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#;

 

七、手工日誌切換

實例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(關閉數據庫的歸檔模式)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章