如何批量删除oracle数据库中表?

如何批量删除oracle数据库中表?,第1张

先写一个sql文件,比如叫del_tables.sql,在sql文件里写DROP

TABLE的命令(DROP的内容根据你的需要,可以是单独的多个DROP

TABLE指令,也可能是从USER_TABLES里查询出若干表名),然后bat文件里写

sqlplus

用户名/密码@库名

@del_tables.sql

如果sql文件的内容需要帮助写,那请你给出你要删除的表名,或者表名的规律,比如TEMP为开头的所有表。

下面一段示例说明了oracle的基本 *** 作insert、update、delete产生的undo的大小和记录条数

--insert *** 作无论是1条或者多条,一次产生一条undo数据

SQL>create table a (b number, c varchar2(30))

Table created

SQL>insert into a values (1,'zhangsan')

1 row inserted

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

---------- ----------

1 1

SQL>insert into a select rownum,rownum from dual connect by rownum<=50

50 rows inserted

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

---------- ----------

1 2

--delete *** 作产生的undo条数取决于delete *** 作本身影响的记录数SQL>delete from a

51 rows deleted

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

---------- ----------

1 53

SQL>insert into a select rownum,rownum from dual connect by rownum<=50

50 rows inserted

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

---------- ----------

1 54

--update *** 作产生的undo条数取决于被update的数据的原值和新值存在差异的记录数量

SQL>update a set c=rownum

50 rows updated

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

---------- ----------

2 57

SQL>update a set c=rownum+1000

50 rows updated

SQL>

SQL>select used_ublk,used_urec from v$session s, v$transaction t

2 where s.audsid=sys_context('userenv', 'sessionid') and s.taddr = t.addr

USED_UBLK USED_UREC

如果是全表删除可以用truncate;

让然也可以把表结构复制出来,然后drop,在执行一次刚刚复制出来的ddl语句重建表就好了

如果是分区表,那么可以直接对分区进行truncate和drop *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10865386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存