知识大全 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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
去年年底做了不少系统的数据迁移大部分系统由于平台和版本的原因做的是逻辑迁移少部分做的是物理迁移有一些心得体会与大家分享 首先说说迁移流程在迁移之前写好方案特别是实施的方案步骤一定要写清楚然后进行
一迁移方法介绍 exp/imp 这也算是最常用最简单的方法了一般是基于应用的owner级做导出导入 操作方法为在新库建立好owner和表空间停老库的应用在老库做expuser/pwdowne
Oracle数据文件位置迁移 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 操作系统Window
Oracle迁移SQLServer的陷阱 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在把Orac
Oracle统计数据的迁移 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 自从iR开始可以利用D
最近公司一个项目需要将数据库进行一次迁移从oracle到mysql网上资料甚少现将我本次迁移过程中所遇到的一些问题总结于此(主要是存储过程的迁移)希望能给自己做一个日后的参考如果有幸能帮助到大家更
讲解Oracle到SQLServer主键迁移 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这篇
Oracle数据库的数据迁移方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 主要介绍了Ora
Oracle中实现数据迁移和数据共享 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 安装在自定义