sql表还原
Ⅰ sql怎么还原表
第一步:将customr中的数据清空;
第二步:将customer0717中的数据插入到customr中。
【实现】
第一步:truncate table customr;
第二步:insert into customr (col1,col2,...)
select col1,col2,... from customer0717;
(说明:请将col1,col2,...换为表的实际字段)
Ⅱ 怎么恢复 sql中delete 删除的表
一、如果是刚刚删除,那么有两方法:
首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。
显示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800单位是秒。即3个小时。
修改默认的undo_retention参数设置:
ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
方法1,通过oracle提供的回闪功能:
exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss'));
set serveroutput on
DECLARE r_temp hr.job_history%ROWTYPE;
CURSOR c_temp IS SELECT * FROM hr.job_history;
BEGIN
OPEN c_temp;
dbms_flashback.disable;
LOOP
FETCH c_temp INTO r_temp;
EXIT WHEN c_temp%NOTFOUND;
insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END LOOP;
CLOSE c_temp;
END;
方法2,insert into hr.job_history
select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');
这种方法简单,容易掌握,功能和上面的一样时间为你误操作之前的时间,最好是离误操作比较近的,因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。
二、如果是删除一段时间了,但你有比较新的数据库备份,就通过备份来恢复。新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去。
三、如果删除一段时间了,并且无备份,但是数据在写入表的时候同时会写入其它一些关联表的话,那么就尝试通过写SQL语句从其它表取数据出来insert到被删除的表中。
Ⅲ 还原SQL数据库部分表
从SQL数据库备份文件,没有选表的选项。
不过可以用数据导入的方式解决,这样:新建一个数据库实例TEMPDB,之后新建一个数据库,数据库名与备份名相同,然后还原。
然后将新还原的数据库以数据导出的方式(导入/导出
方式中间有选项可以选表)覆盖你想还原的数据库。
Ⅳ plsql怎么恢复删除的表
方法一:
1.打开Flash存储的权限
ALTER TABLE tableName ENABLE row movement ;
2.把表还原到指定时间点
flashback table tableName to timestamp to_timestamp('2018-03-16 10:40:00','yyyy-mm-dd hh24:mi:ss');
后面的参数为要还原的时间点
方法二:
利用ORacle的快照进行查找某个时间点的数据
s e l e c t * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '100' MINUTE)
或
s e l e c t * from tableName as of timestamp to_timestamp('2018-03-16 11:40:00','YYYY-MM-DD HH24:MI:SS');
这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。
方法三:
删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
s e l e c t * from user_recyclebin;
FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;
如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。
方法四:
SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
Ⅳ 如何还原sql数据库
1、要进行还原数据库操作我们先需要有一个数据库,这里直接打开SQL Server Management Studio,然后打开实例,在左侧按照下图中红色箭头指示右键点击数据库,然后点击 新建数据库,如下图:
Ⅵ SQL数据库里的表误删除要怎么恢复
sql
server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
1.
至少有一个误删除之前的数据库完全备份。
2.
数据库的恢复模式(recovery
mode)是“完整(full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过sql语句只需三步就能恢复(参考文章),无需借助第三方工具。
a)
备份当前数据库的事务日志:backup
log
[数据库名]
to
disk=
n'备份文件名'
with
norecovery
b)
恢复一个误删除之前的完全备份:restore
database
[数据库名]
from
disk
=
n'完全备份文件名'
with
norecovery,
replace
c)
将数据库恢复至误删除之前的时间点:restore
log
[数据库]
from
disk
=
n'第一步的日志备份文件名'
with
stopat
=
n'误删除之前的时间点'
,
recovery
Ⅶ 你好,我想请问sql表数据被清空还能恢复嘛
1、一般而言:不能。
2、高明的人可以做到,方法是利用SQL的事务文件,这个文件中记录了数据库的所有动作(如果相关事务没有被清除)。
3、但SQL自身的工具并不支持查看事务文件中的详细动作,更不用说从中还原数据。
4、有些第三方工具有可能可以做到,比如Log Explorer for SQL Server(需要安装在SQL Server所在的电脑(服务器)上)。
Ⅷ sql数据库用语句删除表,怎么恢复
如何恢复被delete/update的数据
操作步骤
1连接到被删除数据库的Db
打开logexplorer选择"file"->"attachlogfile"->选择服务器和登陆方式->"connect"->选择"数据库"->"attach"
2查看日志
在左面操作项目的对话框中选择"browse"项目->"viewlog"->就可以看到当前的Log记录了
3恢复数据
右键某一条log记录,选择"undotransation"->"选择保存文件名和路径"->然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如:如果log是deletetablewhere...的话,生成的文件代码就是inserttable....