oracle数据库中drop table与purge使用实例
2012-03-22 13:03:06     我来说两句 
收藏    我要投稿    [字体:小大]
oracle 数据库中 drop table 与purge
 
 
实际示例:
 
CREATE OR REPLACE PROCEDURE pro_droptable IS
truncatedelete和drop的区别 
  cursor cur is
 
    selecttable_name from user_tables where table_name like 'TEMPTABLE%';
 
  drop_sql    varchar2(1000);
 
  table_number number;
 
BEGIN
 
  SELECT COUNT(*) INTO table_number from USER_TABLES WHERE TABLE_NAME LIKE 'TEM%';
 
  fortbname in cur loop
 
    begin
 
      iftable_number< 50 then
 
        exit;
 
      end if;
 
      drop_sql := 'drop table ' || tbname.table_name || 'purge';
 
      execute immediate drop_sql;
 
      table_number := table_number - 1;
 
   
 
    end;
 
  end loop;
 
END pro_droptable;
 
解释:
 
drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。 
1.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句 
flashback table <user_recyclebin.object_name or iginal_name> to before drop [rename to <new_table_name>]; 
将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。 
若要彻底删除表,则使用语句:drop table <table_name> purge; 
2.清除回收站里的信息 
清除指定表:purge table <table_name>; 
清除当前用户的回收站:purgerecyclebin; 
清除所有用户的回收站:purgedba_recyclebin; 
示例2:
 
CREATE OR REPLACE PROCEDURE pro_clean_recycle IS
 
--tmpVar NUMBER;
 
clean_recycle_sqlvarchar2(1000);
 
BEGIN
 
   --purge recyclebin;
 
   clean_recycle_sql :='purge recyclebin';
 
   execute immediate clean_recycle_sql;
 
END pro_clean_recycle;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。