数据中心清理vt临时表

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

数据中心清理vt临时表

解决方案:

【Oracle数据库】

1. 停止所有实例

管理控制台——群集控制器 界面,可以停止所有实例,或者在管理控制台——应用服务器 界面一个一个停止实例,直到所有实例停止。

2. 连接EAS数据库实例

例如,通过命令行sqlplus连接数据库:打开cmd命令窗口,输入sqlplus 用户名/密码@数据库实例名

或是通过PL/SQL developer软件连上Oracle数据库

3. 执行下面查询语句,先查出哪些表,看看这些表能不能删,如果查询出来的都是临时表,再执行上面的删除语句

(所谓的临时表,就是表名以VT开头,表名包含一大串数字和字母,类似这种表名VTOS8TE3N61US0XKTFY68GNT2)

select * from user_tables wheretablespace_name='原EAS数据表空间名(存有VT开头的临时表)'  AND table_name LIKE 'VT%';

4.如果确认查询出的表都是临时表,则执行下面语句(表空间名换成现场的表空间)

spool d:\dop_temp_table.sql

select 'drop table eas用户名.'||table_name||' purge;' as"--drop temptable"

   from user_tables

   where tablespace_name='原EAS数据表空间名(存有VT开头的临时表)'  

and table_name like 'VT%';

spool off

5.对在D盘生成的dop_table.sql文件进行编辑,去掉不必要的部分(原则上都要),只留下drop table …  purge;  语句

6. 编辑完dop_table.sql后,执行该sql文件

@d:\dop_temp_table.sql

方法二:
Oracle环境可以使用下面的脚本直接操作:
declare
       cursor c_droptemptable
       is select table_name
            from user_tables 
           WHERE table_name like 'VT%'              
             and user_tables.TABLESPACE_NAME='EAS_D_EAS75_STANDARD'    
               --EAS_D_EAS75_STANDARD为存放VT临时表的表空间名称,现场需要修改
             --默认一次删除1W个,如果超过此数量,可重复执行直到全部删除VT表为止
             and rownum<=10000;
       c_row c_droptemptable%rowtype;
begin
       for c_row in c_droptemptable loop
         dbms_output.put_line('drop table '||c_row.table_name||' purge;');
         execute immediate 'drop table '||c_row.table_name||' purge' ;
       end loop;
end;

【Sqlserver数据库】

--定义游标删除VT表

declare c1 cursor for select name from sysobjects where name like 'VT%';

open c1;

declare @table_name varchar(100);

DECLARE @SQLString NVARCHAR(500)

fetch c1 into @table_name

while(@@fetch_status=0)

begin

SET @SQLString = N'drop table ' + @table_name

EXEC(@SQLString)

fetch next from c1 into @table_name;

end

close c1;

deallocate c1;

数据中心清理vt临时表

解决方案:【Oracle数据库】1. 停止所有实例管理控制台——群集控制器 界面,可以停止所有实例,或者在管理控制台——应用服务器 界面一个...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息