
首先需要知道是什么时间进行的删除 *** 作,如果不能确定具体时间点则选择尽量准确的删除数据前的时间。然后利用
select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')
语句可以找回删除的数据。利用
insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'))
语句就可以将恢复出来的数据插入原表中(注意要保证主键不重复)。
另一种方法可以通过闪回整个表来恢复误删除的数据,但仅适用于表结构没有发生改变且用户有flash any table权限的情况下,语句如下:
·alter table 表名 enable row movement
第一:用安装数据库时的管理员用户登录:创建一个新的用户,如:\x0d\x0a//创建用户123密码456\x0d\x0acreate user 123 identified by 456\x0d\x0a第二:授权,赋予dba的权限\x0d\x0agrant dba to 123\x0d\x0a第三:导入数据库\x0d\x0aimp 123/456@orcl file=E:\*.DMP fromuser=expuser touser=123\x0d\x0a注意:如上导入需要直接在cmd界面执行;expuser是导出用户名,可以随便写,但会有警告;orcl是你创建的数据库事例,在安装oracl的时候,默认会新建一个orcl\x0d\x0a最后:希望我描述清楚了,能帮到你。数据还原:1.在命令行输入:sqlplus "/as sysdba"
2. 执行以下语句登录xx数据库,用户名:xx,密码:xx(请输入当地实际密码)
conn xx/xx
3.如果恢复的表中有涉及到触发器的请停止触发器,例:A表
alter table A disable all triggers
commit
4. 执行以下语句退出当前用户
quit
5. 执行以下语句,恢复用户数据。
impdp xx/xx@数据库实例名 directory=bak_dir table_exists_action=truncate dumpfile=expdb_xx.dmp logfile=impdb_xx.log
5.在命令行输入:sqlplus "/as sysdba"
6. 执行以下语句登录xx数据库,用户名:xx,密码:xx(请输入当地实际密码)
conn xx/xx
7. 执行以下语句打开被禁止的触发器
alter table A enable all triggers
commit
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)