ORA-01591解决方法

ORA-01591解决方法

错误原因:使用了分布式事务,造成这个问题的原因很多时候都是由于网络问题造成的

解决办法:

1.找到TRAN_ID
Select 'Rollback force '''||LOCAL_TRAN_ID||'''' from sys.pending_trans$;


2.將其COMMIT或ROLLBACK:
rollback force LOCAL_TRAN_ID;
commit force LOCAL_TRAN_ID;

3.如果执行失败,则强行从资料字典中删除该交易记录:
set transaction use rollback segment system;
delete from dba_2pc_pending where local_tran_id = LOCAL_TRAN_ID;
delete from pending_sessions$ where local_tran_id = LOCAL_TRAN_ID;

delete from pending_sub_sessions$ where local_tran_id = LOCAL_TRAN_ID;
commit;

生成批量语句:

begin
for r in (select local_tran_id
from dba_2pc_pending t
where t.state = 'collecting') loop
--dbms_output.put_line('commit force '''||r.local_tran_id||''';');
dbms_output.put_line('delete from dba_2pc_pending where local_tran_id = '''||r.local_tran_id||''';');
dbms_output.put_line('delete from pending_sessions$ where local_tran_id = '''||r.local_tran_id||''';');
dbms_output.put_line('delete from pending_sub_sessions$ where local_tran_id = '''||r.local_tran_id||''';');
end loop;
dbms_output.put_line('commit;');
end;

4.执行失败,还一种情况可以尝试下重起一下Oracle服务,这种情况我遇到过一次,重新启动后该锁自动解除(因为对删除数据字典比较担心,所以胡乱试了一次重启数据库,前提是执行了commit force LOCAL_TRAN_ID;失败之后重新启动)

PS:我建了几个oracle,欢迎数据库爱好者加入。

Oracle专家QQ1群:60632593

Oracle专家QQ2群:60618621

Oracle专家QQ3群:23145225


### ORA-12514 错误解决方法 ORA-12514 是 Oracle 数据库连接过程中常见的错误之一,通常表示监听程序无法识别连接描述符中指定的服务名称。以下是解决此问题的多种方法: #### 1. 检查服务名称是否正确 确保连接字符串中指定的服务名称与 Oracle 数据库实例中注册的服务名称一致。例如,如果使用 `sqlplus` 连接数据库,应确认服务名称是否正确: ```bash sqlplus sys/yaoyuan@localhost/orc1 as sysdba ``` 如果服务名称拼写错误或未正确配置,将导致 ORA-12514 错误[^1]。 #### 2. 确认监听程序是否运行 检查 Oracle 监听程序是否正常运行。可以通过以下命令启动监听程序: ```bash lsnrctl start ``` 如果监听程序未运行,将导致 ORA-12541 错误(TNS: no listener)。 #### 3. 检查 listener.ora 配置文件 `listener.ora` 文件是 Oracle 监听程序的重要配置文件之一,通常位于 `$ORACLE_HOME/network/admin` 目录下。确保文件中的配置与当前网络环境匹配。例如: ```plaintext SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = orc1) (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ``` 如果文件中配置的 IP 地址或服务名称与实际环境不符,可能导致 ORA-12514 错误[^3]。 #### 4. 清理审计日志 在某些情况下,Oracle 数据库的审计日志可能会写满操作系统日志文件,导致登录失败并报 ORA-12514 错误。可以通过清理 Windows 事件日志或 Linux 系统日志来解决此问题。例如,在 Windows 环境中,打开事件查看器,找到“应用程序”日志并清理旧日志[^2]。 #### 5. 配置即时客户端(Instant Client) 如果使用 PLSQL Developer 等工具连接 Oracle 数据库,可以通过配置 Oracle 即时客户端(Instant Client)来解决连接问题。具体步骤如下: - 下载 Oracle 即时客户端(基本版)并解压。 - 配置环境变量,确保 `PATH` 和 `TNS_ADMIN` 指向正确的目录。 - 测试连接以确认配置是否成功[^4]。 #### 6. 检查虚拟机网络配置 如果 Oracle 数据库安装在虚拟机上,确保虚拟机的 IP 地址与客户端配置一致。例如,检查 `listener.ora` 文件中的 IP 地址是否为虚拟机的 IP 地址: ```plaintext LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) ) ``` 如果虚拟机关闭或 IP 地址更改,可能导致 ORA-12514 错误[^3]。 #### 7. 使用 Oracle 客户端工具 某些情况下,安装完整的 Oracle 客户端并配置网络服务名(TNS 名称)可以解决连接问题。可以通过 Oracle Net Configuration Assistant 工具配置 TNS 名称。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值