天天看點

Oracle學習系列之RMAN異地恢複資料

一:通過RMAN備份恢複資料庫到其他伺服器

    設定環境:

    源庫:10.0.17.220   SID:zsddb

    擷取SID的方式:   

    (1)通過檢視/data/ora11g/product/11.2.0/db_1/dbs/spfilezsddb.ora,因為spfile[sid].ora是按照此形式儲存

    (2)SQL> select instance from v$thread;

    目标庫 10.0.18.250

    準備工作:記錄下源資料庫的DBID。(ZSDDB (DBID=1536079480))

    擷取DBID的兩種方式:

     (1) rman target / 直接看到DBID

     (2) select dbid from v$database;

    操作步驟:

    1.在源庫端建立資料庫的完整備份

    注意:備份集建立成功後,将其複制到目錄端的相同路徑下。必須是相同路徑(linux可以使用SSH Secure file Transfer Client)

    2.在目标伺服器上建立OracleService

    Linux/UNIX環境,隻要在連接配接資料庫時指定ORACLE_SID環境變量即可

    3.配置目标端資料庫的初始檔案

    第一步:将源庫端的SPFILE初始化參數檔案複制到目标端的适當路徑下。Linux/UNIX環境是在$ORACLE_HOME\dbs目錄下。

    檢視ORACLE_HOME的環境變量:

    [root@oracle-n1 dbs]# sudo su - oracle

    [oracle@oracle-n1 ~]$ echo $ORACLE_HOME

    /data/ora11g/product/11.2.0/db_1

    第二步:修改部分參數值,這一步不是必須得。如果目标端的路徑與源端保持一緻,不做任何修改。如果不一緻,要保證如下幾個參數所指定的值是正确有效的。

    * control_files: 控制檔案路徑

    * audit_file_dest: Oracle審計輸出的debug日志路徑

    * background_dump_dest: LGWR,DBWn之類背景程序輸出的debug日志路徑

    * core_dump_dest: Oracle核心輸出的dump日志路徑

    * user_dump_dest: 使用者程序輸出的debug日志路徑

    * log_archive_dest_1:歸檔檔案路徑,如果啟用了歸檔模式的話。

    (1)将源資料庫端的plife取出

    set oracle_sid =zsddb

    sqlplus "/as sysdba"

    create pfile='/data/backup/pfile_zsddb.ora' from spfile;

     (2)用文本工具修改相關參數儲存,在目标端建立spfile

    create spfile from pfile ='/data/backup/pfile_userdb.ora'

     (3)spfile建立成功後,資料庫自動啟動到NOMOUNT狀态。

    startup nomount

    4.恢複控制檔案并進入到加載狀态

      從備份集中恢複控制檔案

    set oracle_sid=zsddb

    rman target /

    RMAN>set dbid=1536079480

    RMAN>RESTORE CONTROLFILE FROM '/data/backup/c-14152845758-20090505-00';

      資料庫置為Mount狀态:

    RMAN>alter database mount;

    5.修複資料庫

    RMAN>RESTORE DATABASE;

    6.恢複資料庫

    RMAN>RECOVER DATABASE;

    7.用open resetlogs方式打開資料庫

    RMAN>ALTER DATABASE OPEN RESETLOGS;

注意的細節錯誤:

   一:startup nomount的時候,出現如下錯誤:         

 ERROR:

ORA-09925: Unable to create audit trail file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 9925

ORA-01075: you are currently logged on

    解決方法:建立目錄

cd /data/ora11g/admin/userdb/

mkdir -p adump bdump cdump udump

   二:RESTORE CONTROLFILE FROM '/data/backup/rman/con_c-3913726272-20121103-00';的時候,出現如下錯誤:

channel ORA_DISK_1: no AUTOBACKUP in 7 days found

 RMAN-00571: ===========================================================

 RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

 RMAN-03002: failure of restore command at 11/08/2012 17:46:48

 RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

    解決方法:看看對應的/data/backup/rman/目錄下檔案的權限問題。

chown oracle:oracle ./*

   三:RESTORE DATABASE;的時候,出現如下錯誤:

channel ORA_DISK_1: ORA-19870: error while restoring backup piece /data/backup/rman/18nop29i_1_1-USERDB-20121027.full

ORA-19504: failed to create file "/data/ora11g/oradata/userdb/hdmember01.dbf"

ORA-27040: file create error, unable to create file

    建立對應的資料目錄:

    mkdir -p /data/ora11g/oradata/userdb/

   四:$ORACLE_HOME/network/admin

   後期配置listener的時候,出現了如下錯誤:

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Process ID: 0

Session ID: 0 Serial number: 0

     解決方法:

SQL> alter system set local_listener='(ADDRESS =(PROTOCOL = TCP)(HOST = oracle-n2)(PORT = 1588)(SID=userdb))';

SQL> alter system register;