循序漸進oracle第7章:備份與恢復之RMAN映象拷貝不完全恢復

mengzhaoliang發表於2008-06-06

/* 2008/06/06
*環境:Windows XP +Oracle10.2.0.1
*循序漸進oracle——資料庫管理、優化與備份恢復
*循序漸進oracle第7章:備份與恢復之RMAN映象拷貝不完全恢復
*/
7 RMAN的備份與恢復

Oracle10g開始,允許使用單條命令"backup as copy"進行資料庫拷貝
RMAN> run{
2> backup as copy tag "20080605_copy" database;
3> }


一、使用rman的不完全恢復
1、插入資料
SQL> select * from scott.dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        50 support        denver
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     beijing

SQL> select * from test;

        ID TIME
---------- -------------------
         5 2008-06-06 08:00:34
         6 2008-06-06 08:13:42


SQL> drop table scott.dept;

表已刪除。

SQL> insert into test values(7,sysdate);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

        ID TIME
---------- -------------------
         5 2008-06-06 08:00:34
         6 2008-06-06 08:13:42
         7 2008-06-06 08:16:56

需要恢復到刪除表之前的時間2008-06-06 08:13:42

2 恢復
RMAN> shutdown immediate;

資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉

RMAN> startup mount

已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
資料庫已裝載

系統全域性區域總計     272629760 位元組

Fixed Size                     1248476 位元組
Variable Size                113247012 位元組
Database Buffers             150994944 位元組
Redo Buffers                   7139328 位元組

RMAN> recover database until time '2008-06-06 08:13:42';

啟動 recover 於 06-6月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 06/6/2008 22:49:54
ORA-01861: literal does not match format string

這個錯誤是由於時間日期格式設定的問題。

設定正確的時間格式,進行基於時間點的不完全恢復:

/************************來自網上的資料:start
Oracle的日期格式預設設定是DD-MON-YY,很多時候我們需要修改這種格式以滿足我們的需求。
     可以通過設定NLS_DATE_FORMAT來改變日期格式,為了讓這種改變永久生效,介紹下面的幾種方法:
     1、修改glogin.sql檔案,這個檔案的路徑:
     Windows下,%ORACLE_HOME%\sqlplus\admin
     UNIX下,$ORACLE_HOME/sqlplus/admin
     在檔案中加上:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
     2、修改登錄檔(Windows平臺下)
     開始 =》執行=》regedit=》HKEY_LOCAL_MACHINE=》SOFTWARE=》ORACLE=》HOME0 =》新建 字

符串值NLS_DATE_FORMAT ,並設定其值為:YYYY-MM-DD:HH24:MI:SS
     3、修改使用者環境變數配置檔案(UNIX平臺下),加上
     export NLS_LANG=AMERICAN
     export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
     有時候只設定了NLS_DATE_FORMAT,而不設定NLS_LANG可能日期格式不會改變(參考RollingPig的文章

),這個可能跟平臺及Shell型別有關係。

    rman會話中設定nls_date_format和nls_lang

run {

......

sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';

sql 'alter session set NLS_LANGUAGE="AMERICAN"';

......

}

/************************來自網上的資料:end


C:\>rman target/

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 6月 6 08:53:05 2008

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

已連線到目標資料庫: RISENET (DBID=2274326636, 未開啟)

RMAN> restore database;

啟動 restore 於 06-6月 -08
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在恢復資料檔案00001
輸入資料檔案副本 recid=27 stamp=656667195 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_SYSTEM_44JXWG2G_.DBF
資料檔案 00001 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF

通道 ORA_DISK_1: 已複製資料檔案 00001 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF recid=46 stamp=
656672215
通道 ORA_DISK_1: 正在恢復資料檔案00002
輸入資料檔案副本 recid=29 stamp=656667233 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_UNDOTBS1_44JXYYF5_.DBF
資料檔案 00002 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DB
F
通道 ORA_DISK_1: 已複製資料檔案 00002 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DBF recid=47 stamp
=656672218
通道 ORA_DISK_1: 正在恢復資料檔案00003
輸入資料檔案副本 recid=28 stamp=656667224 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_SYSAUX_44JXY57B_.DBF
資料檔案 00003 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF

通道 ORA_DISK_1: 已複製資料檔案 00003 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF recid=48 stamp=
656672231
通道 ORA_DISK_1: 正在恢復資料檔案00004
輸入資料檔案副本 recid=31 stamp=656667241 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_USERS_44JXZ8TV_.DBF
資料檔案 00004 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF
通道 ORA_DISK_1: 已複製資料檔案 00004 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF recid=49 stamp=6
56672234
通道 ORA_DISK_1: 正在恢復資料檔案00005
輸入資料檔案副本 recid=30 stamp=656667238 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_RISE_44JXZ5L2_.DBF
資料檔案 00005 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF
通道 ORA_DISK_1: 已複製資料檔案 00005 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF recid=50 stamp=6566
72235
通道 ORA_DISK_1: 正在恢復資料檔案00006
輸入資料檔案副本 recid=32 stamp=656667242 檔名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_MZL_44JXZB0Z_.DBF
資料檔案 00006 的恢復目標: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF
通道 ORA_DISK_1: 已複製資料檔案 00006 的資料檔案副本
輸出檔名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF recid=51 stamp=65667
2236
完成 restore 於 06-6月 -08

RMAN> recover database until time '2008-06-06 08:13:42';

啟動 recover 於 06-6月 -08
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:05

完成 recover 於 06-6月 -08

RMAN> alter database open resetlogs;

資料庫已開啟

檢視資料:
SQL> select * from scott.dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        50 support        denver
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     beijing

 


 

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

相關文章