7 x 24 在线支持!
Oracle Logical Apply 停止显示 ORA-01119: 创建数据库文件 '' 时出错
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
ORA-01119: 创建数据库文件 '' 时出错
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 并再次尝试操作无法解决问题。
解决方案描述
——————–
执行以下步骤来修正问题:
- 暂时绕过数据库守卫对逻辑备用数据库进行更改。
Oracle 9i:
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;
Oracle 10g+:
SQL> ALTER SESSION DISABLE GUARD;
- 使用正确的文件规范执行create tablespace命令:
SQL> ALTER TABLESPACE t_table ADD DATAFILE ‘/oradata/mtsmith.dbf’ SIZE 100M REUSE;
- 重新启用数据库守卫:
Oracle 9i:
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;
Oracle 10g+:
SQL> ALTER SESSION ENABLE GUARD;
- 使用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);
- 通过使用DBMS_LOGSTDBY.SKIP_TRANSACTION程序和步骤4中找到的值跳过失败的DDL语句:
SQL> EXECUTE DBMS_LOGSTDBY.SKIP_TRANSACTION( /*xidusn*/, /*xidslt*/,
/*xidsqn*/);
- 在逻辑备用数据库上启动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获取详情。