oracle實驗記錄 (transport tablespace(Rman))

fufuh2o發表於2009-09-24

 

利用rman(tablespace 不要  read only)
將XH DB 的TEXTXH TABLESPACE 傳送到 orcl db

前期檢查還是要進行的,版本 平臺,是否自包含(dbms_tts.transport_set_check)

如果平臺不一樣 RMAN TRANSPORT TABLESPACE XXX 中加 to
platform  'LinuxIA(32-bit)'(平臺名) (手動EXPEDP/IMPDP 的話用RMAN CONVERT DATAFILE(database,tablesapce) TO PLATFORM. ,另外可以使用 FORMAT ,db_file_name_convert

設定轉換後名字路徑)
alter tablespace xhtr read only;***************
RMAN> convert tablespace xhtr to platform='Linux IA (32-bit)';

啟動 backup 於 24-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00008 name=D:\XHDATAFILE\XHTR.DBF
已轉換的資料檔案 = D:\ORACLE\PRODUCT\10.2.0\DB_2\DATABASE\DATA_D-XH_I-3093395309_TS
-XHTR_FNO-8_0FKQ20E8
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:01
完成 backup 於 24-9月 -09
 
另外在實驗中遇到一個錯誤 實驗的表空間名字為 test2 如果是test 需要大寫 加 '','TEST',而test2 這種方法不行 最後沒解決
SQL> desc v$reserved_words;
 名稱                                      是否為空? 型別
 ----------------------------------------- -------- ----------------------------
 KEYWORD                                            VARCHAR2(30)
 LENGTH                                             NUMBER
 RESERVED                                           VARCHAR2(1)
 RES_TYPE                                           VARCHAR2(1)
 RES_ATTR                                           VARCHAR2(1)
 RES_SEMI                                           VARCHAR2(1)
 DUPLICATE                                          VARCHAR2(1)
This view gives a list of all SQL keywords. To determine whether a particular keyword is reserved in any way, check the RESERVED, RES_TYPE, RES_ATTR, and

RES_SEMI columns

KEYWORD VARCHAR2(30) Name of the keyword
LENGTH NUMBER Length of the keyword
RESERVED VARCHAR2(1) A value of Y means that the keyword cannot be used as an identifier. A value of N means that it is not reserved.
RES_TYPE VARCHAR2(1) A value of Y means that the keyword cannot be used as a type name. A value of N means that it is not reserved.
RES_ATTR VARCHAR2(1) A value of Y means that the keyword cannot be used as an attribute name. A value of N means that it is not reserved.
RES_SEMI VARCHAR2(1) A value of Y means that the keyword is not allowed as an identifier in certain situations, such as in DML. A value of N means that it is

not reserved.
DUPLICATE VARCHAR2(1) A value of Y means that the keyword is a duplicate of another keyword. A value of N means that it is not a duplicate.

SQL> select *from v$reserved_words where keyword='TEST';

KEYWORD                            LENGTH R R R R D
------------------------------ ---------- - - - - -
TEST                                    4 N N N N N

SQL> select name from v$database;

NAME
---------
XH

SQL> create tablespace xhtest  datafile 'd:\xhdatafile\xhtest.dbf' size 10m;

表空間已建立。

SQL>
SQL> conn xh/a123
已連線。
SQL> create table t1 (a int) tablespace xhtest;

表已建立。

SQL> insert into t1 values(1);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         A
----------
         1

 

C:\>rman target xh/a123@xh

恢復管理器: Release 10.2.0.1.0 - Production on 星期三 9月 23 16:26:15 2009

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

連線到目標資料庫: XH (DBID=3093395309)

RMAN> transport tablespace XHTEST tablespace destination 'd:\a' auxiliary destinati
on 'd:\b'
2> ;


為了看的更清楚 看清RMAN 過程  所有的RMAN 輸出都有
RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點

表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1

使用 SID='zCxv' 建立自動例項

供自動例項使用的初始化引數:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_zCxv
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_zCxv.f


啟動自動例項 XH

Oracle 例項已啟動

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

Fixed Size                     1248092 位元組
Variable Size                146801828 位元組
Database Buffers              50331648 位元組
Redo Buffers                   7139328 位元組
自動例項已建立

