使用SqlDeveloper登录Oracle,提示报错ORA-12505,如下
错误的提示大概就是不清楚这个SID,而SID是数据库实例的映射表示,那么其原因就是给定的SID不是Oracle实例的真正映射或根本就没有为Oracle实例做映射
解决办法
打开Oracle的listener.ora文件
路径为 D:\SoftwareDevelopment\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora(具体看你自己的安装路径)
修改后的文件内容如下
# listener.ora Network Configuration File: D:\SoftwareDevelopment\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl.168.6.168)
(ORACLE_HOME = D:\SoftwareDevelopment\Oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\SoftwareDevelopment\Oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\SoftwareDevelopment\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.168)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\SoftwareDevelopment\Oracle
红色部分为你添加的内容
上面红色部分的意思就是:用指定的SID_NAME 来映射这个全局数据库,其中ORACLE_HOME 指定Oracle实例的安装路径
GLOBAL_DBNAME是全局数据库名(你安装过程时指定的)
看到上面的图片有印象没?
然后重启Oracle的监听器服务OracleOraDb11g_home1TNSListener
重新登录
成功连接!
ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
值得一提的是,这个问题的原因也基本上是要往listener.ora文件中添加那段内容,从而做一个SID和全局数据库的映射