oracle中ORA-12514问题解决方法

Oracle中ORA-12514问题解决方法

问题描述:

在使用Oracle数据库时,有时会遇到ORA-12514错误,该错误提示信息如下:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

该错误提示是由Oracle监听程序(Listener)发出的,通常是由于数据库服务名称无法正确定位或不存在所致。

解决方法:

确认服务名是否正确

首先需要确认连接字符串(Connect Descriptor)中的服务名(Service Name)是否正确。连接字符串一般格式为:

(DESCRIPTION= (ADDRESS_LIST= 
(ADDRESS= (PROTOCOL=TCP) (HOST=hostname) (PORT=port))
) (CONNECT_DATA=(SERVICE_NAME=servicename)))

其中的 servicename 就是要连接的数据库的服务名称。

如果使用Oracle的 SID 作为服务名称,则需要将 SID 转换为服务名称,转换方法如下:

SELECT instance_name, status, db_name, db_unique_name 
FROM v$instance;

其中 db_name 就是服务名称。

确认Listener中是否存在对应的服务

如果服务名称正确,仍然无法连接,则需要确认 Listener 中是否存在对应的服务。使用 lsnrctl 工具可以查看 Listener 中是否存在目标服务。

使用方法如下:
首先进入 lsnrctl 工具的解释界面:

lsnrctl

然后在 lsnrctl 工具的解释界面中,查看数据库服务的连接状况:

status

如果目标服务不存在,则需要在 Listener 中增加对应的服务。如果目标服务已存在但无法连接,则可能是 Listener 的配置有问题,需要检查 Listener 的配置文件 listener.ora 是否正确。

示例说明:

示例1:确认服务名是否正确

(DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=
        (PROTOCOL=TCP)
        (HOST=localhost)
        (PORT=1521)
      )
   )
   (CONNECT_DATA=
     (SERVICE_NAME=ORCLCDB)
   )
 )

上述示例的服务名称为 ORCLCDB。

示例2:确认Listener中是否存在对应的服务

在命令提示符中输入以下命令:

lsnrctl status

如果该命令输出中不包含需要连接的数据库服务,则需要在 Listener 中增加对应的服务。在 listener.ora 配置文件中增加如下内容:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORA)
      (SID_NAME = ORA)
      (ORACLE_HOME = C:\oracle\product\12.2.0\dbhome_1)
    )
  )

其中 ORA 是需要连接的服务名称,ORACLE_HOME 是 Oracle 的安装根目录。增加完成之后,需要重启 Listener 才能使更改生效。

总结

通过以上步骤的操作,你可以解决ORA-12514的问题。在进行操作时,需要注意服务名是否正确以及 Listener 是否已经存在需要连接的服务。如果有需要的话,也可以尝试重启 Listener 服务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:oracle中ORA-12514问题解决方法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Amazon Aurora和Amazon DynamoDB的区别

    Amazon Aurora和Amazon DynamoDB都是AWS云服务中的一种数据库服务,它们有一些共同点,比如都是高可靠高可扩展的数据库服务,适用于不同规模的企业需求。但是它们也有很大的不同点,接下来从不同的角度来详细讲解它们的区别。 数据模型 Amazon Aurora和Amazon DynamoDB的数据模型有很大的不同。Amazon Aurora…

    database 2023年3月27日
    00
  • 如何使用Python连接和操作MySQL数据库?

    在Python中,可以使用mysql-connector-python模块连接和操作MySQL数据库。以下是Python使用mysql-connector-python模块连接和操作MySQL数据库的完整攻略,包括连接MySQL数据库、表、插入数据、查询数据更新数据、删除数据等操作。 连接MySQL数据库 在Python中,可以使用mysql-connect…

    python 2023年5月12日
    00
  • 使用SQL Server 获取插入记录后的ID(自动编号)

    为了获取插入记录后的ID,我们需要使用 SQL Server 中的自增长字段(也称为自动编号)。自增长字段是一个特殊的列,它会自动为每个新的记录分配一个唯一的值,通常用于记录的主键。 下面是获取插入记录后的ID的步骤: 步骤一:创建表 首先,我们需要在数据库中创建一个包含自增长字段的表。 CREATE TABLE [dbo].[customers]( [cu…

    database 2023年5月21日
    00
  • ChinaUnix.net技术文档手册中心

    ChinaUnix.net技术文档手册中心是一个技术文档分享和交流社区,本文将从以下几方面向你介绍如何使用该网站。 1. 注册登录 进入ChinaUnix.net技术文档手册中心的首页,可以看到右上角有注册登录按钮,点击即可进行注册或登录。若你没有账号,则可以选择注册一个账号,填写相关信息后可用该账号登录。 2. 搜索 在ChinaUnix.net技术文档手…

    database 2023年5月22日
    00
  • 使用命令行检测Ubuntu版本方法

    Ubuntu是一款常用的Linux操作系统,不同版本的Ubuntu存在着不同的特性和功能,因此在进行一些软件安装和配置时,会基于不同版本进行操作。本文将详细说明在Ubuntu系统中使用命令行检测Ubuntu版本的方法。 使用lsb_release命令检测Ubuntu版本 Ubuntu系统提供了lsb_release命令,用于查看当前系统的版本信息。 打开终端…

    database 2023年5月22日
    00
  • redis哨兵集群配置

    redis 集群架构图:   需要先配置redis主从,我这边是单机部署的。 采用一主一从,两个sentinel。 redis host: 172.31.11.235 redis-master port: 6380  sentinel1: 26380 redis-slave port: 6381 sentinel2: 26381 redis master r…

    Redis 2023年4月13日
    00
  • jsp+servlet+javabean实现数据分页方法完整实例

    jsp+servlet+javabean实现数据分页方法完整实例攻略 前言 数据分页是Web开发中常见的功能需求之一。在Java Web应用开发中,使用jsp+servlet+javabean组合实现数据分页功能是常见的方式。本攻略将详细介绍如何使用jsp、servlet、javabean实现数据分页功能。完整示例实现代码可在GitHub代码库中查看。 前置…

    database 2023年5月21日
    00
  • MongoDB管理数据关系的3种方法

    MongoDB是一种非关系型数据库,用于存储和管理大量的、格式不固定的数据。MongoDB提供了一种灵活的数据模型,使得您可以轻松地存储和访问数据,而无需事先定义表结构。 在MongoDB中,关系的管理不同于传统的关系型数据库,因为它是基于文档的存储模型。 本文将详细介绍MongoDB中的关系管理,包括文档嵌套、引用和聚合等技术。 文档嵌套 文档嵌套是Mon…

    MongoDB 2023年3月14日
    00
合作推广
合作推广
分享本页
返回顶部