oracle日誌文件的整理

在上大學期間王強老師的課程中的整理以及修改,對日誌文件的管理講解很詳細,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. 查看日誌組的狀態(只有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;




4、刪除日誌成員(注意: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)



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

相關文章
相關標籤/搜索