从10.2.0.1升级到10.2.0.4出现问题 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
解决方法:
(经过测试发现:做完这些步骤之后可以正常使用数据库,但是重启服务器之后再次出现ORA-12514)
开始—运行—cmd。
执行以下命令:
1 删除以前的oracle实例
c:\>oradim -delete -sid orcl(orcl是之前安装oracle数据库的SID名)
2 重建oracle实例
c:\>oradim -new -sid orcl -startmode auto -pfile G:\oracle\product\10.2.0\db_1\database\initorcl.ora
3 登陆sqlplus
c:\>sqlplus/nolog
sql>conn /as sysdba
sql>startup upgrade
4 运行catupgrd.sql
sql>spool upgrade.log
sql>@G:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\catupgrd.sql
这个执行时间很长
登陆sqlplus
c:\>sqlplus/nolog
sql>conn /as sysdba
sql>spool off
5 重新启动oracle
sql>shutdown immediate
sql>startup pfile= G:\oracle\product\10.2.0\db_1\database\initorcl.ora
至此数据库重新启动,请重启监听服务
6 检查是否有无效对象
sql>@G:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlrp.sql
执行完毕后
最后再查看是否还有无效对象:
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
如果结果显示为“0”,表示升级成功。如果大于0,则重新运行catupgrd.sql脚本,直至没有无效对象。
执行检查:
SQL>select name from v$database; 确认ORACLE_SID正确,为orcl
SQL>select * from v$version; 检查版本
SQL>show user; 确认当前使用者为SYS或SYSTEM
SQL>select tablespace_name, bytes from dba_data_files; 对系统表空间大小进行确认。
SQL>shutdown immediate
SQL>startup
数据库启动成功,即可在sqlplus或者toad登录成功。
7 重写listener.ora文件(蓝色为增加部分)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = f:\oracle\product\10.1.0\Db_1)
(SID_NAME = orcl)
)
)
8 重启服务器
其他事项:
1 安装Oracle时,尽量“全局数据库服务名”和“SID”完全一样(不超过8个字符),避免以后出现错误;
2 SQL Plus登录用户名system,主机字符串:为本地网络服务名;
3 Windows中卸载oracle,必须手工删除Oracle遗留的各注册表和目录;
4 pl sql developer 登录窗口的 database 为 本地网络服务名;
5 测试oracle是否安装成功:
(1)使用oradb10g home中sql plus 连接数据库;
(2)使用Client中NET configuration assist配置并测试网络服务名;
(3)使用Client中Enterprise Manager Console连接数据库;
(4)使用PL/SQL developer连接数据库;
6 安装Oracle服务器版的时候可以一并创建数据库,并自动配置一个与SID同名的网络服务名;