非归档模式下,数据文件误删除解决

来源:互联网 发布:新媒体公众号网络培训 编辑:程序博客网 时间:2024/06/05 08:44

1. 数据文件无需恢复的情况:

下午在操作数据库时,一不小心将一个看着不顺眼的文件删除了,按下回车按钮后才想起这是Oracle数据库的一个数据文件。还好这个数据库是测试用的,数据文件丢了关系不大,不过还是惊出一身冷汗,使用rm -rf前一定要三思啊!

下面参照网络上的文章将误删除的数据文件从数据库中去除,使其不会影响数据库的正常启动。

 

被删除的数据文件:/u02/oracle/oradata/SM_SPACE

属于表空间:SM_SPACE

属于用户:SM

注:如何查看当前的数据文件名:SQL > select name from v$datafile;

 

1.1 将数据文件剥离:

如果数据库未启动,将其启动到mount状态:

SQL> startup mount;

如果数据库正在运行中,则直接进行下面的操作:

 

SQL> alter database datafile '/u02/oracle/oradata/SM_SPACE' offline drop;


medium none; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" align=left>/u01/app/oracle/product/10.2.0/mingya/dbs/rhhtest

datafile offline drop 与 datafile offline 区别:

归档模式下是没有区别的,非归档模式必须用offline drop。

打开数据库:

 

SQL> alter database open;

 

1.2 删除表空间

查看表空间:

 

 方法一:

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS

------------------------------ ---------

SYSTEM                         ONLINE

UNDOTBS1                       ONLINE

SYSAUX                         ONLINE


PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt">TEMP                           ONLINE

USERS                          ONLINE

PA_DATA                        ONLINE

PA_INDEX                       ONLINE

SM_SPACE                       ONLINE

 

 方法二:

select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;

TABLESPACE_NAME                   TS_SIZE

------------------------------ ----------

SYSAUX                                360

UNDOTBS1                              145

SM_SPACE

MINGYA2                              7000

USERS        &nb

sp;                        479

SYSTEM                                630

PA_DATA                                50

PA_INDEX                               50

删除表空间:

SQL> drop tablespace SM_SPACE  including contents;

 

2、如果数据文件需要恢复

2.1 如果有冷备份的话:

进入mount状态,然后将备份的数据文件拷到目的目录中,然后使用命令,

SQL > alter database open.

如果有热备份的话:

进入mount状态,再使数据文件脱机,然后将备份的数据文件拷到目的目录中,然后使用命令,

SQL > recover datafile  '文件名'

原创粉丝点击