oracle 数据迁移案例 从 8.1.7.4到9.2.0.8

旧数据库环境 操作系统为alpha 数据库版本为8.1.7.4 用户名 oracle  ip地址 192.168.1.1 数据库实例名为orcl 
 需要迁移到IBM aix 5308 数据库版本为 oracle 9.2.0.8 用户名为oracle ip地址为192.168.1.12数据库实例名为orcl  

迁移完成后,需要改回原先用的ip地址


迁移大概步骤:
第一步:数据迁移
旧库:
1。收集信息(包括表空间脚本 需要在新库创建同样表空间用到,包括大小)
2。通知客户停旧库相关的应用
3。停listener  listener stop
4。检查job参数 停相关job
   show parameter job
   已经为0
5。停数据库,再启动一次数据库,检查是否还有session连接,用以下sql检查
   select username,count(*) from v$session group by username; 无的话 进行下步数据导出
6。vi exp.sh
   export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
   exp system/password full=y file=/oldxz/exp_full_xz1022.dmp log=/oldxz/exp_full_xz1022.log buffer=4096000 feedback=5000 compress=n recordlength=65535
   nohup ./exp.sh &   放到后台进行 注意按回车
7。导出完成后 检查log 是否正常 通过检查 导出16G数据文件 花了三个多小时
8。拷贝tnsnames.ora到/oldxz目录


新库: 因为是新机器,需要安装 oracle软件,打补丁,创建数据库需要用到的lv裸设备,创建数据库,创建原库需要用到的表空间
1.安装oracle软件
2.打9.2.0.8补丁
3.创建lv 裸设备
4.创建数据库,生成建库脚本  --注意字符集要和原库一致
5.创建表空间
6.导入数据
  imp system/password full=y file=/oldxz/exp_full_xz1022.dmp log=/oldxz/imp_full_xz1022.log buffer=4096000 feedback=5000 commit=y
  recordlength=65535 ignore=y  导入时间用了一个小时左右 因为是新存储,速度比较块 每秒达到100多M
7.导入完成后 检查log 是否正常
8.编译无效对象
  cd $ORACLE_HOME/rdbms/admin/utrlp.sql
  sqlplus "/as sysdba"
  @ utlrp.sql
9.拷贝/oldxz/下的tnsnames.ora到$ORACLE_HOME/network/admin目录下
10.配置listener
11.检查两边失效对象是否一致,也可用toad工具进行检查
   SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS='INVALID' ORDER BY OWNER,OBJECT_NAME ;
   要是旧库正常 ,而新库不正常 就要在新库解决这些失效的对象
   这次遇到的问题 是sys的权限在新库中没有赋予对应的用户,因为是用system用户导出和导入
   用以下sql在原库进行进行检查
   SELECT * FROM dba_tab_privs WHERE GRANTOR='SYS';
   查出来后,在新库赋予权限给对应的用户
   GRANT SELECT ON V_$DATAFILE to test;
   GRANT SELECT ON V_$FILESTAT to test;
   GRANT SELECT ON V_$LATCH to test;
   GRANT SELECT ON V_$LIBRARYCACHE to test;
   GRANT SELECT ON V_$LOCK to test;
   GRANT SELECT ON V_$LOCKED_OBJECT to test;
   GRANT SELECT ON V_$PARAMETER to test;
   GRANT SELECT ON V_$PROCESS to test;
   GRANT SELECT ON V_$ROLLNAME to test;
   GRANT SELECT ON V_$ROLLSTAT to test;
   GRANT SELECT ON V_$ROWCACHE to test;
   GRANT SELECT ON V_$SESSION to test;
   GRANT SELECT ON V_$SGA to test;
   GRANT SELECT ON V_$SQLTEXT to test;
   GRANT SELECT ON V_$SYSSTAT to test;
12.在新库检查db_link用到的相关tns,用tnsping测试是否正常连接
   和相关用户登录进去,看连接到 dblink 看是否能正常查询
   dblink视图名称dba_db_links
   conn test/aaa
   select * from tab@dblinkname
13.启监听和数据库
14.通知客户测试下应用在新库临时ip 192.168.1.2  下是否正常 测试通过


第二步 切换ip,生产正式启用到新ip上
旧库操作:
 shutdown 数据库
 和关掉主机

新库操作
  停 lsnrctl 和数据库
 
  smitty tcp/ip 由192.168.1.2改为192.168.1.1

  改完后 启动数据库和监听
 
  完成切换 正式启用
继续观察应用看是否正常

请使用浏览器的分享功能分享到微信等