我的目标是让我的容器数据库进入挂载模式以执行系统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>
答案 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