服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

更改oracle用户名及外部用户验证的授权问题

我的测试机上安装了ms的axapta,4.1版本,应用帐号采用os authentication。默认采用前缀ops$。运行一段时间后,由于用户要求需要改一个帐号名。

解决方法:

1.为了保证原有的信息不丢失,决定采用新建一个schema,然后用exp/imp的方式将原帐号数据导入到新的schema.

2.在新建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 2:
ora-00911: invalid character 
ora-24000: invalid value ops$bbbaxdvp, user/role should be of the form 
[schema.]name 
ora-00911: invalid character 
ora-06512: at "sys.dbms_rule_adm", line 289 
ora-06512: at line 2

root cause:

由于外部验证用户中,如'ops$bbbaxdvp',带有一个''。直接执行时oracle会报错。可以这样解决:

给用户名加单引号:

--grantee => '"ops$bbbaxdvp"',

--grant execute any library to 'ops$avonapaxdvp'

扫描关注微信公众号