oracle数据库的回收站,oracle回收站
对于oracle数据库,为了保证数据的安全性,我们需要设置好数据库的回收站功能,默认这个功能是开启的。我们可以通过以下步骤进行查看和修改
1 查看数据库是否设置了数据库的回收站(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,因为这个参数是不能再内存中修改的
SQL> alter system set recyclebin=on scope=spfile;
System altered
状态已经修改,我们需要重启数据库使得参数生效
SQL> alter system set recyclebin=on scope=spfile;
System altered
3 关闭数据库的回收站功能(因为修改的是spfile,需要重启数据库才会生效)
SQL> alter system set recyclebin=on scope=spfile;
System altered
4 清空回收站里面的数据
清空回收站里面的所有数据
SQL> purge recyclebin;
Done
清空具体的一个表
SQL> purge table dept;
Done
5 数据还原功能(最重要的),开启数据库的回收站功能就是防止误删除,可以进行数据的回收
flashback table BONUS to before drop;
重命名的方式进行数据的还原
flashback table SALGRADE to before drop rename to SALGRADE_bak;
修改数据库中的表名
alter table SALGRADE_bak rename to SALGRADE
1、看用户的表的信息如同marliuang所说,不再赘述。当然了你用A登录后也可以用命令(select tname from tab;)查看。
2、显示乱码是因为oracle中的回收站(recyclebin)的缘故,为了防止用户误删除,oracle引入了回收站这一概念,你可以使用命令:purge recyclebin;(用户A登录)或者purge dbarecyclebin;(dba用户登录)这样就看不到这个表了。当然了你在删除表的时候直接写“drop table tablename purge;” 也是一样的。
不知道的oracle数据表是drop 掉是还是其他,如果是drop可以通过如下恢复:
1. select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;
2. flashback table TAB_test to before drop;
如果是删除数据的可以通过scn来恢复。