grant create package,, create function to user 会报错“权限缺失或无效”
grant --create package,, create function
create session,create view,create procedure, create trigger 
to user_Test;是否还要给alter 权限呢,真是麻烦,如果能像Sql Server里面的 dbOwner赋值就好了。如果给个dba的角色,似乎又太大了吧。

解决方案 »

  1.   


    --建立用户,一般授予resource,和connect角色就可以了
    1.create user 
    2.grant connect,resource to user_name;
    SQL> select privilege
      2  from role_sys_privs
      3  where role='CONNECT'
      4  /
     
    PRIVILEGE
    ----------------------------------------
    CREATE VIEW
    CREATE TABLE
    ALTER SESSION
    CREATE CLUSTER
    CREATE SESSION
    CREATE SYNONYM
    CREATE SEQUENCE
    CREATE DATABASE LINK
     
    8 rows selected
     
    SQL> select privilege
      2  from role_sys_privs
      3  where role='RESOURCE'
      4  /
     
    PRIVILEGE
    ----------------------------------------
    CREATE TYPE
    CREATE TABLE
    CREATE CLUSTER
    CREATE TRIGGER
    CREATE OPERATOR
    CREATE SEQUENCE
    CREATE INDEXTYPE
    CREATE PROCEDURE
     
    8 rows selected
      

  2.   

    最好不要授予用户dba权限,我们都知道dba无所不能:

    oracle 谨慎授予用户dba权限

    授予用户connect,resource角色之后,用户就具有了上面列出的权限,角色是权限的集合
    而将角色授予了用户,也就是授予了用户此角色所具有的权限。
      

  3.   

    自己用于测试用户赋上DBA角色还是挺方便的。正式环境则不能随便授予DBA权限。
    当然,如果你是DBA,要精细控制权限,了解每一个权限是很重要的。
    下面是系统权限和表权限的数据字典:
    select * from system_privilege_map;
    select * from table_privilege_map;
      

  4.   

    试着搜索了一下 select *  from role_sys_privs where privilege like '%ALTER%'发现一个角色 IMP_FULL_DATABASE 权限挺大的,好像跟我说的 dbowner 挺像,不知道是否常用。
      

  5.   

    sql server 2005里面的dbowner角色可以创建,维护和删除数据库。
    oracle 里面的IMP_FULL_DATABASE角色是授予用户导入数据库其他地方导出的数据文件。
    两个概念不一样,不要想当然的认为sql server和oracle是一样的,实际上有很多的不同......
      

  6.   


    Oracle IMP_FULL_DATABASE


    SQL Server db_owner