ora-12514

详细介绍了如何在安装Oracle10g后解决ORA-12514错误的方法,通过修改listener.ora文件中的SID_LIST_LISTENER配置。
 
最近在Oracle网站上下载一个Oracle 10g安装了一下,只有一张盘,而且安装时还有一个便捷的选项,非常方便。
可以安装完毕后,使用的时候却遇到了麻烦:如果只是本机的访问 sqlplus system/manager这样是没有问题的。
但是如果使用 sqlplus system/manager@orcl的时候却会报ora-12514的错误。

解决方法:
1. 打开<OracleHome>/network/admin/listener.ora文件,找到:

   SID_LIST_LISTENER =
   (SID_LIST =
     (SID_DESC =
       (SID_NAME = PLSExtProc)
       (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
       (PROGRAM = extproc)
     )
   )
  2. 添加:
            (SID_DESC =
       (GLOBAL_DBNAME = ORACLE)
       (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) 
       (SID_NAME = ORACLE)
      )
  3. 最后变成:
 SID_LIST_LISTENER =
   (SID_LIST =
     (SID_DESC =
       (SID_NAME = PLSExtProc)
       (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
       (PROGRAM = extproc)
     )
     (SID_DESC =
       (GLOBAL_DBNAME = ORACLE)
       (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) 
       (SID_NAME = ORACLE)
      )
   )
  4. 保存文件,重启服务中的TNSListener,OK!

PS: Oracle10g有一个好处:不再与Tomcat的端口冲突了。原来的Oracle9i安装完成后,8080端口就会被占用,一般都需要改tomcat的端口。现在终于轻松了。
### ORA-12514 Navicat 连接 Oracle 数据库 错误解决方案 ORA-12514 是一种常见的 Oracle 数据库连接错误,表示客户端尝试连接的服务名未在监听器中注册。以下是针对此问题的具体分析和解决方法: --- #### 1. 理解 ORA-12514 错误的原因 ORA-12514 错误通常发生在客户端试图通过 TNS 配置文件或直接输入服务名的方式连接到数据库时,但监听器未能找到与请求相匹配的服务名。这可能是由于以下原因之一引起的: - 客户端使用的 `SERVICE_NAME` 或 `SID` 不正确。 - 监听器配置文件 (`listener.ora`) 中缺少必要的服务注册信息。 - 数据库实例尚未启动或未向监听器注册其服务[^4]。 --- #### 2. 检查并修正服务名和服务 ID (SID) 确保 Navicat 中的 `SERVICE_NAME` 设置正确。如果不确定应该使用哪个服务名,可以在数据库服务器上执行以下 SQL 查询以获取当前可用的服务名列表: ```sql SELECT value FROM v$parameter WHERE name = 'service_names'; ``` 此外,也可以检查 `v$instance` 表中的实例名称作为备用选项: ```sql SELECT instance_name, host_name FROM v$instance; ``` 将查询得到的结果应用于 Navicat 的连接配置中[^5]。 --- #### 3. 修改监听器配置文件 (`listener.ora`) 导航至 Oracle 安装目录下的 `\network\admin\` 文件夹,编辑 `listener.ora` 文件。确保其中包含类似于以下的内容: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host_name_or_ip)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = your_service_name) (ORACLE_HOME = path_to_your_oracle_home) (SID_NAME = your_sid) ) ) ``` 替换占位符为实际值后重启监听器以应用更改: ```bash lsnrctl stop lsnrctl start ``` --- #### 4. 验证监听状态 使用以下命令验证监听器的状态以及已注册的服务: ```bash lsnrctl status ``` 输出应显示类似以下的信息: ```plaintext Services Summary... Service "your_service_name" has 1 instance(s). Instance "your_instance", status READY, has 1 handler(s) for this service... The command completed successfully ``` 如果没有看到预期的服务名,则需要重新检查前面提到的配置步骤[^4]。 --- #### 5. 更新 Navicat 的 Instant Client 版本 尽管这不是 ORA-12514 的主要成因,但如果存在其他兼容性问题(如引用[1]所提及的情况),仍建议更新 Navicat 所依赖的 OCI 库版本。具体做法是从官方站点下载最新版的 Oracle Instant Client 并将其路径添加到系统的环境变量 PATH 中[^5]。 --- #### 6. 替代方案:切换到默认服务名 某些情况下,默认的服务名为 `ORCL` 可能会被硬编码于部分工具内部逻辑之中。因此可以尝试暂时忽略自定义命名规则而改为直接指定标准值进行测试连接操作[^4]。 --- ### 总结 通过对上述几个方面的逐一排查与调整,绝大多数由 ORA-12514 导致的问题都能够得到有效缓解甚至彻底消除。重要的是始终保持耐心细致的态度对待每一个细节环节直至最终达成稳定可靠的网络通讯效果为止。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值