更改oracle密码:更改Oracle用户名及外部用户验证授权

  我的测试机上安装了MS的AXAPTA,4.1版本,应用帐号采用osauthentication.默认采用前缀ops$.运行一段时间后,由于用户要求需要改一个帐号名。
 
  解决方法:
 
  1.为了保证原有的信息不丢失,决定采用新建一个schema,然后用exp/imp的方式将原帐号数据导入到新的schema.
 
  2.在新建schema时,还要考虑到原有帐号的权限问题。问题如下:
 
  在原有帐号中,可以看到有以下权限:
  CREATEUSER\"OPS$AAAAXDVP\"
IDENTIFIEDEXTERNALLY
DEFAULTTABLESPACEAXTAB
TEMPORARYTABLESPACEAXTMP
PROFILEDEFAULT
ACCOUNTUNLOCK;
GRANTRESOURCETO\"OPS$BBBAXDVP\";
GRANTCONNECTTO\"OPS$BBBAXDVP\";
ALTERUSER\"OPS$AVONAPAXDVP\"DEFAULTROLEALL;

BEGIN
SYS.DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
PRIVILEGE=>SYS.DBMS_RULE_ADM.ALTER_ANY_RULE_SET,
GRANTEE=>’OPS$BBBAXDVP’,
GRANT_OPTION=>TRUE);
END;
/
GRANTEXECUTEANYLIBRARYTOOPS$AVONAPAXDVP;

  如果照此权限直接执行,会报如下错误:
  SYS.DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
*
ERRORatline2:
ORA-00911:invalidcharacter
ORA-24000:invalidvalueOPS$BBBAXDVP,USER/ROLEshouldbeoftheform
[SCHEMA.]NAME
ORA-00911:invalidcharacter
ORA-06512:at\"SYS.DBMS_RULE_ADM\",line289
ORA-06512:atline2

  ROOTCAUSE:
 
  由于外部验证用户中,如’OPS$BBBAXDVP’,带有一个’’.直接执行时oracle会报错。可以这样解决:
 
  给用户名加单引号:

--GRANTEE=>’\"OPS$BBBAXDVP\"’,

--GRANTEXECUTEANYLIBRARYTO’OPS$AVONAPAXDVP’
Tags:  oracle默认用户名 oracle用户名密码 oracle用户名 更改oracle密码

延伸阅读

最新评论

发表评论