記憶體指令碼的內容:
{
# set the until clause
set until  scn 1085288;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在執行記憶體指令碼

正在執行命令: SET until clause

啟動 restore 於 23-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在復原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH
\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF
_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP 標記 = TAG20090923T174229
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:01
輸出檔名=D:\B\CNTRL_TSPITR_XH_ZCXV.F
完成 restore 於 23-9月 -09

sql 語句: alter database mount clone database

sql 語句: alter system archive log current

sql 語句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
釋放的通道: ORA_AUX_DISK_1

記憶體指令碼的內容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  scn 1085288;
# set an omf destination filename for restore
set newname for clone datafile  1 to new;
# set an omf destination filename for restore
set newname for clone datafile  2 to new;
# set an omf destination filename for restore
set newname for clone datafile  3 to new;
# set an omf destination tempfile
set newname for clone tempfile  1 to new;
# set a destination filename for restore
set newname for datafile  7 to
 "d:\a\XHTEST.DBF";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 3, 7;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile  1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  3 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  7 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "XHTEST", "SYSTEM", "UNDOTBS1", "SYSAUX" delete
archivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在執行記憶體指令碼

正在執行命令: SET until clause

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

臨時檔案 1 在控制檔案中已重新命名為 D:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_%U_.TMP

啟動 restore 於 23-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM_%U_.DBF
正將資料檔案00002恢復到D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
正將資料檔案00003恢復到D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX_%U_.DBF
正將資料檔案00007恢復到D:\A\XHTEST.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH
\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF
_NNNDF_TAG20090923T174229_5CMVD62X_.BKP 標記 = TAG20090923T174229
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:55
完成 restore 於 23-9月 -09

資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 recid=5 stamp=698349154 檔名=D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM
_5CMVXBVT_.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=6 stamp=698349155 檔名=D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTB
S1_5CMVXBX9_.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=7 stamp=698349155 檔名=D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX
_5CMVXBWS_.DBF
資料檔案 7 已轉換成資料檔案副本
輸入資料檔案副本 recid=8 stamp=698349155 檔名=D:\A\XHTEST.DBF

sql 語句: alter database datafile  1 online

sql 語句: alter database datafile  2 online

sql 語句: alter database datafile  3 online

sql 語句: alter database datafile  7 online

啟動 recover 於 23-9月 -09
使用通道 ORA_AUX_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 42 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\A
RCHIVELOG\2009_09_23\O1_MF_1_42_5CMVG07B_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 43 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\A
RCHIVELOG\2009_09_23\O1_MF_1_43_5CMVJCD6_.ARC 存在於磁碟上
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_09_
23\O1_MF_1_42_5CMVG07B_.ARC 執行緒 =1 序列 =42
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_09_
23\O1_MF_1_43_5CMVJCD6_.ARC 執行緒 =1 序列 =43
介質恢復完成, 用時: 00:00:02
完成 recover 於 23-9月 -09

資料庫已開啟

記憶體指令碼的內容:
{
#mark read only the tablespace that will be exported
sql clone "alter tablespace XHTEST read only";
# create directory for datapump export
sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
d:\a''";
# export the tablespaces in the recovery set
host 'expdp userid=\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=o
raclezCxv)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACL
E_SID=zCxv^'))(CONNECT_DATA=(SID=zCxv))) as sysdba\" transport_tablespaces=
 XHTEST dumpfile=
dmpfile.dmp directory=
STREAMS_DIROBJ_DPDIR logfile=
explog.log';
}
正在執行記憶體指令碼

sql 語句: alter tablespace XHTEST read only

sql 語句: create or replace directory STREAMS_DIROBJ_DPDIR as ''d:\a''


Export: Release 10.2.0.1.0 - Production on 星期三, 23 9月, 2009 17:52:58

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

