Oracle立即关闭

时间:2015-09-08 21:32:21

标签: oracle12c

我的目标是让我的容器数据库进入挂载模式以执行系统alter语句以启用闪回功能。

Configuring Your Database for Flashback Transaction

环境:OS Win 8.1 64位,Oracle 12c(12.1.0.2.0)64位

我验证了我的监听器和数据库服务都在运行。

LISTENER.LOG

  

Tue Sep 08 13:31:42 2015系统参数文件是   C:\ OracleServer \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ listener.ora日志   写入的消息   C:\ OracleServer \ diag \ tnslsnr \ NA-D02979 \ listener \ alert \ log.xml Trace   写入的信息   C:\ OracleServer \ DIAG \ TNSLSNR \ NA-D02979 \听者\跟踪\ ora_9672_20416.trc   跟踪级别目前为0

     

pid = 9672开始倾听:   (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.1.105.118)(PORT = 1521)))   听:   (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))   听:   (DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(PIPENAME = \。\管\ EXTPROC1521ipc)))   听众在开始时完成了对CRS的通知

     

TIMESTAMP *连接数据[*协议信息] *事件[* SID] *返回   CODE聆听:   (DESCRIPTION =(ADDRESS =(PROTOCOL =技术合作计划)(HOST = NA-D02979.vgnet.volgrp.com)(PORT = 5500))(安全性=(my_wallet_directory = C:\ ORACLESERVER \管理员\ CDB1 \ xdb_wallet))(表示= HTTP)(会话= RAW))   已经收听了动态地址   (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))   08-SEP-2015 13:32:25 * service_register * cdb1 * 0 08-SEP-2015   13:33:22 * service_update * cdb1 * 0

SqlPlus的结果

  

C:\ Users \ jeff> sqlplus sys / ********** @ CDB1 as sysdba

     

SQL * Plus:2015年9月8日星期二13:44:18发布12.1.0.2.0版本

     

版权所有(c)1982,2014,Oracle。保留所有权利。

     

连接到:Oracle Database 12c企业版发行版   12.1.0.2.0 - 64位生产使用分区,OLAP,高级分析和实际应用程序测试选项

     

SQL>立即关机

     

数据库已关闭。

     

数据库已卸下。

     

ORACLE实例关闭。

     

错误:ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务

     

警告:您已不再连接到ORACLE。

     

SQL>启动挂载

     

SP2-0640:未连接

     

SQL> ^ C

     

C:\用户\杰夫> SQLPLUS> sys / ********** @ CDB1 as sysdba

     

SQL * Plus:发布于2015年9月8日星期二13:46:24的12.1.0.2.0版本

     

版权所有(c)1982,2014,Oracle。保留所有权利。

     

错误:ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务

     

输入用户名:

当我以sysdba身份连接到我的容器数据库时,我可以发出shutdown immediate命令,但是一旦数据库卸载,监听器就不再知道数据库了,我无法发出"启动挂载& #34;命令。

LISTENER.ORA

  

SID_LIST_LISTENER =(SID_LIST =

(SID_DESC =

  (SID_NAME = CLRExtProc)

  (ORACLE_HOME = C:\OracleServer\product\12.1.0\dbhome_1)

  (PROGRAM = extproc)

  (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleServer\product\12.1.0\dbhome_1\bin\oraclr12.dll")

) 
     

(SID_DESC =

 (GLOBAL_DBNAME = CDB1)

 (ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)

 (SID_NAME = CDB1)

)   )
     

LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.105.118)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)   )

TNSNAMES.ORA

  

LISTENER_CDB1 =

 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
     

CDB1 =

 (DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.105.118)(PORT = 1521))

   (CONNECT_DATA =

    (SERVER = DEDICATED)

     (SERVICE_NAME = CDB1.vgnet.volgrp.com)

   )

 )
     

ORACLR_CONNECTION_DATA =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

   )

   (CONNECT_DATA =

     (SID = CLRExtProc)

     (PRESENTATION = RO)

   )

 )

我已经为容器数据库定义了一个静态SID。

第二轮结果

从以下结果中,我按照Alex Pool在答案中记录的内容。我和数据库在同一台机器上。我已将ORACLE_SID设置为cdb1,然后每次尝试连接时,我都会收到ORA-12560:TNS:协议适配器错误。当我尝试基于SID连接时,为什么我的监听器仍然会抛出TNS错误?

C:\Users\jeff>%ORACLE_SID%
'cdb1' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\jeff>sqlplus sys/********** as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:25 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ERROR:
ORA-12560: TNS:protocol adapter error

Enter user-name: ^C
C:\Users\jeff>sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:36 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ERROR:
ORA-12560: TNS:protocol adapter error

Enter user-name: ^C
C:\Users\jeff>sqlplus /nolog

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:50 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

SQL> connect / as sysdba
ERROR:
ORA-12560: TNS:protocol adapter error

SQL>

2 个答案:

答案 0 :(得分:3)

侦听器不再了解服务,因为数据库在关闭期间已取消注册。它仍然知道SID,虽然这不是很有用。您可以在关机前后lsnrctl status查看差异。

你说你已经定义了一个静态SID,这是真的(假设你指的是SID_LIST_LISTENER个条目),但你是使用@CDB1 TNS别名进行连接的,这个别名是您的tnsnames.ora使用服务名称,而不是SID。您可能会因为别名和SID具有相同的值而感到困惑,但它们之间没有直接关系;你可以把别名称为完全不同的东西(尽管让它们变得相同)。

如果您要从同一个框连接,请将ORACLE_SID设置为CDB1并在本地连接,而不是通过SQL * Net连接,只需:

sqlplus sys/********** as sysdba

甚至

sqlplus / as sysdba

或者

sqlplus /nolog
connect / as sysdba

答案 1 :(得分:-1)

$ export TWO_TASK =

sqlplus / nolog

conn sys / pass as sysdba