SQL> select * from v$transportable_platform order by
3;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ----------------------------------------
--------------------------
3 HP-UX (64-bit)
Big
6 AIX-Based Systems (64-bit)
Big
18 IBM Power Based Linux
Big
2 Solaris[tm] OE (64-bit)
Big
4 HP-UX IA (64-bit)
Big
16 Apple Mac OS
Big
1 Solaris[tm] OE (32-bit)
Big
9 IBM zSeries Based Linux
Big
17 Solaris Operating System
(x86) Little
19 HP IA Open VMS
Little
20 Solaris Operating System
(x86-64) Little
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ----------------------------------------
--------------------------
12 Microsoft Windows x86
64-bit Little
13 Linux x86 64-bit
Little
8 Microsoft Windows IA
(64-bit) Little
21 Apple Mac OS (x86-64)
Little
11 Linux IA (64-bit)
Little
5 HP Tru64 UNIX
Little
10 Linux IA (32-bit)
Little
7 Microsoft Windows IA
(32-bit) Little
15 HP Open VMS
Little
已选择 20 行。
******************************
Tablespace
******************************
CONVERT TABLESPACE andzen1
TO PLATFORM 'AIX-Based Systems
(64-bit)'
FORMAT='F:/TMP/%U';
CONVERT TABLESPACE andzen1
TO PLATFORM 'Linux IA
(32-bit)'
FORMAT='F:/TMP/%U';
CONVERT TABLESPACE andzen1
TO PLATFORM 'Linux x86
64-bit'
FORMAT='F:/TMP/%U';
RMAN> CONVERT tablespace users
2> TO
PLATFORM 'Linux x86 64-bit'
3> FORMAT='F:/TMP/%U';
启动 conversion at source 于 30-11月-16
使用通道 ORA_DISK_1
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS
===============
RMAN-00571:
===========================================================
RMAN-03002: conversion at source 命令 (在 11/30/2016 12:17:02 上)
失败
RMAN-06599: 表空间 USERS
不是只读的
RMAN> CONVERT tablespace users
2> TO
PLATFORM 'Linux x86 64-bit'
3> FORMAT='F:/TMP/%U';
启动 conversion at source 于 30-11月-16
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件: 文件号=00004 名称=F:\APP\ORACLE12C\ORADATA\TX\USERS01.DBF
已转换的数据文件 =
F:\TMP\DATA_D-TX_I-2137294257_TS-USERS_FNO-4_0GRM78AU
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:01
完成 conversion at source 于
30-11月-16
RMAN> .
RMAN> CONVERT TABLESPACE andzen1
2> TO
PLATFORM 'AIX-Based Systems (64-bit)'
3> FORMAT='F:/TMP/%U';
启动 conversion at source 于 30-11月-16
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件: 文件号=00005 名称=F:\APP\ORACLE12C\ORADATA\TX\ANDZEN1.DBF
已转换的数据文件 =
F:\TMP\DATA_D-TX_I-2137294257_TS-ANDZEN1_FNO-5_0ERM7737
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:01:35
完成 conversion at source 于
30-11月-16
RMAN>
******************************
Data
file
******************************
RMAN> CONVERT DATAFILE 'F:\APP\ORACLE12C\ORADATA\TX\USERS01.DBF'
2> TO
PLATFORM 'Linux x86 64-bit'
3> FORMAT='F:/TMP/%U';
启动 conversion at target 于 30-11月-16
使用通道 ORA_DISK_1
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS
===============
RMAN-00571:
===========================================================
RMAN-03002: conversion at target 命令 (在 11/30/2016 12:18:48 上)
失败
RMAN-06595: 平台名 'Linux x86 64-bit' 与数据库平台名
'Microsoft Windows x86 64-bit' 不匹配
RMAN>
RMAN> CONVERT DATAFILE 'F:\APP\ORACLE12C\ORADATA\TX\ANDZEN1.DBF'
2> TO
PLATFORM 'AIX-Based Systems (64-bit)'
3> FORMAT='F:/TMP/%U';
启动 conversion at target 于 30-11月-16
使用通道 ORA_DISK_1
RMAN-00571:
===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS
===============
RMAN-00571:
===========================================================
RMAN-03002: conversion at target 命令 (在 11/30/2016 12:13:48 上)
失败
RMAN-06595: 平台名 'AIX-Based Systems (64-bit)'
与数据库平台名 'Microsoft Windows x86 64-bit' 不匹配
RMAN>
奇怪所有的covert datafile 都不成功!??
platform_name支持的值可以从V$TRANSPORTABLE_PLATFORM查询到,并没有错误。
答:
CONVERT
TABLESPACE命令必须用在源平台,必须转换整个表空间
CONVERT DATAFILE命令用在目的地平台(不能在源数据库), 只转换一个数据文件。
******************************
DATABASE
******************************
使用RMAN CONVERT DATABASE命令转换整个数据库文件。
下面是转换步骤:
1).准备传输数据库,源数据库必须以只读方式打开。
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN READ ONLY;
2).使用DBMS_TDB.CHECK_DB检查数据库状态。
使用DBMS_TDB包的CHECK_DB函数检查数据库是否准备好了。
set serveroutput on
declare
db_ready boolean;
begin
db_ready :=
dbms_tdb.check_db('Microsoft Windows IA (32-bit)',
dbms_tdb.skip_none);
end;
3).使用DBMS_TDB.CHECK_EXTERNAL标识外部对象。
SQL> set serveroutput on
SQL> declare
external boolean;
begin
external :=
dbms_tdb.check_external;
end;
当数据库准备好传输后,执行RMAN CONVERT
DATABASE命令,指定目的地平台和输出文件名称。RMAN处理需要移动到目的地数据库的文件,包括以下:
*数据库数据文件的完整拷贝,准备传输。
*用于目的地平台新数据库的PFILE,包括源数据库PFILE或者SPFILE的设置:
# Please change the values of the following parameters:
control_files =
"/tmp/convertdb/cf_D-NEWDBT_id-1778429277_00gb9u2s"
db_recovery_file_dest = "/tmp/convertdb/orcva"
db_recovery_file_dest_size=
10737418240
instance_name = "NEWDBT"
service_names =
"NEWDBT.regress.rdbms.dev.us.oracle.com"
plsql_native_library_dir =
"/tmp/convertdb/plsqlnld1"
db_name = "NEWDBT"
*transport script,包含用于在目的地平台创建新数据库SQL语句。
4).执行CONVERT DATABASE操作。
以下是在源平台使用CONVERT DATABASE的例子:
RMAN> CONVERT DATABASE NEW DATABASE 'newdb'
transport script
'/tmp/convertdb/transportscript'
to platform 'Microsoft Windows IA
(32-bit)'
db_file_name_convert
'/disk1/oracle/dbs' '/tmp/convertdb'
;
Starting convert at 25-JAN-05
using channel ORA_DISK_1
External table SH.SALES_TRANSACTIONS_EXT found in the
database
Directory SYS.DATA_PUMP_DIR found in the database
Directory SYS.MEDIA_DIR found in the database
Directory SYS.DATA_FILE_DIR found in the database
Directory SYS.LOG_FILE_DIR found in the database
BFILE PM.PRINT_MEDIA found in the database
User SYS with SYSDBA and SYSOPER privilege found in password
file
User OPER with SYSDBA privilege found in password file
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00001 name=/disk1/oracle/dbs/tbs_01.f
converted datafile=/tmp/convertdb/tbs_01.f
channel ORA_DISK_1: datafile conversion complete, elapsed
time: 00:00:15
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00002 name=/disk1/oracle/dbs/tbs_ax1.f
converted datafile=/tmp/convertdb/tbs_ax1.f
channel ORA_DISK_1: datafile conversion complete, elapsed
time: 00:00:03
.
.
.
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00016 name=/disk1/oracle/dbs/tbs_52.f
converted datafile=/tmp/convertdb/tbs_52.f
channel ORA_DISK_1: datafile conversion complete, elapsed
time: 00:00:01
Run SQL script /tmp/convertdb/transportscript on the target
platform
to create database
Edit init.ora file init_00gb3vfv_1_0.ora.This PFILE will be
used to
create the database on the target
platform
To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql
on
the target platform
To change the internal database identifier, use DBNEWID
Utility
Finished backup at 25-JAN-05
5).将所有处理的文件拷贝到目的地主机。
放置数据文件到目的地主机期望的位置,如果在目的地的数据文件路径和源不同,编辑transport
script引用新的数据文件位置。同时编辑PFILE修改任何针对目的地数据库的设置。
6).在目的地主机的SQL*PLUS中执行transport
scirpt创建新数据库。
SQL> @transportscript
当transport sciprt完成,新数据库即创建完成。