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

阅读更多

环境:虚拟机, 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> conn sys/123@orcl as sysdba
已连接到空闲例程。
SQL> show parameter session
ORA-01034: ORACLE not available


SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 3423965184 bytes
Fixed Size                  2180544 bytes
Variable Size            2415921728 bytes
Database Buffers          989855744 bytes
Redo Buffers               16007168 bytes
数据库装载完毕。
ORA-03113: 通信通道的文件结束

 

 

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

 

 

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 3423965184 bytes
Fixed Size                  2180544 bytes
Variable Size            2415921728 bytes
Database Buffers          989855744 bytes
Redo Buffers               16007168 bytes
数据库装载完毕。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效


SQL> recover database until cancel;
完成介质恢复。(此处有recover database until time '2010-09-09 1:45:02'; 可恢复介质到某一时间点)
SQL> alter database open resetlogs;

数据库已更改。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 3423965184 bytes
Fixed Size                  2180544 bytes
Variable Size            2415921728 bytes
Database Buffers          989855744 bytes
Redo Buffers               16007168 bytes
数据库装载完毕。
数据库已经打开。
SQL> select 1 from dual;

         1
----------
         1

 

完成恢复

 

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

你可能感兴趣的:(oracle,虚拟机,sql)