ORACLE数据恢复
- 格式:docx
- 大小:62.33 KB
- 文档页数:8
ORACLE数据库闪回
一、恢复删除掉的数据 ........................................................................................................... 2
方法1:通过SCN查找 .................................................................................................. 2
方法二:通过删除时间查找 ........................................................................................... 2
二、恢复drop掉的表 ............................................................................................................. 3
1、打开闪存功能: ......................................................................................................... 3
1、服务起不来,未初始化服务句柄: ................................................................. 4
2、空闲进程登录: ................................................................................................. 4
3、找到init文件,创建spfile: ............................................................................ 4
4、开启闪存功能:alter database flashback on ...................................................... 5
5、先开启归档模式,再开启闪存功能 ................................................................. 5
2、查看闪回参数: ......................................................................................................... 5
3、闪回实例: ................................................................................................................. 6
4、表版本和闪回功能 ..................................................................................................... 6
5、表结构更改还能不能恢复 ......................................................................................... 7
6、为普通用户添加查看字典表的权限 ......................................................................... 8
7、管理回收站 ................................................................................................................. 8
8、禁用或启用recyclebin ............................................................................................... 8
Oracle9i版本开始支持闪回查询,即可以及时取回误删的数据。
一、恢复删除掉的数据
例:
1、创建表
createtable tt (idnumber,namevarchar2(20));
2、表中插入数据
select * from tt;
ID
NAME
1 1 张三
2 2 李四
3 3 王五
3、删除所有数据,并提交
deletefrom tt ;
commit;
方法1:通过SCN查找
(每隔5分钟,系统产生一次系统时间标记与scn的匹配并存入sys.smon_scn_time表。)
3、查找删除前后的SCN
select dbms_flashback.get_system_change_number from dual;
-- 结果为:1387348
selectcount(*) from tt asofscn1387348;
-- 结果为:0
selectcount(*) from tt asofscn1387310;
-- 结果为:3
4、恢复数据
insertinto tt select * from tt asofscn1387310;
commit;
selectcount(*) from tt
-- 结果为:3
最终delete的数据已经找回了。
方法二:通过删除时间查找
重新执行步骤2、3.
4、通过删除时间找数据
select *
from tt asof
timestamp to_date('2016-03-23 23:45:00', 'yyyy-mm-dd hh24:mi:ss');
-- 结果为:三条数据
5、还原数据
insertinto tt
select *
from tt asof
timestamp to_date('2016-03-23 23:45:00', 'yyyy-mm-dd hh24:mi:ss');
commit;
selectcount(*) from tt;
-- 结果为:3
二、恢复drop掉的表
1、打开闪存功能:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\gxy>sqlplus sys/orcl@orcl as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 24 22:17:44 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1670221824 bytes
Fixed Size 2176328 bytes
Variable Size 1023412920 bytes
Database Buffers 637534208 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
SQL> alter system set db_recovery_file_dest_size=80g scope=spfile;
系统已更改。
SQL> alter system set db_recovery_file_dest='D:\app\flash_recovery_area' sco
pe=spfile;
系统已更改。
SQL> alter system set db_flashback_retention_target=1440 scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
1、服务起不来,未初始化服务句柄:
SQL> startup mount;
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
SQL> startup mount;
ORA-24324: 未初始化服务句柄
ORA-01041: 内部错误, hostdef 扩展名不存在
SQL> startup open;
ORA-24324: 未初始化服务句柄
ORA-01041: 内部错误, hostdef 扩展名不存在
SQL> startup nomount
ORA-24324: 未初始化服务句柄
ORA-01041: 内部错误, hostdef 扩展名不存在
2、空闲进程登录:
1.
关掉当前的sqlplus窗口
2.
打开cmd窗口,输入sqlplus /nolog
3. conn /as sysdba;
4. startup; 即可
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\gxy>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 3月 24 22:34:50 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn sys/orcl as sysdba;
已连接到空闲例程。
SQL> startup;
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translat
ed
ORA-01263: Name given for file destination directory is invalid
OSD-04018: ??????????????????????????
O/S-Error: (OS 3) ??????????????????????
SQL>create spfile from pfile;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
'D:\app\product\11.2.0\dbhome_1\database\INITORCL.ora'
3、找到init文件,创建spfile:
在目录:d:\app\admin\orcl\pfile找到init.ora.022016222058文件,可以看出这个文件是报错之前的备份参数文件。然后在D:\app\product\11.2.0\dbhome_1\database目录下新建一个INITORCL.ora文件,然后执行create spfile from pfile;然后执行startup;可见启动正常了。
注:Spfileorcl.ora文件存放路径:D:\app\product\11.2.0\dbhome_1\database