zoukankan      html  css  js  c++  java
  • ORACLE数据库的模式对象的管理与维护

    一、ORACLE数据库的模式对象的管理与维护
      
      本节的主要内容是关于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 play.bitsCN.com累了吗玩一下吧
      
      >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; play.bitsCN.com累了吗玩一下吧
      
      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 外键 feedom.net国内最早的网管网站
      
      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) bbs.bitsCN.com国内最早的网管论坛
      
      >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是多用户系统,它允许许多用户共享系统资源。为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制。
      
      2. 1 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; //同时删除其建立的实体 blog.bitsCN.com网管博客等你来搏
      
      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), feedom.net国内最早的网管网站
      
      >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的角色是命名的相关特权组(包括系统特权与对象特权)
  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/skyblue/p/815004.html
Copyright © 2011-2022 走看看