當ORACLE歸檔日志滿后如何正確刪除歸檔日志


當ORACLE 歸檔日志滿了后,將無法正常登入ORACLE,需要刪除一部分歸檔日志才能正常登入ORACLE。

 

一、首先刪除歸檔日志物理文件,歸檔日志一般都是位於archive目錄下,AIX系統下文件格式為“1_17884_667758186.dbf”,建議操作前先對數據庫進行備份,刪除時至少保留最近幾天的日志用於數據庫恢復。

 

二、把歸檔日志的物理文件刪除后,我們就可以正常登入ORACLE了,但是還沒完全把歸檔日志刪除干凈,ORACLE的controlfile中仍然記錄着這些archivelog的信息,在oracle的OEM管理器中有可視化的日志展現出,當我們手工清除archive目錄下的文件后,這些記錄並沒有被我們從controlfile中清除掉,接下去我們要做的就是這個工作。

我們利用RMAN進行刪除操作,操作步驟如下:(window客戶端系統為例)

1.指定數據庫實例

C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl

2.連接數據庫

C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl

3.查看歸檔日志的狀態

RMAN> list archivelog all;

4.手工刪除歸檔日志文件

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

 說明:
 SYSDATA-7,表明當前的系統時間7天前,before關鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會刪除閃回的數據。 
同樣道理,也可以刪除從7天前到現在的全部日志,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行全備份數據庫 
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 刪除從7天前到現在的全部日志,慎用
UNIX/LINUX下也可以通過FIND找到7天前的歸檔數據,使用EXEC子操作刪除 
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ; 
這樣做仍然會在RMAN里留下未管理的歸檔文件 
仍需要在RMAN里執行下面2條命令 
crosscheck archivelog all; 
delete expired archivelog all; 
所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現更復雜的功能

5.退出rman

RMAN> exit

 

 

 

附帶說明:RMAN 是Oracle數據庫軟件自帶的備份恢復工具,一種是類似於DOS,通過鍵盤操作的 命令行方式。

通過RMAN連接本地數據庫非常簡單,以 W indows 平台為例,進入到命令提示符界面:

C:/Documents and Settings/junsansi> SET ORACLE_SID =jssbook

C:/Documents and Settings/junsansi> RMAN TARGET /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:17 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: JSSBOOK (DBID=1415261003)

    RMAN>

  如上所示,使用RMAN連接本地數據庫之前必須首先設置操作系統環境變量:ORACLE_SID,並指定該值等於目標數據庫的實例名。如果本地庫只有一個實例並已經設置了ORACLE_SID環境變量,則不需要再指定ORACLE_SID。RMAN會自動連接到默認實例。

  當然,你也可以先啟動RMAN,然后再通過CONNECT命令來連接目標數據庫,如下所示:

C:/Documents and Settings/junsansi> RMAN

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:36 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN> connect target /

    connected to target database: JSSBOOK (DBID=1415261003)

  本地連接允許使用操作系統驗證,因此上述示例都不需要輸入用戶名和密碼,不過如果本地沒有啟用操作系統身份驗證的話,就必須指定具有相應權限的用戶名和密碼。

  需要注意,Linux/UNIX 環境下設置操作系統環境變量應使用 export 命令,另外ORACLE_SID必須為大寫。例如:

[oracle@yans1  ~ ]$  export  ORACLE_SID=test08

[oracle@yans1  ~ ]$  rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Tue Mar 17 16:08:32 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: TEST08 (DBID=3812548755)

    RMAN> 

 

連接遠程數據庫

  如果要連接的目標數據庫是一個遠程數據庫,那么必須在建立連接時指定一個有效的網絡服務名(Net Service Name),本地的tnsname.ora文件中必須已經建立了該網絡服務名的正確配置。連接示例如下:

C:/Documents and Settings/junsansi> RMAN TARGET SYS/CHANGE_ON_INSTALL@TESTDB

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 16:12:32 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: TESTDB (DBID=2220262593)

    RMAN>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM