Oracle实验遇到的错误ORA-12543 无法连接到目标主机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Oracle实验遇到的错误ORA-12543 无法连接到目标主机


前言

今天在做数据库实验的时候要连接到数据库orcl,连接的时候报了个ORA-12543 报错问题,于是在网上找了一堆都没解决(可能是我本人不大喜欢看文字的原因),于是自己解决了这个问题,不过说来话长都怪自己当时手贱把主机名改了。


一、如何解决


我用相同的用户SYSTEM连接到别的数据库发现没出现问题我就知道只有ORCL中的某个配置出现问题,所以理所应当地得到某个oracle拥有的程序之中改。


第一步:我们来到开始菜单栏找到oracle文件夹当中的Net Manager程序,下图是具体的位置
在这里插入图片描述


第二步:到下图指定位置进行更改
在这里插入图片描述


因为是与主机有关的问题,所以主机名肯定出问题了,那么我们可以在刚刚连接到的数据库当中看主机名是什么,或者按以下顺序查找主机名:(我的电脑–>右键–>属性)
在这里插入图片描述


第三步:修改主机名与电脑的主机名相同,顺便查看端口是否也是默认的1521,点击右上角叉叉选择保存即可。

在这里插入图片描述

二、可能遇到的额外带来的报错

那么设置完可能还会带来一个额外的错误ORA-12514,如下图:

在这里插入图片描述
那么这个问题又该如何解决呢?首先监听程序错误就意味着我们要去找tnsnames.ora文件(也可以去listener.ora当中查看错误)。

第一步:我们先得找到listener.ora文件和tnsnames.ora文件。方法如下

1.找到oracle安装位置->(下面不想麻烦的同学可以直接搜索两个文件)
-> product文件夹
->11.2.0(版本号命名的文件夹,有同学可能是10或者12)
->找到NETWORK文件夹(大写)
->ADMIN文件夹(大写)
->就能看到listener.ora文件和tnsnames.ora文件,用记事本打开
在这里插入图片描述
第二步:打开tnsnames.ora文件里面找到我们出错的数据库如下图
在这里插入图片描述

第三步:看我们的host是否为主机名,port是否为默认1521,不是就要改成相应的值,还有很重要SERVICE_NAME要更改为与数据库名字一样,比如这里是ORCL所以要把chunhong.com部分改成ORCL

第四步:会显示出ORA-12545:因目标主机或对象不存在,连接失败

第五步:可以到listener.ora文件中观察HOST是否也出现同样以上第三步的问题
在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ORA-16468错误是由于在Oracle数据保护中使用了“断开式复制”(disconnected replication)导致的。在使用“断开式复制”时,你需要连接到主数据库并暂停复制过程,然后再连接到从数据库执行DDL语句。 以下是一个示例代码,以帮助你执行Oracle ALTER语句并避免ORA-16468错误: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class AlterExample { public static void main(String[] args) { String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "username"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 暂停复制 Statement stmt = conn.createStatement(); stmt.executeUpdate("ALTER SESSION DISABLE COMMIT IN PROCEDURE"); // 执行DDL语句 stmt = conn.createStatement(); String sql = "ALTER TABLE mytable ADD column1 VARCHAR2(50)"; stmt.executeUpdate(sql); System.out.println("Table altered successfully."); // 恢复复制 stmt = conn.createStatement(); stmt.executeUpdate("ALTER SESSION ENABLE COMMIT IN PROCEDURE"); } catch (SQLException e) { System.out.println(e.getMessage()); } } } ``` 在上面的代码中,我们使用了JDBC连接Oracle数据库,并使用`ALTER SESSION DISABLE COMMIT IN PROCEDURE`语句暂停了复制过程,然后执行了ALTER语句来修改表结构,最后使用`ALTER SESSION ENABLE COMMIT IN PROCEDURE`语句恢复了复制过程。 请注意,在执行DDL语句时,你需要确保具有足够的权限来操作数据库。如果你仍然遇到问题,请检查数据库的复制配置以及连接到正确的数据库实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GZHU_hcc

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值