oracle数据库的回收站的使用

前端之家收集整理的这篇文章主要介绍了oracle数据库的回收站的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

还好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

Version Parameter Name Data Type Session Modifiable System 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
原文链接:https://www.f2er.com/oracle/206908.html

猜你在找的Oracle相关文章