一ORACLE数据库的模式对象的管理与维护
本节的主要内容是关于ORACLE数据库的模式对象的管理与维护这些模式对象包括表空间表视图索引序列同义词聚集和完整性约束对于每一个模式对象首先描述了它的定义说明了它的功能最后以基于SQL语言的实例说明如何对它们进行管理于维护
表空间
由于表空间是包含这些模式对象的逻辑空间有必要先对它进行维护
创建表空间
SQL>CREATE TABLESPACE jxzy
>DATAFILE /usr/oracle/dbs/jxzydbf
>ONLINE;
修改表空间
SQL>ALTER TABLESPACE jxzy OFFLINE NORMAL;
SQL>ALTER TABLESPACE jxzy
>RENAME DATAFILE /usr/oracle/dbs/jxzydbf
>TO /usr/oracle/dbs/jxzynewdbf
>ONLINE
SQL>CREATE TABLESPACE jxzy ONLINE
删除表空间
SQL>DROP TABLESPACE jxzy
>INCLUDING CONTENTS
表维护
表是数据库中数据存储的基本单位一个表包含若干列每列具有列名类型长度等
表的建立
SQL>CREATE TABLE jxzyswitch(
>OFFICE_NUM NUMBER() NOT NULL
>SWITCH_CODE NUMBER() NOT NULL
>SWITCH_NAME VARCHAR() NOT NULL);
表的修改
SQL>ALTER TABLE jxzyswitch
>ADD (DESC VARCHAR());
表的删除
SQL>DROP TABLE jxzyswitch
>CASCADE CONSTRAINTS
//删除引用该表的其它表的完整性约束
视图维护
视图是由一个或若干基表产生的数据集合但视图不占存储空间建立视图可以保护数据安全(仅让用户查询修改可以看见的一些行列)简化查询操作保护数据的独立性
视图的建立
SQL>CREATE VIEW jxzypole_well_view AS
>(SELECT pole_path_num AS path
pole AS device_num FROM pole
>UNION
>SELECT pipe_path_num AS path
> well AS device_num FROM well);
视图的替换
SQL>REPLACE VIEW jxzypole_well_view AS
>(SELECT pole_path_num AS path
pole AS support_device FROM pole
>UNION
>SELECT pipe_path_num AS path
well AS support_device FROM well);
视图的删除
SQL>DROP VIEW jxzypole_well_view;
序列维护
序列是由序列发生器生成的唯一的整数
序列的建立
SQL>CREATE SEQUENCE jxzysequence_cable
>START WITH
>INCREMENT BY
>NO_MAXVALUE;
建立了一个序列jxzysequence_cablecurrval返回当前值jxzysequence_cablenextval 返回当前值加后的新值
序列的修改
SQL>ALTER SEQUENCE jxzysequence_cable
>START WITH //起点不能修改若修改应先删除然后重新定义
>INCTEMENT BY
>MAXVALUE ;
序列的删除
SQL>DROP SEQUENCE jxzysequence_cable
索引维护
索引是与表相关的一种结构它是为了提高数据的检索速度而建立的因此为了提高表上的索引速度可在表上建立一个或多个索引一个索引可建立在一个或几个列上
对查询型的表建立多个索引会大大提高查询速度对更新型的表如果索引过多会增大开销
索引分唯一索引和非唯一索引
索引的建立
SQL>CREATE INDEX jxzyidx_switch
>ON switch(switch_name)
>TABLESPACE jxzy;
索引的修改
SQL>ALTER INDEX jxzyidx_switch
>ON switch(office_numswitch_name)
>TABLESPACE jxzy;
索引的删除
SQL>DROP INDEX jxzyidx_switch;
完整性约束管理
数据库数据的完整性指数据的正确性和相容性数据完整型检查防止数据库中存在不符合语义的数据
完整性约束是对表的列定义一组规则说明方法ORACLE提供如下的完整性约束
a NOT NULL 非空
b UNIQUE 唯一关键字
c PRIMATY KEY 主键一个表只能有一个非空
d FOREIGA KEY 外键
eCHECK 表的每一行对指定条件必须是true或未知(对于空值)
例如
某列定义非空约束
SQL>ALTER TABLE office_organization
>MODIFY(desc VARCHAR()
>CONSTRAINT nn_desc NOT NULL)
某列定义唯一关键字
SQL>ALTER TABLE office_organization
>MODIFY(office_name VATCHAR()
>CONSTRAINT uq_officename UNIQUE)
定义主键约束主键要求非空
SQL>CREATE TABLE switch(switch_code NUMBER()
>CONSTRAINT pk_switchcode PRIMARY KEY)
使主键约束无效
SQL>ALTER TABLE switch DISABLE PRIMARY KEY
定义外键
SQL>CREATE TABLE POLE(pole_code NUMBER()
>office_num number()
>CONSTRAINT fk_officenum
>REFERENCES office_organization(office_num)
>ON DELETE CASCADE);
定义检查
SQL>CREATE TABLE office_organization(
>office_num NUMBER()
>CONSTRAINT check_officenum
>CHECK (office_num BETWEEN AND );
二ORACLE数据库用户与权限管理
ORACLE是多用户系统它允许许多用户共享系统资源为了保证数据库系统的安全数据库管理系统配置了良好的安全机制
ORACLE数据库安全策略
建立系统级的安全保证
系统级特权是通过授予用户系统级的权利来实现系统级的权利(系统特权)包括建立表空间建立用户修改用户的权利删除用户等系统特权可授予用户也可以随时回收ORACLE系统特权有多种
建立对象级的安全保证
对象级特权通过授予用户对数据库中特定的表视图序列等进行操作(查询增删改)的权利来实现
建立用户级的安全保证
用户级安全保障通过用户口令和角色机制(一组权利)来实现引入角色机制的目的是简化对用户的授权与管理做法是把用户按照其功能分组为每个用户建立角色然后把角色分配给用户具有同样角色的用户有相同的特权
用户管理
ORACLE用户管理的内容主要包括用户的建立修改和删除
用户的建立
SQL>CREATE USER jxzy
>IDENTIFIED BY jxzy_password
>DEFAULT TABLESPACE system
>QUATA M ON system; //供用户使用的最大空间限额
用户的修改
SQL>CREATE USER jxzy
>IDENTIFIED BY jxzy_pw
>QUATA M ON system;
删除用户及其所建对象
SQL>DROP USER jxzy CASCADE; //同时删除其建立的实体
系统特权管理与控制
ORACLE 提供了多种系统特权其中每一个系统特权允许用户执行一个或一类数据库操作
授予系统特权
SQL>GRANT CREATE USERALTER USERDROP USER
>TO jxzy_new
>WITH ADMIN OPTION;
回收系统特权
SQL>REVOKE CREATE USERALTER USERDROP USER
>FROM jxzy_new
//但没有级联回收功能
显示已被授予的系统特权(某用户的系统级特权)
SQL>SELECT*FROM sysdba_sys_privs
对象特权管理与控制
ORACLE对象特权指用户在指定的表上进行特殊操作的权利这些特殊操作包括增删改查看执行(存储过程)引用(其它表字段作为外键)索引等
授予对象特权
SQL>GRANT SELECTINSERT(office_numoffice_name)
>UPDATE(desc)ON office_organization
>TO new_adminidtrator
>WITH GRANT OPTION;
//级联授权
SQL>GRANT ALL ON office_organization
>TO new_administrator
回收对象特权
SQL>REVOKE UPDATE ON office_orgaization
>FROM new_administrator
//有级联回收功能
SQL>REVOKE ALL ON office_organization
>FROM new_administrator
显示已被授予的全部对象特权
SQL>SELECT*FROM sysdba_tab_privs
角色的管理
ORACLE的角色是命名的相关特权组(包括系统特权与对象特权)