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的命令 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参数发生了微小的变化. |