連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
啟動 "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  userid="/********@(DESCRIPTION=(ADDRESS=
(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=oraclezCxv)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADD
RESS=(PROTOCOL=beq)))')(ENVS='ORACLE_SID=zCxv'))(CONNECT_DATA=(SID=zCxv))) AS SYSDB
A" transport_tablespaces= XHTEST dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDI
R logfile=explog.log
處理物件型別 TRANSPORTABLE_EXPORT/PLUGTS_BLK
處理物件型別 TRANSPORTABLE_EXPORT/TABLE
處理物件型別 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功載入/解除安裝了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYS.SYS_EXPORT_TRANSPORTABLE_01 的轉儲檔案集為:
  D:\A\DMPFILE.DMP
作業 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已於 17:53:50 成功完成

主機命令完成
/*
   The following command may be used to import the tablespaces.
   Substitute values for and .
   impdp directory= dumpfile= 'dmpfile.dmp' transport_datafiles=
 d:\a\XHTEST.DBF
*/
--------------------------------------------------------------
-- Start of sample PL/SQL script. for importing the tablespaces
--------------------------------------------------------------
-- creating directory objects
CREATE DIRECTORY STREAMS$DIROBJ$1 AS  'd:\a\';
CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS  'd:\a';
/* PL/SQL Script. to import the exported tablespaces */
DECLARE
  -- the datafiles
  tbs_files     dbms_streams_tablespace_adm.file_set;
  cvt_files     dbms_streams_tablespace_adm.file_set;
  -- the dumpfile to import
  dump_file     dbms_streams_tablespace_adm.file;
  dp_job_name   VARCHAR2(30) := NULL;
  -- names of tablespaces that were imported
  ts_names       dbms_streams_tablespace_adm.tablespace_set;
BEGIN
  -- dump file name and location
  dump_file.file_name :=  'dmpfile.dmp';
  dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR';
  -- forming list of datafiles for import
  tbs_files( 1).file_name :=  'XHTEST.DBF';
  tbs_files( 1).directory_object :=  'STREAMS$DIROBJ$1';
  -- import tablespaces
  dbms_streams_tablespace_adm.attach_tablespaces(
    datapump_job_name      => dp_job_name,
    dump_file              => dump_file,
    tablespace_files       => tbs_files,
    converted_files        => cvt_files,
    tablespace_names       => ts_names);
  -- output names of imported tablespaces
  IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN
    FOR i IN ts_names.first .. ts_names.last LOOP
      dbms_output.put_line('imported tablespace '|| ts_names(i));
    END LOOP;
  END IF;
END;
/
-- dropping directory objects
DROP DIRECTORY STREAMS$DIROBJ$1;
DROP DIRECTORY STREAMS$DIROBJ$DPDIR;
--------------------------------------------------------------
-- End of sample PL/SQL script
--------------------------------------------------------------

刪除自動例項
關閉自動例項
Oracle 例項已關閉
自動例項已刪除
已刪除輔助例項檔案 D:\B\CNTRL_TSPITR_XH_ZCXV.F
已刪除輔助例項檔案 D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM_5CMVXBVT_.DBF
已刪除輔助例項檔案 D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTBS1_5CMVXBX9_.DBF
已刪除輔助例項檔案 D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX_5CMVXBWS_.DBF
已刪除輔助例項檔案 D:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_5CMVZKB8_.TMP
已刪除輔助例項檔案 D:\B\TSPITR_X\ONLINELOG\O1_MF_1_5CMVZCOH_.LOG
已刪除輔助例項檔案 D:\B\TSPITR_X\ONLINELOG\O1_MF_2_5CMVZF6C_.LOG
已刪除輔助例項檔案 D:\B\TSPITR_X\ONLINELOG\O1_MF_3_5CMVZGBQ_.LOG

RMAN>


C:\>set oracle_sid=orcl

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 23 17:56:18 2009

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


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> @D:\a\impscript.sql
SP2-0310: 無法開啟檔案 "D:\a\impscript.sql"
SQL> @ D:\a\impscript.sql
SP2-0310: 無法開啟檔案 "D:\a\impscript.sql"
SQL> @D:\a\impscript.sql
SP2-0310: 無法開啟檔案 "D:\a\impscript.sql"
SQL> @D:\a\impscrpt.sql

目錄已建立。


目錄已建立。

PL/SQL 過程已成功完成
目錄已刪除。


目錄已刪除。

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST
RMAN_TS
TESTXH
XHTEST

已選擇10行。

從上面可以分析到 為什麼 rman不需要read only 很簡單 rman 建立一個auxiliary database 把要transport 的 tablespace及其必要的檔案controlfile,undo,system 從備份中

restore過去,然後進行 recover (利用archivelog 恢復到最新)然後將auyxiliary db中 transport tablesapce read only, exp匯出,然後製作一個impdp指令碼 ,在要target

端執行這個匯入指令碼就行了


~~~~~~~~~~~~~~
rman  沒有備份的時候

C:\>rman target xh/a123@xh

恢復管理器: Release 10.2.0.1.0 - Production on 星期四 9月 24 09:48:16 2009

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

連線到目標資料庫: XH (DBID=3093395309)

RMAN> delete noprompt backup;

使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=134 devtype=DISK

