- 浏览: 262196 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
周世辉:
【转】java运算符优先级助记口诀 -
万劫不败:
这个屌~
【转】java运算符优先级助记口诀 -
duaein:
!运算符呢?
【转】java运算符优先级助记口诀 -
魔鬼的献祭:
为了赞你 我特意登录了一下 !!!!!
【转】java运算符优先级助记口诀 -
liuhhaiffeng:
很有用, 学习了,谢谢!
Oracle中Returning语句的几个小问题
大家在平时开发中,有时意外的删除过表,可能就是直接重新创建该表。在oracle10g中,可以用Flashback drop恢复用一个被删除(drop)了的对象,oracle自动将该对象放入回收站。Flashback drop恢复的原理也是利用oracle的回收站来恢复被删除(drop)的对象。
回收站,是一个虚拟的容器,用于存放所有被删除的对象。其实,对于一个对象的删除,数据库仅仅是简单的重命名操作。
数据库参数recyclebin设置为on.(即默认设置)。参数recyclebin为on,则表示把Drop的对象放入回收站。为off,则表示直接删除对象而不放入回收站。
查看recyclebin值命令如:
SQL> show parameter bin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
在系统或会话级别中修改参数recyclebin值的命令为:
SQL>alter system set recyclebin = on|off;
SQL>alter session set recyclebin = on|off;
查看回收站的相关信息视图有:recyclebin/user_recyclebin/dba_recyclebin.
手动清除回收站的信息为:purge recyclebin(或purge table original_name);
删除一张表而不想放入回收站的命令为:drop table table_name purge;
示例1:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
2.创建测试表tab_test,并为该表增加ind_test索引
SQL>createtabletab_testasselect*fromall_objects;
Tablecreated
SQL>createindexind_testontab_test(object_id);
Indexcreated
SQL> select count(*) from tab_test;
COUNT(*)
----------
40699
3。用drop命令删除tab_test表
SQL>droptabletab_test;
Tabledropped
4。查看用户回收站信息,此时会记录删除后的对象在回收站中的相关信息,此时还能正常操作回收站中的对象,但不能操作DDL/DML语句
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0 IND_TEST INDEX
BIN$zFJjV8zFSlqbLecXbDeANQ==$0 TAB_TEST TABLE
SQL>selectcount(*)from"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";
COUNT(*)
----------
40699
SQL>deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";
deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0"
ORA-38301:无法对回收站中的对象执行DDL/DML
5.用flashback恢复表到删除之前的状态
SQL>flashbacktabletab_testtobeforedrop;
Done
SQL> select count(*) from tab_test;
COUNT(*)
----------
40699
6.恢复表的索引(此时表中的索引同时也被恢复了,只不过该索引还是保留回收站中的索引名称)
SQL> select index_name from user_indexes where table_name = 'TAB_TEST';
INDEX_NAME
------------------------------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0
SQL> alter index "BIN$a+iPOcq+QXiwUT8B3c3QoA==$0" rename to ind_test;
Index altered
SQL> select index_name from user_indexes where table_name = 'TAB_TEST';
INDEX_NAME
------------------------------
IND_TEST
示例2:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
2.创建测试表test1,并输入数据
SQL> create table test1(id number);
Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> insert into test1 values(2);
1 row inserted
SQL> insert into test1 values(3);
1 row inserted
SQL> insert into test1 values(4);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;
COUNT(*)
----------
4
3.删除test1表,然后在重新创建test1表
SQL> drop table test1;
Table dropped
SQL> create table test1(id number);
Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;
COUNT(*)
----------
1
4.再次删除test1表
SQL> drop table test1;
Table dropped
5.查询回收站信息(此时回收站中有两条test1表的数据)
SQL>select*fromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ --------------------
BIN$Uk69X077TQWqQ0OQ3u1FdQ==$0 TEST1 TABLE
BIN$kpG5ZWdlRUi/jO6X0EYP+A==$0 TEST1 TABLE
5.用flashback恢复表到删除之前的状态
SQL> flashback table test1 to before drop;
Done
SQL> select count(*) from test1;
COUNT(*)
----------
1
此时查看恢复后的test1,发现恢复到最近一次的信息,因此可说明多次删除后,在回收站中会存在多条与test1有关的数据,而用flashback table test1 to before drop命令恢复到的是test1表中最近一次删除的信息
回收站,是一个虚拟的容器,用于存放所有被删除的对象。其实,对于一个对象的删除,数据库仅仅是简单的重命名操作。
数据库参数recyclebin设置为on.(即默认设置)。参数recyclebin为on,则表示把Drop的对象放入回收站。为off,则表示直接删除对象而不放入回收站。
查看recyclebin值命令如:
SQL> show parameter bin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
在系统或会话级别中修改参数recyclebin值的命令为:
SQL>alter system set recyclebin = on|off;
SQL>alter session set recyclebin = on|off;
查看回收站的相关信息视图有:recyclebin/user_recyclebin/dba_recyclebin.
手动清除回收站的信息为:purge recyclebin(或purge table original_name);
删除一张表而不想放入回收站的命令为:drop table table_name purge;
示例1:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
2.创建测试表tab_test,并为该表增加ind_test索引
SQL>createtabletab_testasselect*fromall_objects;
Tablecreated
SQL>createindexind_testontab_test(object_id);
Indexcreated
SQL> select count(*) from tab_test;
COUNT(*)
----------
40699
3。用drop命令删除tab_test表
SQL>droptabletab_test;
Tabledropped
4。查看用户回收站信息,此时会记录删除后的对象在回收站中的相关信息,此时还能正常操作回收站中的对象,但不能操作DDL/DML语句
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0 IND_TEST INDEX
BIN$zFJjV8zFSlqbLecXbDeANQ==$0 TAB_TEST TABLE
SQL>selectcount(*)from"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";
COUNT(*)
----------
40699
SQL>deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0";
deletefrom"BIN$zFJjV8zFSlqbLecXbDeANQ==$0"
ORA-38301:无法对回收站中的对象执行DDL/DML
5.用flashback恢复表到删除之前的状态
SQL>flashbacktabletab_testtobeforedrop;
Done
SQL> select count(*) from tab_test;
COUNT(*)
----------
40699
6.恢复表的索引(此时表中的索引同时也被恢复了,只不过该索引还是保留回收站中的索引名称)
SQL> select index_name from user_indexes where table_name = 'TAB_TEST';
INDEX_NAME
------------------------------
BIN$a+iPOcq+QXiwUT8B3c3QoA==$0
SQL> alter index "BIN$a+iPOcq+QXiwUT8B3c3QoA==$0" rename to ind_test;
Index altered
SQL> select index_name from user_indexes where table_name = 'TAB_TEST';
INDEX_NAME
------------------------------
IND_TEST
示例2:
1.查看用户下回收站的信息,此时回收站为空
SQL>selectOBJECT_NAME,ORIGINAL_NAME,TYPEfromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------- ------
2.创建测试表test1,并输入数据
SQL> create table test1(id number);
Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> insert into test1 values(2);
1 row inserted
SQL> insert into test1 values(3);
1 row inserted
SQL> insert into test1 values(4);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;
COUNT(*)
----------
4
3.删除test1表,然后在重新创建test1表
SQL> drop table test1;
Table dropped
SQL> create table test1(id number);
Table created
SQL> insert into test1 values(1);
1 row inserted
SQL> commit;
Commit complete
SQL> select count(*) from test1;
COUNT(*)
----------
1
4.再次删除test1表
SQL> drop table test1;
Table dropped
5.查询回收站信息(此时回收站中有两条test1表的数据)
SQL>select*fromuser_recyclebin;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ --------------------
BIN$Uk69X077TQWqQ0OQ3u1FdQ==$0 TEST1 TABLE
BIN$kpG5ZWdlRUi/jO6X0EYP+A==$0 TEST1 TABLE
5.用flashback恢复表到删除之前的状态
SQL> flashback table test1 to before drop;
Done
SQL> select count(*) from test1;
COUNT(*)
----------
1
此时查看恢复后的test1,发现恢复到最近一次的信息,因此可说明多次删除后,在回收站中会存在多条与test1有关的数据,而用flashback table test1 to before drop命令恢复到的是test1表中最近一次删除的信息
发表评论
-
【转】ora-02429:无法删除用于强制唯一/主键的索引
2012-04-28 17:02 2127sql>drop tablespace zh inclu ... -
【转】调试存储过程
2011-12-08 16:25 999PL/SQL中为我们提供了调试存储过程的功能,可以帮助你完成存 ... -
oracle中插入特殊字符 '&'
2011-12-07 21:14 1930有这么一条sql insert into tmenu(c_s ... -
Oracle BLOB 字段导入导出问题
2011-08-10 11:44 9399一、案例 假如有t1和t2在表空间tbs1上,其中t1有blo ... -
【转】Oracle优化之旅:使用leading, use_nl, rownum调优例子
2010-12-06 10:22 1915注意:本文章为转帖,只为学习记录。原文链接http://blo ... -
oracle释放表空间的方法
2010-05-10 17:41 4711目前找到的方法始终只有新建一个表空间,alter表空间指向,再 ... -
oracle存储浮点数的一个bug?
2010-04-25 00:05 1256版本10.2.0 balance number(16,8). ... -
整理oracle imp/exp命令参数
2009-10-29 10:31 1623/*----------------------------- ... -
Oracle UNLIMITED TABLESPACE 系统权限的分析
2009-10-14 13:41 0http://warehouse.itpub.net/post ... -
Oracle安装错误解决方案(以9i为例)
2009-09-16 11:58 1262◆1.如果你不能运行./runInstaller ,提示x11 ... -
Oracle RowNum伪列的解析
2009-09-16 11:56 1311其一: 对于rownum来说它是oracle系统顺序分 ... -
SQL查询慢的48个原因
2009-09-01 08:57 946原文地址:[url]http://database.ctoci ... -
Oralce空格函数与TRIM()
2009-08-31 09:30 16171、可以使用LPAD和RPAD在字符串的左边 和右边填补空 ... -
EM 无法启动 && 重新完全配置EM
2009-08-27 19:31 1796公司的电脑改了IP ,于是EM无法启动了 环境:ORACLE ... -
Oracle中Returning语句的几个小问题
2009-08-27 19:20 7266ORACLE的DML语句中可以指定RETURNING语句。RE ... -
Oracle的新特性Recyclebin回收站
2009-08-21 17:23 1527Oracle10g提供了类似操作系统中的回收站功能。当drop ... -
Oracle10g的行,表,数据库级回闪机制
2009-08-21 17:17 2018Oracle10g中,可以在行、 ... -
关于select 1 ,select count(1),select sum(1)的使用
2009-08-18 11:11 12708看到了很有一些很有意思的例子,拿出来分享一下 所有的一切源于一 ... -
Decode函数用法
2009-08-17 10:44 1227decode(条件,值1,返回值1,值2,返回值2,...值n ... -
SQL优化
2009-08-14 13:42 700(1) 选择最有效率的表名顺序(只在基于规则的优化器 ...
相关推荐
文档中详细介绍oracle 闪回删除的表,供大家参考!一起进步
为了使 Oracle 数据库从任何逻辑误操作中迅速地恢复...进行了全面扩展,提供了闪回数据库、闪回删除、闪回表、闪回事物及闪回版本查询等功能,本 文将重点说闪回删除、闪回表的使用。(本文使用oracle 版本10.2.0.3.0)
完整的描述了ORACLE闪回的整个过程,参数和配置开关以及部分注意事项.包含ORACLE中:闪回表、闪回删除、闪回数据库等操作。
oracle 回闪日志 满了 ORA-03113 通信信道结束 进入 rman 删除日志
利用oracle闪回技术恢复数据,在因误操作导致删除数据时,可以进行数据恢复。
Oracle 的表删除后,或表数据删除后,数据找回的方法一览。
可以有效的解决初学者遇到的删除问题。详细介绍了oracle中删除的问题
闪回各种误删除操作:truncate、drop、delete。
oracle闪回操作,闪回表,闪回删除,闪回版本,闪回事务几种类型都介绍到了
oracle通过恢复闪回技术,用来恢复已删除的表或数据。
可在你错误删除、修改数据后,恢复15分钟前的数据,比较实用
利用oracle10g的新特性flashback闪回功能快速恢复oracle中被删除的表
闪回事务查询,闪回查询语句!关于闪回数据归档FBDA等等
一、Oracle闪回概述 闪回级别 闪回场景 闪回技术 对象依赖 影响数据 数据库 表截断、逻辑错误、其他多表意外事件 闪回DATABASE 闪回日志、undo 是 DROP 删除表 闪回DROP 回收站(recyclebin) 是 表 更新、...
Oracle9i Database 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作。唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复,然后使用导出/导入或其他方法,在...
第28章 回闪:表和数据库 第Ⅳ部分 Pl/SQL 第29章 PL/SQL简介 第30章 触发器 第31章 过程、函数与程序包 第32章 使用本地动态SQL和DBMS_SQL 第Ⅴ部分 对象关系数据库 第33章 实现类型、对象视图和方法 第34章 收集器...
对Oracle数据库回滚日志的清理,删除不必要的日志文件。
首先你应该明白闪回删除操作的对象仅仅是表,它允许你将之前删除的表恢复到删除它之前的状态,同时还会恢复所有索引以及任何权限和触发器,的主键和非空约束也会被恢复(注意不包括外键)。 Oracle 10g开始,drop...
2.3.3 手动删除Oracle遗留的成分 2.4 Oracle的应用结构 2.4.1 单磁盘独立主机结构 2.4..2 多磁盘独立主机结构 2.4.3 多数据库独立主机结构 2.4.4 C/S结构 2.4.5 分布式结构 2.5 Oracle网络与防火墙 ...
oracle误删数据恢复。利用ORACLE回闪功能时间点克查询删除前的数据,如何恢复就看自己了哈