知识大全 Oracle10g同字节序跨平台迁移

Posted 数据库

篇首语:登山则情满于山,观海则意溢于海。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle10g同字节序跨平台迁移相关的知识,希望对你有一定的参考价值。

Oracle10g同字节序跨平台迁移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在Oracle g中 同字节序跨平台的文件头信息Oracle会自动改写 不再需要转换

  我们看以下测试

  [oracle@danaly oradata]$ sqlplus / as sysdba

  SQL*Plus: Release Production on Thu Jul : :

  Copyright (c) Oracle All rights reserved

  Connected to:

  Oracle Database g Enterprise Edition Release Production

  With the Partitioning Oracle Label Security OLAP and Data Mining Scoring Engine options

  SQL> alter database mount;

  Database altered

  SQL> alter database open;

  Database altered

  SQL> select name from v$datafile;

  NAME

  

  /opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_system_ tc xns_ dbf

  /opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_undotbs _ tc mb_ dbf

  /opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_sysaux_ tc gqc_ dbf

  /opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_users_ tc tth_ dbf

  SQL> show parameter p

  NAME TYPE VALUE

  

  patible string

  nls_p string

  plsql_piler_flags string INTERPRETED NON_DEBUG

  plsql_v _patibility boolean FALSE

  SQL> create tablespace trans

   datafile /opt/oracle/oradata/eygle/EYGLE/datafile/trans dbf size M;

  Tablespace created

  SQL> create user trans identified by trans default tablespace trans;

  User created

  SQL> grant connect resource to trans;

  Grant succeeded

  SQL> connect trans/trans

  create table test as select * from dict;

  Connected

  SQL>

  Table created

  SQL> select count(*) from test;

  COUNT(*)

  

  

  SQL> connect / as sysdba

  Connected

  SQL> alter tablespace trans read only;

  Tablespace altered

  SQL> exit

  Disconnected from Oracle Database g Enterprise Edition Release Production

  With the Partitioning Oracle Label Security OLAP and Data Mining Scoring Engine options

  [oracle@danaly oradata]$ exp \\ / as sysdba\\ tablespaces=trans transport_tablespace=y file=exp_trans dmp

  Export: Release Production on Thu Jul : :

  Copyright (c) Oracle All rights reserved

  Connected to: Oracle Database g Enterprise Edition Release Production

  With the Partitioning Oracle Label Security OLAP and Data Mining Scoring Engine options

  Export done in ZHS GBK character set and AL UTF NCHAR character set

  Note: table data (rows) will not be exported

  About to export transportable tablespace metadata

  For tablespace TRANS

   exporting cluster definitions

   exporting table definitions

   exporting table TEST

   exporting referential integrity constraints

   exporting triggers

   end transportable tablespace metadata export

  Export terminated successfully without warnings

  [oracle@danaly oradata]$ ls l exp_trans dmp

   rw r r oracle dba Jul : exp_trans dmp

  [oracle@danaly oradata]$ pwd

  /opt/oracle/oradata

  然后我们可以直接将这两个文件传输到Windows平台上

  C:\\oracle\\oradata\\EYGLE\\DATAFILE>ftp

  Connected to

   (vsFTPd )

  User ( :(none)): oracle

   Please specify the password

  Password:

   Login successful

  ftp> bin

   Switching to Binary mode

  ftp> mget oradata/eygle/EYGLE/datafile/trans dbf

   Switching to Binary mode

  mget oradata/eygle/EYGLE/datafile/trans dbf? y

   PORT mand successful Consider using PASV

   Opening BINARY mode data connection for oradata/eygle/EYGLE/datafile/trans dbf ( bytes)

   File send OK

  ftp: 收到 字节 用时 Seconds Kbytes/sec

  ftp> mget oradata/exp_trans dmp

   Switching to Binary mode

  mget oradata/exp_trans dmp? y

   PORT mand successful Consider using PASV

   Opening BINARY mode data connection for oradata/exp_trans dmp ( bytes)

   File send OK

  ftp: 收到 字节 用时 Seconds Kbytes/sec

  ftp> quit

   Goodbye

  SQL> create user trans identified by trans;

  用户已创建

  SQL> grant connect resource to trans;

  授权成功

  接下来执行导入

  C:\\oracle\\oradata\\EYGLE\\DATAFILE>imp / as sysdba tablespaces=trans transport_tablespace=y file=exp_trans dmp datafiles=C:\\oracle\\oradata\\EYGLE\\DATAFILE\\trans dbf

  Import: Release Production on 星期四 月 : :

  Copyright (c) Oracle All rights reserved

  连接到: Oracle Database g Enterprise Edition Release Production

  With the Partitioning OLAP and Data Mining options

  经由常规路径由 EXPORT:V 创建的导出文件

  即将导入可传输的表空间元数据

  已经完成 ZHS GBK 字符集和 AL UTF NCHAR 字符集中的导入

   正在将 SYS 的对象导入到 SYS

   正在将 SYS 的对象导入到 SYS

   正在将 TRANS 的对象导入到 TRANS

   正在导入表 TEST

   正在将 SYS 的对象导入到 SYS

  成功终止导入 没有出现警告

  我们看到这个文件可以直接被Windows上的系统识别

  SQL> select count(*) from trans test;

  COUNT(*)

  

  

  SQL> select tablespace_name status from dba_tablespaces;

  TABLESPACE_NAME STATUS

  

  SYSTEM ONLINE

  UNDOTBS ONLINE

  SYSAUX ONLINE

  TEMP ONLINE

  USERS ONLINE

  TRANS READ ONLY

  已选择 行

   Oracle g同字节序跨平台迁移的增强

  上一节介绍的方法不免过于复杂 也许很多朋友会发出这样的疑问 既然同字节序数据文件跨平台的差异如此之小 为什么Oracle不直接实现这一技术呢?

  也许是这一迁移的技术优先级较低 在Oracle gR 中 Oracle开始支持同字节序数据库的跨平台迁移

  这一技术实现有以下几点注意事项

   . 源平台和目的平台需要具有相同的字节序

   . 重做日志文件和控制文件不会传输 迁移之后需要重建控制文件使用RESETLOGS方式打开数据库 临时文件不会被传输

   . BFILES 外部表和Directories 口令文件等不会被传输

  我们通过Linux平台到Windows平台的迁移来看一下这一技术的实现

   . 确认平台及版本

  首先要确定源平台和目标平台具有相同的字节序

  SQL> select PLATFORM_NAME ENDIAN_FORMAT from V$TRANSPORTABLE_PLATFORM

   where platform_name in ( Linux IA ( bit) Microsoft Windows IA ( bit) );

  PLATFORM_NAME ENDIAN_FORMAT

  

  Microsoft Windows IA ( bit) Little

  Linux IA ( bit) Little

  然后需要确定源平台及目标平台的数据库版本 通常需要这两者具有相同的数据库版本 本例的情况有所不同 Linux平台的数据库版本为 Windows平台的数据库版本为 数据库版本不同将使情况稍微复杂一点 而且需要注意的是 通常高版本的数据库不能向低版本迁移

   . 确认迁移是否支持

  跨平台迁移需要数据库处于READ ONLY模式打开 使用DBMS_TDB CHECK_DB进行检查

  SQL> set serveroutput on

  SQL> declare

   db_ready boolean;

   begin

   db_ready := dbms_tdb check_db( Microsoft Windows IA ( bit) );

   end;

   /

  PL/SQL procedure successfully pleted

  如果以上过程成功执行 并没有其他相关警告输出 则说明数据库可以支持跨平台转移

   . 检查外部对象

  使用DBMS_TDB CHECK_EXTERNAL来识别外部表 Directories或BFILES等 这些对象所指向的外部数据不能被RMAN自动转移

  SQL> set serveroutput on

  SQL> declare

   external boolean;

   begin

   external := dbms_tdb check_external;

   end;

   /

  The following directories exist in the database:

  SYS DATA_PUMP_DIR

  PL/SQL procedure successfully pleted

  如果数据库中存在外部表 DIRECTORIES等 则以上过程执行后的输出与以上类似

   . 使用RMAN进行跨平台文件迁移

  执行跨平台迁移首先要通过RMAN对数据文件进行转换 RMAN执行过程如下

  [oracle@danaly eygle]$ rman target /

  Recovery Manager: Release Production on Sat Jun : :

  Copyright (c) Oracle All rights reserved

  connected to target database: EYGLE (DBID= )

  RMAN> CONVERT DATABASE NEW DATABASE JULIA

   > TRANSPORT SCRIPT /opt/oracle/oradata/transport/transport sql

   > TO PLATFORM Microsoft Windows IA ( bit)

   > DB_FILE_NAME_CONVERT /opt/oracle/oradata/eygle/EYGLE/datafile /opt/oracle/oradata/transport ;

  Starting convert at JUN

  using target database control file instead of recovery catalog

  allocated channel: ORA_DISK_

  channel ORA_DISK_ : sid= devtype=DISK

  Directory SYS DATA_PUMP_DIR found in the database

  User SYS with SYSDBA and SYSOPER privilege found in password file

  channel ORA_DISK_ : starting datafile conversion

  input datafile

  fno= name=/opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_system_ tc xns_ dbf

  converted datafile=/opt/oracle/oradata/transport/o _mf_system_ tc xns_ dbf

  channel ORA_DISK_ : datafile conversion plete elapsed time: : :

  channel ORA_DISK_ : starting datafile conversion

  input datafile

  fno= name=/opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_undotbs _ tc mb_ dbf

  converted datafile=/opt/oracle/oradata/transport/o _mf_undotbs _ tc mb_ dbf

  channel ORA_DISK_ : datafile conversion plete elapsed time: : :

  channel ORA_DISK_ : starting datafile conversion

  input datafile

  fno= name=/opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_sysaux_ tc gqc_ dbf

  converted datafile=/opt/oracle/oradata/transport/o _mf_sysaux_ tc gqc_ dbf

  channel ORA_DISK_ : datafile conversion plete elapsed time: : :

  channel ORA_DISK_ : starting datafile conversion

  input datafile

  fno= name=/opt/oracle/oradata/eygle/EYGLE/datafile/o _mf_users_ tc tth_ dbf

  converted datafile=/opt/oracle/oradata/transport/o _mf_users_ tc tth_ dbf

  channel ORA_DISK_ : datafile conversion plete elapsed time: : :

  Run SQL script /opt/oracle/oradata/transport/transport sql on the target platform to create database

  Edit init ora file /opt/oracle/product/ /dbs/init_ il i r_ _ ora This PFILE will be used to create the database on the target platform

  To repile 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 JUN

  RMAN的转换语句中指定生成一个转换脚本transport sql用于参考 转换的目标平台是Microsoft Windows IA ( bit) 所有的数据文件转换后存放在一个新的目录下

  最后RMAN还自动生成一个参数文件 这个文件是init_ il i r_ _ ora 这个参数文件里包含了一些重要的初始化参数 可以根据需要进行相应的更改 由于平台以及路径的不同 很多涉及路径的参数都需要进行变更 这个参数文件的内容大致分为三个部分

  第一部分列出需要修改的参数

  # Please change the values of the following parameters:

  control_files = /opt/oracle/product/ /dbs/cf_D JULIA_id _ il i r

  db_create_file_dest = /opt/oracle/product/ /dbs/eygle

  db_recovery_file_dest = /opt/oracle/product/ /dbs/flash_recovery_area

  db_recovery_file_dest_size=

  background_dump_dest = /opt/oracle/product/ /dbs/bdump

  user_dump_dest = /opt/oracle/product/ /dbs/udump

  core_dump_dest = /opt/oracle/product/ /dbs/cdump

  audit_file_dest = /opt/oracle/product/ /dbs/adump

  db_name = JULIA

  第二部分列出了建议Review的参数

  # Please review the values of the following parameters:

  remote_login_passwordfile= EXCLUSIVE

  db_domain =

  dispatchers = (PROTOCOL=TCP) (SERVICE=eygleXDB)

  第三部分列出了来自于源数据库的一些特殊设置 这些参数可以酌情修改

  # The values of the following parameters are from source database:

  processes =

  sga_target =

  db_block_size =

  patible =

  db_file_multiblock_read_count=

  undo_management = AUTO

  undo_tablespace = UNDOTBS

  job_queue_processes =

  open_cursors =

  pga_aggregate_target =

  参数文件的内容我们可以在新的平台上重新创建 这个参数文件可以作为参考

   . 转移文件到目标平台

  源平台的工作完成之后 数据文件可以通过ftp等方式转移到目标平台 部署到相应目录 我的操作步骤如下

  C:\\oracle\\oradata>gzip d trans tar gz

  C:\\oracle\\oradata>tar xvf trans tar

  tar: blocksize =

  x transport/transport sql bytes tape blocks

  x transport/o _mf_sysaux_ tc gqc_ dbf bytes tape blocks

  x transport/o _mf_undotbs _ tc mb_ dbf bytes tape blocks

  x transport/o _mf_system_ tc xns_ dbf bytes tape blocks

  x transport/o _mf_users_ tc tth_ dbf bytes tape blocks

  C:\\oracle\\oradata>mkdir p JULIA\\DATAFILE

  C:\\oracle\\oradata>mkdir JULIA\\CONTROLFILE

  C:\\oracle\\oradata>mkdir JULIA\\ONLINELOG

  C:\\oracle\\oradata>mv transport\\* JULIA\\DATAFILE

   . 创建基础环境

  首先创建相关目录

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\adump

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\bdump

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\cdump

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\dpdump

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\pfile

  C:\\oracle\\oradata>mkdir C:\\oracle\\admin\\julia\\udump

  创建Windows数据库服务

  C:\\oracle\\oradata>oradim new sid julia

  实例已创建

  修改参数文件 参数文件可以从前面自动生成的参数文件进行修改得到 其中目录结构需要依据新平台的具体设置进行修改 和存储主要相关的两个参数修改如下

  db_create_file_dest = C:\\oracle\\oradata

  db_recovery_file_dest = C:\\oracle\\flash_recovery_area

  修改后的参数文件在Windows上应该位于$ORACLE_HOME/database下 参数文件中的另外一个重要参数是控制文件路径

  control_files = /opt/oracle/product/ /dbs/cf_D JULIA_id _ il i r

  如果我们计划使用OMF管理 可以暂时注释这一参数 在创建控制文件后再将控制文件的名称路径追加到参数文件中

   . 迁移步骤

  准备工作完成之后 我们可以进行新平台的数据库加载等工作 这些工作还可以参考在源平台生成的transport sql脚本

  这个脚本的第一部分给出了使用参数文件启动实例及重新创建控制文件的语法参考 当然我们还需要修改才能使用这段脚本

  STARTUP NOMOUNT PFILE= /opt/oracle/product/ /dbs/init_ il i r_ _ ora

  CREATE CONTROLFILE REUSE SET DATABASE LINDB G RESETLOGS NOARCHIVELOG

  MAXLOGFILES

  MAXLOGMEMBERS

  MAXDATAFILES

  MAXINSTANCES

  MAXLOGHISTORY

  LOGFILE

  GROUP SIZE M

  GROUP SIZE M

  GROUP SIZE M

  DATAFILE

   /opt/oracle/oradata/transport/o _mf_system_ tc xns_ dbf

   /opt/oracle/oradata/transport/o _mf_undotbs _ tc mb_ dbf

   /opt/oracle/oradata/transport/o _mf_sysaux_ tc gqc_ dbf

   /opt/oracle/oradata/transport/o _mf_users_ tc tth_ dbf

  CHARACTER SET ZHS GBK

  ;

  由于我们已经编辑好了新的参数文件 可以使用这个参数文件启动实例

  C:\\oracle\\oradata>set ORACLE_SID=julia

  C:\\oracle\\oradata>sqlplus / as sysdba

  SQL*Plus: Release Production on 星期一 月 : :

  Copyright (c) Oracle All Rights Reserved

  已连接到空闲例程

  SQL> startup nomount pfile=?\\database\\initjulia ora

  ORACLE 例程已经启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  接下来创建控制文件

  SQL> CREATE CONTROLFILE REUSE SET DATABASE JULIA RESETLOGS NOARCHIVELOG

   MAXLOGFILES

   MAXLOGMEMBERS

   MAXDATAFILES

   MAXINSTANCES

   MAXLOGHISTORY

   LOGFILE

   GROUP SIZE M

   GROUP SIZE M

   GROUP SIZE M

   DATAFILE

   C:\\oracle\\oradata\\JULIA\\DATAFILE\\o _mf_system_ tc xns_ dbf

   C:\\oracle\\oradata\\JULIA\\DATAFILE\\o _mf_undotbs _ tc mb_ dbf

   C:\\oracle\\oradata\\JULIA\\DATAFILE\\o _mf_sysaux_ tc gqc_ dbf

   C:\\oracle\\oradata\\JULIA\\DATAFILE\\o _mf_users_ tc tth_ dbf

   CHARACTER SET ZHS GBK

   ;

  控制文件已创建

  然后将控制文件的名称等信息追加到参数文件中

  SQL> column ctl_files NEW_VALUE ctl_files;

  SQL> SELECT CONCAT ( control_files=

   CONCAT (REPLACE (VALUE ) )

   ) ctl_files

   FROM v$parameter WHERE NAME = control_files ;

  CTL_FILES

  

  control_files= C:\\ORACLE\\ORADATA\\JULIA\\CONTROLFILE\\O _MF_ Y SZ R_ CTL C:\\ORAC

  LE\\FLASH_RECOVERY_AREA\\JULIA\\CONTROLFILE\\O _MF_ Y SZMK_ CTL

  SQL> host echo &ctl_files >>C:\\oracle\\ \\database\\initjulia ora ;

  注意 执行完以上命令后 需要检查参数文件的格式 如果控制文件名称未正确添加 可以手工调整一下

  完成了以上工作后 可以关闭数据库 再次启动数据库到Mount状态 这时候新的控制文件已经发挥作用

  SQL> shutdown immediate;

  ORA : ??????

  已经卸载数据库

  ORACLE 例程已经关闭

  SQL> startup mount;

  ORACLE 例程已经启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

   . 完成数据库恢复

  接下来再参考一下transport sql中的推荐步骤

  ALTER DATABASE OPEN RESETLOGS;

   Commands to add tempfiles to temporary tablespaces

   Online tempfiles have plete space information

   Other tempfiles may require adjustment

  ALTER TABLESPACE TEMP ADD TEMPFILE

  SIZE AUTOEXTEND ON NEXT MAXSIZE M;

   End of tempfile additions

  现在我们需要通过RESETLOGS方式来重新生成日志文件 然后手工添加临时文件

  注意 在迁移过程中如果两个平台的数据库版本完全一致 则以上步骤可以顺利执行 参考transport sql可以顺利完成迁移 而本例的测试平台由于Linux平台的数据库版本为 Windows平台版本为 所以实际操作中还会有所不同 在执行RESETLOGS过程中 数据库会发生中断

  SQL> alter database open resetlogs;

  alter database open resetlogs

  *

  第 行出现错误:

  ORA : ORACLE 实例终止 强制断开连接

  检查日志我们发现以下提示

  Mon Jun : :

  Errors in file c:\\oracle\\admin\\julia\\udump\\julia_ora_ trc:

  ORA : 引导程序进程失败

  ORA : 必须用 UPGRADE 选项打开数据库

  Oracle要求以UPGRADE选项打开数据库 对数据库执行跨版本迁移

  我们继续参考transport sql的最后部分

  SHUTDOWN IMMEDIATE

  STARTUP UPGRADE PFILE= /opt/oracle/product/ /dbs/init_ il i r_ _ ora

  @@ ?/rdbms/admin/utlirp sql

  SHUTDOWN IMMEDIATE

  STARTUP PFILE= /opt/oracle/product/ /dbs/init_ il i r_ _ ora

   The following step will repile all PL/SQL modules

   It may take serveral hours to plete

  @@ ?/rdbms/admin/utlrp sql

  set feedback ;

  再次启动数据库到UPGRADE模式 由于之前的数据库中断 现在这些需要进行一点恢复工作

  SQL> startup upgrade;

  ORACLE 例程已经启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  ORA : 文件 需要介质恢复

  ORA : 数据文件 : C:\\ORACLE\\ORADATA\\JULIA\\DATAFILE\\O _MF_SYSTEM_ TC XNS_ DBF

  SQL> recover database;

  完成介质恢复

  恢复完成之后启动数据库到UPGRADE模式

  SQL> shutdown immediate;

  ORA : 数据库未打开

  已经卸载数据库

  ORACLE 例程已经关闭

  SQL> startup upgrade;

  ORACLE 例程已经启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已经打开

  执行脚本?/rdbms/admin/utlirp sql 这个脚本执行完成之后会有如下提示

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

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

  DOC> database have been invalidated

  DOC>

  DOC> Shut down and restart the database in normal mode and run utlrp sql to

  DOC> repile invalid objects

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

  也就是说 这个脚本的作用是使数据库中的PL/SQL对象INVALID 然后通过utlrp sql的重新编译 消除跨平台的兼容性影响

  按照transport sql脚本提示的步骤 我们可以重新启动数据库来执行utlrp sql脚本(由于本例涉及到版本迁移 需要再次启动数据库到upgrade模式 如果数据库版本相同 则可以直接启动数据库 执行utlrp sql脚本完成最后的编译工作)

  SQL> @@ ?/rdbms/admin/utlrp sql

  TIMESTAMP

  

  P_TIMESTAMP UTLRP_BGN : :

  

  PL/SQL 过程已成功完成

  TIMESTAMP

  

  P_TIMESTAMP UTLRP_END : :

  PL/SQL 过程已成功完成

  utlrp sql执行完成之后我们需要再执行和数据库升级相关的脚本 这个脚本是catupgrd sql

  SQL> @?/rdbms/admin/catupgrd sql

  这个脚本调用catlog sql和 catproc sql来重建字典对象等 在执行完这个脚本之后 我们可以关闭数据库后 正常打开数据库

  SQL> startup

  ORACLE 例程已经启动

  Total System Global Area bytes

  Fixed Size bytes

  Variable Size bytes

  Database Buffers bytes

  Redo Buffers bytes

  数据库装载完毕

  数据库已经打开

  SQL> select count(*) from dba_objects where status= INVALID ;

  COUNT(*)

  

  

  已选择 行

  SQL> @?\\rdbms\\admin\\utlrp sql

  catupgrd sql脚本可能会使部分字典对象失效 我们可以再次运行utlrp sql脚本来进行编译 编译完成后 不要忘记为数据库添加临时文件

  SQL> ALTER TABLESPACE TEMP ADD TEMPFILE

   SIZE AUTOEXTEND ON NEXT MAXSIZE M;

  表空间已更改

  至此同字节序的跨平台迁移全部完成 当然由于版本的不同 整个过程稍微复杂了一些 不过这个过程对于跨平台的迁移及版本升级是一个很好的参考

   实现数据迁移的高可用性

  通过以上测试实际上可以确认 对于可传输表空间 可以很容易从Oracle i向Oracle g迁移 那么这种方法对于可用性要求极高的环境进行数据迁移或数据库迁移具有极大的便利

  如果进行数据库升级 通常的方法是通过DBUA(Database Upgrade Assistant Oracle g引入的新工具)进行 但是DBUA存在的问题在于 操作过程过长 而且如果升级过程中出现问题 数据文件可能不能重新被使用 这就需要从备份中进行恢复 这使得业务连续性要求高的企业很难采用这种方法进行升级

  另外一种常见的迁移的方法是通过逻辑导出导入(EXP/IMP) 但是这种方法对于不断变化的数据无能为力 所以通常也不可行

  那么现在 可传输表空间就成了一个可以考虑的快速迁移或升级方法

  Oracle有一个小组 专注于设计高可用性架构的实现 以帮助用户最大限度的提高系统可用性 Oracle有一个专有名词用来命名这类技术 MAA(Maximum Availability Architecture MAA) OTN上MAA部分有一个Amadeus公司的实践案例 通过可传输表空间从Oracle i向Oracle g实现快速数据迁移

  当然这种方法的使用要考虑的还有很多 通过各种技术和方法的结合使用才能最终的达到快速迁移的目标

  Amadeus公司的迁移是在同类型平台不同主机之间进行的 其实现步骤大致如下

  ( ) 在升级主机安装Oracle i版本 并创建生产库的DataGuard数据库 这个工作可以在线进行 不影响主节点的工作

  ( ) 在升级主机安装Oracle gR 数据库软件 创建数据库 此时升级主机上存在了 个数据库

  ( ) 整理不能通过transport tablespace处理的内容 如sequence synonyms grants等

  ( ) 在升级割接时间 将主库置为只读 将日志全部应用到备机 业务影响从此时开始

  ( ) 将备机的数据文件通过可传输表空间迁移至Oracle gR 数据库 并创建sequencee synonyms grants等对象 检查验证

  ( ) 如果没有问题 则即可将业务切换至新的Oracle gR 数据库运行 业务恢复正常运行

  在这个迁移过程中 如果迁移失败 那么直接读写打开主库即可恢复业务的正常运行 回退非常方便

  使用这种方法 业务影响仅发生在以上( )~( )步 在OTN的案例中 Amadeus公司在实际操作中 分钟之内就将一个大型数据库迁移到Oracle gR 这种方式是一种非常有新意的创新性应用 在熟悉了Oracle的各项技术之后 通过不断实践和探索 我们就能够不断发现充满价值的Oracle应用

   最后的脚本

  以上脚本已经完成了主要的工作 剩下的是一些最后的维护工作

  这里还有两个脚本需要执行 首先执行的是postScripts sql脚本 这个脚本主要对部分用户及部分数据库选件进行维护

  connect SYS / &&sysPassword as SYSDBA

  set echo on

  spool C:\\oracle\\admin\\eygle\\scripts\\postScripts log

  @C:\\oracle\\ \\rdbms\\admin\\dbmssml sql;

  execute dbms_datapump_utl replace_default_dir;

  mit;

  connect SYS / &&sysPassword as SYSDBA

  alter session set current_schema=ORDSYS;

  @C:\\oracle\\ \\ord\\im\\admin\\ordlib sql;

  alter session set current_schema=SYS;

  connect SYS / &&sysPassword as SYSDBA

  connect SYS / &&sysPassword as SYSDBA

  alter user CTXSYS account unlock identified by change_on_install;

  connect CTXSYS / change_on_install

  @C:\\oracle\\ \\ctx\\admin\\defaults\\dr defdp sql;

  @C:\\oracle\\ \\ctx\\admin\\defaults\\dr defin sql SIMPLIFIED CHINESE ;

  connect SYS / &&sysPassword as SYSDBA

  execute dbms_swrf_internal cleanup_database(cleanup_local => FALSE);

  mit;

  spool off

  最后执行的脚本是postDBCreation sql 在这个脚本中将创建spfile 解锁SYSMAN DBSNMP用户 编译失效对象并配置DB Control

  connect SYS / &&sysPassword as SYSDBA

  set echo on

  spool C:\\oracle\\admin\\eygle\\scripts\\postDBCreation log

  connect SYS / &&sysPassword as SYSDBA

  set echo on

  create spfile= C:\\oracle\\ /dbs/spfileeygle ora

  FROM pfile= C:\\oracle\\admin\\eygle\\scripts\\init ora ;

  shutdown immediate;

  connect SYS / &&sysPassword as SYSDBA

  startup ;

  alter user SYSMAN identified by &&sysmanPassword account unlock;

  alter user DBSNMP identified by &&dbsnmpPassword account unlock;

  select utl_rep_begin: || to_char(sysdate HH:MI:SS ) from dual;

  execute utl_rep rep_serial();

  select utl_rep_end: || to_char(sysdate HH:MI:SS ) from dual;

  host C:\\oracle\\ \\bin\\emca bat config dbcontrol db silent DB_UNIQUE_NAME eygle PORT EM_HOME C:\\oracle\\ LISTENER LISTENER SERVICE_NAME eygle SYS_PWD &&sysPassword SID eygle ORACLE_HOME C:\\oracle\\ DBSNMP_PWD &&dbsnmpPassword HOST gqgai LISTENER_OH C:\\oracle\\ LOG_FILE C:\\oracle\\admin\\eygle\\scripts\\emConfig log SYSMAN_PWD &&sysmanPassword;

  spool C:\\oracle\\admin\\eygle\\scripts\\postDBCreation log

  exit;

  看到在最后部分 通过emca bat批处理文件 配置了DB Control 这里通过一条完整的命令快速地完成了DB Control的创建等工作 也可以通过手工方式对DB Control进行维护 关于这部分内容请参考 第 章 从OEM到iSQL*Plus 的内容

  此外需要注意的是以下几句命令

  select utl_rep_begin: || to_char(sysdate HH:MI:SS ) from dual;

  execute utl_rep rep_serial();

  select utl_rep_end: || to_char(sysdate HH:MI:SS ) from dual;

  在Oracle i的postDBCreation sql的脚本中 这部分的内容如下

  @/opt/oracle/product/ /rdbms/admin/utlrp sql;

  其实两者是相同的 utlrp sql中主体部分和Oracle g中是相同的

  @@utlrcmp sql

  execute utl_rep rep_serial();

  Rem =====================================================================

  Rem Run ponent validation procedure

  Rem =====================================================================

  EXECUTE dbms_registry validate_ponents;

  Oracle在utlrp sql脚本的注释中说得很明确 这是一个通用脚本 可以在任意时候运行以重新编译数据库失效对象

  通常我们会在Oracle的升级指导中看到这个脚本 Oracle强烈推荐在migration / upgrade / downgrade之后 通过运行此脚本编译失效对象 但是注意 此脚本需要用SQL*Plus以SYSDBA身份运行 并且当时数据库中最好不要有活动事物或DDL操作 否则极容易导致死锁的出现

