目录
LLL的数据库培训—第二部分—Oracle基础知识培训—第12讲—数据库用户(模式)管理之用户管理
一、用户与模式的介绍
1、用户(user)
--如果想使用某一个Oracle数据库,首先得需要一个用户,这个用户可以是sys/system等管理员用户,也可以是新增加的一个普通用户
--通常情况下,我们创建一个普通用户,在这个普通用户下创建这个用户所需要的对象信息(如:表,索引,视图等)
--对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作;
--只有DBA权限的用户才可以使用创建用户(create user)语句创建一个新的用户。
2、模式(schema)
(1)什么是模式
--模式(schema):是某个用户拥有所有对象的集合,是一个命了名的对象的集合,如表,视图,序列号等都是对象。 --具有创建对象权限并创建了对象的用户称为拥有某个模式。 --当一个用户被创建时,一个与之相对应的模式也被创建。 --用户名和模式经常会互换(或者在某些场合,模式就代表用户,如expdp中的schema)。
注意:
创建数据库对象(视图,表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户。
模式由数据库的用户所用友并且与用户具有相同的名字。其实在实际使用中,模式和用户几乎就是一回事。
(2)模式对象包含的内容
表、视图、索引、约束、序列、同义词、触发器、存储过程、函数、软件包、用户定义的数据类型等。
二、用户的管理使用
1、创建用户
(1)语法
CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLY OR IDENTIFIED GLOBALLY AS ‘CN=user’ [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE temptablespace] [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace [,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace [PROFILES profile_name] [PASSWORD EXPIRE] [ACCOUNT LOCK or ACCOUNT UNLOCK]
其中,
CREATE USER username: 用户名,一般为字母数字型和“#”及“_”符号。 IDENTIFIED BY password: 用户口令,一般为字母数字型和“#”及“_”符号。 IDENTIFIED EXETERNALLY: 表示用户名在操作系统下验证,该用户名必须与操作系统中所定义的用户名相同。 IDENTIFIED GLOBALLY AS ‘CN=user’: 用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。 [DEFAULT TABLESPACE tablespace]: 默认的表空间。 [TEMPORARY TABLESPACE tablespace]: 默认的临时表空间。 [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace: 配额,用户可以使用的表空间的字节数,默认unlimited。 [PROFILES profile_name]: 资源文件的名称。 [PASSWORD EXPIRE]: 立即将口令设成过期状态,用户再登录前必须修改口令。 [ACCOUNT LOCK or ACCOUNT UNLOCK]: 用户是否被加锁,默认情况下是不加锁的。
(2)案例
create user llltest identified by 123 default tablespace users temporary tablespace temp; --quota 5m on users; --account lock --account unlock --profile profilename
(3)查询用户信息
select * from dba_users where username='LLLTEST';
2、修改用户信息
--使用sys或system用户登录进行修改
conn /as sysdba;
conn system/oracle;
(1)修改密码
alter user llltest identified by 1234;
(2)锁用户或解锁用户
alter user llltest account lock
alter user llltest account unlock;
3、删除用户
drop user llltest; 仅仅是删除用户,
drop user llltest cascade; 删除用户所有对象和数据
4、修改用户使用表空间的配额
(1)修改配额
alter user llltest quota 50m on users;
alter user llltest quota unlimited on users;
(2)不限制任何表空间,全局
grant unlimited tablespace to llltest;
(3)回收配额
revoke unlimited tablespace from llltest;
alter user llltest quota 0 on users;
(4)查看用户表空间配额
select * from dba_ts_quotas;
select * from user_ts_quotas;
5、oracle的sys和system用户的区别:
(1)sys用户:
缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象;
(2)system用户:
缺省始终创建,且未被锁定,可以访问数据库内的所有对象。
(3)两者具体区别:
-
sys是oracle数据库中权限最高的帐号,具有create database的权限,而system没有这个权限,
-
sys的角色是sysdba, system的角色是sysoper。
-
pl/sql developer登陆:
-
system以sysoper身份登录,提示01017 密码错误,normal身份就可以。
-
sys可以以sysdba或sysoper登陆。
-
(4)两个用户共有的权限:
startup/shutdown/dba两个用户都是可以管理的。
平时用system来管理数据库就可以了,这个用户的权限对于普通的数据库管理来说已经足够权限了。
标注: (1)创建表,指定表空间为问题 (2)sysoper权限和system用户的关联性