本人刚学oracle,有一问题不解,请高手解答:
问题是: 我以sys的身份进入数据库后创建了一个用户user1,随后又创建了一个角色,想通过角色给用户授权,可是操作完后(虽然不清楚应该给这个角色授什么权),尝试用user1登录,结果是登录不进去,提示错误是:“ 应用程序要求的数据库权限超出了您当前具有的权限。有关特定版本的详细信息, 请单击“帮助”。”  
到底这个角色应该授什么样的权用户user1才能登录啊?急待中……

解决方案 »

  1.   

    --试一下:grant connect,resource,select any table to user1;
      

  2.   

    创建角色:
    create role tax_member;
    为角色授权:
    grant create table,connect ,create view to tax_member;
    为用户授予角色:
    grant tax_member to user1;
      

  3.   

    改一点:创建角色: 
    create role tax_member; 
    为角色授权: 
    grant create table,connect,resource,select any table to tax_member; 
    为用户授予角色: 
    grant tax_member to user1; 
      

  4.   

    补充:先谢谢楼上的回答。
    我是想通过角色给用户授权,如果直接给用户授权,直接grant DBA to user1;即可,那角色就失去作用了。
    一般情况下,我们自己创建用户时也是用自己创建的角色,不是吗??高手回答
      

  5.   

    请问三楼:我用的oracle 版本是10.2.0.1.0 ,你说的应该是给角色授以角色吧, 不过我觉得没这么麻烦吧,可是……哎
      

  6.   

    创建用户时,是使用DBA权限给不同的用户授以不同的权限。
    用户的权限越大,破坏的范围即越大。权限有很多种:create any table,create any view,create any synonym,
                drop any table,...
                create any procedure,create ant trigger,create function,
                ...
    不过,有些权限在创建用户时是缺省分配给的。
      

  7.   

    光登录而以,就connect ,resource都可以了
      

  8.   

    create role new_role;--建立新角色
    ---以下给新角色授权
    grant CREATE SESSION    to new_role;--建立会话,连接oracle的权限,此权限必须赋予,否则不能连接数据库
    --以下为用户一般的权限:建表,建视图等
    grant CREATE TRIGGER    to new_role;
    grant CREATE SEQUENCE   to new_role;
    grant CREATE TYPE       to new_role;
    grant CREATE PROCEDURE  to new_role;
    grant CREATE CLUSTER    to new_role;
    grant CREATE OPERATOR   to new_role;
    grant CREATE INDEXTYPE  to new_role;
    grant CREATE TABLE      to new_role;
    ---建立新用户
    create user new_user identified by pass;
    ---给新用户授权
    grant new_role to new_user;
    ---此时新用户已经拥有新角色所有的权限