Oracle Logical Apply 停止显示 ORA-01119

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

 

ORA-01119  oerr ora 01119
01119, 00000, “error in creating database file ‘%s’”
// *Cause: Usually due to not having enough space on the device.

 

问题描述

——————-

 

在primary上创建一个表空间并将数据文件放入在逻辑standby上不存在的目录中导致 logical apply 服务停止。查看逻辑standby警报日志看到以下错误:

 

LOGSTDBY event: ORA-01119: error in creating database file ”

LOGSTDBY stmt: create tablespace mtsmith

 

在逻辑standby上的dba_logstdby_events 视图中也能看到以上错误。

 

在逻辑standby上设置 db_file_name_convert 并再次尝试操作无法解决问题。

 

 

解决方案描述

——————–

 

执行以下步骤来修正问题:

 

  1. 暂时绕过数据库守卫对逻辑备用数据库进行更改。

 

Oracle 9i:

SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;

 

Oracle 10g+:

SQL> ALTER SESSION DISABLE GUARD;

 

  1. 使用正确的文件规范执行create tablespace命令:

 

SQL> ALTER TABLESPACE t_table ADD DATAFILE ‘/oradata/mtsmith.dbf’ SIZE 100M REUSE;

 

  1. 重新启用数据库守卫:

 

Oracle 9i:

SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;

 

Oracle 10g+:

SQL> ALTER SESSION ENABLE GUARD;

 

  1. 使用DBA_LOGSTDBY_EVENTS视图,通过找到失败DDL语句的XIDUSN,XIDSLT和XIDSQN值跳过失败的DDL语句:

 

SQL> SELECT XIDUSN, XIDSLT, XIDSQN FROM DBA_LOGSTDBY_EVENTS

2> WHERE EVENT_TIME = (SELECT MAX(EVENT_TIME) FROM DBA_LOGSTDBY_EVENTS);

 

  1. 通过使用DBMS_LOGSTDBY.SKIP_TRANSACTION程序和步骤4中找到的值跳过失败的DDL语句:

 

SQL> EXECUTE DBMS_LOGSTDBY.SKIP_TRANSACTION( /*xidusn*/, /*xidslt*/,

/*xidsqn*/);

 

  1. 在逻辑备用数据库上启动log apply服务:

 

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

 

 

说明

———–

 

db_file_name_convert 和 log_file_name_convert参数在逻辑standby上不起作用。你必须使用以上过程在正确目录结构中创建数据文件。

 

 

注意事项

—-

 

从Oracle 10g开始,你也可以定义一个SKIP-Handler,它也可以在另一个文件夹中自动创建一个新数据文件。在每个版本章节”Managing a Logical Standby Database” 中的Oracle® Data Guard Concepts and Administration Guide获取详情。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *