1安裝設定
2單獨執行
3設定排程,定時執行
4使用資料庫工具檢查暫存表是否已被刪除
1安装设定
以tiptop账号登入TIPTOP GP主机
将drop_ds_report_temptable.4gl复制到$DS4GL/bin目录下
切到$DS4GL/bin目录下,编译档案
l连结档案,产生drop_ds_report_temptable.42r档
2单独执行
以tiptop账号登入TIPTOP GP主机
cd $DS4GL/bin
$FGLRUN drop_ds_report_temptable 1
参数说明: 1代表1天前所产生的Temp Table
若今天为 2008/9/19, 则此指令会将 2008/9/17以前所产生的Temp Table删除, 只留下 2008/9/18以后产生的Temp Table。若不输入参数,则预设使用1天前。
3设定排程,定时执行
以tiptop账号登入TIPTOP主机
输入crontab –e 对crontab进行编辑
加入
按[ESC]后,输入 :wq 存档后离开。
说明: /u2/topprod为TIPTOP正式区目录;/u2/toptest为TIPTOP测试区目录;/u2/topstd为TIPTOP标准区目录,这三个目录需视实际安装情况而必须加以修改。
4检查暂存表是否已被删除
Oracle:
以tiptop账号登入TIPTOP主机
执行 sqlplus ds_report@$ORACLE_SID
在sqlplus中下
若结果为0 代表一天前的暂存表已经全部被删除
Informix:
以tiptop账号登入TIPTOP主机
执行 dbaccess ds_report
在dbaccess中的Query Language中下
若结果为0 代表一天前的暂存表已经全部被删除
附 drop_ds_report_temptable.4gl 代码:
##################################################
# Description : Drop ds_report Temp tables (1 day ago)
# Date & Author : 2008/09/11 by jacklai
# Parameter : l_interval1 (days)
# Return : none
# Usage : $FGLRUN drop_ds_report_temptable 1
# Modify : No:FUN-880111 08/09/11 By jacklai Drop ds_report Temp tables (1 day ago)
# Modify : No:TQC-890062 08/09/30 By jacklai タOracle 10g 穦秨币recycle bin诀τ旧璓祘Α磅︽い耞
##################################################
DATABASE ds
MAIN
DEFINE l_dbtype STRING
DEFINE l_sql STRING
DEFINE l_dropsql STRING
DEFINE l_rec RECORD
l_tablename VARCHAR(128),
l_created DATE
END RECORD
DEFINE l_interval1 INTERVAL DAY(5) TO DAY
DEFINE l_interval2 INTERVAL DAY(5) TO DAY
DEFINE l_version VARCHAR(128) #No:TQC-890062
DEFINE l_tok base.StringTokenizer #No:TQC-890062
DEFINE l_vermaj INTEGER #No:TQC-890062
DEFINE l_RecycleOff STRING #No:TQC-890062
WHENEVER ERROR CONTINUE #No:TQC-890062
CLOSE DATABASE
DATABASE ds_report
#command line argument[1]: days (default: 1)
IF NUM_ARGS() >= 1 THEN
LET l_interval1 = ARG_VAL(1)
ELSE
LET l_interval1 = "1"
END IF
#get information of tables from database
LET l_dbtype = DB_GET_DATABASE_TYPE()
CASE l_dbtype
WHEN "ORA"
#No:TQC-890062 --start--
#Get Oracle version
PREPARE pre0 FROM "SELECT VERSION FROM PRODUCT_COMPONENT_VERSION WHERE PRODUCT LIKE 'Oracle%'"
DECLARE cur0 CURSOR FOR pre0
OPEN cur0
FETCH cur0 INTO l_version
CLOSE cur0
LET l_tok = base.StringTokenizer.create(l_version, ".")
#get major version number
IF l_tok.hasMoreTokens() THEN
LET l_vermaj = l_tok.nextToken()
END IF
#No:TQC-890062 --end--
LET l_sql = "SELECT OBJECT_NAME, CREATED FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' ORDER BY OBJECT_NAME"
WHEN "IFX"
LET l_sql = "SELECT TABNAME, CREATED FROM SYSTABLES WHERE TABID >= 100 AND TABTYPE='T' ORDER BY TABNAME"
END CASE
#No:TQC-890062 --start--
#oracle 10gセ埃Table玡璶闽超RecycleBin
IF l_dbtype = "ORA" AND l_vermaj >= 10 THEN
EXECUTE IMMEDIATE "ALTER SESSION SET RECYCLEBIN=OFF"
END IF
#No:TQC-890062 --end--
PREPARE pre1 FROM l_sql
DECLARE cur1 CURSOR FOR pre1
FOREACH cur1 INTO l_rec.*
IF STATUS == NOTFOUND THEN
EXIT FOREACH
END IF
LET l_interval2 = CURRENT YEAR TO DAY - l_rec.l_created
IF l_interval2 > l_interval1 THEN
LET l_dropsql = "DROP TABLE ",l_rec.l_tablename
EXECUTE IMMEDIATE l_dropsql
IF SQLCA.SQLCODE THEN
ERROR l_dropsql," ERROE: ",SQLCA.SQLCODE
ELSE
DISPLAY l_dropsql," OK."
END IF
END IF
END FOREACH
CLOSE DATABASE
END MAIN
转载请注明:赫非域 » TIPTOP定期清除cr_ds_report资料库中的暂存表