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

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

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

  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获取详情。