检查可传输平台
- 如果源平台和目标平台具有相同的字节序,则数据将从源平台传输到目标平台,而不需要进行任何数据转换。
- 如果源平台和目标平台具有不同的字节序,则必须将正在传输的数据转换为目标平台格式。
COLUMN PLATFORM_NAME FORMAT A40
COLUMN ENDIAN_FORMAT A14
SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM
ORDER BY PLATFORM_ID;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
3 HP-UX (64-bit) Big
4 HP-UX IA (64-bit) Big
5 HP Tru64 UNIX Little
6 AIX-Based Systems (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
10 Linux IA (32-bit) Little
11 Linux IA (64-bit) Little
12 Microsoft Windows x86 64-bit Little
13 Linux x86 64-bit Little
15 HP Open VMS Little
16 Apple Mac OS Big
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
19 HP IA Open VMS Little
20 Solaris Operating System (x86-64) Little
21 Apple Mac OS (x86-64) Little
22 Linux OS (S64) Big
21 rows selected.
Converting Data Files on the Target System Before Import
- RMAN CONVERT命令不支持具有undo段的数据文件在不同的端格式之间的数据文件转换
- 如果您使用DBMS_FILE_TRANSFER包将数据文件传输到目标系统,那么在文件传输过程中数据文件会自动转换。无需再进行以下转换。
C:\Temp\sales_101.dbf
C:\Temp\sales_201.dbf
C:\>RMAN TARGET /
Recovery Manager: Release 12.1.0.1.0 - Production
Copyright (c) 1982, 2012, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORAWIN (DBID=3462152886)
RMAN> CONVERT DATAFILE
'C:\Temp\sales_101.dbf',
'C:\Temp\sales_201.dbf'
TO PLATFORM="Microsoft Windows IA (32-bit)"
FROM PLATFORM="Solaris[tm] OE (32-bit)"
DB_FILE_NAME_CONVERT=
'C:\Temp\', 'C:\app\orauser\DATADG\orawin\'
PARALLELISM=4;
Converting Data Between Platforms Using the DBMS_FILE_TRANSFER Package
- 在数据文件传输过程中,可以使用DBMS_FILE_TRANSFER包的GET_FILE或PUT_FILE过程在平台之间转换数据。
1、源端创建directory
CREATE OR REPLACE DIRECTORY sales_dir_source
AS '+data/dbsa/datafile';
创建目录对象时,指定的文件系统目录必须存在。
2、创建一个从目标数据库到源数据库的DBLINK。
3、创建一个目录对象来存储要从源数据库传输的数据文件
CREATE OR REPLACE DIRECTORY sales_dir_target
AS '+data/dbsb/datafile';
4、运行DBMS_FILE_TRANSFER包中的GET_FILE过程来传输数据文件。(在目标库使用)
BEGIN
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object => 'sales_dir_source',
source_file_name => 'mytable.342.123456789',
source_database => 'source_link',
destination_directory_object => 'sales_dir_target',
destination_file_name => 'mytable');
END;
/
Oracle ASM不允许在GET_FILE过程的destination_file_name参数中使用完全限定的文件名形式。
RMAN CONVERT增量备份
- 转换增量备份
cat tsbkupmap.txt
TESTTB1::21,17,5,19,11,14,16,20,12,15:::1=a7t3n1nj_1_1
TESTTB2::9:::1=a6t3n1n4_1_1
DECLARE
handle varchar2(512);
comment varchar2(80);
media varchar2(80);
concur boolean;
recid number;
stamp number;
pltfrmfr number; ---源平台id
devtype VARCHAR2(512);
BEGIN
sys.dbms_backup_restore.restoreCancel(TRUE);
devtype := sys.dbms_backup_restore.deviceAllocate;
sys.dbms_backup_restore.backupBackupPiece(
bpname => '/export/home/oracle/xtts/stage_dest/a7t3n1nj_1_1', --转换前备份集
fname => '/export/home/oracle/xtts/backupondest/a7t3n1nj_1_1', --转换后备份集
handle => handle,media=> media,comment=> comment,concur=> concur,recid=> recid,stamp=>stamp,check_logical => FALSE,copyno=> 1, deffmt=> 0, copy_recid=> 0,copy_stamp => 0,npieces=> 1,dest=> 0,pltfrmfr=> 6);
sys.dbms_backup_restore.backupBackupPiece(
bpname => '/export/home/oracle/xtts/stage_dest/a6t3n1n4_1_1',
fname => '/export/home/oracle/xtts/backupondest/a6t3n1n4_1_1',
handle => handle,media=> media,comment=> comment,concur=> concur,recid=> recid,stamp=>stamp,check_logical => FALSE,copyno=> 1, deffmt=> 0, copy_recid=> 0,copy_stamp => 0,npieces=> 1,dest=> 0,pltfrmfr=> 6);
sys.dbms_backup_restore.deviceDeallocate;
END;
/
- 应用增量备份
xttnewdatafiles.txt
::TESTTB2
9,+DATADG/racdb/datafile/TESTTB2_9.dbf
::TESTTB1
17,+DATADG/racdb/datafile/TESTTB1_17.dbf
19,+DATADG/racdb/datafile/TESTTB1_19.dbf
11,+DATADG/racdb/datafile/TESTTB1_11.dbf
14,+DATADG/racdb/datafile/TESTTB1_14.dbf
16,+DATADG/racdb/datafile/TESTTB1_16.dbf
20,+DATADG/racdb/datafile/TESTTB1_20.dbf
12,+DATADG/racdb/datafile/TESTTB1_12.dbf
15,+DATADG/racdb/datafile/TESTTB1_15.dbf
21,+DATADG/racdb/datafile/TESTTB1_21.dbf
5,+DATADG/racdb/datafile/TESTTB1_5.dbf
set serveroutput on;
DECLARE
outhandle varchar2(512) ;
outtag varchar2(30) ;
done boolean ;
failover boolean ;
devtype VARCHAR2(512);
BEGIN
DBMS_OUTPUT.put_line('Entering RollForward');
-- Now the rolling forward.
devtype := sys.dbms_backup_restore.deviceAllocate;
sys.dbms_backup_restore.applySetDatafile(check_logical => FALSE, cleanup => FALSE) ;
DBMS_OUTPUT.put_line('After applySetDataFile');
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 17 ,toname => '+DATADG/racdb/datafile/TESTTB1_17.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 19 ,toname => '+DATADG/racdb/datafile/TESTTB1_19.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 11 ,toname => '+DATADG/racdb/datafile/TESTTB1_11.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 14 ,toname => '+DATADG/racdb/datafile/TESTTB1_14.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 16 ,toname => '+DATADG/racdb/datafile/TESTTB1_16.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 20 ,toname => '+DATADG/racdb/datafile/TESTTB1_20.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 12 ,toname => '+DATADG/racdb/datafile/TESTTB1_12.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 15 ,toname => '+DATADG/racdb/datafile/TESTTB1_15.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 21 ,toname => '+DATADG/racdb/datafile/TESTTB1_21.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
sys.dbms_backup_restore.applyDatafileTo(dfnumber => 5 ,toname => '+DATADG/racdb/datafile/TESTTB1_5.dbf',fuzziness_hint => 0, max_corrupt => 0, islevel0 => 0,recid => 0, stamp => 0);
DBMS_OUTPUT.put_line('Done: applyDataFileTo');
-- Restore Set Piece
sys.dbms_backup_restore.restoreSetPiece(handle => '/export/home/oracle/xtts/backupondest/a7t3n1nj_1_1',tag => null, fromdisk => true, recid => 0, stamp => 0) ;
DBMS_OUTPUT.put_line('Done: RestoreSetPiece');
-- Restore Backup Piece
sys.dbms_backup_restore.restoreBackupPiece(done => done, params => null, outhandle => outhandle,outtag => outtag, failover => failover);
DBMS_OUTPUT.put_line('Done: RestoreBackupPiece');
sys.dbms_backup_restore.restoreCancel(TRUE);
sys.dbms_backup_restore.deviceDeallocate;
END;
/
RMAN CONVERT Transportable Tablespace with Data Pump: Example
1、alter tablesapce read only
SQL> ALTER TABLESPACE fsindex READ ONLY;
Tablespace altered.
SQL> ALTER TABLESPACE fsdata READ ONLY;
Tablespace altered.
2、expdp
expdp system TRANSPORT_TABLESPACES=fsdata,fsindex TRANSPORT_FULL_CHECK=YES DIRECTORY=dp_for_cloud
3、源库convert tablesapce,cp到目标
RMAN> CONVERT TABLESPACE fsdata, fsindex
TO PLATFORM 'Linux x86 64-bit'
FORMAT '/tmp/%U ';
…
input datafile file number=00006 name=/u01/app/oracle/DATADG/orcl/fsdata01.dbf
converted datafile=/tmp/data_D-ORCL_I-1410251631_TS-FSDATA_FNO-6_0aqc9un3
…
input datafile file number=00007 name=/u01/app/oracle/DATADG/orcl/fsindex01.dbf
converted datafile=/tmp/data_D-ORCL_I-1410251631_TS-FSINDEX_FNO-7_0bqc9un6
4、目标创建用户
SQL> CREATE USER fsowner
2 PROFILE default
3 IDENTIFIED BY fspass
4 TEMPORARY TABLESPACE temp
5 ACCOUNT UNLOCK;
5、目标IMPDP
impdp system DIRECTORY=dp_from_onprem \
TRANSPORT_DATAFILES='/u02/app/oracle/DATADG/ORCL/fsdata01.dbf', \
'/u02/app/oracle/DATADG/ORCL/fsindex01.dbf'
6、验证数据后,alter tablespace read write
SQL> ALTER TABLESPACE fsdata READ WRITE;
Tablespace altered.
SQL> ALTER TABLESPACE fsindex READ WRITE;
Tablespace altered.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




