模式又称方案(Schema),是用户所拥有的所有数据库对象的集合,如表、索引、触发器等逻辑对象都存储在模式对象中。
模式的名称和用户的名称相同,用户与模式一一对应。默认情况下,用户所创建的数据库对象都保存在自己的同名模式中
注意事项:
用户可以直接访问自己模式中的对象,如要访问其他模式中的对象,则必须具有相应的对象权限
数据库中的对象名在同一个模式中是唯一的,但在不同模式中可以具有相同的对象名。
当用户访问其他模式中的对象时,必须加模式名来做前缀。即:模式名.对象名
如果用户以NORMAL身份登录,则进入同名模式。
如果用户以SYSDBA身份登录,则进入SYS模式。
CONNCE SYS/ORACLE10 AS SYSDBA
如果用户以SYSOPER身份登录,则进入PUBLIC模式
CONN SYS/ORACLE 10 AS SYSOPER
模式对象
主要包括表、索引、DML触发器、视图、存储过程、程序包、JAVA类、自定义类型等。
注意:模式对象名最多为30个字符,且小写字母会被转换为大写字母。如使用的不是标准标识符,则需要将其封装在双引号中。
非模式对象
包括表空间、用户、角色、概要文件等。
SYS 是数据库中具有最高权限的数据库管理员,可以启动、修改、关闭数据库,拥有数据字典。
SYSTEM 是一个辅助的数据库管理员,不能启动和关闭数据库,但可以进行其他一些管理工作,如创建用户、删除用户等。
PUBLIC 是一个用户组,数据库中任何一个用户都属于该组成员。要为数据库中每个用户都授予某个权限,只需要把权限授予PUBLIC 就可以了。
1)ALL_USERS:包含数据库所有用户的用户名、用户id 和用户创建时间。
2)DBA_USERS:包含数据库所有用户的详细信息。
3)USER_USERS:包含当前用户的详细信息。
4)DBA_TS_QUOTAS:包含所有用户的表空间配额信息。
5)USER_TS_QUOTAS:包含当前用户的表空间配额信息。
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)系统权限
在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。如 CREATE SESSION CREATE TABLE。
(2)对象权限
对某个特定的数据库对象执行某种操作的权限。如对特定表的插入、删除、修改、查询的权限。
(1)直接授权
利用 GRANT 命令直接为用户授权。
(2)间接授权
先将权限授予角色,然后再将角色授予用户。
(1) 只有DBA才应当拥有ALTER DATABASE系统权限。
(2)应用程序开发者一般需要拥有CREATE TABLE CREATE VIEW和CREATE INDEX等系统权限。
(3)普通用户一般只具有CREATE SESSION 系统权 限。
(4)只有授权时带有WITH ADMIN OPTION子句时,用户可以将获得权限授予其他用户。
语法格式:
GRANT 权限或角色 TO 用户;
【例】使用SQL语句给用户orac_test授予CREATE SESSION系统权限
GRANT CREATE SESSION TO orac_test;
SQL>SELECT username FROM user_users;
如果成功创建表之后,在表中录入数据:
我们可以 重新以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
原文:https://www.cnblogs.com/CX66/p/13974639.html