回覆列表
  • 1 # 你小子真帥188

    二、把歸檔日誌的物理檔案刪除後,我們就可以正常登入ORACLE了,但是還沒完全把歸檔日誌刪除乾淨,ORACLE的controlfile中仍然記錄著這些archivelog的資訊,在oracle的OEM管理器中有視覺化的日誌展現出,當我們手工清除archive目錄下的檔案後,這些記錄並沒有被我們從controlfile中清除掉,接下去我們要做的就是這個工作。

    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;

    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>

    Archivelog並不能直接得從OS層直接物理刪除,因為archivelog的相關資訊是記錄在controlfile中的,當物理刪除後不會改變controlfile的設定。並且在查詢相關的動態檢視(例如v$archived_log)時,該部分日誌仍然標註為存在。也就是說Oracle並不認為這些日誌被刪除了,所以在刪除archivelog的時候,需要我們在其他地方做一些設定。

    //---------------------------------------------------------------------------------------

    2、進入RMAN

    3、crosscheck archivelog all;

    4、delete expried archivelog all;

    這樣就在一些Oracle的記錄中查不到相應的archivelog記錄了。

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

    backup format "/u01/arch_%T_%s_%U" archivelog all delete input;

    或者

    backup database plus archivelog;

    注:我在庫上設定了Streams後,使用RMAN刪除archivelog會導致報錯RMAN-08137: WARNING: archive log not deleted as it is still needed. 不知道該如何解決,據說是10.2的一個bug,如果真是bug的話,那隻能在OS層設定刪除,或用RMAN進行強制刪除了。

  • 中秋節和大豐收的關聯?
  • 怎麼解讀韓國把日本在第二次世界大戰中的284家企業列為“戰犯企業”?