我的測試機上安裝了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
SYS
DBMS_RULE_ADM
GRANT_SYSTEM_PRIVILEGE(
PRIVILEGE => SYS
DBMS_RULE_ADM
ALTER_ANY_RULE_SET
GRANTEE =>
OPS$BBBAXDVP
GRANT_OPTION => TRUE);
END;
/
GRANT EXECUTE ANY LIBRARY TO OPS$AVONAPAXDVP;
如果照此權限直接執行
會報如下錯誤
SYS
DBMS_RULE_ADM
GRANT_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
SYS
DBMS_RULE_ADM
line
ORA
: at line
ROOT CAUSE
由於外部驗證用戶中如OPS$BBBAXDVP帶有一個直接執行時oracle會報錯可以這樣解決
給用戶名加單引號
GRANTEE => OPS$BBBAXDVP
GRANT EXECUTE ANY LIBRARY TO OPS$AVONAPAXDVP
From:http://tw.wingwit.com/Article/program/Oracle/201311/17147.html