|
|
os:winxp oracle:9.2.0.1.0 sid:xianhe
我的备份与恢复实验(归档模式下用户管理的不完全恢复,基于时间点的)
os:winxp oracle:9.2.0.1.0 sid:xianhe
一:准备工作
把数据库改为归档模式
SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 126950220 bytes Fixed Size 453452 bytes Variable Size 109051904 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes 数据库装载完毕。 SQL> alter database archivelog;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL>
设置成自动归档 SQL> alter system set log_archive_start = true scope=spfile;
系统已更改。
确定数据库在归档模式下并是自动存档的 SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 D:\oracle\ora92\RDBMS 最早的概要日志序列 2 下一个存档日志序列 4 当前日志序列 4 SQL>
干净的关闭数据库,做一个完全的冷备份。
二:开始实验
数据库在很多情况下要进行不完全的恢复,如用户误删除重要的表等。
1:time-based recovery
SQL> select * from salgrade;
GRADE LOSAL HISAL ---------- ---------- ---------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999
把scott用户的salgrade表删除 SQL> drop table scott.salgrade;
表已丢弃。
时间是 SQL> select to_char(sysdate, 'yyyy-mm-dd:hh24:mm:ss') from dual;
TO_CHAR(SYSDATE,'YY ------------------- 2005-03-18:20:03:51
关闭数据库
SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
然后做一次完全数据库冷备份,保留现场,万一恢复不成功可以恢复现场。以下恢复不是用的这个备份。
把原先备份的数据文件(不包括控制文件和日志文件)还原回去。
数据库启动到mount状态 SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 126950220 bytes Fixed Size 453452 bytes Variable Size 109051904 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes 数据库装载完毕。
SQL> recover database until time '2005-03-18:20:03:51'; 完成介质恢复。 SQL> alter database resetlogs; alter database resetlogs * ERROR 位于第 1 行: ORA-02231: 缺少或无效的 ALTER DATABASE 选项
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from scott.salgrade;
GRADE LOSAL HISAL ---------- ---------- ---------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999
成功恢复,完成
|
|
|