深入分析ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

来源:互联网 发布:网络运营助理岗位职责 编辑:程序博客网 时间:2024/05/22 17:06

环境:虚拟机, win03 ,11g

数据库异常关闭的处理办法:

 

问题出现之前的问题:因为数据库正在创建表空间,然后虚拟机进行了常规关闭。导致文件状态可能不一致。数据库在正常的关闭会有同步校验。因此此次关闭导致了该问题的产生。

感谢作者提供重要分析:http://soulful.blog.51cto.com/468033/389570/

 

初始表征问题会出现:

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 

 

一般操作为重新配置listener.ora 文件 

 

SID_LIST_LISTENER =

  (SID_LIST =

   (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)

      (SID_NAME = ORCL)

    )

    (SID_DESC =

      (SID_NAME =CLRExtProc)

      (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

  )

 

双引号内容为添加本地实例内容,让sqlplus能访问到本地实例。

在过程中发现sys的密码无法查看,但不能登录system,报oracle实例无效。

只能初始化oracle的用户密码:

方案:

将原密码文件重命名为PWD+实例名.oracpy,只要重名命即可。

关键指令例如:

orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=123

这样就建立了SYS的密码为123,可以登录了.

 

 

Sql代码  收藏代码
  1. SQL> conn sys/123@orcl as sysdba  
  2. 已连接到空闲例程。  
  3. SQL> show parameter session  
  4. ORA-01034: ORACLE not available  
  5.   
  6.   
  7. SQL> startup;  
  8. ORACLE 例程已经启动。  
  9.   
  10. Total System Global Area 3423965184 bytes  
  11. Fixed Size                  2180544 bytes  
  12. Variable Size            2415921728 bytes  
  13. Database Buffers          989855744 bytes  
  14. Redo Buffers               16007168 bytes  
  15. 数据库装载完毕。  
  16. ORA-03113: 通信通道的文件结束  

 

 

印证了之前错误的可能,介质和文件信息不一致。

 

 

Sql代码  收藏代码
  1. SQL> startup mount;  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area 3423965184 bytes  
  5. Fixed Size                  2180544 bytes  
  6. Variable Size            2415921728 bytes  
  7. Database Buffers          989855744 bytes  
  8. Redo Buffers               16007168 bytes  
  9. 数据库装载完毕。  
  10. SQL> alter database open resetlogs;  
  11. alter database open resetlogs  
  12. *  
  13. 第 1 行出现错误:  
  14. ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效  
  15.   
  16.   
  17. SQL> recover database until cancel;  
  18. 完成介质恢复。(此处有recover database until time '2010-09-09 1:45:02'; 可恢复介质到某一时间点)  
  19. SQL> alter database open resetlogs;  
  20.   
  21. 数据库已更改。  
  22. SQL> shutdown  
  23. 数据库已经关闭。  
  24. 已经卸载数据库。  
  25. ORACLE 例程已经关闭。  
  26. SQL> startup;  
  27. ORACLE 例程已经启动。  
  28.   
  29. Total System Global Area 3423965184 bytes  
  30. Fixed Size                  2180544 bytes  
  31. Variable Size            2415921728 bytes  
  32. Database Buffers          989855744 bytes  
  33. Redo Buffers               16007168 bytes  
  34. 数据库装载完毕。  
  35. 数据库已经打开。  
  36. SQL> select 1 from dual;  
  37.   
  38.          1  
  39. ----------  
  40.          1  

 

完成恢复

 

总结:硬件环境中经常可能会遇到意外断电或者异常关机的情况,如果之前没有非常规的数据库操作,有限考虑日志和文件的信息不同步情况,进行一次时间点的恢复。

0 0