一、模式概念
二、模式架构图
三、模式优点
四、模式权限
五、模式可植性
模式是数据库中一个概念,可以将其理解为一个独立空间,不同的模式下可以拥有相同的名称的表,视图,表,丞数等对象而不会发生冲突。模式概念主要方便管理,只要有权限,各个
模式的对象可以互相调用
schema和database 的区别:
和数据库不同,模式并不是被严格地隔离:一个用户可以访问他们所连接的数据库中的所有模式内的对象,只要他们有足够的权限。
一个数据库模式下拥有如下对象信息
(1)表;
(2)视图;
(3)索引;
(4)触发器;
(5)存储过程/函数;
(6)序列;
(7)全文索引;
(8)包;
(9)同义词;
(10)类;
(11)外部链接。
模式逻辑架构图

模式优点
模式使我们可以简化许多用户使用一个数据库而彼此之前不涉及的情况。DM的模式的一些普遍优势如下:
1.在DM架构中,关键优势在于,如果数据库属于不同的架构,则它可以具有相同的表名。
2.架构可以将数据库对象分类为逻辑组,以使其更具可控性。
3.该架构允许用户使用一个数据库来替代多个数据库。
4.为了避免与其它对象的名称冲突,我们可以将第三方架构放入不同的架构中。
5.名称相似的对象只要放在不同的架构中就不会冲突。
模式的权限
创建模式
创建用户的时候会自动创建一个和用户名同名的模式,如果新建模式需要将改模式关联到某个特定的用户
SQL指令
create schema "模式名" authorization "用户名"
删除模式
SQL指令
drop schema "模式名" restrict;
权限管理
权限分类
系统权限
操作数据库对象本身的权限
常用的系统权限:create,alter,drop等操作
对象权限
操作数据库对象相关数据的权限
常用的对象权限:insert,delete,update,select,all
角色权限
将一组系统权限和对象权限进行组合的整体权限为角色
角色可以解决多个用户具备多个相同权限需要进行频繁授权的问题
权限查询
查询用户或角色具备的对象权限
select * from dba_tab_privs where grantee="用户名或角色名"
查询用户或角色具备的系统权限
select * from dba_sys_privs where grantee="用户名或角色名"
查询用户或角色具备的角色权限
select * from dba_role_privs where grantee="用户名或角色名"
授权和撤销权限
新用户默认具备VTI和PUBLIC角色权限
授予和撤销系统权限
grant "系统权限" to "用户" --授权
revoke "系统权限" from "用户" --收权
授予和撤销对象权限
grant "权限" on SCHEMA.OBJECT to "用户" --授权
revoke "权限" on SCHEMA.OBJECT from "用户" --收权
授予和撤销角色权限
创建角色以及授权给角色&将角色权限授权给用户
create role "角色名";
grant "权限" to "角色";
grant "角色" to "用户";
删除角色
drop role "角色名"
系统自带的角色讲解
VTI角色
具有查询动态视图
public角色
| 角色名 | 权限 | |||
| PUBLIC | INSERT TABLE | |||
| PUBLIC | UPDATE TABLE | |||
| PUBLIC | DELETE TABLE | |||
| PUBLIC | SELECT TABLE | |||
| PUBLIC | REFERENCES TABLE | |||
| PUBLIC | GRANT TABLE | |||
| PUBLIC | INSERT VIEW | |||
| PUBLIC | UPDATE VIEW | |||
| PUBLIC | DELETE VIEW | |||
| PUBLIC | SELECT VIEW | |||
| PUBLIC | GRANT VIEW | |||
| PUBLIC | EXECUTE PROCEDURE | |||
| PUBLIC | GRANT PROCEDURE | |||
| PUBLIC | SELECT SEQUENCE | |||
| PUBLIC | GRANT SEQUENCE | |||
| PUBLIC | EXECUTE PACKAGE | |||
| PUBLIC | GRANT PACKAGE | |||
| PUBLIC | SELECT ANY DICTIONARY | |||
| PUBLIC | SELECT MATERIALIZED VIEW | |||
| PUBLIC | GRANT DOMAIN | |||
| PUBLIC | USAGE DOMAIN | |||
| PUBLIC | DUMP TABLE | |||
resource角色
| 角色名 | 权限 | |||
| RESOURCE | CREATE SCHEMA | |||
| RESOURCE | CREATE TABLE | |||
| RESOURCE | CREATE VIEW | |||
| RESOURCE | CREATE PROCEDURE | |||
| RESOURCE | CREATE SEQUENCE | |||
| RESOURCE | CREATE TRIGGER | |||
| RESOURCE | CREATE INDEX | |||
| RESOURCE | CREATE CONTEXT INDEX | |||
| RESOURCE | CREATE LINK | |||
| RESOURCE | CREATE PACKAGE | |||
| RESOURCE | CREATE SYNONYM | |||
| RESOURCE | CREATE PUBLIC SYNONYM | |||
| RESOURCE | INSERT TABLE | |||
| RESOURCE | UPDATE TABLE | |||
| RESOURCE | DELETE TABLE | |||
| RESOURCE | SELECT TABLE | |||
| RESOURCE | REFERENCES TABLE | |||
| RESOURCE | GRANT TABLE | |||
| RESOURCE | INSERT VIEW | |||
| RESOURCE | UPDATE VIEW | |||
| RESOURCE | DELETE VIEW | |||
| RESOURCE | SELECT VIEW | |||
| RESOURCE | GRANT VIEW | |||
| RESOURCE | EXECUTE PROCEDURE | |||
| RESOURCE | GRANT PROCEDURE | |||
| RESOURCE | SELECT SEQUENCE | |||
| RESOURCE | GRANT SEQUENCE | |||
| RESOURCE | EXECUTE PACKAGE | |||
| RESOURCE | GRANT PACKAGE | |||
| RESOURCE | SELECT ANY DICTIONARY | |||
| RESOURCE | CREATE MATERIALIZED VIEW | |||
| RESOURCE | SELECT MATERIALIZED VIEW | |||
| RESOURCE | CREATE DOMAIN | |||
| RESOURCE | GRANT DOMAIN | |||
| RESOURCE | USAGE DOMAIN | |||
| RESOURCE | DUMP TABLE | |||
dba角色
是一组数据库管理员具备的系统权限和对象权限的集合
模式的可移植性
在SQL标准里,同一个模式下的对象是不能被不同的用户拥有的,而且有些数据库系统不允许创建和它们的所有不同名的模式,模式和用户的概念几乎是一样的,比如oracle数据库。
因此,许多用户考虑对名字加以修饰,使它们真正由"username.tablename"组成。




