RMAN新增了CONVERT命令,在前面的文章中已经介绍了如何利用CONVERT命令在不同平台间转换表空间。对于相同字节序的数据库,Oracle还提供了CONVERT DATABASE的命令。
Oracle10g新增CONVERT语法:http://yangtingkun.itpub.net/post/468/483871
利用CONVERT实现跨平台表空间迁移:http://yangtingkun.itpub.net/post/468/483949
这一篇介绍执行CONVERT DATABASE命令的过程。
前两天帮junsansi解决了CONVERT DATABASE数据库过程中出现的问题,正好这几天打算测试CONVERT DATABASE的内容,于是就仿照他的例子,做了一个完整的测试。
登陆数据库,检查数据库支持的可传输平台:
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- -------------------------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
已选择17行。
下面可以执行CONVERT DATABASE命令了,这个命令要求源数据库和目标数据库的编码字符序一致。且要求执行CONVERT DATABASE的源数据库处于只读状态:
RMAN> convert database
2> new database ytktran
3> skip offline
4> transport script. 'e:\trans_script.sql'
5> to platform. 'Linux 64-bit for AMD'
6> db_file_name_convert ('e:\oracle\oradata\ytk102\', 'e:\oracle\backup\')
7> ;
启动 convert 于 29-6月 -09
使用通道 ORA_DISK_1
在数据库中找到外部表 SH.SALES_TRANSACTIONS_EXT
在数据库中找到外部表 YANGTK.T_EXTERNAL
在数据库中找到外部表 YANGTK.T_EXTERNAL2
在数据库中找到目录 SYS.AUDIT_DIR
在数据库中找到目录 SYS.D_OUTPUT1
在数据库中找到目录 SYS.D_OUTPUT
在数据库中找到目录 SYS.SUBDIR
在数据库中找到目录 SYS.XMLDIR
在数据库中找到目录 SYS.MEDIA_DIR
在数据库中找到目录 SYS.LOG_FILE_DIR
在数据库中找到目录 SYS.DATA_FILE_DIR
在数据库中找到目录 SYS.WORK_DIR
在数据库中找到目录 SYS.ADMIN_DIR
在数据库中找到目录 SYS.DATA_PUMP_DIR
在数据库中找到 BFILE PM.PRINT_MEDIA
在口令文件中找到用户 SYS (具有 SYSDBA and SYSOPER 权限)
在口令文件中找到用户 YANGTK (具有 SYSDBA 权限)
跳过脱机文件4
RMAN-06060: 警告: 跳过数据文件将影响表空间 USERS 的恢复
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00007 name=E:\ORACLE\ORADATA\YTK102\MGMT.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\MGMT.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:01:35
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00002 name=E:\ORACLE\ORADATA\YTK102\UNDOTBS01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\UNDOTBS01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:01:05
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00001 name=E:\ORACLE\ORADATA\YTK102\SYSTEM01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\SYSTEM01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:01:06
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00003 name=E:\ORACLE\ORADATA\YTK102\SYSAUX01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\SYSAUX01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:45
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00006 name=E:\ORACLE\ORADATA\YTK102\YANGTK01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\YANGTK01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\YTK102\EXAMPLE01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\EXAMPLE01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00008 name=E:\ORACLE\ORADATA\YTK102\YANGTK02.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\YANGTK02.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:16
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00010 name=E:\ORACLE\ORADATA\YTK102\MGMT_ECM_DEPOT1.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\MGMT_ECM_DEPOT1.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00009 name=E:\ORACLE\ORADATA\YTK102\TEST01.DBF
已转换的数据文件 = E:\ORACLE\BACKUP\TEST01.DBF
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:01
在目标平台上运行 SQL 脚本 E:\TRANS_SCRIPT.SQL 以创建数据库
编辑 init.ora 文件 E:\ORACLE\ORACLE1020\DATABASE\INIT_00KIQ9S4_1_0.ORA。此 PFILE
将用于在目标平台上创建数据库据
要重新编译所有 PL/SQL 模块, 请在目标平台上运行 utlirp.sql 和 utlrp.sql
要更改内部数据库标识符, 请使用 DBNEWID 实用程序
完成 backup 于 29-6月 -09
利用DBMS_FILE_TRANSFER包或ftp,完成数据文件和初始化参数文件的传输工作。
而且利用CONVERT DATABASE命令还得到了在目标数据库上加载打开数据库的脚本:E:\TRANS_SCRIPT.SQL,内容如下:
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT PFILE='E:\ORACLE\ORACLE1020\DATABASE\INIT_00KIQ9S4_1_0.ORA'
-- Create SPFILE
CREATE SPFILE FROM PFILE = 'E:\ORACLE\ORACLE1020\DATABASE\INIT_00KIQ9S4_1_0.ORA';
STARTUP FORCE NOMOUNT
CREATE CONTROLFILE REUSE SET DATABASE "YTKTRAN" RESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\ORACLE\ORACLE1020\DATABASE\ARCH_D-YTKTRAN_ID-3695768905_S-491_T-1_A-630194893_00KIQ9S4' SIZE 50M,
GROUP 2 'E:\ORACLE\ORACLE1020\DATABASE\ARCH_D-YTKTRAN_ID-3695768905_S-492_T-1_A-630194893_00KIQ9S4' SIZE 50M,
GROUP 3 'E:\ORACLE\ORACLE1020\DATABASE\ARCH_D-YTKTRAN_ID-3695768905_S-493_T-1_A-630194893_00KIQ9S4' SIZE 50M
DATAFILE
'E:\ORACLE\BACKUP\SYSTEM01.DBF',
'E:\ORACLE\BACKUP\UNDOTBS01.DBF',
'E:\ORACLE\BACKUP\SYSAUX01.DBF',
'E:\ORACLE\BACKUP\EXAMPLE01.DBF',
'E:\ORACLE\BACKUP\YANGTK01.DBF',
'E:\ORACLE\BACKUP\MGMT.DBF',
'E:\ORACLE\BACKUP\YANGTK02.DBF',
'E:\ORACLE\BACKUP\TEST01.DBF',
'E:\ORACLE\BACKUP\MGMT_ECM_DEPOT1.DBF'
CHARACTER SET ZHS16GBK
;
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Files in normal offline tablespaces are now named.
ALTER DATABASE RENAME FILE 'MISSING00004'
-- WARNING! This command can not be completed because the file
-- needs to be renamed to a real file name.
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ORACLE\ORACLE1020\DATABASE\DATA_D-YTKTRAN_I-3695768905_TS-TEMP_FNO-2_00KIQ9S4'
SIZE 1024M AUTOEXTEND OFF;
-- End of tempfile additions.
--
set echo off
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt * Your database has been created successfully!
prompt * There are many things to think about for the new database. Here
prompt * is a checklist to help you stay on track:
prompt * 1. You may want to redefine the location of the directory objects.
prompt * 2. You may want to change the internal database identifier (DBID)
prompt * or the global database name for this database. Use the
prompt * NEWDBID Utility (nid).
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SHUTDOWN IMMEDIATE
STARTUP UPGRADE
@@ ?/rdbms/admin/utlirp.sql
SHUTDOWN IMMEDIATE
STARTUP
-- The following step will recompile all PL/SQL modules.
-- It may take serveral hours to complete.
@@ ?/rdbms/admin/utlrp.sql
set feedback 6;
利用这个文件中给出的脚本就可以在目标服务器上打开数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-609855/ ,如需转载,请注明出处,否则将追究法律责任。