PLSQL 连接本地 Oracle 数据库报 ORA-12514

oracle安装目录在D盘,电脑重装系统之后,plsql只能连服务器上数据库,连不了本地数据库,连接会报错: ORA-12514

步骤 1:确认 Oracle 核心服务已启动

重装系统后,Oracle 的服务可能未自动注册或启动,需手动检查:

  1. 按下 Win+R,输入 services.msc 打开服务列表。
  2. 找到以下 2 个核心服务,确保状态为 "已启动":
    • OracleServiceXXX(XXX 为数据库实例名,如 OracleServiceORCL):数据库实例服务,必须启动。
    • OracleOraDB12Home1TNSListener(名称可能因版本略有差异):监听服务,必须启动。
    • 若未启动,右键 "启动";若启动失败,记录错误信息(可能是配置文件损坏)。

我的是OracleServiceOrcl未启动,改成手动启动`

步骤 2:检查监听配置文件(listener.ora)

监听程序通过 listener.ora 识别数据库服务,文件路径:ORACLE_HOME\network\admin(如 D:\app\你的用户名\product\12.2.0\dbhome_1\network\admin)。

正确配置示例(需根据实际环境修改路径和实例名):

bash 复制代码
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  # 监听本地1521端口
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

# 关键:注册数据库实例到监听
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)  # 数据库服务名(需与实际一致)
      (SID_NAME = ORCL)      # 实例名(需与OracleServiceXXX的XXX一致)
      (ORACLE_HOME = D:\app\你的用户名\product\12.2.0\dbhome_1)  # 你的Oracle安装路径
    )
  )

检查要点:

  • HOST 需为 localhost 或 127.0.0.1(本地连接)。
  • SID_LIST_LISTENER 中必须包含你的数据库实例信息(GLOBAL_DBNAME 和 SID_NAME 需正确,通常默认实例名为 ORCL)。
    ORACLE_HOME 路径需与实际安装路径一致(重装系统后若路径变化,需同步修改)。

步骤 3:检查客户端连接配置(tnsnames.ora)

PLSQL 通过 tnsnames.ora 识别连接描述符,与 listener.ora 在同一目录。

正确配置示例(需与监听配置匹配):

bash 复制代码
ORCL =  # 连接名(PLSQL中选择的名称)
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))  # 与监听的HOST/PORT一致
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)  # 必须与listener.ora中的GLOBAL_DBNAME一致
    )
  )

检查要点:

  1. SERVICE_NAME 必须与 listener.ora 中的 GLOBAL_DBNAME 完全一致。
  2. HOST 和 PORT 需与监听配置一致(127.0.0.1:1521)。

我的修改点:步骤二中 listener.ora 文件修改配置

  • HOST = localhost改为 HOST = 127.0.0.1
  • 加上GLOBAL_DBNAME = ORCL这一配置

步骤 4:重启监听服务使配置生效

修改 listener.ora 或 tnsnames.ora 后,需重启监听服务:

  1. 按下 Win+R,输入 cmd 打开命令行。
  2. 执行命令重启监听:
bash 复制代码
lsnrctl stop   # 停止监听
lsnrctl start  # 启动监听
lsnrctl status # 查看监听状态(确认"服务摘要"中包含你的实例,如ORCL)

若启动成功,状态中会显示 服务 "ORCL" 包含1个实例。

步骤 5:验证数据库服务名是否正确

若以上配置正确仍报错,需确认数据库实际服务名:

通过 sqlplus 登录数据库(若能登录):

命令行输入 sqlplus / as sysdba(本地管理员登录,无需监听)。

执行以下 SQL 查询实际服务名:

bash 复制代码
select value from v$parameter where name = 'service_names';

结果需与 listener.ora 的 GLOBAL_DBNAME 和 tnsnames.ora 的 SERVICE_NAME 一致。

相关推荐
AlfredZhao1 天前
新版MOS(My Oracle Support)主要变化
oracle·mos
lifewange1 天前
数据库索引里面的游标是什么?
数据库·oracle
老年DBA1 天前
Ora2Pg 迁移Oracle至 PostgreSQL 之实战指南
数据库·postgresql·oracle
l1t1 天前
达梦数据库和Oracle兼容性和性能比较
数据库·sql·oracle·达梦
两拆1 天前
Redhat7.9安装部署Oracle 19C
数据库·oracle
杀死那个蝈坦1 天前
短链接生成-基于布隆过滤器和唯一索引
java·数据库·微服务·oracle·rocketmq
惜分飞1 天前
Oracle Recovery Tools 使用说明
数据库·oracle·oracle恢复·替代bbed·oracle恢复工具
Gofarlic_OMS1 天前
从Adobe到SolidWorks:研发设计软件资产管理的现状分析
数据库·安全·adobe·oracle·金融·区块链
正在走向自律1 天前
【金仓数据库产品体验官】Oracle迁移实战:深度剖析金仓V9R2C13性能优化三大核心场景,代码与数据说话!
数据库·oracle·性能优化·数据库平替用金仓·电科金仓·金仓产品体验官
码农水水1 天前
宇树科技Java被问:数据库连接池的工作原理
java·数据库·后端·oracle