模式对象管理
- 模式
- 模式概念
一个模式仅能归属于一个用户,而一个用户可以包含多个模式。模式是一组对象的集合,使用模式可以使不同业务隔离。一个模式可以被多个用户访问。一个用户可以访问他所连接的数据库中有权限访问的任意模式中的对象。
- 自动创建用户模式
系统为每一个用户自动建立了一个与用户名同名的模式作为其默认模式,用户还可以用模式定义语句建立其它模式。
执行:select * from sysobjects where type$='SCH';可以查询当前数据库下所有模式,图中标红的为创建用户ryh和ryh01时系统自动创建的模式
- 手动创建模式
--在ryh用户下创建一个模式ryh2。如果不指定用户则默认放在当前用户下。例如使用sysdba用户执行create schema ryh2则模式ryh2会放在sysdba用户下。
create schema ryh2 authorization ryh;
执行:select a.name,a.type$,b.name,b.type$ from sysobjects a,sysobjects b where b.type$ = 'SCH' and a.id = b.pid and a.name = 'RYH';语句可以查询到ryh用户下所有模式
- 设置模式
模式设置切换只能设置当前属于自己的模式,不能设置其他用户下的模式。设置后访问该模式下对象可以不用带模式名。
如图,当前用连接为sysdba用户。只能切换到属于sysdba用户下其它模式。ryh模式属于ryh用户因此不能切换。
使用ryh用户登录后可以切换到属于ryh用户下的莫斯ryh。
- 删除模式
删除模式只有DBA权限用户或者属于自己的模式才可以删除。
--删除模式ryh1。选项restrict为判断当前模式不为空时会无法删除。Cascade为级联删除当前模式以及属于该模式下的所有对象。
drop schema ryh1 restrict/cascade;
--不写时默认为restrict
drop schema ryh1;
如图所示ryh1模式下对象不为空时无法删除。
使用级联删除方式可以直接删除。
- 表
- 创建表
创建表时,如果不适用模式名则默认在当前模式下创建。如果要在其它模式下创建则需要带模式名并且有对应的权限。创建表时可以指定表存储的表空间位置,如果不指定则默认存在对应用户所属的默认表空间。
--在模式ryh下创建test_02表并制定存储到main表空间。如果这里不指定就存储到该模式对应用户的默认表空间DB_DATA