ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Oracle可传输表空间的特性复制数据(5)实战CONVERT

使用Oracle可传输表空间的特性复制数据(5)实战CONVERT

原创 Linux操作系统 作者:junsansi 时间:2008-01-15 15:34:52 0 删除 编辑

设定:

源数据库:JSSWEB ,Oracle10.2.0.1 ,Windows 2003(32-bit)

目标数据库:JSSCON  ,Oracle10.2.0.1 ,RHEL U2 (32-bit),已安装好数据库软件。

注:我知道,我明白,我理解,字节顺序相同,按照前面说的应该不需要使用CONVERT转换的嘛!没错你说的对,我们这是演示,你别当真,更别糊涂,相同字节顺序是不需要convert,但convert database例外的嘛。

一、启动数据库到read only状态

首先连接到源数据库。

E:\ORA10G>set oracle_sid=jssweb

E:\ORA10G>sqlplus "/ as sysdba"

启动到read only状态

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area  113246208 bytes

Fixed Size                  1247564 bytes

Variable Size              92276404 bytes

Database Buffers           12582912 bytes

Redo Buffers                7139328 bytes

数据库装载完毕。

SQL> alter database open read only;

数据库已更改。

二、检查数据库是否支持传输,主要检查平台

SQL> set serveroutput on

SQL> declare

  2    db_ready boolean;

  3  begin

  4    db_ready := dbms_tdb.check_db('Linux IA (32-bit)');

  5  end;

  6  /

PL/SQL 过程已成功完成。

无输出,说明支持平台间转换,然后检查是否存在外部对象。

SQL> declare

  2    external boolean;

  3  begin

  4    external := dbms_tdb.check_external;

  5  end;

  6  /

The following directories exist in the database:

SYS.DATA_PUMP_DIR

Sys用户下有一个directory,记录下来。

三、执行CONVERT命令,假设我们希望在源平台执行转换操作。

首先连接到RMAN管理器中。

E:\ora10g>rman target /

选择在源平台执行转换操作(注意下列中的加粗部分)

RMAN> convert database new database 'jsscon'

2>  transport script 'e:\oratmp\script\ts.sql'

3>  to platform 'Linux IA (32-bit)'

4>  db_file_name_convert 'E:\ora10g\oradata\jssweb' 'e:\oratmp\oradata';

启动 convert 于 16-11月-07

使用通道 ORA_DISK_1

在数据库中找到目录 SYS.DATA_PUMP_DIR

在口令文件中找到用户 SYS (具有 SYSDBA and SYSOPER 权限)

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件 fno=00001 name=E:\ORA10G\ORADATA\JSSWEB\SYSTEM01.DBF

已转换的数据文件 = E:\ORATMP\ORADATA\SYSTEM01.DBF

通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:25

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件 fno=00002 name=E:\ORA10G\ORADATA\JSSWEB\UNDOTBS01.DBF

已转换的数据文件 = E:\ORATMP\ORADATA\UNDOTBS01.DBF

通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:16

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件 fno=00004 name=E:\ORA10G\ORADATA\JSSWEB\JSSWEB.DBF

已转换的数据文件 = E:\ORATMP\ORADATA\JSSWEB.DBF

通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:15

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件 fno=00003 name=E:\ORA10G\ORADATA\JSSWEB\SYSAUX01.DBF

已转换的数据文件 = E:\ORATMP\ORADATA\SYSAUX01.DBF

通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:15

通道 ORA_DISK_1: 启动数据文件转换

输入数据文件 fno=00005 name=E:\ORA10G\ORADATA\JSSWEB\USERS01.DBF

已转换的数据文件 = E:\ORATMP\ORADATA\USERS01.DBF

通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:03

在目标平台上运行 SQL 脚本 E:\ORATMP\SCRIPT\TS.SQL 以创建数据库

编辑 init.ora 文件 E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00J16HQT_1_0.ORA。此 PFILE 将用于在目标平台上创建数据库据

要重新编译所有 PL/SQL 模块, 请在目标平台上运行 utlirp.sql 和 utlrp.sql

要更改内部数据库标识符, 请使用 DBNEWID 实用程序

完成 backup 于 16-11月-07

屏蔽输出中提供了二处脚本所在路径,记录下来。

四、复制文件到目标平台

