flashback drop(2015-2-3学习日记)
知识面是由知识点组成的,你在研究某一个知识点的时候常常会遇到另一个知识点,然后你去研究那个知识点,又会带出更多的知识点,最终组成了知识面。
今天在看书的时候看到一个删除表的语句:
DROP TABLE AAA CASCADE CONSTRAINTS PURGE;
平时自己删除表,用的仅仅是DROP TABLE TABLENAME,后边从来没加过这几个参数,感觉好奇就找了几个资料研究了一番。
先说参数 CASCADE CONSTRAINTS
抄袭开始:
----------------------------------------------------------------------------
关于 cascade constraints
假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键)。
则当删除A表时,如不特殊说明,则 drop table A 系统会出现错误警告的讯息而不会允许执行。
此时必须用,drop table A cascade constraints;
SQL> select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where owner = 'SYS' and TABLE_NAME = 'B'
no rows selected
我们可以发现利用Drop table cascade constraints可以刪除从表的constraint來达成你drop table t的目的,原來属于B的foreign key constraint已经跟随着被删除掉了,但是,储存在table B中的资料不会被删除,也就是说Drop table cascade constraints 是不影响到存储于objec里的row data。
--------------------------------------------------------------------------------------------------------------------------
再说参数 PURGE
这个参数比较有意思,看了几篇文章才搞明白。
参考文章:
DROP TABLE ** CASCADE CONSTRAINTS PURGE
浅谈Oracle闪回删除表限制
========================【拿来主义】========================
Oracle从10G开始支持DDL语句闪回,免去了之前误删除(DROP)表后恢复起来很困难的麻烦。9i版本恢复误删除的表很困难,具体怎么困难,我不知道。但是,10G后恢复就很简单了,那就是Oracle提供了flashback drop新特性。
使用flashback drop功能的注意事项(一下情况不能使用次功能):
1:表的存储表空间不能为system
2: 表被删除的时候不能带purge参数
3:存在空间压力的时候
4:表上面启用了细粒度审计
5:表启用了VPD
(题外话:这个4和5对我来说又是新的知识点,哎,抽时间再研究吧。)
开启回收站功能:
SQL> show parameter recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
实验测试flashback drop功能:
创建表AAA:
SQL> create table aaa (name varchar2(20));
Table created
向表AAA插入数据:
SQL> insert into aaa values ('1234');
1 row inserted
SQL> insert into aaa values ('1234');
1 row inserted
查询数据:
SQL> select * from aaa;
NAME
--------------------
1234
1234
查询user_recyclebin中有没有关于AAA的记录:
SQL> select * from user_recyclebin where original_name ='AAA';
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
(没有数据)
删除AAA:
SQL> drop table aaa;
Table dropped
SQL> select * from user_recyclebin where original_name ='AAA';
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
BIN$ljh1zkU8SUqaTs8kGHS6mg==$0 AAA DROP TABLE TS_FPZX_DAT 2015-02-03:16:50:10 2015-02-03:16:51:05 29344784 YES YES 94499 94499 94499 8
再次查询表(已经被删除)
SQL> select * from aaa;
select * from aaa
ORA-00942: 表或视图不存在
再次建立表AAA:
SQL> create table aaa (name varchar2(20));
Table created
插入数据:
SQL> insert into aaa values ('abcd');
1 row inserted
SQL> insert into aaa values ('abcd');
1 row inserted
不查询了,直接删除吧:
SQL> drop table aaa;
Table dropped
再次查询变化:
SQL> select OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE,CREATETIME,DROPTIME from user_recyclebin where original_name ='AAA';
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE CREATETIME DROPTIME
------------------------------ ------------- --------- --------- ----------------- -----------------
BIN$ljh1zkU8SUqaTs8kGHS6mg==$0 AAA DROP TABLE 2015-02-03:16:50:10 2015-02-03:16:51:05
BIN$pk7Yt+SeRhOpF7UvsMuTrg==$0 AAA DROP TABLE 2015-02-03:16:52:04 2015-02-03:16:52:20
此时user_recyclebin中有两条关于AAA的记录,我们此时要是用语句恢复数据的话,恢复的是第二次删除的表中的数据:
SQL> flashback table aaa to before drop;
Done
查询数据:
SQL> select * from aaa;
NAME
--------------------
abcd
abcd
此时user_recyclebin 表中只剩一条数据了,这个数据中的表AAA,保存的就是第一张表里边的‘1234’的数据。我们来还原它的话需要另命名,因为已经恢复了AAA:
SQL> select OBJECT_NAME,ORIGINAL_NAME,OPERATION,TYPE,CREATETIME,DROPTIME from user_recyclebin where original_name ='AAA';
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE CREATETIME DROPTIME
------------------------------ ------------- --------- --------- ----------------- -----------------
BIN$ljh1zkU8SUqaTs8kGHS6mg==$0 AAA DROP TABLE 2015-02-03:16:50:10 2015-02-03:16:51:05
闪回第一张AAA,加上rename关键字:
SQL> flashback table aaa to before drop rename to AAA2;
Done
查询数据:
SQL> select * from aaa2;
NAME
--------------------
1234
1234
另:
>>>>>>PURGE TABLESPACE USER SCOTT; //清除特定表空间特定用户的回收站
>>>>>>PURGE DBA_RECYCLEBIN; //清除任何表空间中的所有对象
转载于:https://blog.51cto.com/xiaoliutolaoliu/1611200
flashback drop(2015-2-3学习日记)相关推荐
- oracle 学习笔记 Flashback drop
Flashback drop支持对删除的表进行闪回恢复.它的原理是利用回收站恢复已DROP掉的表. 转载于:https://blog.51cto.com/hunt1574/885717
- 微信开发学习日记(一):快速阅读5本书,掌握整体背景
2015年1月开始学习微信开发. 已经有多年开发经验了,从网上文章来看,微信开发主要是接口,然后是业务逻辑,不是很难.所以,我比较强调学习效率.一天学一点,是不能满足我的快速学习欲望的. ...
- 小菜鸟的C++游戏编程学习日记(一)
小菜鸟的C++游戏编程学习日记(一) 作者:杨帆参考书籍:Beginning Game ProGramming(中文版)学习时间:2016.7.26 以下附所敲源代码与部分注释: //编译环境 vis ...
- 爬虫学习日记1-豆瓣top250电影信息爬取
@ 爬虫学习日记1-豆瓣top250电影信息爬去 学习任务:结合requests.re两者的内容爬取https://movie.douban.com/top250里的内容, 要求抓取名次.影片名称.年 ...
- informatica 学习日记整理(转)
1. INFORMATICA CLIENT的使用 1.1 Repository Manager 的使用 1.1.1 创建Repository. 前提: a. 在ODBC数据源管理器中新建一个数据源连接 ...
- 【学习日记】手写数字识别及神经网络基本模型
2021.10.7 [学习日记]手写数字识别及神经网络基本模型 1 概述 张量(tensor)是数字的容器,是矩阵向任意维度的推广,其维度称为轴(axis).深度学习的本质是对张量做各种运算处理,其分 ...
- Python学习日记-pandas操作学习
Python学习日记-pandas模块学习 根据需求筛选数据 绘制柱状图-利用pandas绘制 绘制柱状图-利用matplotlib绘制 绘制柱状图-两组数据比较 绘制柱状图-叠加柱状图 绘制饼状图 ...
- Oracle10g的flashback drop
在以往的版本中,除了不完全恢复,通常没有一个好的解决办法.目前,Oracle10g为了加快用户错误操作的恢复,提供了flashback drop新特性. flashback drop功能可以允许你从当 ...
- java的圆周率_java学习日记,圆周率的打印
前段时间看到听说学习java每天写技术贴会对自己提升很大,我现在学习java也就2个周,算不上技术贴,就写写学习日记吧. 昨天师傅给我出了一道题,说是试试用java打印圆周率. 刚开始我的思路是,如果 ...
- GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考
GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考 标签: cuda存储线程结构网格 2012-12-07 16:30 6298人阅读 评论(4)收藏 举 ...
最新文章
- 自己搭建自动化巡检系统(五) 抖动告警
- python单词统计、给定一个段落()_数训营第一课笔记:Python基础知识
- asp.net 调用带证书的webservice解决办法
- DCMTK:DIMSE状态代码和类的测试程序
- PLSQL查询字段为科学计数法,修正显示
- Java 1.4 大数值问题
- 观点 | 2017,区块链与加密货币“追逐者”玩命的一年
- mysql 内置存储过程_mysql 内置存储过程
- jquery生成二维码图片
- Sql server 分解字符串(实现split)
- STM32F1移植UCOSII
- 别人回答工作中的问题,要自行判断是否正确
- day02.2-常用Linux命令整理
- noip2013提高组初赛(答案+选择题题目+个人分析)
- 外卖侠使用教程【干货】
- 社交电商源码-带直播电商功能-可DIY前端
- bcnf分解算法_BCNF的保持无损连接的分解
- 前端实习周记07(毕业论文开题了。。。欧耶。。。欧耶。。。耶。。。)
- 语音识别软件_语音识别 软件_日语语音识别软件 - 云+社区 - 腾讯云
- 【开发问题】Android——Fragment must be a public static class to be properly recreated from instanc
热门文章
- php颜色淡入代码,JavaScript_jquery 淡入淡出效果的简单实现,样式:复制代码 代码如下:nbsp - phpStudy...
- python老齐_python-basic
- 数据分析中会常犯哪些错误,如何解决? 三
- 无法访问 请与这台计算机,我们办公室两台电脑想连接一个共享的打印机,但是连接的时候,总是显示无法访问,请与这台计算机的管理员联系,应该怎么设置啊...
- ios上java代码实现_IOS学习之路五(代码实现UITableView)
- linux开机进入不了系统安装软件,揭秘linux系统启动流程,面试官问起来再也不怕了...
- [网络流24题] 试题库问题
- C语言 第六章 多重循环练习
- 有一定的php基础,求推荐PHP框架,本人有一定PHP基础。
- CAS(Compare And Swap) 详解