ITPub博客

首页 > Linux操作系统 > Linux操作系统 > CONVERT DATABASE命令(一)

CONVERT DATABASE命令(一)

原创 Linux操作系统 作者:yangtingkun 时间:2009-07-21 23:55:28 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077339