1、方案与用户
方案是一些数据库对象(如:表、索引、视图、序列、过程、函数、触发器等)的集合,一个方案下的对象归一个用户所有。在Oracle中方案和用户基本是一个等同的概念,用户名即方案名。
当访问数据库对象时,需要注意如下一些事项:
(1) 同一方案中不能存在同名对象,但是不同方案中数据库对象可以重名。
(2) 用户可以直接访问自己方案中的数据对象,但如果要访问其他方案的数据对象,则必须具有对该对象的相应访问权限。
(3) 当用户要访问其他方案的对象时,必须附加方案名作为前缀。
2、创建用户
2 语法
Createuser 用户名 identified by 密码
[defaulttablespace 表空间名1]
[temporarytablespace表空间名2]
[quota[integer k|m] |[unlimited] on tablespace表空间名1]
[account lock| account unlock]
2 参数说明
l 用户名和密码:一般为字母、数字、“#”、“_”符号。
l default tablespace:表示该用户在创建数据对象时使用的默认表空间。
l temporary tablespace:表示该用户使用的临时表空间。
l quota integer k|m ontablespace:表示该用户在指定的表空间中允许占用的最大空间。
l quota unlimited ontablespace:表示该用户在指定的表空间中可以占用的空间大小没有上限。
l account lock:表示该用户被锁定。默认情况是account unlock。
2 举例:
(1) 创建一个user1用户,口令为123,并设置默认表空间为users,临时表空间为temp。
SQL> conn /as sysdba
SQL> createuser user1 identified by 123 default tablespace users temporarytablespace temp;
(2) 创建一个user2用户,口令为123,并设置默认表空间为users且最多可使用大小为1m,临时表空间为temp且不限制其大小,user2用户创建时被锁定。
SQL> createuser user2 identified by 123 default tablespace users temporarytablespace temp quota 1m on users accountlock;
2 说明:
(1) 如果建立用户时不指定defaulttablespace子句,Oracle会将SYSTEM表空间作为用户默认表空间。
(2) 如果建立用户时不指定temporarytablespace子句,Oracle会将数据库临时表空间作为用户临时表空间。
(3) 初始建立的用户没有任何权限,不能执行任何数据库操作,所以为了使用户可以连接到数据库,必须授权其create session 权限。
SQL> conn user1/123 --是否能登陆?
SQL> conn / as sysdba
SQL> grant createsession to user1;
(4) 如果建立用户时没有为表空间指定quota子句,那么用户在特定表空间上的配额为0,用户将不能在相应的表空间上建立数据对象。
SQL> connuser1/123 --是否能登陆?
SQL> createtable S(sno char(2)); --是否能建表?
SQL> conn /as sysdba
SQL> grantcreate table to user1;
SQL> connuser1/123
SQL> create table S(snochar(2)); --是否能建表?
SQL> insert into Svalues('11'); --是否能插入数据?
3、修改用户
管理员对以创建的用户进行修改,包括:修改用户口令,改变用户默认表空间、临时表空间、磁盘配额等。
2 语法
Alter user 用户名identified by 密码
[default tablespace 表空间名1]
[temporary tablespace表空间名2]
[quota [integer k|m]|[unlimited] on tablespace表空间名1]
[account lock| accountunlock]
2 举例:
(1) 修改用户的磁盘限额
SQL> conn /as sysdba
SQL> alter user user1quota 1m on users;
SQL> connuser1/123
SQL> insert into Svalues('11'); --是否能插入数据?
SQL> conn / as sysdba
SQL> create tableuser1.tj as select * from dba_objects where 1=2;
SQL> insert intouser1.tj select * from dba_objects;
(2) 修改用户口令
SQL> conn /as sysdba
SQL> alteruser user1 identified by 321;
SQL> connuser1/123
SQL> connuser1/321
(3) 锁定或解锁被锁定的用户
SQL> conn /as sysdba
SQL> grant createsession to user2;
SQL> conn user2/123 --是否能登陆?
SQL> conn / as sysdba
SQL> alter user user2account unlock;
SQL> connuser2/123 --是否能登陆?
SQL> conn / as sysdba
SQL> alter user user2account lock;
SQL> connuser2/123 --是否能登陆?
4、删除用户
2 语法
Drop user 用户名[cascade];
2 说明:如果用户拥有数据库对象,则删除用户时必须加cascade选项,此时连同该用户所拥有的对象一起删除。
2 举例
SQL> conn / as sysdba
SQL> drop user user2; --是否能删除用户user2?
SQL> drop user user1; --是否能删除用户user1?
SQL> conn user1/321
SQL> drop table S;
SQL> conn / as sysdba
SQL> drop useruser1; --是否能删除用户user1?
SQL> conn /as sysdba
SQL> createuser user1 identified by 123 default tablespace users temporarytablespace temp;
SQL> grant createsession to user1;
SQL> grantcreate table to user1;
SQL> connuser1/123
SQL> create table S(snochar(2));
SQL> conn /as sysdba
SQL> drop user user1cascade; --是否能删除用户user1?
5、用户权限管理
2 权限介绍
权限是指执行特定类型sql命令或是访问其它方案对象的权利。Oracle数据库中将权限分为两大类:系统权限和对象权限。如果要执行某种特定的数据库操作,则必须为用户授予系统权限;如果用户要访问其他方案的