oracle冷備份、恢復和異機恢復

773281375發表於2014-03-11
一、冷備份
1、 冷備份發生在資料庫已經正常關閉的情況下

在進行冷備份之前通常要知道需要進行備份檔案的名稱以及路徑
SQL>select name from v$datefile;
SQL>select name from v$controlfile;
SQL>select member from v$logfile;
2、冷備份所需備份的檔案包括以下幾種:
所有資料檔案、所有控制檔案、所有聯機REDO LOG 檔案
3、冷備份的步驟
①正常關閉要備份的例項(instance)
②拷貝所有重要檔案到備份目錄下
③完成備份後啟動資料庫

4、用冷備份進行資料庫恢復
無歸檔模式:將備份檔案拷貝回原來的目錄即可,然後啟動資料庫。
歸檔模式:
將資料檔案、控制檔案拷貝回原來目錄
②SQL>startup mount;
 SQL>recover database using backup controlfile;
③將相應的歸檔日誌和聯機日誌拖到CMD命令視窗進行跑日誌。
④SQL>alter database open resetlogs;
二、異機恢復
冷備份恢復方式
A、不建立例項:(源機上的資料庫名字為orcl)
①在目標機上的oradata目錄下建立orcl資料夾,拷貝源機的所有data檔案和聯機redo檔案到此目錄下。
②在目標機上的admin目錄下建立orcl資料夾,然後在orcl裡面再建立adump、bdump、cdump、udump、dpdump、pfile六個資料夾
③把源機的密碼檔案拷貝到目標機的database目錄下。

④使用oradim命令在cmd下oradim -new -sid orcl 表示建立一個服務,sid為orcl(最好名字和源機備份的資料庫名字一致,就不需要重建密碼檔案)
⑤拷貝源機的pfile到目標機的一個目錄下,修改pfile裡面相關檔案的路徑,然後通過SQL>create spfile from pfile=‘檔案路徑’來建立引數檔案。
⑥重建控制檔案命令:SQL>alter database backup controlfile to trace;然後會在udump資料夾下產生一個追蹤檔案,開啟檔案找到如下一段,複製到文字中,修改相應路徑然後儲存為:createctl.sql檔案(sql指令碼檔案),複製到目標機上。
注意:SQL>alter database backup controlfile to trace as 'aa.txt';linux系統中會在dbs目錄下建立

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\BANK_DATA02.DBF'
CHARACTER SET ZHS16GBK;

⑦ c:\>set ORACLE_SID=orcl
   c:\>sqlplus "/as sysdba"
   SQL>create spfile from pfile='c:\pfile.txt';
   SQL>@c:\createctl.sql;
   SQL>shutdown immediate;
   SQL>startup;
   SQL>alter database open resetlogs;
⑧在network\admin下的tnsnames.ora中新增如下片段
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
⑨用net configuration為orcl例項新建監聽

B、建立例項(例項SID與源機資料庫SID一致)
①刪除目標機的oradata\orcl底下的所有檔案,把源機的所有data檔案、redo檔案拷貝到此目錄下
②刪除目標機的密碼檔案,拷貝源機密碼檔案到目標機下。
在源機上重建目標機的控制檔案:SQL>alter database backup controlfile to trace;然後會在udump資料夾下產生一個追蹤檔案,開啟檔案找到上面那段,複製到文字中,修改相應路徑然後儲存為:createctl.sql檔案(sql指令碼檔案),複製到目標機上。
④c:\>sqlplus "/as sysdba"
   SQL>@c:\createctl.sql;
   SQL>shutdown immediate;
   SQL>startup;
   SQL>alter database open resetlogs;
⑤在network\admin下的tnsnames.ora中新增如下片段
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
⑥用net configuration為orcl例項新建監聽

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29489498/viewspace-1107922/,如需轉載,請註明出處,否則將追究法律責任。

相關文章