Oracle相关文档,希望互相学习, 共同进步


1.概述

回收站的全称叫: Tablespace Recycle Bin

Oracle回收站是一个逻辑区域, Oracle并没有为它分配物理空间 。当表被drop后,如果回收站中空间够用的话,表并没有被立即删除,Oracle会给表加上一个被删除的标记。只有当回收站空间不足,或者手动清理回收站,这些被删除的表才会被彻底删除。所以误删除后,可以用闪回技术还原被删除的表。

2. 实验

2.1 准备测试用户、表

准备测试用户:1)查询表空间

2)创建用户  nh_test

准备测试表:nh_test.test

相关命令:

sqlplus / as sysdba
alter session set container=xxx;
#查询表空间、查询配置文件及限制
select * from dba_tablespaces;
select * from dba_profiles;
#创建用户 nh_test 
create user nh_test identified by test1102  
default tablespace nh_cdt_data
temporary tablespace temp
profile default;
grant connect,resource to nh_test;
alter user nh_test default tablespace ny_data;
alter user nh_test quota 10m on ny_data

#创建表
create table test(a1 varchar2(5), a2 varchar2(10));

2.2 查询回收站状态

从Oracle 10g版本开始,回收站功能默认是 开启 的,其作用类似于Windows的回收站,用于存储被删除的对象,如表、索引、约束、触发器等,以便在需要时进行恢复‌。

dba用户登录,查询是否开启

命令:

如果没有开启, 系统级别 开启: ALTER SYSTEM SET  recyclebin = on;

如果需要禁用, 系统级别 命令: ALTER SYSTEM SET  recyclebin = off;

以上为系统级别开启、关闭。

回话级别开启:ALTER SESSION SET RECYCLEBIN=on;

回话级别关闭:ALTER SESSION SET RECYCLEBIN=OFF;

‌关闭回收站后的 影响

1)Oracle回收站关闭后,用户删除的对象将不会被放入回收站,而是直接从数据库中删除。这意味着一旦误删数据,将无法通过回收站进行恢复‌。

2)由于回收站中的数据仍然占用空间,关闭回收站可以减少这部分空间的占用。然而一旦误删数据,恢复的难度增加‌。

set linesize 200;
show parameter recyclebin;  #查看回收站开启状态,on 是开启的 off是关闭的
或者:
set linesize 200;
select name,value from v$parameter where name='recyclebin';

结果截图:

2.3 drop表后 查询回收站

1)创建表,插入数据,查询

#创建表
create table aaa(a1 varchar2(5), a2 varchar2(10));
insert into aaa values('1','1111');
commit;
select * from aaa;

2)删除表 drop table

drop table aaa;

3)查询回收站 recyclebin

查看:recyclebin、user_recyclebin、dba_recyclebin 三个同义词
recyclebin、user_recyclebin 相同:查看回收站中 当前用户 的对象。

dba_recyclebin:查看 所有回收站的对象 ,需要dba角色或相应权限才能访问该视图。

SELECT * FROM user_recyclebin;

2.4 闪回 恢复表

-- 从回收站中恢复被删除的表
FLASHBACK  TABLE  aaa TO BEFORE DROP;

执行后,发现表又恢复了。注意:此时再查回收站就没有该对象了。

说明:假如drop掉一个表test,再新建一个表test,然后再drop.那么flashback table test  to before drop只能 还原最后 被drop掉的表test.最先drop掉的表还原时会出错,因为表名不能重名.所以必须改名flashback table test  to before drop rename to test2。

恢复成功:ok

2.5 清空回收站 或 清空回收站中指定的表

PURGE TABLE aaa;        --清空回收站中指定表,清后无法从回收站恢复
PURGE RECYCLEBIN;   --清空当前用户的回收站


项目管理--相关知识


Oracle其他文档,希望互相学习, 共同进步