将Oracle 8i数据成功移植Oracle 10g

  一、移植过程记录

  基本状况:两台小型机,一台sun250,装的是solaris8+oracle8i,机器名jgsun,ip 10.11.1.11,正在运行,有应用程序连接;一台是sunv890,装的是Solaris9+Oracle10g,机器名hssun, ip 10.11.1.19,没有运行,是新安装的机器。

  要求:将Sun250的oralce8i的JSERP和ERPUSER3用户及其相应表空间DBERP和DBSYS的数据全部移植到Sunv890的Oracle10g中,将Sunv890的机器名及ip地址配置的和Sun250的原先机器名和ip相同,oracle的数据库名和服务名也要相同,移植后,直接将sun250的网线拔下插到sunv890上,不能影响应用系统正常运行!(这里是移植的用户及其表空间,移植整个数据库是一样的,只是在exp/imp导出导入时选择整个数据库就行了。)

  移植过程

  1、用oracle8i客户端的exp命令将sun250上的数据导出到某台pc机客户端。Exp导出时选择JSERP用户和ERPUSER3用户,分别到成数据文件jserp.dmp和erpuser3.dmp.

  2、在新的oracle10g数据库中建立DBERP和DBSYS表空间,分别建立用户JSERP和ERPUSER3,对其分配权限,要与oracle8i中的表空间和用户的设置完全一样。

  3、在oracle8i客户端用imp命令将刚才导出的数据文件jserp.dmp和erpuser3.dmp上传到sunv890上的oracle10g,上传时也是选择上传用户。上传完毕后,将sun250的网线拔掉,将sunv890的网线插上。

  4、修改SunV890的IP和机器名,改ip:(改为sun250的ip,由10.11.1.19改为10.11.1.11)。

  $ Vi /etc/hosts

  改机器名: (改为sun250的机器名,由hssun改为jgsun)

  $ Vi /etc/nodename
  $ Vi /etc/hosts
  $ Vi /etc/hostname.ge0
  $ reboot

  5、此时发现reboot后,监听、数据库和iSqlplus的服务还都可以起来,只是EM的服务启动不起来了!

  6、Emctl start dbconsole

  出现如下错误:

  找不到路径
  \oracle\product\10.2.0\Db_1\hssun_ora8
  \oracle\product\10.2.0\Db_1\oc4j\j2ee\oc4j_DBConsole_hssun_ora8

  我将上面两个文件夹的名称中的hssun改为jgsun。可以继续启动了,但是最后还是起不来。

  7、搜索jgsun_ora8\sysman目录下的config目录和emd目录,找到所有含有hssun的文件,改为jgsun,log文件不用修改。

  此时,em服务可以成功启动了,但是em界面运行不正常。Em界面中主机名还是hssun,许多连接打不开。

  8、$ emca –config dbcontrol db (这是oracle10g的命令,8i和9i是emca -r)

  输入以下信息:

  SID:ora8  (同sun250上的oracle8i的SID)
  Listener port number: 1521
  Sys 口令:******
  ……

  好了,再次emctl start dbconsole EM就可以正常运行了!

  二、问题分析

  从移植的过程来看,数据移植没有问题,但是移植后em服务启动有问题,究其原因是因为修改了机器的IP和机器名,所以如果你的移植到的机器(我这里是sunv890)应该是先修改ip和机器名再安装创建oracle数据库,这样应该就不会出现em启动问题。

  如果你的机器已经安装创建了oracle数据库,那么你在改完机器ip和机器名后可以先试试$ emca –config dbcontrol db,重新配置一下,这时看看em是否正常,如果还不正常,那么再用我上面的方法,修改文件夹的名称!

  切记:如果碰到类似的移植,请一定先试试问题分析中的方法,如果不行再按照我的移植过程修改文件夹名称,不要走弯路!