PLSQL连接登录失败

今天在连接数据库的时候登录失败,出现了以下错误:

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

ORA-28547:连接服务器失败,可能时Oracle Net 管理错误

可能是上次突然断电导致的。

解决办法仅代表个人情况,做个记录可做参考。

解决办法:

查看监听状态

TNS-12545: 因目标主机或对象不存在, 连接失败
TNS-12560: TNS: 协议适配器错误
TNS-00515: 因目标主机或对象不存在, 连接失败

然后查看一下数据库必须要起的两个服务

OracleOraDb11g_home1TNSListener    未在运行

OracleServiceORCL

OracleOraDb11g_home1TNSListener 没有运行,实例名和HOST可能不对,就去看listener.ora和tnsnames.ora这个文件。

发现这两个文件的配置跟安装数据库是的配置不符,PLSQL登录失败报的两个错误也是因为这两个文件的配置不对。

两个文件的路径:安装目录\用户名\product\11.2.0\dbhome_1\NETWORK\ADMIN

1.ORA-28547:连接服务器失败,可能时Oracle Net 管理错误和OracleOraDb11g_home1TNSListener服务启动刷新后停止运行

解决办法:

在listener.ora和tnsnames.ora文件中发现实例名不对,应该为orcl:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc )
      (ORACLE_HOME = D:\app\ASUS\product\11.2.0\dbhome_1)
      #(PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\ASUS\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

listener.ora修改后:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = D:\app\ASUS\product\11.2.0\dbhome_1)
      #(PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\ASUS\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = D:\app\ASUS

修改tnsnames.ora中的SERVICE_NAME 为orcl:


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

HOST修改为localhost或者计算机名

修改完实例名和HOST,启动监听成功

2.ORA-28547:连接服务器失败,可能时Oracle Net 管理错误

解决办法:

修改listener.ora文件:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl )
      (ORACLE_HOME = D:\app\ASUS\product\11.2.0\dbhome_1)
      #(PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\app\ASUS\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

(PROGRAM = extproc)注释掉解决问题

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在PL/SQL中连接MySQL数据库,你可以使用Oracle提供的外部库来实现。以下是连接MySQL数据库的基本步骤: 1. 安装MySQL JDBC驱动程序:首先,需要下载并安装MySQL的JDBC驱动程序。你可以从MySQL官方网站下载适合你的MySQL版本的JDBC驱动程序。 2. 在PL/SQL中设置类路径:将MySQL JDBC驱动程序的JAR文件添加到PL/SQL开发环境的类路径中。这通常涉及将驱动程序的JAR文件复制到PL/SQL安装目录的某个位置,并在PL/SQL配置文件中设置类路径。 3. 编写PL/SQL代码:使用PL/SQL编写连接MySQL数据库的代码。以下是一个简单的示例: ```plsql DECLARE conn UTL_TCP.connection; host VARCHAR2(30) := 'your_mysql_host'; port NUMBER := your_mysql_port; user VARCHAR2(30) := 'your_mysql_username'; pass VARCHAR2(30) := 'your_mysql_password';BEGIN conn := UTL_TCP.open_connection(remote_host => host, remote_port => port); IF UTL_TCP.is_open(conn) THEN UTL_TCP.write_line(conn, 'CONNECT ' || user || '/' || pass); UTL_TCP.write_line(conn, 'SELECT * FROM your_mysql_table'); -- 处理查询结果 LOOP EXIT WHEN UTL_TCP.is_connection_closed(conn); DBMS_OUTPUT.put_line(UTL_TCP.get_line(conn, TRUE)); END LOOP; UTL_TCP.close_connection(conn); ELSE -- 连接失败 DBMS_OUTPUT.put_line('Failed to connect to MySQL'); END IF; EXCEPTION WHEN OTHERS THEN -- 异常处理 DBMS_OUTPUT.put_line('An error occurred: ' || SQLERRM); END; ``` 请注意,上述代码是一个简单的示例,用于展示如何连接到MySQL数据库并执行查询。你可能需要根据你的具体需求进行适当的修改。 请确保在代码中替换 `your_mysql_host`、`your_mysql_port`、`your_mysql_username` 和 `your_mysql_password` 为你的MySQL数据库的实际连接信息。 这是一个初步的示例,具体实现可能因具体情况而异。确保按照你的环境和需求进行适当的配置和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值