今天在PL/SQL中操作不小心删掉了某个表的部分数据,这可吓坏了本猿:于是悄悄的打开电脑,赶紧找度娘帮忙.经过度娘的小爬虫帮助,几分钟就把数据恢复了. 那么表数据delete掉后怎么恢复呢? 用flashback即可. 例:alter table 表名 enable row movement; flashback table 表名 to timestamp to_timestamp('2017-10-09 00:00:00','yyyy-mm-dd hh24:mi:ss'); alter tab…
运行下列SQL,找出数据库的serial#,执行结果如下图所示 SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME   FROM V$LOCKED_OBJECT T1, V$SESSION T2  WHERE T1.SESSION_ID = T2.SID  ORDER BY T2.LOGON_TIME; 然后运行下列SQL关闭锁表的Session,其中sid和serial#是查到的导致锁表的session alter system kill…
Oracle误删除表数据后的恢复具体解释 測试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_retention參数的查询与改动 使用show parameter undo命令查看当前的数据库參数undo_retention设置. 显演示样例如以下: SQL> show parameter undo NAME                                 TYPE       …
oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍. 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为‘001’的数据:delete from users where userid='001'; (2)无条…
[问题描述]Oracle误删表空间文件后数据库无法启动,报错表空间文件不存在 [解决办法]sqlplus / as sysdba       #以dba身份登陆数据库shutdown immediate;     #关闭数据库startup mount;       #打开控制文件alter database datafile '/opt/oracle/oradata/tbs.dbf' offline drop;  #注销被误删的表空间文件alter database open;     #打开…
oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出excel文件(记录没全部截图) 导出文件路径默认在C:\Users\Administrator\AppData\Local\Temp下 4)点击另存为桌面的excel文件 参考网址: https://jingyan.baidu.com/article/08b6a591a7969514a8092299…
1.不同用户之间的表数据复制 2.同用户表之间的数据复制 3.B.x中个别字段转移到B.y的相同字段 4.只复制表结构 加入了一个永远不可能成立的条件1=2,则此时表示的是只复制表结构,但是不复制表内容 5.完全复制表(包括创建表和复制表中的记录) 6.将多个表数据插入一个表中 7.创建用户budget_zlgc,权限和budget相同,(A.只复制所有表结构B.复制所有表所有信息) 1.不同用户之间的表数据复制 对于在一个数据库上的两个用户A和B,假如需要把A下表old的数据复制到B下的new…
转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种方式: 在oracle中,truncate.delete都可以删除表数据,具体的区别以及sql语法如下: truncate table [表名]; delete from [表名]; delete与truncate的区别:delete:会产生rollback,如果删除大数据量的表速度会很慢,而且同时…
        1.情景展示 现在,需要清空该表数据 2.实现方式 为了比较删除速度,对该表进行复制 确认复制的表和原来的表数据是否一致 方式一:使用truncate table实现 方式二:使用delete from实现 执行结果 提交事务 3.区别 delete:会产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments: truncate: 是DDL操作,不产生rollback,速度快. 4.删除表 写在最后 哪位大佬如若发现文章存在纰漏之处…
工作中遇到:在为一个表新增字段后,新增字段在最后,想调整新增字段的位置. 1.原始方法: --新建临时表以存储正确的顺序 create table A_2 as select (column1,colum2,……A表中的顺序) from A_1 ; --删除表A_1 drop table A_1; --新建A_1并从A_2表中赋予其正确的顺序和值 create table A_1 as select * from A_2; --删除临时表A_2 drop table A_2; 这种方法对字段较少…
1.不同用户之间的表数据复制 对于在一个数据库上的两个用户A和B,假如需要把A下表old的数据复制到B下的new,请使用权限足够的用户登入sqlplus:insert into B.new(select * from A.old); 如果需要加条件限制,比如复制当天的A.old数据insert into B.new(select * from A.old where date=GMT); 蓝色斜线处为选择条件 2.同用户表之间的数据复制 用户B下有两个表:B.x和B.y,如果需要从表x转移数据到…
问题描述 开发同事在在14点左右发现任务表task_info数据不正确,3个小时之前的数据消失了,数据截至时间11:38:27 问题分析 查询过dba_source,只找到一个删除该表的存储过程,而且也不会造成这种情况: 根据现象,怀疑有人在11:38左右做了delete操作且没有写where条件,把整表数据全部删除: 关联查询dba_hist_active_sess_history,gv$sql未发现相关语句 关联查询gv$active_session_history,gv$sql也未发现相关…
    1 引言 在程序设计的过程中,往往会遇到两个记录集的比较.如华东电网PMS接口中实现传递一天中变更(新增.修改.删除)的数据.实现的方式有多种,如编程存储过程返回游标,在存储过程中对两批数据进行比较等等. 本文主要讨论利用ORACLE的MINUS函数,直接实现两个记录集的比较. 2 实现步骤 假设两个记录集分别以表的方式存在,原始表为A,产生的比较表为B. 2.1 判断原始表和比较表的增量差异 利用MINUS函数,判断原始表与比较表的增量差异. 此增量数据包含两部分: 1)原始表A有.比…
  1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2.往表中插入指定字段数据   /*方法一*/ INSERT INTO 表名 (column1,column2,...) VALUES(val1,val2,val3,...); /*方法二*/ '; 3.批量插入 方式一 INSERT ALL INTO TABLENAME (COLUMN1, COLUM…