cha138/Article/program/Oracle/201311/17385

相关参考

知识大全 Oracle 10g 可传输表空间现在可以跨平台移植

Oracle10g可传输表空间现在可以跨平台移植  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 oracle 数据库数据迁移解决方案

  去年年底做了不少系统的数据迁移大部分系统由于平台和版本的原因做的是逻辑迁移少部分做的是物理迁移有一些心得体会与大家分享  首先说说迁移流程在迁移之前写好方案特别是实施的方案步骤一定要写清楚然后进行

知识大全 数据库跨平台迁移方法浅析

  一迁移方法介绍  exp/imp  这也算是最常用最简单的方法了一般是基于应用的owner级做导出导入  操作方法为在新库建立好owner和表空间停老库的应用在老库做expuser/pwdowne

知识大全 Oracle数据文件位置迁移

Oracle数据文件位置迁移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  操作系统Window

知识大全 Oracle迁移SQLServer的陷阱

Oracle迁移SQLServer的陷阱  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在把Orac

知识大全 Oracle统计数据的迁移

Oracle统计数据的迁移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自从iR开始可以利用D

知识大全 oracle到mysql的迁移步骤及各种注意事项

  最近公司一个项目需要将数据库进行一次迁移从oracle到mysql网上资料甚少现将我本次迁移过程中所遇到的一些问题总结于此(主要是存储过程的迁移)希望能给自己做一个日后的参考如果有幸能帮助到大家更

知识大全 讲解Oracle到SQLServer主键迁移

讲解Oracle到SQLServer主键迁移  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这篇

知识大全 Oracle数据库的数据迁移方法

Oracle数据库的数据迁移方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主要介绍了Ora

知识大全 Oracle中实现数据迁移和数据共享

Oracle中实现数据迁移和数据共享  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  安装在自定义