Oracle 报错:ORA-00313、ORA-00312、ORA-27047 解决方法

本文介绍了解决Oracle数据库中出现的ORA-00313、ORA-00312及ORA-27047错误的方法。通过清除、删除损坏的日志组并重新添加新的日志文件来修复非current redo log损坏的问题。

 Oracle 报错:ORA-00313、ORA-00312、ORA-27047 解决方法

启动数据库

SQL> startup
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size            2252824 bytes
Variable Size          805310440 bytes
Database Buffers      436207616 bytes
Redo Buffers            8892416 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 40669
Session ID: 125 Serial number: 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

查看alert日志

[oracle@vastdata1 ~]$ vi /u01/app/oracle/diag/rdbms/prod/PROD/trace/alert_PROD.log
...... 
Errors in file /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_lgwr_40796.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/PROD/redo02.log'
ORA-27047: unable to read the header block of file
Linux-x86_64 Error: 25: Inappropriate ioctl for device
......
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

解决方法如下:

SQL> conn / as sysdba
Connected to an idle instance.
  • 1
  • 2
  • 1
  • 2
SQL> startup mount
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size            2252824 bytes
Variable Size          805310440 bytes
Database Buffers      436207616 bytes
Redo Buffers            8892416 bytes
Database mounted.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

清理损坏的日志

SQL> alter database clear logfile group 2;

Database altered.
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

删除损坏的日志

SQL> alter database drop logfile group 2;

Database altered.
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

现在可以正常打开数据库

SQL> alter database open;

Database altered.
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

添加日志

SQL> alter database add logfile group 2 ('/u01/app/oracle/oradata/PROD/redo02.log') size 50M;

Database altered.
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

总结: 
对于非current redo log损坏,如果是处于inactive状态的redo,那么处理起来很简单,直接clear然后drop掉,不会有数据的丢失。


### 三级标题:ORA-12154 错误概述 ORA-12154 是 Oracle 数据库连接过程中常见的错误之一,表示 PL/SQL 工具无法解析指定的连接标识符。该问题通常与 TNS(Transparent Network Substrate)配置或网络环境有关。 ### 三级标题:检查网络通信 确保本地客户端与远程数据库服务器之间的网络连接正常。通过命令行工具 `ping` 验证是否能够访问目标数据库的 IP 地址或域名。例如: ```bash ping <database_ip_or_hostname> ``` 如果 `ping` 命令失败,则需要检查本地网络设置或联系网络管理员以解决通信问题[^1]。 ### 三级标题:验证 tnsnames.ora 文件配置 确认 `tnsnames.ora` 文件中定义的服务名正确无误,且格式符合要求。服务名前不应包含空格或空行。示例配置如下: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) ) ``` 此外,还需确保文件路径正确,并且 `TNS_ADMIN` 环境变量指向 `tnsnames.ora` 所在目录[^3]。 ### 三级标题:检查监听器配置 运行 `lsnrctl status` 查看监听器状态,确认其是否已启动并监听正确的端口和服务名。若未启动,可通过以下命令启动监听器: ```bash lsnrctl start ``` 如果监听器配置缺少 `SID_LIST` 描述项,需手动编辑 `listener.ora` 文件添加相关内容: ```plaintext SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (SID_NAME = ORCL) ) ) ``` 修改后重启监听器以应用更改: ```bash lsnrctl stop lsnrctl start ``` ### 三级标题:测试连接 使用 `tnsping` 测试 TNS 解析是否成功: ```bash tnsping ORCL ``` 若解析失败,应重新检查 `tnsnames.ora` 和 `listener.ora` 配置。同时,尝试通过 SQL*Plus 直接连接数据库以排除 PL/SQL 工具本身的问题: ```bash sqlplus sys/qwe123@orcl as sysdba ``` ### 三级标题:PL/SQL 工具配置 打开 PL/SQL Developer 时选择“Cancel”进入主界面,随后进入工具 -> 首选项 -> 连接部分,确保 Oracle 主目录和 OCI 库路径正确指向 Oracle 客户端安装目录。保存设置后重启 PL/SQL Developer。 ### 三级标题:相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值