【Oracle报错】ORA-12514, TNS:listener does not currently know of service requested in conn

一、报错场景:

通过服务名去链接oracle客户端

二、解决思路:检查监听

  • 是否加了白名单

  • 加了白名单是否重启监听,重启才能生效

  • 服务名和实例名检查下,是不是搞混了

三、具体方法

1、首先检查客户端的tnsnames.ora里面的host、port、service_name等是否正确

testOracle =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.1.1)(PORT = 1521))
    )
    (CONNECT_DATA =
       (SERVER = test)
      (SERVICE_NAME = thesis)
         )
  )

2、检查监听状态

lsnrctl status

四、其他方法

1、启动监听 lsnrctl start

2、通过sqlplus / as sysdba ,执行startup来启动数据库,发现报错,initORCL.ora不存在。

3、进入对应目录,打开spfileorcl.ora,发现db_name=orcl

4、查看环境变量 cat ~/.bash_profile,发现ORACLE_SID=ORCL

5、conn / as sysdba,然后startup nomount

startup nomount选项启动实例,但不安装数据库。当数据库以这个模式启动时,参数文件被读取;后台进程和内存结构被启动;但它们不被附加或与数据库的磁盘结构进行通信。当实例处于这个状态时,数据库是不可使用的。

通常启动到这里可以做create database ,create or recreate control file 或者是mount standby database等动作,修改parameter也是可以的。

6、alter database mount;  alter database open;

oracle数据库启动分三个步骤:nomount,mount,open; 而startup是数据库从开始阶段的启动,需要经过上述三个步骤。alter database open是数据库处于mount状态,从mount状态打开数据库的命令。因此,执行startup nomount,alter database mount;  alter database open;正是依次执行启动数据库

7、show parameter name;

通过该命令可以查看数据库一些参数,从而判断是否是因为参数配置问题导致。

8、发现oracleName等参数为orcl

9、vi ~/.bash_profile

将ORACLE_SID的值改为小写,即orcl,并执行source ~/.bash_profile来使得配置生效。

10、修改ORACLE_HOME下network/admin下的listener.ora与客户端对应的tnsnames.ora

11、重启监听 lsnrctl restart

12、登录数据库:sqlplus system/oracle@//localhost:1521/orcl;

 

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小慌慌

感谢博友的鼓励,快乐分享~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值