1Z0-032-12:User-managed complete recovery:
完全修复:本节介绍。
不完全修复:数据丢失等等。
三个层面修复:database ,tablespace,datafile.
media recovery: 昨天晚上备份与现在文件一致(通过归档日志文件,在线日志文件)
共5步:restored datafiles; redo applied; database containing commited and uncommited transactions;
undo applied; recovered database;
noarchivelog mode: 进行全恢复;只能恢复到备份的时间点。要对数据文件,控制文件进行必须恢复。
而redo log files; parameter file; password file是不必要的。
优点: easy;修复时间短;
缺点: 从备份到恢复时数据将丢失。需要进行手工处理数据。
如果只有datafiles ,controlfiles and redo log files都备份了,只需要重启数据库就可以了。
如果只有datafiles and controlfiles :需要进行重建redo logfile:
1. shutdown immedate; 2. copy备份的datafiles and controlfiles到目标地;
3. recover database until cancel; 4. alter database open resetlogs;
archivelog mode: 可以进行完整恢复;也可以进行不完整恢复(日志断点,人为数据损坏后面讲);
要保证归档日志文件及在线日志文件都要是全的。
只需要恢复datafile,其他文件不需要进行恢复;
优点:online恢复(不影响其他部分运行);
缺点:日志要求全,且无断点。恢复时间长。
v$recover_file; 哪些文件需要恢复;
v$archive_log: 数据库的所有归档文件;
v$recovery_log:恢复datafiles需要哪些日志;
过程:startup 会出错; 则select * from v$recover_file; select * from v$recover_log;
alter database datafile 8 offline; copy 文件;recover [automatic] datafile 8;
alter database datafile 8 onlline; alter database open;
需要归档日志文件时:可以用set autorecovery on ; 需要指明归档日志的路径(alter system archive log...)
alter database rename file 'd:/user01.dbf' to 'd:/.../user01.dbf' 只是改变controlfile的信息。
三个级别修复:recover database; recover tablespace xxx; recover datafile xxx;
在closed下进行恢复:
1)system datafiles;undo segment datafiles; whole database;
在open 下进行恢复:
2)损坏不涉及系统信息(文件丢失),前面有例子
3)介质坏了(只涉及用户数据时),前面有例子
4)数据文件从来没有备份过(物理损坏)。
以上四种情况进行修复:
1)system 损坏:startup mount;recover datafile 1;alter database datafile 1 online;
alter database open; 同样undo segment也需要关闭DB进行恢复;
2.3)关闭DB的情况下user01丢失; startup mount; alter database datafile 8 offline;alter database open;recover datafile 8;
alter database datafile 8 online;
4)如果日志是全的,且不能为system; 只能是用户数据文件。实验(在users上添加一个datafile)
alter tablespace users add datafile 'd:/.../users02.dbf' size 10m;
alter table kong.authors allocate extent( size 100k datafile 'd:/.../users02.dbf');
startup mount; alter database datafile 'd:/.../users02.dbf' offline;
alter database open; alter database create datafile 'd:/.../users02.dbf' to 'd:/.../users02.dbf';
recover datafile 'd:/.../users02.dbf'; alter database datafile 'd:/.../users02.dbf' online;
readonly tablespace: 备份时是readonly ,恢复时需要为read-write; 或备份时read-write,恢复时需要为readonly;
control file 恢复: 所有controlfile都丢失了。对DB进行更名。改变当前控制文件的信息。
恢复方法: 当前有备份;最易。
建一个新控制文件:用脚本:alter database backup controlfile to trace; 结构清楚也可自己写脚本。
用备份控制文件:alter database backup controlfile to 'd:/...' 得到的二进制来进行恢复;
不完全修复:数据丢失等等。
三个层面修复:database ,tablespace,datafile.
media recovery: 昨天晚上备份与现在文件一致(通过归档日志文件,在线日志文件)
共5步:restored datafiles; redo applied; database containing commited and uncommited transactions;
undo applied; recovered database;
noarchivelog mode: 进行全恢复;只能恢复到备份的时间点。要对数据文件,控制文件进行必须恢复。
而redo log files; parameter file; password file是不必要的。
优点: easy;修复时间短;
缺点: 从备份到恢复时数据将丢失。需要进行手工处理数据。
如果只有datafiles ,controlfiles and redo log files都备份了,只需要重启数据库就可以了。
如果只有datafiles and controlfiles :需要进行重建redo logfile:
1. shutdown immedate; 2. copy备份的datafiles and controlfiles到目标地;
3. recover database until cancel; 4. alter database open resetlogs;
archivelog mode: 可以进行完整恢复;也可以进行不完整恢复(日志断点,人为数据损坏后面讲);
要保证归档日志文件及在线日志文件都要是全的。
只需要恢复datafile,其他文件不需要进行恢复;
优点:online恢复(不影响其他部分运行);
缺点:日志要求全,且无断点。恢复时间长。
v$recover_file; 哪些文件需要恢复;
v$archive_log: 数据库的所有归档文件;
v$recovery_log:恢复datafiles需要哪些日志;
过程:startup 会出错; 则select * from v$recover_file; select * from v$recover_log;
alter database datafile 8 offline; copy 文件;recover [automatic] datafile 8;
alter database datafile 8 onlline; alter database open;
需要归档日志文件时:可以用set autorecovery on ; 需要指明归档日志的路径(alter system archive log...)
alter database rename file 'd:/user01.dbf' to 'd:/.../user01.dbf' 只是改变controlfile的信息。
三个级别修复:recover database; recover tablespace xxx; recover datafile xxx;
在closed下进行恢复:
1)system datafiles;undo segment datafiles; whole database;
在open 下进行恢复:
2)损坏不涉及系统信息(文件丢失),前面有例子
3)介质坏了(只涉及用户数据时),前面有例子
4)数据文件从来没有备份过(物理损坏)。
以上四种情况进行修复:
1)system 损坏:startup mount;recover datafile 1;alter database datafile 1 online;
alter database open; 同样undo segment也需要关闭DB进行恢复;
2.3)关闭DB的情况下user01丢失; startup mount; alter database datafile 8 offline;alter database open;recover datafile 8;
alter database datafile 8 online;
4)如果日志是全的,且不能为system; 只能是用户数据文件。实验(在users上添加一个datafile)
alter tablespace users add datafile 'd:/.../users02.dbf' size 10m;
alter table kong.authors allocate extent( size 100k datafile 'd:/.../users02.dbf');
startup mount; alter database datafile 'd:/.../users02.dbf' offline;
alter database open; alter database create datafile 'd:/.../users02.dbf' to 'd:/.../users02.dbf';
recover datafile 'd:/.../users02.dbf'; alter database datafile 'd:/.../users02.dbf' online;
readonly tablespace: 备份时是readonly ,恢复时需要为read-write; 或备份时read-write,恢复时需要为readonly;
control file 恢复: 所有controlfile都丢失了。对DB进行更名。改变当前控制文件的信息。
恢复方法: 当前有备份;最易。
建一个新控制文件:用脚本:alter database backup controlfile to trace; 结构清楚也可自己写脚本。
用备份控制文件:alter database backup controlfile to 'd:/...' 得到的二进制来进行恢复;