迁移Oracle数据的两个方案(待续)
来源:互联网 发布:淘宝短裙子新款 编辑:程序博客网 时间:2024/04/30 15:25
迁移Oracle数据的两个方案(待续)
方案一:采用物理standby进行迁移,该方法适用于在相同操作系统平台,相同数据库版本之间进行数据迁移。在Oracle11G中可以实现,从 10G到11G的物理Standby的迁移,而且可以实现从Windows平台到Linux平台的迁移。步骤: 要首先具有主备数据库结构(如DataGuard环境),本方案针对Oracle10GR2版本。 1、在32Bit的OS上,利用RMAN或者是其他方式备份住数据库。 2、产生备份数据库的控制文件、以及参数文件、并把备用控制文件和参数文件拷贝到备用机器上。 3、把备份恢复到备用机器上(可以是64Bit机器),如果是普通文件备份,只拷过去即可,如果是RMAN备份,需要先拷贝备份集(或NFS) 过去,然后在备份机器上恢复。32Bit OS上的数据库可以直接恢复到64Bit的OS上。 4、配置监听与tnsnames.ora,使备库可以接收日志。(分别针对主备机上配置) 5、恢复备用库,适用如下命令 recover automatic standby database; 或者 recover managed standby database disconnect from session; 6、等到日志全部恢复完毕后,执行如下命令做切换: 主:alter database commit to switchover to physical standby with session shutdown; 备:alter database commit to switchover to primary; 7、等切换完毕后,关闭新主库,如果是RAC先关闭RAC环境参数: alter system set cluster_database=false scope=spfile; shutdown immediate; 8、使用UPGRADE方式打开新主库: startup upgrade; 9、执行数据库格式转换脚本,此时不要执行DDL spool utlirp.log /u01/oracle/ora10g/rdbms/admin/utlirp.sql(具体路径会有差异) spool off 10、重新启动主库,如果是RAC环境,先打开RAC参数: alter system set cluster_database=true scope=spfile; shutdown immediate; startup open; 11、编译经过上面过程可能失效的包: spool utlrp.log /u01/oracle/ora10g/rdbms/admin/utlrp.sql(具体路径会有差异) spool off 12、检验是否还存在失效对象: select distinct object_name from dba_objects where status='INVALID'; 13、等原来的主库成为备用库后,在其上完成如下操作: srartup monut; recover managed standby database disconnect from session;(恢复日志)
方案二:使用prebuilt MV 进行数据迁移,该方法适用于在短时间内,对大数据量表进行迁移,要求被迁移表具有主键,可以实现跨平台、跨 数据库的版本迁移,而且可以实现重组优化,但是不能实现跨字符集的迁移,并且被迁移表不要频繁的被更新。步骤: 1、进行表的分级,如100M以上的表作为大表,100M以下的表作为小表,对于小表可以使用 insert /*+append+*/ into...... from table@db_link; 进行插入。 2、对于大表在表上创建MV日志: create materialized view log on tablename; 3、在目标数据库上创建于该表具有相同结构的表,并且在表上创建主键或者唯一约束,其他索引或者约束,可以在全刷新后再创建。最后 使用如下命令在目标数据库的新表上创建prebuilt mv: create materialized view table_name on prebuilt table refresh fast as select * from table_name@db_link; 4、执行全刷新与增量刷新: exec dbms_mview.refresh('table_name','complete'); exec dbms_mview.refresh('table_name'); 执行后创建相关索引:create index index_name on table_name(filed_name); 5、创建一个数据库JOB,定时同步增量日志,如下定义每一分钟同步一次: declare jobid number; begin sys.dbms_job.submit(job=>jobid, what=>'dbms_mview.refresh(''table_name'');', next_date=>sysdate, interval=>'sysdate+1/1440'); commit; end; / 6、依次处理完所有大表。 7、在目标数据库创建好于小表相同结构的表包括索引等,整理好insert into脚本。 8、预先创建好除序列外的其他对象,如function,procedure,type等。 9、停机切换: .停止原数据库一切活动,包括任何DML与DDL。 .等待最后一批日志刷新完毕。 .运行insert into脚本迁移小表数据。 .等大表刷新完成,删除相关MV信息 在原数据库上执行:drop materialized view log on table_name; 在目标数据库上执行:drop materialized view table_name; 10、创建与表有依赖关系的对象,如序列。
- 迁移Oracle数据的两个方案(待续)
- Oracle数据迁移方案
- oracle 迁移数据方案(定制数据库模板)
- Informix迁移至Oracle-数据清理方案
- oracle 的数据迁移
- HBase迁移数据方案1(两个集群不能通信)
- HBase迁移数据方案(两个集群不能通信)
- 关于ArcGIS数据迁移方案的策略
- 拥有较大数据的mysql迁移方案
- 关于MongDB数据迁移方案的研究
- Mysql --->Oracle的数据迁移
- 数据迁移方案(初)
- MongoDB数据迁移方案
- 【数据迁移】MySQL数据库的无缝迁移问题:binlog方案、触发器方案
- 最近做的一个oracle数据迁移功能,如有更好的方案,请各位大虾也能告诉小弟。
- Oracle的数据同步方案
- SQL SERVER 向ORACLE 8迁移的技术实现方案
- Oracle迁移到MySQL的各种坑及自救方案
- 配置 eclipse 3.2 使用JDK1.5中文 JavaAPI
- zend studio 5.5 or zend studio for eclipse 6.0 的调试
- MCU学习1--点亮LED灯
- 游戏理论研究方法初探
- Tomcat web.xml配置
- 迁移Oracle数据的两个方案(待续)
- 朋友否
- Hibernate second level cach
- Hibernate second level cach
- SELECT 语句中“加锁选项”的功能说明
- F#:微軟的下一代重量級語言
- Hibernate second level cach
- 客户端入门及数理逻辑初探
- string转换成LPCTSTR