复制源库中数据文件到目标平台,从上述屏蔽输出中看到共涉及E:\ORATMP\ORADATA\目录中5个数据文件(临时表空间数据文件不需要转换,可以目标数据库重新创建),E:\ORATMP\SCRIPT目录中的TS.SQL脚本文件,以及E:\ORA10G\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00J16HQT_1_0.ORA客户端初始化参数文件,复制到目标平台的适当位置,此处我们将复制到/opt/oratmp目录中。

提示:数据文件复制完成后即可以将源数据库置为read-write状态了。

创建相关目录:

[oracle@jsslinux oradata]$ mkdir /opt/ora10g/oradata/jsscon -p

[oracle@jsslinux oradata]$ mkdir /opt/ora10g/admin/jsscon -p

[oracle@jsslinux oradata]$ cd /opt/ora10g/admin/jsscon

[oracle@jsslinux jsscon]$ mkdir adump bdump cdump dpdump pfile udump

五、修改脚本文件和初始化参数文件

再次着重提示,oracle生成的脚本文件,仅供参考有些参数还需要你自己手工调整,特别是文件复制到目标平台后,如果路径有变化,一定要记的修改脚本文件中对应的参数。

INIT_00J16HQT_1_0.ORA为客户端初始化参数文件,需要注意其中db_name, xxx_dest,control_files等参数,为便于输入,复制到目标平台时将其更新为inittmp.ora。

TS.SQL为创建控制文件脚本,需要注意各数据文件路径。

六、执行脚本,创建数据库。

你可以打开脚本文件,按照语句手工一步步执行,也可以直接调用该脚本文件。此处我们是第一次执行,稳妥期间还是手工一步一步来吧:)))

首先指定SID(如果是windows系统,就不只是export这么简单了,还需要oradim重建一个service,前面的文章有中具体示例,这里不详述了):

[oracle@jsslinux jsscon]$ export ORACLE_SID=jsscon

[oracle@jsslinux jsscon]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 11月 16 11:10:07 2007

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

已连接到空闲例程。

从客户端初始化参数文件启动到nomount模式

SQL> STARTUP NOMOUNT PFILE='/opt/oratmp/scripts/INIT_00J14FQ2_1_0.ORA'

ORACLE 例程已经启动。

Total System Global Area  109051904 bytes

Fixed Size                  1217980 bytes

Variable Size              92277316 bytes

Database Buffers           12582912 bytes

Redo Buffers                2973696 bytes

创建控制文件

SQL> CREATE CONTROLFILE REUSE SET DATABASE "JSSCON" RESETLOGS  NOARCHIVELOG

  2      MAXLOGFILES 16

  3      MAXLOGMEMBERS 3

  4      MAXDATAFILES 100

  5      MAXINSTANCES 8

  6      MAXLOGHISTORY 292

  7  LOGFILE

  8    GROUP 1 '/opt/ora10g/oradata/jsscon/redo01.log'  SIZE 20M,

  9    GROUP 2 '/opt/ora10g/oradata/jsscon/redo02.log'  SIZE 20M,

 10    GROUP 3 '/opt/ora10g/oradata/jsscon/redo03.log'  SIZE 20M

 11  DATAFILE

 12    '/opt/oratmp/oradata/SYSTEM01.DBF',

 13    '/opt/oratmp/oradata/UNDOTBS01.DBF',

 14    '/opt/oratmp/oradata/SYSAUX01.DBF',

 15    '/opt/oratmp/oradata/JSSWEB.DBF',

 16    '/opt/oratmp/oradata/USERS01.DBF'

 17  CHARACTER SET ZHS16GBK

 18  ;

控制文件已创建。

以resetlogs模式打开数据库

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

创建临时表空间

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/ora10g/oradata/jsscon/TEMP01.DBF'

  2       SIZE 200M;

表空间已更改。

注意:下面的操作就很关键了。

SQL> set echo off

SQL> SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

启动到升级模式

SQL> STARTUP UPGRADE PFILE='/opt/oratmp/scripts/inittmp.ora'

ORACLE 例程已经启动。

Total System Global Area  109051904 bytes

Fixed Size                  1217980 bytes

Variable Size              92277316 bytes

Database Buffers           12582912 bytes

Redo Buffers                2973696 bytes

数据库装载完毕。

数据库已经打开。

重新编译数据库对象。

SQL> @@ ?/rdbms/admin/utlirp.sql 

....

....

DOC>#######################################################################

DOC>#######################################################################

DOC>   utlirp.sql completed successfully. All PL/SQL objects in the

DOC>   database have been invalidated.

DOC>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-145401/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2007-12-21

  • 博文量
    640
  • 访问量
    4090780