ORA-12505用于Ubuntu上的Oracle XE 11g

时间:2013-11-16 11:04:18

标签: sql database oracle oracle11g

我在连接本地Oracle数据库时遇到一些问题。

我已根据本指南完成了安装:installing-oracle-11g-r2-express

该教程运行良好,但在安装后我无法使用SQLDeveloper或'sqlplus system / password @ XE'连接到数据库

sqlplus system/password@XE
SQL*Plus: Release 11.2.0.2.0 Production on Sat Nov 16 11:57:06 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

不使用XE进行连接:

:~$ sqlplus sys as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Sat Nov 16 11:54:54 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Enter password: 
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> 

当我尝试使用SQLDeveloper进行连接时,出现以下错误:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

我缺少什么?


@Mihai要求

listener.ora: 已更改20.11.2012 12:06

# listener.ora Network Configuration File:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
      (PROGRAM = extproc)
    )
     (SID_DESC =
       (SID_NAME = XE)
       (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
     )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = <name_of_my_computer>)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

@BjarteBrandt要求

$ lsnrctl状态:

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 18-NOV-2013 12:52:26

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date                18-NOV-2013 12:48:06
Uptime                    0 days 0 hr. 4 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/<name_of_my_computer>/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<name_of_my_computer>)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

2 个答案:

答案 0 :(得分:3)

Fist,请确保XE数据库确实向听众注册。

我的听众输出:

$ lsnrctl status

Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
  Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully

如果您的列表中没有服务,请反弹听众

$ lsnrctl stop
$ lsnrctl start

通过IPC以用户sys登录数据库。 (不与听众联系)

$ sqlplus / as sysdba
SQL>-- tell the listener to pick up this particular database service.
SQL>alter system register;

如果仍未列出您的数据库服务,请为您配置listener.ora文件以获取STATIC服务。

Static service

答案 1 :(得分:2)

查看Oracle主页中的tnsnames.ora。你应该有这样的东西:

XE=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =somehost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )

修改

在SQLDeveloper中,该错误意味着您尝试在SID上进行连接,将其更改为service_name。 enter image description here

OR,在tsanames中将SERVICE_NAME = XE更改为SID = XE