首页 > 代码库 > Oracle用户相关命令

Oracle用户相关命令

Oracle用户是一个数据库对象,用户所有的操作默认在自己的模式下进行,模式是一个用户所拥有的数据库对象的集合,每个用户都有自己的模式,用户和模式之间是一一对应的,模式的名字与用户名相同。例如,SCOTT用户的模式为SCOTT,在这个模式中包含了用户SCOTT拥有的所有数据库对象,包括表,视图,索引,存储程序等。用户的数据库对象和数据分布在表空间中,每个用户都有默认的表空间,如果建立用户时不指定表空间,系统默认将SYSTEM表空间为用户默认表空间。

Oracle数据库有三类用户,一类是sysdba,一类是sysoper,一类是普通用户,前2类为特权用户。sys用户同时具有sysdba和sysoper两种权限,它是创建数据库时自动产生,不需要手工创建。普通用户指定了sysdba或sysoper权限,该用户也成特权用户。特权用户信息可以从动态性能视图v$pwfile_users中获得。

创建新的用户并指定表空间:

    create user [username] identified by "[password]"  

    default tablespace 表空间

    temporary tablespace 临时表空间

    quota 表空间配额 on 表空间(为用户在表空间指定空间配额以字节,KB,MB为单位,也可以无限制配额:UNLIMITED TABLESPACES)

    password expire

    account lock|unlock;

为用户授权:grant 权限1、权限2...to  [username1],[username2],

    1. grant create session to [username] 此时只能连接到数据库 

    2. grant connect,resource to [username] 授予角色权限 

    3. grant select,delete on scott.emp to [username] 把scott下emp表的select和delete权限给用户

回收权限:revoke 权限1、权限2 from [username]  

     revoke 权限1、权限2 on scott.emo from [username] 

    1. revoke select ,delete on scott.emo from [username]  把用户在scott下emp表的select和delete权限回收

    2. revoke all on scott.emp from [username] 把用户在scott下emp表的所有权限回收

Oracle中有两类角色,一种是预定义的角色,一种是用户自定义角色,常见的预定义角色有connect, resource,dba

创建角色:create role 角色名

角色中添加权限:grant 权限1,权限2 to 角色名

        grant 权限1,权限2 on scott.emp to 角色名

将角色授予用户:grant 角色 to [user1],[user2]

回收角色:revoke 角色 from [user1]

修改用户密码:alter user [username] identified by [password]  

下次登录时提示修改密码:alter user [username] password expired

锁住用户:alter user [username] account lock   

解锁用户:alter user [username] account unlock  

删除用户:drop user user_name cascade 用户以及所拥有的数据库对象一起被删除

 

用户的相关信息可以从数据字典视图dba_users中获得:select username,password,default_tablespace,account_status from dba_users;

用户的系统权限和对象信息都可以从数据字典视图获得:

    system_privilege_map 当前数据库中已经定义的所有系统权限

    dba_sys_privs   sys用户查询任何用户所具有的系统权限

    user_sys_privs 普通用户查询自己所拥有的系统权限

            session_privs 查询一个用户在当前会话中所具有的系统权限

用户的角色信息都可以从数据字典视图获得:

dba_roles 记录数据库中所有角色

dba_role_privs 记录所有被授予用户或另一角色的角色

user_role_privs 记录所有授予当前用户的角色

role_role_privs 记录一个角色中包含的其他角色

role_sys_privs 记录一个角色中包含的系统权限

role_tab_privs 记录一个角色中包含的对象权限

session_roles 记录当前会话中所使用的角色