记录一次Oracle冷备份级还原及遇到的问题处理

备份还原参考 点击打开链接

问题1:原电脑的数据库装在C盘下和系统在一起,反正很卡,现在把数据库及数据文件放在D盘,控制文件中记录需要修改

启动监听之后,sqlplus / as system 登录之后执行

修改控制文件中数据文件的位置

alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\NJTS\SYSAUX01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\NJTS\SYSAUX01.DBF';

修改控制文件中log文件的位置 
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\NJTS\REDO01.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\NJTS\REDO01.LOG';

问题2:电脑由于突然断电,当时数据库正在使用,导致记录的文件信息和实际文件信息不一致

报错:ORA-01200: actual file size of 384000000 is smaller than correct size of 512000000 blocks

处理方式:

1.使用Oracle内部工具BBED,不支持windows,我也不会用

2.使用dd工具,原本是linux下的命令,现在有dd for windows的包了,直接下载来使用就可以了。dd百度百科

处理过程:

1.下载解压,cmd进入dd.exe所在的文件夹

2.计算记录文件大小和实际文件大小相差多少  512000000-384000000=128000000

3.创建一个得到的大小的文件,和数据文件放一起就可以了

dd if=D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI01.DBF of=D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI11111 count=128000000 bs=8k

4.把报错的数据文件和创建的文件合并

windows:type D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI11111 >>D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI01.DBF

linux:cat D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI11111 >>D:\APP\ADMINISTRATOR\ORADATA\NJTS\SIBI01.DBF

然后就可以启动数据库了


经过后期使用发现问题:

记录一次Oracle冷备份级还原及遇到的问题处理_第1张图片

解决方式: 删除对应表的实体化视图日志,DROP MATERIALIZED VIEW LOG ON sibi.items;

使用10231事件进行处理:(未验证)
(块损坏但没有备份,没办法回复的情况下)

在sqlplus中执行如下命令:
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
然后导出该表:
exp test/test file=t.dmp tables=t;
在数据库中删除该表
drop table t;
然后导入
imp test/test file=t.dmp tables=t;
最后关闭10231事件:
ALTER SYSTEM SET EVENTS='10231 trace name context off';


你可能感兴趣的:(Oracle)