(07)数据文件恢复之一通过SqlPlus重建恢复(文件系统与ASM)
2014-02-27 23:36
465 查看
本次恢复说明适合于日志完备,但数据文件丢失或损坏的情况。
原理是,数据文件丢了,但创建它,填充它的日志还在。我重建个空的物理文件,让数据库重新执行一遍日志,不就把数据文件恢复过来了。
在RAC+ASM环境下测试:
1. 查出数据库的所有数据文件
SQL>select file#,name from v$datafile;
2. 做个全备以防万一,然后新增测试用于表空间和数据文件
RMAN>backup as copy database
SQL>create tablespace test_data datafile size 2m;
3. 停掉RAC数据库
srvctl stop database -d xcldb -o immediate
4. 破坏掉数据文件
su - grid
export ORACLE_SID=+ASM1
asmcmd -p
cd DATA1
cd DBRAC
cd DATAFILE
rm 数据文件
现在如果回到oracle用户,启动数据库,会报错。
开始恢复:
1.重建一个文件
alter database create datafile 8;
使用文件号重建了一个文件,使用文件名创建,像下面例子一下,也可,但没必要。
alter database create datafile '+DATA1/dbrac/......./test.xxx.xxxxxxxxx';
这是由asm的特性决定的,它要求asm上的每个文件名必须都是唯一的,它采用
tag_name.file_number.incarnation的方式命名。你指定个文件名,它也会自动弄成一个名字。
2. 通过查询控制文件与asm得到两个数据文件名
2.1得到数据库原来对应的文件名
SQL>select file#,name from v$datafile;
2.2在asmcmd中去查到新创建的数据文件名.
3. 把文件名对应的数据文件改成新的数据文件名
SQL>alter database rename file '+DATA1/dbrac/datafile/test.288.678913234' to '+DATA1/dbrac/datafile/test.288.678953008' ;
4. 再执行恢复,完成后打开数据库
SQL>recover datafile 8;
SQL>alter database open;
5.检查
SQL>select file_name,tablespace_name,bytes/1024/1024 from dba_data_files;
再说另外一种正常文件系统下数据文件丢失的情况:
数据库重启时报错,发现数据文件所在目录或盘都坏了,没法恢复到原来的路径,但归档完备。
1. 启动到mount状态
2. 将出现问题的datafile设为脱机
SQL> alter database datafile 8 offine;
此时,数据库可以打开到open状态了.
SQL> alter database open;
3. 依数据文件状态及文件号查出数据文件全路径,然后将其更改成可用的路径
SQL> select file#,name,status from v$datafile;
SQL> alter database create datafile '/u02/app/oradata/xcldb/test01.dbf';
SQL> alter database rename file '/u01/app/oradata/xcldb/test01.dbf' to '/u02/app/oradata/xcldb/test01.dbf';
4. 执行恢复
SQL> recover datafile 8;
5.更改datafile状态为在线
SQL> alter database datafile 8 online;
6.再次检查下状态
SQL> select file#,name,status from v$datafile;
两个案例,原理效果都是一样的,只是细节有一点点不同。
不过这些方法都只能用于恢复非SYSTEM/SYSAUX或不是当前使用的UNDO表空间的数据文件。
如果是这些文件坏了,还是用RMAN或其它手段吧。
MAIL: xcl_168@aliyun.com
BLOG: http://blog.csdn.net/xcl168
原理是,数据文件丢了,但创建它,填充它的日志还在。我重建个空的物理文件,让数据库重新执行一遍日志,不就把数据文件恢复过来了。
在RAC+ASM环境下测试:
1. 查出数据库的所有数据文件
SQL>select file#,name from v$datafile;
2. 做个全备以防万一,然后新增测试用于表空间和数据文件
RMAN>backup as copy database
SQL>create tablespace test_data datafile size 2m;
3. 停掉RAC数据库
srvctl stop database -d xcldb -o immediate
4. 破坏掉数据文件
su - grid
export ORACLE_SID=+ASM1
asmcmd -p
cd DATA1
cd DBRAC
cd DATAFILE
rm 数据文件
现在如果回到oracle用户,启动数据库,会报错。
开始恢复:
1.重建一个文件
alter database create datafile 8;
使用文件号重建了一个文件,使用文件名创建,像下面例子一下,也可,但没必要。
alter database create datafile '+DATA1/dbrac/......./test.xxx.xxxxxxxxx';
这是由asm的特性决定的,它要求asm上的每个文件名必须都是唯一的,它采用
tag_name.file_number.incarnation的方式命名。你指定个文件名,它也会自动弄成一个名字。
2. 通过查询控制文件与asm得到两个数据文件名
2.1得到数据库原来对应的文件名
SQL>select file#,name from v$datafile;
2.2在asmcmd中去查到新创建的数据文件名.
3. 把文件名对应的数据文件改成新的数据文件名
SQL>alter database rename file '+DATA1/dbrac/datafile/test.288.678913234' to '+DATA1/dbrac/datafile/test.288.678953008' ;
4. 再执行恢复,完成后打开数据库
SQL>recover datafile 8;
SQL>alter database open;
5.检查
SQL>select file_name,tablespace_name,bytes/1024/1024 from dba_data_files;
再说另外一种正常文件系统下数据文件丢失的情况:
数据库重启时报错,发现数据文件所在目录或盘都坏了,没法恢复到原来的路径,但归档完备。
1. 启动到mount状态
2. 将出现问题的datafile设为脱机
SQL> alter database datafile 8 offine;
此时,数据库可以打开到open状态了.
SQL> alter database open;
3. 依数据文件状态及文件号查出数据文件全路径,然后将其更改成可用的路径
SQL> select file#,name,status from v$datafile;
SQL> alter database create datafile '/u02/app/oradata/xcldb/test01.dbf';
SQL> alter database rename file '/u01/app/oradata/xcldb/test01.dbf' to '/u02/app/oradata/xcldb/test01.dbf';
4. 执行恢复
SQL> recover datafile 8;
5.更改datafile状态为在线
SQL> alter database datafile 8 online;
6.再次检查下状态
SQL> select file#,name,status from v$datafile;
两个案例,原理效果都是一样的,只是细节有一点点不同。
不过这些方法都只能用于恢复非SYSTEM/SYSAUX或不是当前使用的UNDO表空间的数据文件。
如果是这些文件坏了,还是用RMAN或其它手段吧。
MAIL: xcl_168@aliyun.com
BLOG: http://blog.csdn.net/xcl168
相关文章推荐
- log view for sql server (一款通过解析MSSql2008日志文件恢复表数据删除的工具软件)
- 通过重建控制文件的方法恢复数据库
- mysql通过Binlog恢复数据到sql文件实战
- 重装系统通过数据恢复软件找回来的数据库文件提示不是有效的SQL SERVER文件的修复案例
- 控制文件丢失,无备份,通过重建控制文件恢复数据库
- oracle ----系统服务 --- 文件体系结构 ----网络配置 -----利用企业管理器登录数据库 -----利用SQL Plus登录数据库 -------运行时故障分析与解决
- 热备份---非系统数据文件损坏的恢复
- HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
- ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程
- mysql 通过data文件下来恢复数据
- oracle 异机恢复 从asm到文件系统成功实例
- 非系统数据文件损坏,rman备份恢复
- 将数据文件从asm移到普通文件系统
- 使用RMAN在ASM和文件系统之间拷贝数据
- HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程
- 系统损坏,移植Oracle(9.2.0.1)数据库(无备份数据文件进行恢复)
- 【达内训练营第三天】07_28_复杂数据类型与文件系统
- 实际数据恢复案例-手工修复FAT32文件系统
- Fat32文件系统存储原理及数据恢复
- SQL2005恢复只有mdf文件的数据库 自动备份数据