在Oracle10g 中新增加了RECYCLE BIN功能,由於我才入门有很多不懂得地方,还劳烦各位大哥大姐赐教! 1、如何在DROP 一个表的时候不让它进回收站(RECYCLE BIN)而直接被删除?
2、RECYCLE BIN 有没有大小的限制,有的话怎么查看和设置RECYCLE BIN的大小?
3、查看表空间大小时,是不是只有具有DBA权限才能查看?
劳烦各位大哥大姐赐教!(最好附上测试图片)谢谢!
2、RECYCLE BIN 有没有大小的限制,有的话怎么查看和设置RECYCLE BIN的大小?
3、查看表空间大小时,是不是只有具有DBA权限才能查看?
劳烦各位大哥大姐赐教!(最好附上测试图片)谢谢!
同意一楼,增加一个purge
drop table sometable purge;
另外一个方法是在sqlplus下,drop table前先执行一个sqlplus语句
ALTER SESSION SET RECYCLEBIN=OFF;
这样drop table不用purge也能彻底删除了问题二
recyclebin有大小的限制,其限制就是所在表空间的大小,也就是删除的表并没有从表空间中删除,还保留了下来,只不过变了个名字。但是recyclebin中的空间对于oracle来说是自由的空间,也就是说当表空间不足时,Oracle会自动将recyclebin中最先进入数据删除,为正常的数据让地方。问题二,看表空间大小只要能够查询dba_tablespaces,dba_segments,dba_free_space等表空是即可,不用有dba权限,只要有select any dictionary权限即可。下面是一个查看表空间大小的sql语句,供楼主参考COLUMN "Tablespace" format a13
COLUMN "Used MB" format 99,999,999
COLUMN "Free MB" format 99,999,999
COLUMN "Total MB" format 99,999,999SELECT fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
ROUND (100 * (fs.freespace / df.totalspace)) "Pct. Free"
FROM (SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024)
totalspace
FROM dba_data_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, ROUND (SUM (BYTES) / 1024 / 1024) freespace
FROM dba_free_space
GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name;