--备份表数据 select * from t_owners; --创建备份表 create table t_owners_copy ( id number, name ), addressid number, housenumber ), watermeter ), adddate date, ownertypeid number ) drop table t_owners_copy select * from t_owners_copy --备份一部分数据 insert into t_own…
对于被drop的表和索引,都会存放在回收站中(所以对于生产的数据库必须设置好回收站功能) 由于本次生成环境在drop掉已有的表后,又一次创建了很多的表,全部直接还原的话会提示原有对象存在,表名反复.当中解决方法是:先重命名已经存在的表名,让后还原删除的表,最后进行数据合并 1 重命名已经存在的表 spool bak.txt select 'alter table '||t.original_name||' rename to '||t.original_name||'_bak;',' selec…
工作中一不小心将本不该删除/更新/插入的数据进行删除/更新/插入了,这时候一定要尽快进行恢复. 工具/原料   PL/SQL 方法/步骤     首先新建一张测试表TEST,里面输入记录.由于删除/更新/插入恢复步骤相同,本经验仅演示删除数据的情况.   删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了.   恢复之前我们先确定我们要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的. SELECT * FROM TEST AS OF TIMESTAMP…
在导出的时候,整库导出 这里使用的是dba权限 $exp "'/ as sysdba'" file=full20180227.dmp log=exp_full20180227.log buffer=40960000 full=y 或者 $exp \"/ as sysdba\" file=full20180227.dmp log=exp_full20180227.log buffer=40960000 full=y 这样导出的数据成功导出了 导入指定用户的指定表: i…
http://blog.csdn.net/itdada/article/details/52746392…
USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date: 07/12/2014 15:09:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Recover_Deleted_Data_Proc] @Database_Name NVARCH…
误删除了一个订单,订单号为:D200711008, 现根据binlog对该订单数据进行恢复. 1. 查看binlog日志, 取最新的一个 mysql-bin.000635 show binary logs; 2. 导出删除日期范围内的binlog日志 mysqlbinlog -uhairdonkey -padmin123 -P3306 -h192.168.1.234 --start-datetime="2020-07-17 11:50:00" --stop-datetime="…
系统:redhat 6.6 oracle版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 问题描述:宕机后,使用 sqlplus   登陆发现: Oracle ORA-01033: ORACLE initialization or shutdown in progress 即,数据库未正常打开. 问题排查: 由于非正常关机,数据库需要恢复.遂Bd一下: https://www.cnblogs.co…
在功能实现时,能尽量用一个sql语句直接实现业务逻辑的话,就不要去写C#代码,便于维护. 以下sql的逻辑是:给明细表新增一条数据,前提是传入的债券代码存在与债券表,否则不新增.此sql返回受影响行数,如果行数为0,则表示没有新增进数据,则近接的表示为债券代码无效. insert into t_bank_bond_limit_list (s_symbol_name,s_exchange,s_symbol,n_id,n_mian_id,s_source) select a.s_name, a.s_…
首先:查询数据那些表被锁定1. SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND l.session_id…
  1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案: DELETE FROM PRIMARY_INDEX_TEST WHERE MINDEX_ID IS NULL 情景二的解决方案: 分析:情景二无法使用情景一那样,where后面直接加条件,只能根据主键来进行删除. 2018/12/10 方案1:使用快速游标法(删除一次提交一次): --快速游标法…
oracle 备份数据 如果备份表存在 原表t_base_employee,备份表t_base_employee20180718 insert into t_base_employee0718 select * from t_base_employee; 如果备份表不存在 原表t_base_employee create table t_base_employee20180718 as select * from t_base_employee ; 删除表数据 delete from t_bas…
MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 from t1 where 条件 3. delete t1 from t1,t2 where 条件 4.delete t1,t2 from t1,t2 where 条件 前 3者是可行的,第4者不可行. 也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,在两个表之间建立级联…
Oracle Database 数据表数据插入,更新,删除 插入数据 Insert into table_name(column) values(values); insert into student values ('20166660101','金美辛','女',21,'影视传媒学院','13588000066','北京市'); 默认值 default 在建表时复制 Create table table_new as select column1,…|*from table_old 已存在表…
[2] 当数据库被修改后的恢复方法 数据库被修改,可能存在着多方面的原因,被入侵.以及相应程序存在Bug等等,这里不作详细介绍.这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法. 具体和上面所述的“数据库被删除后的恢复方法”相类似.这里,测试用数据库接着使用刚刚在前面用过的test.这里为了使刚刚接触数据库的朋友不至于理解混乱,我们再次登录到MySQL服务器上确认一下刚刚建立的测试用的数据库test的相关信息. [root@CentOS ~]# mysql -u root -p ← 用…
使用sqluldr2进行oracle数据库表数据抽取时遇到执行后无反应,也不报错,也无日志输出的情况. 经过排查之后发现时由于oracle账户密码快要过期导致的(这也能出问题,我服,类似的plsql连接oracle数据库时也会因为这个原因出现连接不上的问题),把账户密码的期限修改一下即可.注意的是,就算账户密码修改过后,被提示的账户还是要做一次密码修改才能生效.…