ALLSTARS_ORACLE 发表于 2017-4-14 16:33:13

数据文件坏了

好事旺 超市一数据文件损坏,模拟 数据文件损坏 做 恢复测试


创建一个表空间  好事旺

create tablespace  hsw datafile  'c:\hsw01.dbf' size 1m;

Tablespace created.

查询  好事旺 数据文件的状态
select file_name,status,online_status from dba_data_files where  file_name like '%HSW%';

FILE_NAME         STATUS        ONLINE_STATUS
---------------- -------------- --------------
C:\HSW01.DBF      AVAILABLE     ONLINE



DROP数据文件  好事旺
alter database datafile 'C:\HSW01.DBF' offline for  drop;

Database altered.

select name from v$dbfile where name like '%HSW%';

NAME
---------------------------------------------------------------------------
C:\HSW01.DBF



创建 一个用户默认表空间就是   好事旺
create user hsw  identified by  hsw default tablespace hsw;

User created.

grant dba to hsw;

Grant succeeded.



alter session set nls_language=american;

Session altered.


创建一张表报错,表示此数据文件已经不可读写了
create table hsw (name char(20));
create table hsw (name char(20))
*
ERROR at line 1:
ORA-01658: unable to create INITIAL extent for segment in tablespace HSW




好事旺  数据文件当前的状态为  recover

SYS >select file_name,status,online_status from dba_data_files where  file_name like '%HSW%';

FILE_NAME                                     STATUS                                   ONLINE_STATUS
--------------------------------------------- ---------------------------------------- --------------
C:\HSW01.DBF                                  AVAILABLE                                RECOVER


好事旺 数据文件的 编号为  6
select file_id,file_name,online_status from dba_data_files where file_name like  '%HSW%';

   FILE_ID FILE_NAME                                     ONLINE_STATUS
---------- --------------------------------------------- --------------
         6 C:\HSW01.DBF                                  RECOVER



试试 这种方法能 恢复   好事旺   数据文件不

alter database create datafile 'C:\HSW01.DBF';

Database altered.

好事旺  依然是  recover的  
select file_id,file_name,online_status from dba_data_files where file_name like  '%HSW%';

   FILE_ID FILE_NAME                                     ONLINE_STATUS
---------- --------------------------------------------- --------------
         6 C:\HSW01.DBF                                  RECOVER






看来还是得靠RMAN 啊
RMAN> restore datafile 6;

启动 restore 于 14-2月 -14
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=274 devtype=DISK

创建数据文件 fno = 6 名称 = C:\HSW01.DBF
没有完成恢复; 所有文件均为只读或脱机文件或者已经恢复
完成 restore 于 14-2月 -14

RMAN> recover datafile 6;

启动 recover 于 14-2月 -14
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:02

完成 recover 于 14-2月 -14




select file_id,file_name,online_status from dba_data_files where file_name like  '%HSW%';

   FILE_ID FILE_NAME                                     ONLINE_STATUS
---------- --------------------------------------------- --------------
         6 C:\HSW01.DBF                                  OFFLINE



alter  database  datafile 'C:\HSW01.DBF' online;

数据库已更改。

select file_id,file_name,online_status from dba_data_files where file_name like  '%HSW%';

   FILE_ID FILE_NAME                                     ONLINE_STATUS
---------- --------------------------------------------- --------------
         6 C:\HSW01.DBF                                  ONLINE




connect  hsw/hsw
已连接。
show  user
USER 为 "HSW"
create table hsw (name char(200));

表已创建。

insert into hsw values ('hsw');

已创建 1 行。

commit;

提交完成。

select * from  hsw;

NAME
--------------------------------------------------
hsw



来看看问题:
1、alter database datafile 'hsw.dbf' for offline drop;是从 控制文件中删除的数据文件的信息还是在数据字典删除的?
回车后,硬盘上的物理文件依然存在。

2、alter database create  datafile  'hsw.dbf'; 前提是要配置归档,那这句命令的作用 是恢复 到控制文件中DBF的位置 信息还是执行了哪些操作呢?













页: [1]
查看完整版本: 数据文件坏了