日期:2014-05-17  浏览次数:20904 次

alter datafile 执行出错
RMAN> sql 'alter datafile F:\app\Administrator\oradata\orcl\SYSAUX01.DBF offline';
谁帮我看看它错在那里呀


下面是错误信息:
sql 语句: alter datafile F:\app\Administrator\oradata\orcl\SYSAUX01.DBF offline
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: sql 命令 (default 通道上, 在 11/26/2011 19:54:26 上) 失败
RMAN-11003: 在分析/执行 SQL 语句期间失败: alter datafile F:\app\Administrator\or
adata\orcl\SYSAUX01.DBF offline
ORA-00940: 无效的 ALTER 命令

------解决方案--------------------
SQL code
--归档模式下可以
alter database datafile ... offline

--非归档模式下 
alter database datafile ... offline drop
--或者
alter tablespace ... offline

------解决方案--------------------
探讨

SQL code
--归档模式下可以
alter database datafile ... offline

--非归档模式下
alter database datafile ... offline drop
--或者
alter tablespace ... offline

------解决方案--------------------
1.在非规档模式(noachivelog)下恢复offline数据文件
 查看数据库处于何种归档模式: archive log list ;
非归档模式下进行数据文件卸载后面必须加 drop 语法为:[ alter database datafile '/home/db/oracle/a.dbf' offline drop; ]
恢复时 数据库必须处于mount状态下使用:recover datafile '/home/db/a.dbf' ;进行操作 
[非归档模式下]卸载表空间(卸载后可直接进行挂载恢复):
SQL> alter tablespace DO_PARTITION_2 offline; <卸载 ||v$datafile视图里面status为:offline,enabled为:disabled ;
SQL> alter tablespace DO_PARTITION_2 online; <恢复

如果是卸载数据文件的方式,必须进行恢复,恢复方法如下:
卸载数据文件语法为:
 方法一: alter database datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_2.dbf' offline drop;
处理方案: 必须处于mount状态下通过media进行恢复,v$datafile视图里面status为:RECOVER,enabled不变,为:READ WRITE ;

第一步后台操作:
SQL> recover datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_2.dbf';
Media recovery complete.
SQL> 

此时虽然恢复成功,但v$datafile视图里面所记录的status状态仍然为:offline,执行第二步以后才能真正意义上的数据完成恢复
SQL> select file#,status,enabled,name from v$datafile;
第二步:
还得指定文件进行online操作
alter database datafile 
'/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_2.dbf' online ;

便完成恢复


2.归档模式下数据文件[ 卸载 恢复 ]
alter database datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_3.dbf' offline;
alter database datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_3.dbf' offline drop;
alter database datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_3.dbf' online;

恢复时候多必须在数据库处于mount状态下进行recover操作,
语法:recover datafile '/home/oracle/oracle/product/10.2.0/oradata/ora10g/DO_PARTITION_3.dbf'


总结:
1. 非归档模式下进行数据卸载必须在后面加drop,
2. 归档和非规定模式下多能直接卸载和恢复表空间;语法为: alter tablespace tablespace_name offline ;
3. 无论是归档模式还是非归档模式下数据文件下载进行恢复时都必须通过介质进行恢复,
也就是说必须在数据库处于mount状态下进行recover datafile datafile_name 操作,
然后再进行恢复alter database datafile 'datafile_name' online ;才能完全恢复!