解决方法:
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’
最新评论