我的测试机上安装了MS的AXAPTA
版本
应用帐号采用os authentication
默认采用前缀ops$
运行一段时间后
由于用户要求需要改一个帐号名
解决方法
为了保证原有的信息不丢失决定采用新建一个schema然后用exp/imp的方式将原帐号数据导入到新的schema
在新建schema时还要考虑到原有帐号的权限问题问题如下
在原有帐号中可以看到有以下权限
CREATE USER OPS$AAAAXDVP
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE AXTAB
TEMPORARY TABLESPACE AXTMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT RESOURCE TO OPS$BBBAXDVP;
GRANT CONNECT TO OPS$BBBAXDVP;
ALTER USER OPS$AVONAPAXDVP DEFAULT ROLE ALL;
BEGIN
SYSDBMS_RULE_ADMGRANT_SYSTEM_PRIVILEGE(
PRIVILEGE => SYSDBMS_RULE_ADMALTER_ANY_RULE_SET
GRANTEE => OPS$BBBAXDVP
GRANT_OPTION => TRUE);
END;
/
GRANT EXECUTE ANY LIBRARY TO OPS$AVONAPAXDVP;
如果照此权限直接执行会报如下错误
SYSDBMS_RULE_ADMGRANT_SYSTEM_PRIVILEGE(
*
ERROR at line :
ORA: invalid character
ORA: invalid value OPS$BBBAXDVP USER/ROLE should be of the form
[SCHEMA]NAME
ORA: invalid character
ORA: at SYSDBMS_RULE_ADM line
ORA: at line
ROOT CAUSE
由于外部验证用户中如OPS$BBBAXDVP带有一个直接执行时oracle会报错可以这样解决
给用户名加单引号
GRANTEE => OPS$BBBAXDVP
GRANT EXECUTE ANY LIBRARY TO OPS$AVONAPAXDVP