Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226678
  • 博文数量: 26
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-15 16:11
文章分类

全部博文(26)

文章存档

2014年(1)

2013年(2)

2012年(1)

2011年(1)

2010年(2)

2009年(11)

2008年(3)

2006年(3)

2005年(2)

我的朋友

分类: Oracle

2009-08-24 16:46:52

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;

/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

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                                 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  '文件名'

阅读(2357) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~