備份段列表
BP 關鍵字  BS 關鍵字  Pc# Cp# 狀態      裝置型別段名稱
------- ------- --- --- ----------- ----------- ----------
9       9       1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T173725_5CMV2PC7_.BKP
10      10      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T173725_5CMV4H4W_.BKP
11      11      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_ANNNN_TAG20090923T174226_5CMVD42X_.BKP
12      12      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP
13      13      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP
14      14      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_ANNNN_TAG20090923T174328_5CMVG21G_.BKP
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NNNDF_TAG20090923T173725_5CMV2PC7_.BKP recid=9 stamp=698348246
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NCSNF_TAG20090923T173725_5CMV4H4W_.BKP recid=10 stamp=698348303
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_ANNNN_TAG20090923T174226_5CMVD42X_.BKP recid=11 stamp=698348548
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP recid=12 stamp=698348550
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP recid=13 stamp=698348606
已刪除備份段
備份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_ANNNN_TAG20090923T174328_5CMVG21G_.BKP recid=14 stamp=698348610
6 物件已刪除


RMAN> list backup;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~沒有備份了


SQL> create tablespace xhtr datafile 'd:\xhdatafile\xhtr.dbf' size 10m;

表空間已建立。

SQL> create table t2 (a int) tablespace xhtr;

表已建立。

SQL> insert into t2 values(1);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from t2;

         A
----------
         1

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT

SQL> alter database begin backup ;

資料庫已更改。

SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\SYSTEM01.DBF  d:\catalog\SYSTEM0
1.DBF
已複製         1 個檔案。

SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\undotbs01.DBF  d:\catalog\undotb
s01.DBF
已複製         1 個檔案。

SQL> host copy d:\xhdatafile\xhtr.dbf  d:\catalog\xhtr.DBF
已複製         1 個檔案。

SQL> alter database end backup;

資料庫已更改。

SQL> alter database backup controlfile to 'd:\catalog\tctl.ctl';

資料庫已更改。

SQL> show user;
USER 為 "XH"

AUXILIARY DB 要正常使用需要UNDO ,SYSTEM, CONTROLFILE
表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1

 

SQL> alter database backup controlfile to 'd:\catalog\tctl.ctl';

資料庫已更改。~要用這樣的backup controlfile才能 註冊進來否則 註冊時候

(ORA-19620: D:\CATALOG\TEST.CTL 的型別不是 backup control file)有這個錯誤

RMAN> catalog start with 'd:\catalog';

搜尋與樣式 d:\catalog 匹配的所有檔案

資料庫未知檔案的列表
=====================================
檔名: D:\catalog\coNTROL01.CTL
檔名: D:\catalog\SYSTEM01.DBF
檔名: D:\catalog\TCTL.CTL
檔名: D:\catalog\test.CTL
檔名: D:\catalog\undotbs01.DBF
檔名: D:\catalog\xhtr.DBF

是否確實要將上述檔案列入目錄 (輸入 YES 或 NO)? yes
正在編制檔案目錄...
目錄編制完畢

已列入目錄的檔案的列表
=======================
檔名: D:\catalog\SYSTEM01.DBF
檔名: D:\catalog\TCTL.CTL
檔名: D:\catalog\undotbs01.DBF
檔名: D:\catalog\xhtr.DBF

未列入目錄的檔案的列表
=======================================
檔名: D:\catalog\coNTROL01.CTL
  RMAN-07519: 原因: 編制目錄時出錯。請參閱 alert.log。~~~~~~~~~~~~~~~~~
檔名: D:\catalog\test.CTL
  RMAN-07519: 原因: 編制目錄時出錯。請參閱 alert.log。~~~~~~~~~~~~~~~~~~這2個controlfile是 host copy產生所以不行
RMAN> list copy of controlfile;


控制檔案副本列表
關鍵字     S 完成時間   Ckp SCN    Ckp 時間   名稱
------- - ---------- ---------- ---------- ----
8       A 24-9月 -09 1115458    24-9月 -09 D:\CATALOG\TCTL.CTL
6       A 24-9月 -09 1115458    24-9月 -09 D:\CATALOG\TCTL.CTL
RMAN> list copy of database;


資料檔案副本列表
關鍵字     檔案 S 完成時間   Ckp SCN    Ckp 時間   名稱
------- ---- - ---------- ---------- ---------- ----
1       1    A 24-9月 -09 1109552    24-9月 -09 D:\CATALOG\SYSTEM01.DBF
9       2    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\UNDOTBS01.DBF
10      8    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\XHTR.DBF

 

RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';

RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點

表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1

使用 SID='cwbw' 建立自動例項

供自動例項使用的初始化引數:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_cwbw
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_cwbw.f


啟動自動例項 XH

Oracle 例項已啟動

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

Fixed Size                     1248092 位元組
Variable Size                146801828 位元組
Database Buffers              50331648 位元組
Redo Buffers                   7139328 位元組
自動例項已建立

刪除自動例項
關閉自動例項
Oracle 例項已關閉
自動例項已刪除
RMAN-03002: tranport tablespace 命令 (在 09/24/2009 11:07:49 上) 失敗
RMAN-20202: 在恢復目錄中未找到表空間
RMAN-06019: 無法轉換表空間名稱"XHTR"

RMAN> list copy of tablespace xhtr;


資料檔案副本列表
關鍵字     檔案 S 完成時間   Ckp SCN    Ckp 時間   名稱
------- ---- - ---------- ---------- ---------- ----
10      8    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\XHTR.DBF


這個錯誤 說在catalog中沒有xhtr這個TABLESPACE 原因是 備份的控制檔案太新了 create tablespace xhtr 產生的 redo 還在current redo裡沒有針對這個tablespace的

archivelog

SQL> alter system switch logfile;      解決

系統已更改。
RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';

RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點

表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1

使用 SID='zBFh' 建立自動例項

供自動例項使用的初始化引數:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_zBFh
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_zBFh.f


啟動自動例項 XH

Oracle 例項已啟動

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

Fixed Size                     1248092 位元組
Variable Size                146801828 位元組
Database Buffers              50331648 位元組
Redo Buffers                   7139328 位元組
自動例項已建立

