本节的主要内容是关于oracle数据库的模式对象的管理与维护,这些模式对象包括:表空间、表、视图、索引、序列、同义词、聚集和完整性约束。对于每一个模式对象,首先描述了它的定义,说明了它的功能,最后以基于sql语言的实例说明如何对它们进行管理于维护。
1.1 表空间
由于表空间是包含这些模式对象的逻辑空间,有必要先对它进行维护。
创建表空间
sql>create tablespace jxzy
>datafile ‘/usr/oracle/dbs/jxzy.dbf’
>online;
修改表空间
sql>alter tablespace jxzy offline normal;
sql>alter tablespace jxzy
>rename datafile ‘/usr/oracle/dbs/jxzy.dbf’
>to ‘/usr/oracle/dbs/jxzynew.dbf’
>online
sql>create tablespace jxzy online
删除表空间
sql>drop tablespace jxzy
>including contents
1. 2 表维护
表是数据库中数据存储的基本单位,一个表包含若干列,每列具有列名、类型、长度等。
表的建立
sql>create table jxzy.switch(
>office_num number(3,0) not null,
>switch_code number(8,0) not null,
>switch_name varchar2(20) not null);
表的修改
sql>alter table jxzy.switch
>add (desc varchar2(30));
表的删除
sql>drop table jxzy.switch
>cascade constraints
//删除引用该表的其它表的完整性约束
1. 3 视图维护
视图是由一个或若干基表产生的数据集合,但视图不占存储空间。建立视图可以保护数据安全(仅让用户查询修改可以看见的一些行列)、简化查询操作、保护数据的独立性。
视图的建立
sql>create view jxzy.pole_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 jxzy.pole_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 jxzy.pole_well_view;
1.4 序列维护
序列是由序列发生器生成的唯一的整数。
序列的建立
sql>create sequence jxzy.sequence_cable
>start with 1
>increment by 1
>no_maxvalue;
建立了一个序列,jxzy.sequence_cable.currval返回当前值,jxzy.sequence_cable.nextval 返回当前值加1后的新值
序列的修改
sql>alter sequence jxzy.sequence_cable
>start with 1 //起点不能修改,若修改,应先删除,然后重新定义
>inctement by 2
>maxvalue 1000;
序列的删除
sql>drop sequence jxzy.sequence_cable
1. 5 索引维护
索引是与表相关的一种结构,它是为了提高数据的检索速度而建立的。因此,为了提高表上的索引速度,可在表上建立一个或多个索引,一个索引可建立在一个或几个列上。
对查询型的表,建立多个索引会大大提高查询速度,对更新型的表,如果索引过多,会增大开销。
索引的建立
sql>create index jxzy.idx_switch
>on switch(switch_name)
>tablespace jxzy;
索引的修改
sql>alter index jxzy.idx_switch
>on switch(office_num,switch_name)
>tablespace jxzy;
索引的删除
sql>drop index jxzy.idx_switch;
1. 6 完整性约束管理
数据库数据的完整性指数据的正确性和相容性。数据完整型检查防止数据库中存在不符合语义的数据。
完整性约束是对表的列定义一组规则说明方法。oracle提供如下的完整性约束.
a. not null 非空
b. unique 唯一关键字
c. primaty key 主键一个表只能有一个,非空
d. foreiga key 外键
e.check 表的每一行对指定条件必须是true或未知(对于空值)
例如:
某列定义非空约束
sql>alter table office_organization
>modify(desc varchar2(20)
>constraint nn_desc not null)
某列定义唯一关键字
sql>alter table office_organization
>modify(office_name vatchar2(20)
>constraint uq_officename unique)
定义主键约束,主键要求非空
sql>create table switch(switch_code number(8)
>constraint pk_switchcode primary key,)
使主键约束无效
sql>alter table switch disable primary key
定义外键
sql>create table pole(pole_code number(8),
>office_num number(3)
>constraint fk_officenum
>references office_organization(office_num)
>on delete cascade);
定义检查
sql>create table office_organization(
>office_num number(3),
>constraint check_officenum
>check (office_num between 10 and 99);
oracle是多用户系统,它允许许多用户共享系统资源。为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。
建立系统级的安全保证
系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间、建立用户、修改用户的权利、删除用户等。系统特权可授予用户,也可以随时回收。oracle系统特权有80多种。
建立对象级的安全保证
对象级特权通过授予用户对数据库中特定的表、视图、序列等进行操作(查询、增、删改)的权利来实现。
建立用户级的安全保证
用户级安全保障通过用户口令和角色机制(一组权利)来实现。引入角色机制的目的是简化对用户的授权与管理。做法是把用户按照其功能分组,为每个用户建立角色,然后把角色分配给用户,具有同样角色的用户有相同的特权。
2.2 用户管理
oracle用户管理的内容主要包括用户的建立、修改和删除
用户的建立
sql>create user jxzy
>identified by jxzy_password
>default tablespace system
>quata 5m on system; //供用户使用的最大空间限额
用户的修改
sql>create user jxzy
>identified by jxzy_pw
>quata 10m on system;
删除用户及其所建对象
sql>drop user jxzy cascade; //同时删除其建立的实体
2.3系统特权管理与控制
oracle 提供了80多种系统特权,其中每一个系统特权允许用户执行一个或一类数据库操作。
授予系统特权
sql>grant create user,alter user,drop user
>to jxzy_new
>with admin option;
回收系统特权
sql>revoke create user,alter user,drop user
>from jxzy_new
//但没有级联回收功能
显示已被授予的系统特权(某用户的系统级特权)
sql>select*from sys.dba_sys_privs
2.4 对象特权管理与控制
oracle对象特权指用户在指定的表上进行特殊操作的权利。这些特殊操作包括增、删、改、查看、执行(存储过程)、引用(其它表字段作为外键)、索引等。
授予对象特权
sql>grant select,insert(office_num,office_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 sys.dba_tab_privs
2.5 角色的管理
oracle的角色是命名的相关特权组(包括系统特权与对象特权),oracle用它来简化特权管理,可把它授予用户或其它角色。
oracle数据库系统预先定义了connect 、resource、 dba、 exp_full_database、 imp_full_database五个角色。connect具有创建表、视图、序列等特权;resource具有创建过程、触发器、表、序列等特权、dba具有全部系统特权;exp_full_database、 imp_full_database具有卸出与装入数据库的特权。
通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。
授予用户角色
sql>grant dba to new_administractor
>with grant option;
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器