备份还原参考 点击打开链接
问题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
然后就可以启动数据库了
经过后期使用发现问题:
解决方式: 删除对应表的实体化视图日志,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';