Oracle回收站使用全攻略
Oracle 全攻略 回收站 使用
2023-09-11 14:20:17 时间
摘要:回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。
在Oracle 10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。
回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。数据库有了这样的功能,能够减少很多不必要的麻烦。
如果一个表被删除,那么与该表有关联的对象,例如索引、约束和其他依赖对象都会在前面加bin$$这个前缀。
启动和关闭
你可以使用下面的查询语句来查看回收站的当前状态:
- 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;
还原
可以使用如下语法来还原被删除的对象:
- view sourceprint?1 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;
- 转载:http://www.csdn.net/article/2012-12-05/2812471-Oracle-Recycle-Bin
相关文章
- Oracle数据库导出整个Oracle数据库和导入整个oracle数据库命令
- 一则> ORA-00936: missing expression 错误的排查处理 SQL中的中括号对应ORACLE中的双引号
- Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习
- Oracle数据库:oracle执行计划性能代价cost,全表扫描速度慢,索引扫描速度快
- Oracle数据库:oracle数据定义语言DDL,查询表、序列、索引、视图、创建表,修改表的列alter,rename to,删除表数据truncate和表drop
- Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+)
- Oracle数据库:啥是oracle数据库?你为啥要学oracle?
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
- 基于Oracle plsql的多线程编程架构 (附存储过程)
- 通过跳板机访问oracle
- mysql,sql server,oracle 唯一索引字段是否允许出现多个 null 值?
- oracle函数 TRIM(c1 from c2)
- Oracle数据库之多表查询一
- Oracle 12.2新特性掌上手册 - 第五卷 RAC and Grid
- oracle 内存结构 share pool sql解析的过程
- [Oracle]包含了MVIEW的表领域,在进行导出,表领域改名,再导入后,MVIEW会消失不见。
- 英语linux+英语firefox+英语Oracle OEM如何设置成显示日语
- oracle 切换ORACLE_SID cat /u02/oracle/product/11.2.0/network/admin/tnsnames.ora cd /u02/oracle/product/11.2.0/dbs
- Oracle 自己主动内存參数依赖性
- ORACLE触发器具体解释
- Oracle 客户端管理软件安装
- Oracle 基础系列之1.1 oracle的安装
- MyBatis+Oracle时出现的错误: Method oracle/jdbc/driver/OracleResultSetImpl.isClosed()Z is abstract