我正在尝试连接到安装在Linux EL 5上的oracle 11g,并且收到以下错误
SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
我在network / admin下的listener.ora如下
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/home/oracle/app/oracle/product/11g)
(SID_NAME=orcl))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/home/oracle/app/oracle/product/11g)
(PROGRAM=extproc)))
我的tnsnames.ora如下
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
UD06=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
MY lsnrctl状态显示如下:
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 17-FEB-2010 16:23:06
Uptime 0 days 0 hr. 12 min. 33 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11g/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
答案 0 :(得分:5)
这个问题的答案非常简单。不要担心.ora文件或任何其他配置。 Oracle确实做到了这一切。
只有在通过命令行连接时,它才会与其中包含@符号的密码混淆。
那是!!问题解决了。我已经打破了好几天了,现在我的问题解决了!因此,在通过命令行SQL连接时,请勿使用带有“@”的密码。只需使用Web界面创建一个没有“@”符号的密码帐户。
答案 1 :(得分:4)
你能成功ping ud06(如ud06,而不是ud06.us.server.com)?
命令是什么
lsnrctl services
显示?
编辑: 听起来我可能数据库实例名称实际上不是“orcl”? lsnrctl服务输出告诉我的是,“orcl”服务虽然在listener.ora文件中定义,但实际上并没有运行。
您可以使用服务器上的直接连接登录吗?如果是这样,您使用什么作为ORACLE_SID环境变量值?以SYS用户身份登录并发出命令:
ALTER SYSTEM REGISTER;
然后再次发出lsnrctl services命令,看看是否没有显示其他实例。
另外,正如Alex指出的那样,tnsping命令报告了一个完全限定的服务名称。编辑sqlnet.ora文件,如果NAMES.DEFAULT_DOMAIN值有值,则将其设置为NULL。
编辑2:服务器上的ud06 是否有效?或者我的假设客户端和服务器在不同的系统上是错误的?
答案 2 :(得分:1)
SERVICE_NAME
输出中的tnsping
与tnsnames.ora
中的条目不匹配;是从Windows框或Linux框中的文件?看起来你没有tnsnames.ora
的本地(Windows)u06
条目,它猜测服务名称应该扩展它 - 我认为这是对主机名适配器的引用意味着什么。 / p>
答案 3 :(得分:0)
我也遇到了ORA-12154:TNS:无法解析指定的连接标识符,并添加尝试连接到oracle的oinstall组的用户修复它。
答案 4 :(得分:0)
首先尝试启动oracle实例:
for windows:
start->配置面板 - >管理touls->服务 - > ORACLESERVICEORCL(顺便提一下我的实例) - >开始
答案 5 :(得分:0)
提供如下连接字符串:
ServerName:port / ServiceName;用户名;密码
答案 6 :(得分:0)
我也遇到了同样的错误,试试这段代码:
SQL> conn hr/hr @pdborcl;
如果您发现相同的错误,则表示您具有不同的可插拔数据库名称。
只需在sqlplus
sql> SELECT name, con_id FROM v$pdbs;
答案 7 :(得分:0)