数据中心清理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临时表
本文2024-09-22 20:22:42发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113244.html