記憶體指令碼的內容:
{
# set the until clause
set until  scn 1115701;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在執行記憶體指令碼

正在執行命令: SET until clause

啟動 restore 於 24-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在復原控制檔案
通道 ORA_AUX_DISK_1: 已複製控制檔案副本
輸出檔名=D:\CATALOG\TCTL.CTL
輸出檔名=D:\B\CNTRL_TSPITR_XH_ZBFH.F
完成 restore 於 24-9月 -09

sql 語句: alter database mount clone database

sql 語句: alter system archive log current

sql 語句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
釋放的通道: ORA_DISK_1
釋放的通道: ORA_AUX_DISK_1

記憶體指令碼的內容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  scn 1115701;
# set an omf destination filename for restore
set newname for clone datafile  1 to new;
# set an omf destination filename for restore
set newname for clone datafile  2 to new;
# set an omf destination filename for restore
set newname for clone datafile  3 to new;
# set an omf destination tempfile
set newname for clone tempfile  1 to new;
# set a destination filename for restore
set newname for datafile  8 to
 "d:\a\XHTR.DBF";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 3, 8;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile  1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  3 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  8 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "XHTR", "SYSTEM", "UNDOTBS1", "SYSAUX" delete ar
chivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在執行記憶體指令碼

正在執行命令: SET until clause

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

臨時檔案 1 在控制檔案中已重新命名為 D:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_%U_.TMP

啟動 restore 於 24-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK


刪除自動例項
關閉自動例項
Oracle 例項已關閉
自動例項已刪除
RMAN-03002: tranport tablespace 命令 (在 09/24/2009 11:09:34 上) 失敗
RMAN-03015: 在儲存的指令碼Memory Script中出現錯誤
RMAN-06026: 有些目標沒有找到 - 終止恢復
RMAN-06023: 沒有找到資料檔案3的副本來恢復

RMAN> list copy of datafile 3;


RMAN>                                  又失敗了 原因很簡單需要sysaux tablespace(recover clone database tablespace  "XHTR", "SYSTEM", "UNDOTBS1", "SYSAUX"

delete ar)
原因在與
SQL> select OCCUPANT_NAME, OCCUPANT_DESC from v$sysaux_occupants;

OCCUPANT_NAME
----------------------------------------------------------------
OCCUPANT_DESC
----------------------------------------------------------------
LOGMNR
LogMiner

LOGSTDBY
Logical Standby

STREAMS
Oracle Streams~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~streamS 資訊 存sysaux中 當生成 IMPDP指令碼時實際使用 streams

(dbms_streams_tablespace_adm.file_set,dbms_streams_tablespace_adm.attach_tablespaces)


SQL> alter database begin backup ;

資料庫已更改。


SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\SYSAUX01.DBF  d:\catalog\SYSAUX0
1.DBF
已複製         1 個檔案。

SQL> alter database end backup;

資料庫已更改。

SQL> alter system switch logfile;

系統已更改。
RMAN> catalog datafilecopy 'd:\catalog\sysaux01.dbf';

已將資料檔案副本列入目錄
資料檔案副本 filename=D:\CATALOG\SYSAUX01.DBF recid=11 stamp=698412296

RMAN> list copy of datafile 3;


資料檔案副本列表
關鍵字     檔案 S 完成時間   Ckp SCN    Ckp 時間   名稱
------- ---- - ---------- ---------- ---------- ----
11      3    A 24-9月 -09 1116790    24-9月 -09 D:\CATALOG\SYSAUX01.DBF

RMAN> list copy of tablespace sysaux;


資料檔案副本列表
關鍵字     檔案 S 完成時間   Ckp SCN    Ckp 時間   名稱
------- ---- - ---------- ---------- ---------- ----
11      3    A 24-9月 -09 1116790    24-9月 -09 D:\CATALOG\SYSAUX01.DBF

RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';
最後完成

可以 向前面那樣 登陸 ORCL DB 然後執行指令碼也可以 手動
.DMP ,和 匯入指令碼 ,EXPLOG (可以手動調整前面這些儲存位置和名字), 還有 transport tablespace 的datafile DELAUTE 存在tablespace destination

C:\>set oracle_sid=orcl

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 9月 24 11:34:45 2009

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


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> col file_name format a30
SQL> col tablespace format a10
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- ------------------------------
SYSTEM     E:\SYSDATAFILE2.DBF
TEST       D:\TEST.DBF
EXAMPLE    E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\EXAMPLE01.DBF

USERS      E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\USERS01.DBF

SYSAUX     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSAUX01.DBF


TABLESPACE FILE_NAME
---------- ------------------------------
UNDOTBS1   E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\UNDOTBS01.DBF

SYSTEM     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSTEM01.DBF

RMAN_TS    D:\RMAN_TS.DBF
TESTXH     E:\ORCLDATAFILE\TESTXH.DBF
XHTEST     D:\A\XHTEST.DBF

已選擇10行。

SQL>
SQL> host mkdir d:\impdp

SQL> host copy d:\a\DMPFILE.DMP d:\impdp\dumpfile.dmp
已複製         1 個檔案。

SQL> create directory implist as 'd:\impdp';
SQL>  host impdp  system/a831115 directory=implist dumpfile=dumpfile.dmp transport_
datafiles=d:\a\XHTR.DBF remap_schema=xh:system

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- ------------------------------
SYSTEM     E:\SYSDATAFILE2.DBF
TEST       D:\TEST.DBF
EXAMPLE    E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\EXAMPLE01.DBF

USERS      E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\USERS01.DBF

SYSAUX     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSAUX01.DBF


TABLESPACE FILE_NAME
---------- ------------------------------
UNDOTBS1   E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\UNDOTBS01.DBF

SYSTEM     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSTEM01.DBF

RMAN_TS    D:\RMAN_TS.DBF
TESTXH     E:\ORCLDATAFILE\TESTXH.DBF
XHTEST     D:\A\XHTEST.DBF
XHTR       D:\A\XHTR.DBF

已選擇11行。

SQL> conn system/a831115
已連線。
SQL> select  * from t2;

         A
----------
         1

 

 

其他:

在執行transport  tablespace 命令時候 會產生DUMPFILE.DMP,impscrpt.SQL,EXPLOG.LOG  預設都是用這些名字 生成在 tablespace destination 位置,AUXILIXARY DB所用的輔

助檔案'system,undo,sysaux ,COTROLFILE在 ' auxiliary destination位置
如果不想要  DUMPFILE.DMP,impscrpt.SQL,EXPLOG.LOG  在 tablespace destination位置可以改
DATAPUMP DIRECTORY XXXX
DUMP FILE 'XXX.dmp'
IMPORT SCRIPT. 'XXXX.sql'
EXPORT LOG 'XXXX.log';
另外 這個類似TSPITR 恢復 我們可以將要傳輸的表空間在auxiliary db中進行恢復,恢復到特定時間點是需加上until scn,until time ,until restore point 'XXX'(還原點)
 create restore point   V$RESTORE_POINT


 

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

相關文章