做Basis,打Support Package是经常要做的事了。但打Support Package也会有错的,而且有时错在某个阶段时,SAP
是不会让你删除包倒入队列的。这时一般都会比较郁闷,因为很多情况下,你只需要从新再安排一次包的倒入就可解决问题,而你却被挂在那里。以下是我比较常用的两种清理导入包队列的方法,供参考。 第一种方法:手工清理法。
这种方法会比较麻烦一些,但显得高手一些(呵呵,尤其在一些半懂不懂的人面前操作时更加显得你高手了)。这种方法要有三个步骤: 一.将表pat03里的对应状态置为N,因为此时这些patch的状态必然是'?'
二.删除表pat01里的对应记录
三.从tp里把记录删除掉,否则下次再跑的时候,tp会报错
以下是操作步骤
以数据库用户进入系统(Oracle是ora<sid>,DB2是<sid>adm)
---Oracle下的操作
sqlplus / as sysdba
update sapsr3.pat03 set status = 'N' where sapsr3.pat03.status = '?';
delete from sapsr3.pat03;
exit;
---DB2下的操作
db2 update sap<sid>.pat03 set status = 'N' where sap<sid>.pat03.status = '?'
db2 delete from sap<sid>.pat01
现在要清理炫轮tp里的buffer氮气压力表
tp delfrombuffer <patchname> <sid> pf=/usr/sap/trans/bin/TP_DOMAIN_<SID>.PFL
例如我要清理掉一个包的名字叫SAPKIBIIP1,SID叫PRD,这行的命令就这样写预测地震的方法
tp delfrombuffer SAPKIBIIP1 PRD pf=/usr/sap/trans/bin/TP_DOMAIN_PRD.PFL
液氨化工厂制备
好了,现在再回到SPAM下再看,一切干净,可以重新再开始打补丁了。
补充一点:如果补丁打的时候,是选的一系列,比如从1打到10,打坏了要清理,到tp这一步岂不是要来10次?这里完全不需要这么麻烦的,只需要利用一点操作系统的命令就可以解决。我上次就遇到过这个问题,隔热断桥铝型材SAPKIBIIP1打到SAPKIBIIP9,要一个一个清理不得累死?
我这样做的(基于DB2数据库和Windows 2003平台下)
db2 select patch from sap<sid>.pat03 where status = '?'
SAPKIBIIP9
SAPKIBIIP8
SAPKIBIIP7
SAPKIBIIP6
SAPKIBIIP5
SAPKIBIIP4
SAPKIBIIP3
SAPKIBIIP2
SAPKIBIIP1
把这些放到一个物理文件中,我命名它为e:\,然后
for /F %i in (e:\) do tp delfrombuffer %i PRD pf=e:\usr\sap\trans\bin\TP_DOMAIN_PRD.PFL
一句话搞定,懒人啊,没办法。
第二种办法:利用SAP提供的Function来完成
这个比较简单,se37,输入OCS_RESET_QUEUE,IV_TOOLS里输入SPAM,IV_FORCE里输入空调控制板X,F8运行一下,搞定。这个方法的好处是能帮你把列表清空,同时还能把tp的buffer也清空,还有最重要的一点:会把SPAM或SAINT锁定都帮你打开。这是最简单也最快洁的方法。