ORACLE 回收站当前状态查询整理

时间:2023-07-14 09:23:01 

回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。

在Oracle 10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。
回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。数据库有了这样的功能,能够减少很多不必要的麻烦。
如果一个表被删除,那么与该表有关联的对象,例如索引、约束和其他依赖对象都会在前面加bin$$这个前缀。

启动和关闭
你可以使用下面的查询语句来查看回收站的当前状态:

1.SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
如果返回值为“on”表明回收站是启动的,“off”表明是关闭的。
当然,你可以启动或者关闭回收站里的每个会话(session)和系统(system),代码如下:


ALTER SYSTEM SET recyclebin = ON;
ALTER SESSION SET recyclebin = ON;
ALTER SYSTEM SET recyclebin = OFF;
ALTER SESSION SET recyclebin = OFF;


获取回收站里的内容
你可以使用下面的任意一个语句来获得回收站中的对象:


SELECT * FROM RECYCLEBIN;
SELECT * FROM USER_RECYCLEBIN;
SELECT * FROM DBA_RECYCLEBIN;


还原
可以使用如下语法来还原被删除的对象:


FLASHBACK TABLE <<Dropped_Table_Name>> TO BEFORE DROP RENAME TO <<New_Table_Name>>;


备注:这里的RENAME是给删除的对象进行重新命名,是一个可选命令。
清空回收站
这里的清空包含两种情况,第一你可以有条件的清空;第二是全部清空。我们先来看看有条件的清空该如何做:
a.清空一个特定的表:


PURGE TABLE <<Table_NAME>>;


b.清空一个特定的索引:


PURGE INDEX <<Index_NAME>>;


c.清空与该表空间有关联的对象:


PURGE TABLESPACE<<Table_NAME>>;


d.清空一个特定用户的表空间对象:


PURGE TABLESPACE<<Table_NAME>> USER <<User_Name>>;


e.清空回收站:


PURGE RECYCLEBIN;


f.当一个表被删除(drop)时就直接从回收站中清空


DROP TABLE <<Table_Name>> PURGE;


Demo
1.启动回收站功能


ALTER SYSTEM SET recyclebin = ON;


2.创建一个DEMO_RECYCLEBIN表


CREATE TABLE DEMO_RECYCLEBIN (COL1 NUMBER);


3.向DEMO_RECYCLEBIN表中插入一条数据


INSERT INTO DEMO_RECYCLEBIN (COL1) VALUES (1); COMMIT;


4.删除(Drop)DEMO_RECYCLEBIN表


DROP TABLE DEMO_RECYCLEBIN;


5.查询


SELECT * FROM USER_RECYCLEBIN;


结果:
6.从回收站中还原DEMO_RECYCLEBIN表


FLASHBACK TABLE DEMO_RECYCLEBIN TO BEFORE DROP;


7.还原后查询


SELECT * FROM DEMO_RECYCLEBIN;


查询结果和删除前是一致的。
8.删除表,并且将其从回收站中清空


DROP TABLE DEMO_RECYCLEBIN PURGE;
标签:回收站,当前状态
0
投稿

猜你喜欢

  • pandas 实现将NaN转换为None

    2023-01-23 21:23:09
  • Dreamweaver使用技巧--让css使网页图片半透明

    2010-09-05 21:13:00
  • js replace()去除代码中空格的实例

    2024-04-29 13:36:26
  • python3中dict(字典)的使用方法示例

    2022-06-14 11:44:39
  • python列表每个元素同增同减和列表元素去空格的实例

    2022-11-04 21:15:34
  • js+css实现有立体感的按钮式文字竖排菜单效果

    2024-04-22 13:09:42
  • python rsync服务器之间文件夹同步脚本

    2023-02-23 05:05:56
  • python实现递归查找某个路径下所有文件中的中文字符

    2021-12-11 09:13:18
  • pycharm打开命令行或Terminal的方法

    2022-12-11 07:07:08
  • 使用Python3中的gettext模块翻译Python源码以支持多语言

    2022-10-17 21:36:07
  • Pytorch中的backward()多个loss函数用法

    2023-11-12 00:19:21
  • OpenCV图像缩放resize各种插值方式的比较实现

    2023-03-18 13:31:45
  • go 判断两个 slice/struct/map 是否相等的实例

    2023-07-24 03:42:19
  • InnoDB的关键特性-插入缓存,两次写,自适应hash索引详解

    2024-01-18 01:28:23
  • 对acronym、abbr标签的理解

    2008-05-29 13:03:00
  • SQL语句删除2条重复数据一条保留一条

    2024-01-26 12:16:39
  • 一文带你了解Go语言标准库math和rand的常用函数

    2024-02-22 07:24:24
  • 一篇文章入门Python生态系统(Python新手入门指导)

    2023-11-03 01:12:00
  • ORACLE 常用的SQL语法和数据对象

    2009-02-26 10:58:00
  • Python3实现英文字母转换哥特式字体实例代码

    2023-08-04 10:28:11
  • asp之家 网络编程 m.aspxhome.com