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 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)