最近总是处理一些很少遇到的问题,测试人员A部署环境需要oracle 9i的数据库环境,惟独一台NT的测试机上有个oracle 9i,结果一问负责该机器的测试工程师B,该9i数据库荒废很久了,还没来得及卸。
部署环境与重现问题时间很急(现场的项目问题),找台机器重装9i不现实,只能想办法解决,过程去到两大问题,这里分享下,方法不一定唯一,但是奏效。
遇到问题1:sqlplus冲突
maybe高版本想低版本向下兼容的特点或又安装先后的原因,命令行使用imp,系统默认吊起的是sqlplus 10.x.x的版本,由于现场项目反馈的dmp文件由9i导出,提示EXPORT:V9.x.x创建的导出文件 的信息,导入时提示转换失败。
处理办法:修改环境变量中path项,将X:\oracle\ora92\bin 提前于X:\oracle10g\product\10.2.0\db_1\BIN
遇到问题2:listener冲突
由于安装时,先后版本的oracle的监听器都是监听系统的1521端口,使用sqlplus导入时,会默认使用10g的监听器来引导数据库实例,导致新创建的导入schema无法登陆成功,提示“ORA-12560: TNS: 协议适配器错误”。
此时在服务中停止10g的listener和数据库,可能导致sqlplus无法引导导入。
处理办法:
1、使用oracle9i的Oracle Net Manager(ONM)将9i数据的listener监控端口配置为1522
2、然后配置一个新的 服务命名
3、导入时:
imp file=x:\xxx.dmp fromuser=user touser=user ignore=y;
引导sqlplus后,用户名输入:user@服务命名名称
4、导入9i成功,且不影响10g数据正常运行
最后注意,数据库使用连接信息为jdbc:oracle:thin:@ip:1522:sid