一、移植过程记录(如果要移植,一定看完全文,包括后面的问题分析!)
基本状况:
两台小型机,一台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上,不能影响应用系统正常运行!
(ps:这里是移植的用户及其表空间,移植整个数据库是一样的,只是在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是否正常,如果还不正常,那么再用我上面的方法,修改文件夹的名称!
切记:如果碰到类似的移植,请一定先试试问题分析中的方法,如果不行再按照我的移植过程修改文件夹名称,不要走弯路!