加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle数据库的回收站的使用

发布时间:2020-12-12 14:13:56 所属栏目:百科 来源:网络整理
导读:还好oracle 有回收站,不然这次就死翘翘了。长点姿势。 回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存
VersionParameter NameData TypeSession ModifiableSystem Modifiable 10.2.0 recyclebin String TRUE IMMEDIATE 11.1.0 recyclebin String TRUE DEFERRED

从文档上我们可以看到这个变化说明,到了11g中,这个参数在session依然可以理解修改并影响当前的session,但如果是在系统一级修改的话,那么就要加deferred参数,对当前已经连接的sesion没有影响,但新连接的session将受到影响。

SQL> select name,isses_modifiable,issys_modifiable from v$parameter where name='recyclebin';

NAME        ISSES_MODIFIABLE ISSYS_MODIFIABLE
----------- ---------------- ----------------
recyclebin  TRUE             DEFERRED

11g中,要修改系统一级的 recyclebin则需要加 DEFERRED 参数

可以看到,在system一级,不加DEFERRED参数是不允许修改的,但在session一级可以修改.
SQL> alter system set recyclebin=off DEFERRED;
System altered

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

还好oracle 有回收站,不然这次就死翘翘了。长点姿势。

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

在Oracle 10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。

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

对于oracle数据库,为了保证数据的安全性,我们需要设置好数据库的回收站功能,默认这个功能是开启的。我们可以通过以下步骤进行查看和修改。

1, 查看数据库是否设置了数据库的回收站(recyclebin功能)

show parameter recyclebin;
show parameter recyclebin;
SQL> show parameter recyclebin;
 
NAME                                 TYPE        VALUE
------------------------------------ -----------  
recyclebin                           string      on

2, 如果这个value是on则表示已经开启的回收站功能,如果是off状态,则我们需要通过命令开启数据库的回收站功能

开启和关闭recyclebin的命令
开启reclebin命令
查看状态

SQL> show parameter recyclebin;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      OFF

修改会on状态,需要注意的是要指定scope=spfile,因为这个参数是不能再内存中修改的,也有10g和11g的差别需要使用不同的参数

SQL> alter system set recyclebin=on scope=spfile;
 
System altered

开启后需要重启数据库才生效

SQL> shutdown

SQL> startup

3, 清除回收站的数据

清空回收站里面的所有数据

SQL> purge recyclebin;

清空回收站里面的具体的一个表

SQL> purge table dept;

4, 数据还原功能(最重要的),开启数据库的回收站功能就是防止误删除,可以进行数据的回收

(还原是需要注意是那个用户(schema))

直接恢复被删除的BONUS表,恢复到删除时前

SQL> flashback table BONUS to before drop;

这种以示恢复时重新命名

-- 重命名的方式进行数据的还原
flashback table SALGRADE to before drop  rename to SALGRADE_bak;
-- 修改数据库中的表名
alter table SALGRADE_bak rename to SALGRADE

10g一些命令

SELECT Value FROM V$parameter WHERE Name = 'recyclebin'; 
ALTER SYSTEM SET recyclebin = ON;
ALTER SYSTEM SET recyclebin = OFF; 
ALTER SESSION SET recyclebin = ON; 
ALTER SESSION SET recyclebin = OFF
-- 分别是session级别和system级别

11g相关资料

在Oracle 11g中,recyclebin参数发生了微小的变化.
This supported parameter was introduced in Oracle 10.2.0

    推荐文章
      热点阅读