数据库安装完成后,首次创建用户,授权都已成功,却发现User$里面并不存在。如下所示:
SQL> create user xxx identified by xxxpwd
  2  default tablespace scmtbs
  3  temporary tablespace scmtbstmp;
create user xxx identified by xxxpwd
            *
第 1 行出现错误:
ORA-01920: 用户名 'XXX' 与另外一个用户名或角色名发生冲突。SQL> select * from dba_roles where role = 'xxx';未选定行SQL> select * from User$ where name='xxx';未选定行
SQL> grant connect,resource,dba to xxx;授权成功。求教各位。谢谢。

解决方案 »

  1.   

    select * from dba_roles where role = upper('xxx');
      

  2.   

    'XXX'大写就好了。dba_roles里存的都是大写的。还有其它数据字典表里的表名,字段名都是大写的。
    你这样查询也可以:
    select * from dba_roles where regexp_like(role,'xxx','i');
    'i'表示忽略大小写。
      

  3.   

    要晕掉了SQL> select * from dba_roles where role = upper('xxx');未选定行SQL> select * from dba_roles where regexp_like(role,'xxx','i');未选定行
      

  4.   

    temporary tablespace scmtbstmp;第一次看到有人把用户建立到临时表空间里,好的尝试
      

  5.   


    网上抄的模板啊,xd,我只是一枚小小小的开发,不是dba
      

  6.   


    看错了吧,别人是指定临时表空间而已,
    查询用户信息你直接到dba_users 视图就好了
    SELECT * FROM DBA_USERS WHERE USER_NAME =UPPER('UNAME');SELECT * FROM USER_SYS_PRIVS;
    SELECT * FROM USER_ROLE_PRIVS;
      

  7.   

    哎,终于找出问题了,谢谢楼上的所有兄弟们热情帮查原因创建表空间用户的时候没设置ORACLE_SID,连到其他实例去了结贴。再次谢谢。