我是一位刚接手BASIS职务的新鸟,最近因为要打补丁,才想起自已连client000的DDIC和SAP*的账号都没有,看来这些操作都没法作了。
下面我就把如何在client000创建DDIC用户的过程和大家分享。
在网上,也有诸多朋友询问关于丢失了某些超级用户,如DDIC,SAP*的密码后如何处理,网上也有些文章,先转贴如下,下述文章列举了几种不同数据的具体处理方法:
================================================
Oracle 8.1.7 sap 46C
用<SID>adm登录svrmgrlconnect internalselect * from sapr3.usr02 where bname='SAP*' and mandt='000';delete from sapr3.usr02 where bname='SAP*' and mandt='000';commit;
Oracle 9.2.0 SAP 4.70
<sid>是实例名,如PRD,C11等sqlplus /nologconnect / as sysdba*本句用来,查询一下,是否有此记录。正常情况下,显示: 1 row(s) selected. */select * from sap<sid>.usr02 where bname='SAP*' and mandt='000';delete from sap<sid>.usr02 where bname='SAP*' and mandt='000';commit;
DB2
<SID> 是数据库名<sid> 对于4.6C 为 r3, 对于4.70 为 <sid>数据库名(小写)
db2 => connect to <SID>
db2 => select * from sap<sid>.usr02 where bname='SAP*' and mandt='000'
1 record(s) selected.
db2 => delete from sap<sid>.usr02 where bname='SAP*' and mandt='000'DB20000I
The SQL command completed successfully.
db2 => commitDB20000I
The SQL command completed successfully.
MS SQL 2000
打开MS SQL Enterprise Manager, 从菜单[工具]中,选查询分析器<sid> 46C 是r3 或是 空(没有的),大伙可以自己测试一下。470是系统名
select * from <sid>.usr02 where BNAME='SAP*' and MANDT='000';
delete from <sid>.usr02 where BNAME='SAP*' and MANDT='000';
commit;
重新用sap* 口令pass登录就OK了。
========================================
不过,用上述方法,我成功找回了一个系统的密码,但另一个系统是死活也没法找回SAP*这个用户,咋办?只得另想办法了,我的办法是,复制一个其他client的已知用户和密码的用户的纪录,再将其client改成000就是了。
先说环境,我公司是AIX-5L,数据库为DB2 V8,具体操作过程如下:
1、登录到AIX系统
2、切换到具备对DB2数据库管理权限的超级用户
#su - db2dev
3、切换到数据库操作提示符下:
#db2 #connect to dev
4、查看数据表usr02中已有的记录
db2 => select * from sapdev.usr02 SQL0204N "SAPDEV.USR02" is an undefined name. SQLSTATE=42704
见鬼,这个表不是SAPDEV.USR02,咋办?看来得获取正确的表,才能select.
表名通过前人的探索我们知道就叫usr02,那模式名呢?怎么得到。
后来用DB2客户端知道了sysstat.tables这个表是记录系统中所有模式和表,我们查询它一定可以知道结果:
db2 => select tabschema ,tabname from sysstat.tables where tabname='USR02'
结果:TABSCHEMA tabname
SAPQAS USR02
靠,原来模式名不是SAPDEV,而被人改成了SAPQAS。好了,牢骚发完了,继续下一步。
5、查询一个已知client的权限比较高的用户名,bname和 mandt的值大家根据需要自已改动吧
db2 =>SELECT mandt,bname,bcode,gltgv,gltgb,ustyp,class,locnt, uflag, accnt, bname,erdat,trdat,ltime,OCOD1,BCDA1,CODV1,OCOD2,BCDA2,CODV2,OCOD3,BCDA3,CODV3,OCOD4,BCDA4,CODV4,OCOD5,BCDA5,CODV5,VERSN,CODVN,TZONE,ZBVMASTER,PASSCODE,PWDCHGDATE,PWDSTATE,RESERVED,PWDHISTORY,PWDLGNDATE,PWDSETDATE,PWDINITIAL FROM SAPPRD.usr02 where bname='BASIS' and mandt='800'
ok,查到了一条纪录。
6、把查到的纪录插到client 000
db2 =>insert into sapqas.usr02 SELECT '000',bname,bcode,gltgv,gltgb,ustyp,class,locnt, uflag, accnt, aname,erdat,trdat,ltime,OCOD1,BCDA1,CODV1,OCOD2,BCDA2,CODV2,OCOD3,BCDA3,CODV3,OCOD4,BCDA4,CODV4,OCOD5,BCDA5,CODV5,VERSN,CODVN,TZONE,ZBVMASTER,PASSCODE,PWDCHGDATE,PWDSTATE,RESERVED,PWDHISTORY,PWDLGNDATE,PWDSETDATE,PWDINITIAL FROM SAPqas.usr02 where bname='BASIS' and mandt='800'
我把原始select 中的mandt段替换成了'000',因为这个值是我要改的。
好了,这下在client 000 有basis用户了,用你client 800中的BASIS用户和密码可以登client000了,这下,可以在CLIENT000建你打补丁所需的ddic和sap*用户了。
ok.