一.模式
模式又称方案(Schema),是用户所拥有的所有数据库对象的集合,如表、索引、触发器等逻辑对象都存储在模式对象中。
模式的名称和用户的名称相同,用户与模式一一对应。默认情况下,用户所创建的数据库对象都保存在自己的同名模式中
注意事项:
用户可以直接访问自己模式中的对象,如要访问其他模式中的对象,则必须具有相应的对象权限
数据库中的对象名在同一个模式中是唯一的,但在不同模式中可以具有相同的对象名。
当用户访问其他模式中的对象时,必须加模式名来做前缀。即:模式名.对象名
1.模式的选择与切换
如果用户以NORMAL身份登录,则进入同名模式。
如果用户以SYSDBA身份登录,则进入SYS模式。
CONNCE SYS/ORACLE10 AS SYSDBA
如果用户以SYSOPER身份登录,则进入PUBLIC模式
CONN SYS/ORACLE 10 AS SYSOPER
2.模式对象与非模式对象
模式对象
主要包括表、索引、DML触发器、视图、存储过程、程序包、JAVA类、自定义类型等。
注意:模式对象名最多为30个字符,且小写字母会被转换为大写字母。如使用的不是标准标识符,则需要将其封装在双引号中。
非模式对象
包括表空间、用户、角色、概要文件等。
二.创建用户
1 ORACLE 初始用户
SYS 是数据库中具有最高权限的数据库管理员,可以启动、修改、关闭数据库,拥有数据字典。
SYSTEM 是一个辅助的数据库管理员,不能启动和关闭数据库,但可以进行其他一些管理工作,如创建用户、删除用户等。
PUBLIC 是一个用户组,数据库中任何一个用户都属于该组成员。要为数据库中每个用户都授予某个权限,只需要把权限授予PUBLIC 就可以了。
2 查询用户信息的数据字典
1)ALL_USERS:包含数据库所有用户的用户名、用户id 和用户创建时间。
2)DBA_USERS:包含数据库所有用户的详细信息。
3)USER_USERS:包含当前用户的详细信息。
4)DBA_TS_QUOTAS:包含所有用户的表空间配额信息。
5)USER_TS_QUOTAS:包含当前用户的表空间配额信息。
3、SQL语句创建用户
CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE temp_tablespace_name] [QUOTA [number[K|M] |UNLIMITED] ON tablespace_name] [ACCOUNT LOCK|UNLOCK];
语法说明:
IDENTIFIED BY:指定帐户的初始口令
DEFAULT TABLESPACE :用户的默认表空间
TEMPORARY TABLESPACE :用户的临时表空间
QUOTA:用户在表空间中使用的限额
ACCOUNT :锁定或解锁帐户
【例】使用SQL语句创建用户orac_test,默认表空间为USERS,临时表空间为TEMP.
CREATE USER orac_test IDENTIFIED BY oracle DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
【例】使用用户orac_test连接数据库
注意:初始建立的数据库用户是没有任何权限的,不能执行任何数据库操作
三.权限管理
1、在 ORACLE中,权限分为两类:
(1)系统权限
在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。如 CREATE SESSION CREATE TABLE。
(2)对象权限
对某个特定的数据库对象执行某种操作的权限。如对特定表的插入、删除、修改、查询的权限。
2 、在ORACLE 中,将权限授予用户有如下两种方法:
(1)直接授权
利用 GRANT 命令直接为用户授权。
(2)间接授权
先将权限授予角色,然后再将角色授予用户。
3、在给用户授权时,应该注意以下4个方面
(1) 只有DBA才应当拥有ALTER DATABASE系统权限。
(2)应用程序开发者一般需要拥有CREATE TABLE CREATE VIEW和CREATE INDEX等系统权限。
(3)普通用户一般只具有CREATE SESSION 系统权 限。
(4)只有授权时带有WITH ADMIN OPTION子句时,用户可以将获得权限授予其他用户。
4 、给用户赋予权限
语法格式:
GRANT 权限或角色 TO 用户;
【例】使用SQL语句给用户orac_test授予与删除CREATE SESSION系统权限
GRANT CREATE SESSION TO orac_test;
REVOKE CREATE SESSION from orac_test;
5、使用数据字典user_users查看当前用户的详细信息
SQL>SELECT username FROM user_users;
6、在当前用户下创建数据表,观察提示。
7、以 SYS登录,授权ORAC_TEST用户CREATE TABLE等权限
8、重新以ORAC_TEST登录,创建表,观察提示。
如果成功创建表之后,在表中录入数据:
我们可以 重新以SYS登录,修改ORAC_TEST的默认表空间使用配额
alter user orac_test quoto 1m on users
然后再以ORAC_TEST用户登录,向表中录入数据,观察提示。
补充:角色管理
角色:一系列相关权限的集合。
ORACLE中有三个常用的预定义角色:
CONNECT
RESOURCE
DBA
四.修改用户
ALTER USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE temp_tablespace_name] [QUOTA [number[K|M] |UNLIMITED] ON tablespace_name] [PASSWORD EXPIRE]password expire://用来设置用户口令过期,失效,强制用户登录数据库时候必须修改口令. [ACCOUNT LOCK|UNLOCK];
【例】使用SQL语句更改用户orac_test的密码;
ALTER USER orac_test IDENTIFIED BY zhl123
【例】使用SQL语句锁定用户orac_test;
ALTER USER orac_test ACCOUNT lock;
【例】使用SQL语句解锁用户orac_test;
ALTER USER orac_test ACCOUNT unlock;
五.删除用户
语法格式:
DROP USER user_name [CASCADE] 说明:
如果用户已创建了模式对象,在删除用户时必须增加CASCADE选项,表示删除用户时连同该用户创建的对象也删除,否则系统将提示错误信息
例:使用SQL语句删除用户orac_test;
DROP USER orac_test CASCADE