Microsoft Word - WJ01..doc

Size: px
Start display at page:

Download "Microsoft Word - WJ01..doc"

Transcription

1 第 1 章 Oracle Database 12c 是 Oracle 11g 的升级版 同样, 就 设置它然后忘记它 特性而言, Oracle 11g 是对 Oracle 10g 的革命性升级 与以前的版本升级一样,Oracle 12c 同样增强了一些特性, 包括执行计划管理的自动化程度更高, 新增了虚拟化特性, 大大提高了可用性和故障转移能力 本书第 Ⅰ 部分将介绍 Oracle 体系结构的基础, 并通过为全新安装或从以前的 Oracle 版本升级给出实用建议, 为成功部署 Oracle 基础结构打下基础 为奠定 Oracle 12c 软件的良好基础, 相关小节中也介绍服务器硬件和操作系统配置问题 在本书第 Ⅱ 部分中, 将介绍一些与 Oracle 12c 数据库的日常维护和操作相关的领域 第 5 章讨论一些需求, 将 Oracle ISO 映像安装在服务器之前,DBA 需要收集这些需求 其后的几章介绍一些方法,DBA 可运用这些方法管理磁盘空间 管理 CPU 利用率 调整 Oracle 参数以优化服务器的资源, 以及根据需要自由使用各种工具来监控数据库的性能 如果优化器发现

2 4 第 Ⅰ 部分数据库体系结构 基数的原估值偏离过多,Oracle 12c 中的查询优化特性在动态更改查询计划方面的自动化程度更高 本书第 Ⅲ 部分重点关注 Oracle 12c 的高可用性, 包括使用 Oracle 的恢复管理器 (Recovery Manager,RMAN) 执行并自动完成数据库备份和恢复, 使用 Oracle Data Guard( 数据卫士 ) 等其他特性提供简单可靠的数据库故障恢复方法 Oracle 12c 新增的容器数据库 (container database) 或多租户数据库的特性以及相应的可插拔数据库除了更有效地使用服务器资源承载一个或多个容器数据库外, 还将 可传输表空间 的概念扩展到整个数据库 最后介绍重要的 Oracle 12c RAC(Real Application Clusters, 实时应用群集 ) 如何同时将极端的可伸缩性和透明故障转移功能提供给数据库环境 即使不使用 Oracle 12c 的 RAC 特性, 备用特性也使 Oracle 12c 几乎与群集解决方案一样可用 由于能很容易地在备用数据库和主数据库之间切换, 又可以查询物理上的备用数据库, 这就在准备实现 RAC 数据库之前, 提供了健壮的高可用性解决方案 本书第 Ⅳ 部分将介绍与网络化 Oracle(Networked Oracle) 相关的各种问题, 不仅介绍如何在 N 层环境中配置 Oracle Net, 还介绍如何管理大型数据库和分布式数据库, 这些数据库可能驻留在邻近的城市或全球 本章将介绍 Oracle 12c 的基础知识, 重点强调本书其他部分将介绍的许多特性, 以及使用 Oracle 通用安装程序 (Oracle Universal Installer,OUI) 和数据库配置助手 (Database Configuration Assistant,DBCA) 安装 Oracle 12c 的基本知识 本章也将介绍组成 Oracle 12c 实例的各种元素, 包括内存结构 磁盘结构 初始参数 表 索引和 PL/SQL 等 在使 Oracle 12c 具有高伸缩性 可用性和安全环境方面, 每种元素都扮演着重要角色 1.1 数据库和实例概述 虽然 数据库 (Database) 和 实例 (instance) 这两个术语常互换使用, 但它们之间存在很大区别 在 Oracle 数据中心, 它们是完全不同的实体, 下面会介绍这一点 数据库 数据库 是磁盘上数据的集合, 位于收集和维护相关信息的数据库服务器上的一个或多个文件中 数据库由各种物理和逻辑结构组成, 而表则是数据库中最重要的逻辑结构 表 由包含相关数据的行和列组成 数据库至少要有存储有用信息的表 图 1-1 显示了一个示例表, 其中包含 4 行和 3 列 表中每一行的数据都有关联 : 每行都包含公司中特定雇员的有关信息 此外, 数据库提供了安全级别, 用于防止对数据的未授权访问 Oracle 12c 提供了许多机制来帮助实现保持机密数据秘密级所需要的安全性 第 9 章将更详细地介绍 Oracle 安全性和访问控制

3 第 1 章 Oracle 体系结构概述 5 表名 列名 数据行 列 图 1-1 示例数据库表 组成数据库的文件主要分为两类 : 数据库文件和非数据库文件 两者之间的区别在于存储何种数据 数据库文件包含数据和元数据, 非数据库文件则包含初始参数和日志记录信息等 数据库文件对于每时每刻正在进行的数据库操作来说至关重要 1.4 节将讨论这些物理存储结构 实例 典型的企业服务器的主要组成部分是一个或多个 CPU( 有多个核 ) 磁盘空间和内存 Oracle 数据库存储在服务器的磁盘上, 而 Oracle 实例 (instance) 则存在于服务器的内存中 Oracle 实例由一个大型内存块和大量后台进程组成 ; 该内存块分配在系统全局区域 (System Global Area, SGA) 中, 后台进程在 SGA 和磁盘上的数据库文件之间交互 在 Oracle RAC 中, 多个实例将使用同一个数据库 虽然共享数据库的实例可能在同一服务器上, 但最可能的是这些实例位于不同服务器上, 这些服务器通过高速互连进行连接, 并且访问驻留在专门的 支持 RAID 的磁盘子系统上的数据库 Oracle Exadata 数据库一体机 (database appliance) 是一个将数据库服务器 I/O 服务器和磁盘存储组合到一个或多个机柜, 并针对 RAC 环境优化的示例 ( 包括以每接口 40 Gbps 的速度连接所有这些设备的双 InfiniBand 接口 ) 第 11 章中将介绍如何配置 RAC 安装的更多细节 1.2 Oracle 逻辑存储结构 Oracle 数据库中的数据文件被分组到一个或多个表空间中 在每个表空间中, 逻辑数据库结构 ( 如表和索引 ) 都是片段, 被进一步细分为 盘区 (extent) 和 块 (block) 这种存储的逻辑细分允许 Oracle 更有效地控制磁盘空间的利用率 图 1-2 显示了数据库中逻辑存储结构之间的关系

4 6 第 Ⅰ 部分数据库体系结构 数据库 SYSTEM 表空间 USERS 表空间 SYSAUX 表空间 段 表空间 盘区 1 段 1 段 2 盘区 2 段 3 段 4 段 5 段 6 块 图 1-2 逻辑存储结构 表空间 Oracle 表空间 (tablespace) 由一个或多个数据文件组成, 一个数据文件是且只能是一个表空间的一部分 对于 Oracle 12c 的安装, 最少会创建两个表空间 :SYSTEM 表空间和 SYSAUX 表空间 Oracle 12c 的默认安装创建 6 个表空间 Oracle 10g 及后续版本允许创建特殊类型的表空间, 称为大文件表空间 (bigfile tablespace), 其容量最大可为 128TB 使用大文件可使表空间管理对 DBA 完全透明可见, 换句话说,DBA 可以将表空间作为一个单位进行管理, 而不必考虑底层数据文件的大小和结构 使用 Oracle 管理文件 (Oracle Managed File,OMF) 可使表空间数据文件管理更为容易 使用 OMF,DBA 可在文件系统中指定一个或多个位置来驻留数据文件 控制文件和重做日志文件, 并由 Oracle 自动处理这些文件的命名和管理 第 4 章将更详细地讨论 OMF 即使表空间是临时的, 表空间自身也是永久的, 只有保存在表空间中的段是临时的 临时表空间可用于排序操作, 也用于只存在于用户会话期间的表 专门使用一个表空间用于此类操作, 有助于减少临时段和存储在另一个表空间中的永久段 ( 如表 ) 之间的 I/O 争用 表空间可以是字典管理的或本地管理的 在字典管理的表空间中, 盘区管理记录在数据字典表中 因此, 即使所有的应用程序表都在 USERS 表空间中, 也仍需要访问 SYSTEM 表空间, 以管理应用程序表上的 DML 因为所有用户和应用程序必须使用 SYSTEM 表空间才能进行盘区管理, 这就为写入密集型应用程序造成了潜在的瓶颈 在本地管理的表空间中,Oracle 在表空间的每个数据文件中维护一个位图, 用于跟踪空间可用性 只有数据字典中管理分配额, 可极大地减少数据字典表的争用 其实没什么好的理由来创建字典管理的表空间 在安装 Oracle 12c 时, 必须在本地管理 SYSTEM 和 SYSAUX 表空间 为了导入可传输的表空间, 表空间可由字典管理, 但将是只读的

5 第 1 章 Oracle 体系结构概述 块数据库块是 Oracle 数据库中最小的存储单位 块的大小是数据库内给定表空间中特定数量的存储字节 块通常是操作系统块的几倍大, 这有助于提升磁盘 I/O 的效率 Oracle 初始参数 DB_BLOCK _SIZE 指定默认的块大小 最多可为数据库中的其他表空间定义 4 个块大小, 而 SYSTEM SYSAUX 和任何临时表空间中的块大小必须为 DB_BLOCK_SIZE 的值 默认块大小是 8KB, 所有 Oracle 测试都使用 8KB 块执行 Oracle 最佳实践指出, 除非确有必要使用不同大小, 否则应为所有表空间使用 8KB 块大小 一个原因可能是表的平均行大小是 20KB 因此, 可选用 32KB 块, 但应该进行全面测试, 看一下能否提升性能 盘区盘区是数据库中的下一个逻辑分组级别, 它由一个或多个数据库块组成 当扩大数据库对象时, 为该对象添加的空间将分配为一个盘区 段数据库中的下一个逻辑分组级别是段 段是一组盘区, 这组盘区组成了被 Oracle 视为一个单位的数据库对象, 如表或索引 因此, 段一般是数据库终端用户要处理的最小存储单位 Oracle 数据库中可看到 4 种类型的段 : 数据段 ( 非分区表和分区表的每个分区 ) 索引段 临时段和回滚段 1. 数据段数据库中的每个表都驻留在单独的数据段中, 数据段由一个或多个盘区组成 如果某个表是分区表 (partitioned table) 或群集表 (clustered table), 则 Oracle 为该表分配多个段 本章稍后将讨论分区表和群集表 数据段包含存储 LOB( 大对象 ) 数据的 LOB 段,LOB 数据由数据段中的 LOB 定位器列引用 ( 假定 LOB 不是以内联方式存储在表中 ) 2. 索引段每个索引都存储在自己的索引段中 与分区表一样, 分区索引的每个分区存储在各自的段中 这种索引段包含的是 LOB 索引段, 而表的非 LOB 列 表的 LOB 列以及 LOB 的相关索引都可以驻留在各自的表空间中, 以提高性能 3. 临时段当用户的 SQL 语句需要磁盘空间来完成某操作 ( 例如不能在内存中完成的排序操作 ) 时, Oracle 会分配临时段 临时段只存在于 SQL 语句的持续期间 4. 回滚段从 Oracle 10g 开始, 遗留的回滚段只存在于 SYSTEM 表空间中, 并且 DBA 一般不需要维护 SYSTEM 回滚段 在以前的 Oracle 版本中, 当事务回滚时, 会创建回滚段以保存数据库 DML 操作之前的值, 并且用于维护 之前 的图像数据, 从而为访问表的其他用户提供表数据的读

6 8 第 Ⅰ 部分数据库体系结构 一致性视图 回滚段也用于在数据库恢复期间回滚未提交的事务, 这些事务在数据库实例崩溃或异常终止时活动 自动撤消管理 (Automatic Undo Management,AUM) 处理一个撤消表空间中回滚段的自动分配和管理 在撤消表空间中, 撤消段的构造类似于回滚段, 不同之处在于如何管理这些段的细节由 Oracle 控制, 而不由 DBA 管理 ( 通常效率低 ) 从 Oracle 9i 开始就存在自动撤消段, 但在 Oracle 12c 中仍可手动管理回滚段 然而, 从 Oracle 10g 开始不赞成使用这种功能, 在后续版本中该功能将不再可用 在 Oracle 12c 中, 默认启用 AUM, 此外还提供了 PL/SQL 过程, 以帮助确定 UNDO 表空间的大小 第 7 章将详细讨论自动撤消管理 1.3 Oracle 逻辑数据库结构 本节将介绍所有主要逻辑数据库结构的重点部分, 首先将介绍表和索引, 接下来讨论各种可用于定义表列的数据类型 在创建带有列的表时, 可在表列上添加限制, 或称为 约束 (constraint) 使用关系数据库管理系统 (Relational Database Management System,RDBMS) 管理数据的一个原因在于, 要协调利用 Oracle 数据库的安全性和审核特性 本节将回顾一些方法, 用于分离用户对数据库的访问或被访问对象对数据库的访问 本节还将介绍其他许多可由 DBA 或用户定义的逻辑结构, 包括同义词 外部文件的链接和其他数据库的链接 表表是 Oracle 数据库中的基本存储单位 如果没有表, 数据库对于企业来说就没有任何价值 无论表的类型是什么, 表中的数据总是存储在行和列中, 这类似于在电子表格中存储数据 但这种类似性仅限于此 决定在何处存储关键信息时, 由于 Oracle 数据库的可靠性 完整性和可伸缩性带来的数据库表的健壮性, 使电子表格成为次要选择 本节将回顾 Oracle 数据库中许多不同类型的表, 以及它们如何满足组织的大多数数据存储需求 第 5 章和第 8 章将详细介绍如何根据特定的应用程序在这些类型的表中做出选择, 以及如何管理它们 1. 关系表关系表是数据库中最常见的表类型 关系表以 堆 (heap) 的形式进行组织 ; 换句话说, 表中的行没按任何特定顺序存储 在 CREATE TABLE 命令中, 可指定子句 ORGANIZATION HEAP 来定义以堆的形式组织的表, 但因为这是默认的, 所以该子句可以省略 表的每一行包含一列或多列, 每一列都有一种数据类型和长度 从 Oracle 8 开始, 列也可以包含用户定义的对象类型 嵌套表或 VARRAY 此外, 还可以将表定义为对象表 本节稍后将回顾对象表和对象 表 1-1 列出了内置的 Oracle 数据类型 Oracle 也支持 ANSI 兼容的数据类型, 表 1-2 给出了 ANSI 数据类型和 Oracle 数据类型之间的映射关系

7 第 1 章 Oracle 体系结构概述 9 表 1-1 Oracle 内置数据类型 Oracle 内置数据类型 说 明 VARCHAR2(size)[BYTE CHAR] 变长字符串, 最大长度为 B, 最小为 1B CHAR 表明使用 字符语义计算字符串的长度 ;BYTE 表明使用字节语义 在 Oracle Database 12c 中, 如果将 MAX_STRING_SIZE 初始参数设置为 EXTENDED, 可将 用作 VARCHAR2 列的最大长度 NVARCHAR2(size) 变长字符串, 最大长度为 字节 NUMBER(p,s) 带有精度 (p) 和标度 (s) 的数字, 精度为 1~38, 标度为 84~127 为存储给定值,NUMBER 列少则 1B, 多则 22B LONG 变长字符数据, 长度最多为 2GB(2 31 1) DATE 日期值, 从公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日 BINARY_FLOAT 32 位浮点数 BINARY_DOUBLE 64 位浮点数 TIMESTAMP(fractional_seconds) 年 月 日 小时 分钟 秒和秒的小数部分 fractional_seconds 的值为 0~9; 换句话说, 最多为十亿分之一秒的精度 默认为 6( 百万分之一 ) TIMESTAMP(fractional_seconds) WITH TIME ZONE 包含一个 TIMESTAMP 值, 此外还有一个时区置换值 时区置换可以是到 UTC( 如 -06:00) 或区域名 ( 如 US/Central) 的偏移量 TIMESTAMP(fractional_seconds) WITH LOCAL TIME ZONE 类似于 TIMESTAMP WITH TIMEZONE, 但有两点区别 :(1) 在存储数据时, 数据被规范化为数据库时区 ;(2) 在检索具有这种数 据类型的列时, 用户可以看到以会话的时区表示的数据 INTERVAL YEAR(year_precision) TO MONTH 以年和月的方式存储时间段,year_precision 的值是 YEAR 字段中数字的位数 INTERVAL DAY(day_precision) TO SECOND(fractional_seconds_ precision) 以日 小时 分钟 秒 小数秒的形式存储一段时间 day_precision 的值为 0~9, 默认为 2 fractional_ seconds_precision 的值类似于 TIMESTAMP 值中的小数秒 ; 范围为 0~9, 默认为 6 RAW(size) 原始二进制数据, 最大尺寸为 2000B LONG RAW 原始二进制数据, 变长, 最大尺寸为 2GB ROWID 以 64 为基数的串, 表示对应表中某一行的唯一地址 该地址在 整个数据库中是唯一的 UROWID[(size)] 以 64 为基数的串, 表示按索引组织的表中某一行的逻辑地址 size 的最大值为 4000B CHAR(size)[BYTE CHAR] 定长字符串, 其长度为 size 最小尺寸为 1B, 最大为 2000B BYTE 和 CHAR 参数是 BYTE 和 CHAR 语义, 与 VARCHAR2 中的相同 NCHAR(size) 定长字符串, 最大为 2000B; 最大尺寸取决于数据库的国家字符 集定义 默认大小为 1 CLOB 字符大型对象, 包含单字节或多字节字符 ; 支持定宽和变宽的字 符集 最大尺寸为 (4GB 1)*DB_BLOCK_SIZE

8 10 第 Ⅰ 部分数据库体系结构 ( 续表 ) Oracle 内置数据类型说明 NCLOB BLOB BFILE 类似于 CLOB, 除了存储来自于定宽和变宽字符集的 Unicode 字符 最大尺寸为 (4GB 1)*DB_BLOCK_SIZE 二进制大型对象 ; 最大尺寸为 (4GB 1)*DB_BLOCK_SIZE 指向存储在数据库外部的大型二进制文件的指针 必须能够从运行 Oracle 实例的服务器访问二进制文件 最大尺寸为 4GB 表 1-2 与 ANSI 数据类型等价的 Oracle 数据类型 ANSI SQL 数据类型 CHARACTER(n) CHAR(n) CHARACTER VARYING(n) CHAR VARYING(n) NATIONAL CHARACTER(n) NATIONAL CHAR(n) NCHAR(n) NATIONAL CHARACTER VARYING(n) NATIONAL CHAR VARYING(n) NCHAR VARYING(n) NUMERIC(p,s) DECIMAL(p,s) INTEGER INT SMALLINT FLOAT(b) DOUBLE PRECISION REAL Oracle 数据类型 CHAR(n) VARCHAR(n) NCHAR(n) NVARCHAR2(n) NUMBER(p,s) NUMBER(38) NUMBER 2. 临时表从 Oracle 8i 开始,Oracle 就支持临时表 之所以称它们为 临时表, 在某种意义上是因为数据存储在表中, 而不是存储在表自身的定义中 命令 CREATE GLOBAL TEMPORARY TABLE 可创建临时表 只要其他用户具有访问表自身的权限, 他们就可以在临时表上执行 SELECT 命令或 DML 命令, 如 INSERT UPDATE 或 DELETE 然而, 每个用户只能在表中看到自己的数据 当用户截取临时表时, 只会从表中删除他们插入的数据 临时表中有两种不同风格的临时数据 : 事务持续期间的临时数据和会话持续期间的临时数据 临时数据的寿命由 ON COMMIT 子句控制, 在执行 COMMIT 或 ROLLBACK 命令时, ON COMMIT DELETE ROWS 负责删除临时表中的所有行, 而 ON COMMIT PRESERVE

9 第 1 章 Oracle 体系结构概述 11 ROWS 能在超出事务边界后保留表中的行 然而, 当用户的会话终止时, 临时表中所有的用户行都会被删除 使用临时表时还有其他一些注意事项 虽然可在临时表上创建索引, 但索引中的条目将随数据行一起被删除, 这一点与普通表一样 另外, 由于临时表中数据的临时特性,Oracle 不会为临时表上的 DML 生成任何重做信息, 而会在撤消表空间中创建撤消信息 3. 索引组织表如同将在后面关于索引的小节中看到的, 创建索引可以更有效地找到表中的特定行 然而, 这也会带来一些额外的系统开销, 因为数据库必须同时维护表的数据行和索引条目 如果表包含的列并不多, 而且对表的访问主要集中在某一列上, 应怎么做? 这种情况下, 索引组织表 (Index Organized Table,IOT) 可能就是正确的解决方案 IOT 以 B- 树索引的形式存储表中的行, 其中 B- 树索引的每个节点都包含作为键的 ( 索引 ) 列以及一个或多个非索引列 IOT 最明显的优点在于只需要维护一个存储结构, 而非两个 类似地, 表中主键的值只在 IOT 中存储一次, 而在普通表中则需要存储两次 然而, 使用 IOT 也存在一些缺点 有些表, 如记录事件的表, 可能不需要主键, 或不需要任何键, 而 IOT 则必须有主键 同时,IOT 不可以是群集的成员 最后, 如果表中有大量的列, 并且在检索表中的行时需要频繁地访问许多列,IOT 可能就不是最佳解决方案 4. 对象表从 Oracle 8 开始,Oracle Database 已经支持数据库中许多面向对象的特性 用户定义的类型, 以及针对这些对象类型定义的任何方法, 都可以无缝地实现 Oracle 中面向对象 (Object-Oriented,OO) 的开发项目 对象表具有自身就是对象或类型定义实例化的行 可通过对象 ID(Object ID,OID) 引用对象表中的行, 这与关系表或普通表中的主键形成对比 然而, 与关系表一样, 对象表仍可以有主键和唯一键 例如, 假设正从头开始创建一个人力资源 (Human Resources,HR) 系统, 此时可以完全从面向对象的观点来灵活地设计数据库 第一步是通过创建如下类型来定义雇员对象或类型 : create type PERS_TYP as object (Last_Name varchar2(45), First_Name varchar2(30), Middle_Initial char(1), Surname varchar2(10), SSN varchar2(15)); 在上面的例子中, 未创建带 PERS_TYP 对象的任何方法, 但 Oracle 默认为该类型创建了一个构造函数方法, 它与类型自身同名 ( 在本例中就是 PERS_TYP) 为创建作为 PERS_TYP 对象集合的对象表, 可使用我们熟悉的 CREATE TABLE 语法, 具体如下 : create table pers of pers_typ; 为将对象实例添加到对象表, 可以在 INSERT 命令中指定构造函数方法 : insert into pers

10 12 第 Ⅰ 部分数据库体系结构 values(pers_typ('nickels','randy','e','ms.',' ')); 从 Oracle Database 10g 开始, 如果表由单个对象的实例组成, 则不需要构造函数 其简化的语法如下 : insert into pers values('confused','dazed','e','ms.',' '); 对 PERS_TYP 对象实例的引用可作为 REF 对象存储在其他表中, 并且可用于检索 PERS 表中的数据, 而不需要直接引用 PERS 表本身 第 5 章将通过更多示例来介绍如何使用对象实现面向对象设计项目 5. 外部表 Oracle 9i 引入了外部表 简单来说, 外部表允许用户访问数据源, 如文本文件, 就如同该数据源是数据库中的表一样 表的元数据存储在 Oracle 数据字典中, 但表的内容存储在外部 外部表的定义包含两部分 第一部分 ( 也是最熟悉的部分 ) 是从数据库用户的角度观察的表定义 该定义类似于在 CREATE TABLE 语句中看到的典型定义 第二部分用于区分外部表和普通表 这是数据库列和外部数据源之间生成映射的位置 : 数据元素开始于哪些列, 列有多宽, 以及外部列的格式是字符还是二进制 外部表 ORACLE_ LOADER 的默认类型的语法实际上等同于 SQL*Loader 中控制文件的语法 这是外部表的一个优点, 用户只需知道如何访问标准数据库表以获得外部文件 然而, 使用外部表也有一些缺点 在外部表上不可以创建索引, 也不可以对其执行插入 更新或删除操作 但是, 如果考虑到使用外部表加载本地数据库表 ( 如在数据仓库环境中 ) 的优点, 这些缺点就微不足道了 6. 群集表如果经常同时访问两个或多个表 ( 如一个订单表和一个行项明细表 ), 则创建群集表 (clustered table) 可能是一种较好的方法, 它可以改进引用这些表的查询的性能 在具有相关行项 (line-item) 明细表的订单表中, 订单标题信息可与行项明细记录存储在同一个块中, 从而减少检索订单和行项信息所需要的 I/O 数量 群集表还可减少存储两个表共有的列所需要的空间量, 两个表共有的列也称为 群集键值 群集键值也存储在群集索引中 群集索引操作起来非常类似于传统的索引, 通过群集键值访问群集表时, 可改进对群集表的查询 在具有订单和行项的示例中, 订单号只需要存储一次, 不必针对每个行项明细行重复存储 相对于对表执行的 SELECT 语句的数量, 如果需要频繁地对表执行插入 更新和删除操作, 则群集表的优点就会减少 此外, 经常对群集中的单个表进行查询也会减弱首先对表进行群集化的优势 7. 散列群集作为特殊类型的群集表, 散列群集 (hash cluster) 操作起来非常类似于普通的群集表, 但是, 它不使用群集索引, 而使用散列函数来存储并检索表中的行 创建表时, 将根据在创建群集期间指定的散列键的数量分配所需要的预估空间 在订单条目示例中, 假设 Oracle 数据库需要镜

11 第 1 章 Oracle 体系结构概述 13 像遗留的数据条目系统 ( 该系统将周期性地重复使用订单号 ) 同时, 订单号始终是 6 位数字, 那么可按下面的示例创建订单群集 : create cluster order_cluster (order_number number(6)) size 50 hash is order_number hashkeys ; create table cust_order ( order_number number(6) primary key, order_date date, customer_number number) cluster order_cluster(order_number); 使用相等比较方式从表中选择行时, 散列群集具有性能优势, 如下所示 : select order_number, order_date from cust_order where order_number = ; 一般情况下, 如果 HASHKEYS 的数量足够多并且包含散列函数的 HASH IS 子句产生均匀分布的散列键, 那么这种查询在检索行时将只使用一次 I/O 8. 排序的散列群集 排序的散列群集是 Oracle 10g 中的新增内容 它们类似于普通的散列群集, 通过使用散列函数来定位表中的行 然而, 除此之外, 排序的散列群集允许对表中的行根据表的一列或多列进行升序排列 如果遇到进行先进先出 (First In First Out,FIFO) 处理的应用程序, 该方法就可以更快速地处理数据 可以先创建群集本身, 再创建排序的散列群集, 但需要在群集中列定义的后面加上 SORT 位置参数 下面是在排序散列群集中创建表的示例 : create cluster order_detail_cluster ( order_number number(6), order_timestamp timestamp) size 50 hash is order_number hashkeys 100; create table order_detail ( order_number number, order_timestamp timestamp sort, customer_number number) cluster order_detail_cluster ( order_number, order_timestamp); 基于排序散列群集的 FIFO 特性, 通过 order_number 访问订单时, 将根据 order_timestamp 的值首先检索时间最久的订单 9. 分区表 对表进行分区或对索引进行分区 ( 下一部分将介绍对索引进行分区 ) 可帮助建立更便于管理的大型表 可将表分区 ( 甚至细分 ) 为较小的部分 从应用程序的观点看, 分区是透明的 ( 也就是说, 在终端用户的 SQL 中不需要对任何特定分区进行显式的引用 ) 用户唯一能够观察到的是, 在 WHERE 子句中使用匹配分区方案的标准对分区表进行查询, 将运行得更快

12 14 第 Ⅰ 部分数据库体系结构 从 DBA 的观点看, 进行分区有很多优点 如果表的一个分区位于已损坏的磁盘卷上, 则在修复遭到破坏的卷时, 用户仍可查询表的其他分区 与此类似, 对分区的备份可以许多天进行一次, 每次备份一个分区, 而不需要一次性地对整个表进行备份 分区大致有 3 种类型 : 范围分区 散列分区及列表分区 从 Oracle 11g 开始, 也可以根据父 / 子关系进行分区, 由应用程序控制分区, 并可对基本分区类型进行很多组合, 包括列表 - 散列 列表 - 列表 列表 - 范围和范围 - 范围等 分区表中的每一行能且只能存在于一个分区中 分区键为行指示正确的分区, 它可以是组合键, 最多可组合表中的 16 列 对可分区的表类型有一些次要的限制, 例如, 包含 LONG 或 LONG RAW 列的表不能进行分区 LONG 限制极少会成为问题 LOB( 包括字符大型对象 CLOB 和二进制大型对象 BLOB) 则灵活得多, 包含 LONG 和 LONG RAW 数据类型的所有特性 提示 : Oracle 公司建议, 对于任何大于 2GB 的表, 应尽量考虑对其进行分区 无论使用何种类型的分区模式, 分区表的每个成员都必须具有相同的逻辑属性, 如列名 数据类型和约束等 然而, 根据每个分区的大小和在磁盘上的位置, 它们的物理属性可能有所不同 关键在于, 从应用程序或用户的角度看, 分区表必须在逻辑上一致 范围分区对于范围分区, 它的分区键落在某一范围内 例如, 对公司电子商务站点的访问可根据访问日期赋给某个分区, 每个季度一个分区 在 2012 年 5 月 25 日对站点的访问将记录在名为 FY2012Q2 的分区中, 而在 2012 年 12 月 2 日对站点的访问则记录在名为 FY2012Q4 的分区中 列表分区在列表分区中, 分区键落在完全不同的值组中 例如, 按美国国内城市区域划分的销售区域可针对 NY CT MA 和 VT 创建一个分区, 针对 IL WI IA 和 MN 创建另一个分区 如果缺少州代码, 则全球其他区域的销售可赋给各自的分区 散列分区散列分区根据散列函数将行赋给分区, 只需要指定用于散列函数的一列或多列, 不必将这些列显式赋予分区, 而只需要指定有多少列可用 Oracle 将行赋给分区, 并确保每个分区中行的均匀分布 如果没有明确的列表分区或范围分区模式提供给表中的列类型, 或者分区的相对大小经常改变, 需要用户重复地手动调整分区模式, 则散列分区就非常实用 组合分区使用组合分区可对分区进程进一步进行细分 例如, 可先对表进行范围分区, 然后在每个范围内, 使用列表或散列进一步分区 Oracle 11g 中新增的组合分区包括列表 - 散列 列表 - 列表 列表 - 范围和范围 - 范围等分区 10. 分区索引 对表上的索引 或者符合索引表的分区模式 ( 本地索引 ), 或者独立于表的分区模式进行分区 ( 全局索引 ) 进行分区操作时, 本地分区索引可增加索引的可用性, 例如, 归档并删除分区 FY2008Q4 及其本地索引不会影响表中其他分区的索引的可用性 约束 Oracle 约束 (constraint) 是一条或多条规则, 它在表的一列或多列上定义, 用于帮助实施业务规则 例如, 约束可强制实现雇员起薪不得低于 $ 这样的业务规则 另一个实施业

13 第 1 章 Oracle 体系结构概述 15 务规则的约束示例是, 如果将新雇员分配到一个部门 ( 虽然不需要立刻将他们分配到特定部门 ), 则该部门号必须有效, 并存在于 DEPT 表中 共有 6 种数据完整性规则可应用于表列 : 空值规则 唯一列值 主键值 引用完整性值 复合内联完整性和基于触发器的完整性 下面将简要介绍这些规则 创建表或在列的级别上改变表时, 定义表上的所有约束 ( 触发器除外, 它们是根据在表上执行哪些 DML 操作来定义的 ) 可在创建时或将来的任意时间点启用或禁用约束; 启用或禁用 ( 使用关键字 ENABLE 或 DISABLE) 约束时, 根据有效的业务规则, 可能需要也可能不需要验证 ( 使用关键字 VALIDATE 或 NOVALIDATE) 表中已有数据是否满足约束 例如, 汽车制造商数据库中的 CAR_INFO 表包含新的汽车数据, 需要为其中的 AIRBAG_ QTY 列添加一个新约束, 该列的值不得为 NULL, 并且对于所有新车辆, 该值必须至少为 1 然而, 该表包含多年前不需要安全气囊的汽车型号的数据, 因此 AIRBAG_ QTY 列包含值 0 或 NULL 这种情况下, 一种解决方案是在 AIRBAG_QTY 表上创建约束, 对添加到表中的所有新行强制实施新规则, 但不验证已有行是否满足约束 以下创建的表具有所有约束类型 下面将介绍每种约束 create table cust_order (order_number number(6) primary key, order_date date not null, delivery_date date, warehouse_number number default 12, customer_number number not null, order_line_item_qty number check (order_line_item_qty < 100), ups_tracking_number varchar2(50) unique, foreign key (customer_number) references customer(customer_number)); 1. 空值约束 NOT NULL 约束可防止将 NULL 值输入 ORDER_DATE 列或 CUSTOMER_NUMBER 列 从业务规则的角度看, 这样做很有意义 : 每个订单都必须有订购日期, 而只有在顾客下订单时, 订单才有意义 注意, 列中的 NULL 值并不意味着值为空或 0; 准确地讲, 该值不存在 NULL 值不等同于任何内容, 甚至不等同于另一个 NULL 值 在对可能具有 NULL 值的列使用 SQL 查询时, 这个概念非常重要 2. 唯一列值 UNIQUE 完整性约束确保一列或一组列 ( 通过组合约束 ) 在整个表中是唯一的 在前面的示例中,UPS_TRACKING_NUMBER 列将不包含重复值 为强制实施约束,Oracle 将在 UPS_TRACKING_NUMBER 列上创建唯一索引 如果该列上已有一个有效的唯一索引,Oracle 将使用该索引来实施约束 具有 UNIQUE 约束的列也可声明为 NOT NULL 如果没有声明该列具有 NOT NULL 约束, 则任意数量的行都可以具有 NULL 值, 只要剩余的行在该列中具有唯一值 在允许一列或多列具有 NULL 值的组合唯一约束中, 非 NULL 值的列用于确定是否满足约束 NULL 列总满足约束, 因为 NULL 值不等同于任何内容

14 16 第 Ⅰ 部分数据库体系结构 3. 主键值 PRIMARY KEY 完整性约束是数据库表中最常见的约束类型 一个表上最多只能存在一个主键约束, 组成主键的列不能有 NULL 值 在前面的示例中,ORDER_NUMBER 列是主键 系统将创建唯一索引以实施该约束, 如果该列已存在可用的唯一索引, 主键约束就使用该索引 4. 引用完整性值引用完整性或 FOREIGN KEY 约束比上述任何一种约束都更复杂, 因为它依赖于另一个表来限制哪些值可以输入到具有引用完整性约束的列中 在前面的示例中, 在 CUSTOMER_NUMBER 列上声明外键 (FOREIGN KEY); 输入该列的值必须也存在于另一个表 ( 在这种情况下是 CUSTOMER 表 ) 的 CUSTOMER_NUMBER 列中 与允许 NULL 值的其他约束一样, 具有引用完整性约束的列可有 NULL 值, 且不需要引用的列包含 NULL 值 此外,FOREIGN KEY 约束可以自引用 在主键为 EMPLOYEE_NUMBE 的 EMPLOYEE 表中,MANAGER_NUMBER 列具有根据同一个表中的 EMPLOYEE_NUMBER 列声明的外键, 这就允许在 EMPLOYEE 表自身中创建一个报告层次结构 应该总在外键 (FOREIGN KEY) 列上声明索引以改进性能, 该规则的唯一例外出现在绝对不会更新或删除父表中的引用主键或唯一键时 5. 复合内联完整性通过使用 CHECK 约束, 可在列级别实施更复杂的业务规则 在前面的示例中, ORDER_LINE_ITEM_QTY 列不得超出 99 CHECK 约束可使用插入或更新的行中的其他列来评估约束 例如,STATE_CD 列上的约束只有在 COUNTRY_CD 列的值不为 USA 时才允许 NULL 值 此外, 该约束可使用字面值和内置函数, 如 TO_CHAR 或 TO_DATE, 前提是这些函数能处理字面量或表中的列 一列上允许有多个 CHECK 约束 只有在所有的 CHECK 约束都计算为 TRUE 时, 才允许将值输入列中 例如, 可修改前面的 CHECK 约束, 确保 ORDER_LINE_ITEM_QTY 大于 0 并小于 基于触发器的完整性如果业务规则过于复杂, 使用唯一性约束很难实现, 则可使用 CREATE TRIGGER 命令在表上创建一个数据库触发器, 同时使用一个 PL/SQL 代码块实施这一业务规则 当引用的表存在于不同的数据库中时, 需要使用触发器来实施引用完整性约束 触发器也可用于许多超出约束检查领域的情况 ( 例如, 对表的审核访问 ) 第 17 章将深入介绍数据库触发器 索引当检索表中少量的行时, 使用 Oracle 索引能更快访问表中的这些行 索引存储了进行索引的列的值, 同时存储包含索引值的行的物理 ROWID, 唯一的例外是索引组织表 (Index-Organized

15 第 1 章 Oracle 体系结构概述 17 Table,IOT), 它使用主键作为逻辑 ROWID 一旦在索引中找到匹配值, 索引中的 ROWID 就会指向表行的确切位置 : 哪个文件 文件中的哪个块, 以及块中的哪一行 可在一列或多列上创建索引 索引条目存储在 B- 树结构中, 因此遍历索引以找到行的键值只需要使用非常少的 I/O 操作 在唯一索引情况下, 使用索引可能有两个目的 : 提高搜索行的速度, 并在索引列上实施唯一或主键约束 在插入 更新或删除表行的内容时, 自动更新索引中的条目 删除表时, 在该表上创建的所有索引也自动被删除 Oracle 中有一些可用的索引类型, 每种索引都适用于特定的表类型 访问方法或应用程序环境 下面将介绍最常见的索引类型的重点内容和特性 1. 唯一索引 唯一索引是最常见的 B- 树索引形式 它常用于实施表的主键约束 唯一索引确保索引的一列或多列中不存在重复值 可在 EMPLOYEE 表中 Social Security Number( 社会保障号 ) 的对应列上创建唯一索引, 因为该列中不应有任何重复值 然而, 一些雇员可能没有 Social Security Number, 因此该列可以包含 NULL 值 2. 非唯一索引 非唯一索引帮助提高访问表的速度, 而不会强制实施唯一性 例如, 可在 EMPLOYEE 表的 LAST_NAME 列上创建非唯一索引, 从而提高按姓查找的速度 但对于任何给定的姓, 确实可以有许多重复的值 如果在 CREATE INDEX 语句中没有指定其他任何关键字, 则默认在列上创建非唯一 B- 树索引 3. 反向键索引 反向键索引 (reverse key index) 是特殊类型的索引, 一般用于 OLTP(OnlineTransaction Processing, 联机事务处理 ) 环境中 在反向键索引中, 反向每列的索引键值中的所有字节 在 CREATE INDEX 命令中, 使用 REVERSE 关键字指定反向键索引 下面是创建反向键索引的一个示例 : create index ie_line_item_order_number on line_item(order_number) reverse; 如果发出的订单号是 , 则反向键索引将此订单号存储为 插入到表中的内容分布在索引的所有叶键上, 从而减少一些插入新行的写入程序之间的争用 如果在发出订单后不久就查询或修改订单, 则反向键索引也可减少 OLTP 环境中这些 热点 的可能性 另一方面, 尽管反向键索引减少了热点, 但它极大地增加了必须从磁盘读取的块数, 也增加了索引块拆分的数量 4. 基于函数的索引 基于函数的索引类似于标准的 B- 树索引, 不同之处在于它将被声明为表达式的列的变换形式存储在索引中, 而非存储列自身 当名称和地址可作为混合内容存储在数据库中时, 基于函数的索引就非常有用 如果搜索

16 18 第 Ⅰ 部分数据库体系结构 标准是 Smith, 在包含值 SmiTh 的列上进行普通索引就不会返回任何值 另一方面, 如果索引以全大写字母的形式存储姓, 则所有对姓的搜索都可以使用大写字母 下面的示例在 EMPLOYEE 表的 LAST_NAME 列上创建基于函数的索引 : create index up_name on employee(upper(last_name)); 因此, 使用如下查询的搜索将使用前面创建的索引, 而不是进行完整的表扫描 : select employee_number, last_name, first_name, from employee where upper(last_name) = 'SMITH'; 5. 位图索引 在索引的叶节点上, 位图索引 (bitmap index) 的结构与 B- 树索引相比存在着较大的区别 它只存储索引列每个可能值 ( 基数 ) 的一个位串, 位串的长度与索引表中的行数相同 与传统索引相比, 位图索引不仅可节省大量空间, 还可大大缩短响应时间, 因为在需要访问表自身之前,Oracle 就可以从包含多个 WHERE 子句的查询中快速删除潜在的行 对于多个位图, 可使用逻辑 AND 和 OR 操作来确定访问表中的哪些行 虽然位图索引可用于表中的任何列, 但在索引列具有较低基数或大量不同的值时, 使用位图索引才最有效 例如,PERS 表中的 GENDER 列将有 NULL M 或 F 值 GENDER 列上的位图索引将只有 3 个位图存储在索引中 另一方面,LAST_NAME 列上的位图索引将有和表本身行数基本相同的位图串数量! 如果执行完整的表扫描而非使用索引, 查找特定姓的查询将很可能花费较少的时间 这种情况下, 使用传统的 B- 树非唯一索引将更有用 位图索引的一种变体称为 位图连接索引 (bitmap join index), 这种索引在某个表列上创建一个位图索引, 此列常常根据相同的列与一个或多个其他的表相连接 这就在数据仓库环境中提供了大量优点, 在一个事实表和一维或多维表上创建位图连接索引, 实质上等于预先连接这些表, 从而在执行实际的连接时节省 CPU 和 I/O 资源 注意 : 位图索引只在 Oracle 11g 和 12c 的企业版中可用 由于在表上执行 DML 时, 位图索引包含额外的锁定和块拆分开销, 因此仅适用于极少更新的列 视图视图允许用户查看单独表或多个连接表中数据的自定义表示 视图也称为 存储查询 : 用户无法看到视图底层隐藏的查询细节 普通视图不存储任何数据, 只存储定义, 在每次访问视图时都运行底层的查询 普通视图的增强称为 物化视图 (materialized view), 允许同时存储查询的结果和查询的定义, 从而加快处理速度, 另外还有其他优点 对象视图类似于传统视图, 可隐藏底层表连接的细节, 并允许在数据库中进行面向对象的开发和处理, 而底层的表仍然保持数据库关系表的格式 下面将介绍一般数据库用户 开发人员或 DBA 创建并使用的基本视图类型的基础知识

17 第 1 章 Oracle 体系结构概述 普通视图 普通视图, 通常称为 视图, 不会占据任何存储空间, 只有它的定义 ( 查询 ) 存储在数据字典中 视图底层查询的表称为 基表, 视图中的每个基表都可以进一步定义为视图 视图有诸多优点, 它可以隐藏数据复杂性 : 高级分析人员可以定义包含 EMPLOYEE DEPARTMENT 和 SALARY 表的视图, 这样上层管理部门可以更容易地使用 SELECT 语句检索有关雇员薪水的信息, 这种检索表面看来是使用表, 但实际上是包含查询的视图, 该查询连接 EMPLOYEE DEPARTMENT 和 SALARY 表 视图也可以用于实施安全性 EMPLOYEE 表上的视图 EMP_INFO 包含除了 SALARY( 薪水 ) 外的所有列, 并且将该视图定义为只读, 从而防止更新该表 : create view emp_info as select employee_number, last_name, first_name, middle_initial, surname from employee with read only; 如果没有 READ ONLY 子句, 则可更新某行或向视图中添加行, 甚至可在包含多个表的视图上执行这些操作 视图中有一些构造可防止对其进行更新, 例如使用 DISTINCT 操作符 聚集函数或 GROUP BY 子句 当 Oracle 处理包含视图的查询时, 它替换用户的 SELECT 语句中的底层查询定义, 并且处理结果查询, 就像视图不存在一样 因此, 在使用视图时, 基表上任何已有索引的优点并未改变 2. 物化视图 在某些方面, 物化视图与普通视图非常类似 : 视图的定义存储在数据字典中, 并且该视图对用户隐藏底层基查询的细节 但相似之处仅限于此 物化视图也在数据库段中分配空间, 用于保存执行基查询得到的结果集 物化视图可用于将表的只读副本复制到另一个数据库, 该副本具有和基表相同的列定义和数据 这是物化视图的最简单实现 为减少刷新物化视图时的响应时间, 可创建物化视图日志以刷新物化视图 否则, 在需要刷新时就必须进行完全的刷新 : 必须运行基查询的全部结果以刷新物化视图 物化视图日志为以增量方式更新物化视图提供了方便 在数据仓库环境中, 物化视图可存储来自 GROUP BY ROLLUP 或 GROUP BY CUBE 查询的聚集数据 如果设置适当的初始参数值, 如 QUERY_REWRITE_ENABLED, 并且查询自身允许查询重写 ( 使用 QUERY REWRITE 子句 ), 则任何与物化视图执行相同类型的聚集操作的查询都将自动使用物化视图, 而不是运行初始的查询 无论物化视图的类型是什么, 在基表中提交事务或根据需要刷新它时, 都会自动对其进行刷新 物化视图在很多方面与索引类似, 它们都直接和表联系并且占用空间, 在更新基表时必须刷新它们, 它们的存在对用户而言实际上是透明的 通过使用可选的访问路径来返回查询结果, 它们可以帮助优化查询 第 17 章将详细介绍如何在分布式环境中使用物化视图

18 20 第 Ⅰ 部分数据库体系结构 3. 对象视图面向对象 (OO) 的应用程序开发环境日趋流行,Oracle 12c 数据库完全支持数据库中本地化对象和方法的实现 然而, 从纯粹的关系数据库环境向纯粹的 OO 数据库环境迁移并非易事, 很少有组织愿意花费时间和资源从头开始构建新的系统, 而 Oracle 12c 使用对象视图使这种迁移变得更为容易 对象视图允许面向对象的应用程序查看作为对象集合的数据, 这种对象集合具有属性和方法, 而遗留系统仍可对 INVENTORY 表运行批处理作业 对象视图可以模仿抽象数据类型 对象标识符 (OID) 以及纯粹的 OO 数据库环境能够提供的引用 与普通视图一样, 可在视图定义中使用 INSTEAD OF 触发器来允许针对视图的 DML, 这里使用的是 PL/SQL 代码块, 而非用户或应用程序提供的实际 DML 语句 用户和模式有权访问数据库的数据库账户称为 用户 用户可存在于数据库中, 而不拥有任何对象 然而, 如果用户在数据库中创建并拥有对象, 这些对象就是与数据库用户同名的模式 (schema) 的一部分 模式可拥有数据库中任何类型的对象 : 表 索引 序列和视图等 模式拥有者或 DBA 可授权其他数据库用户访问这些对象 用户总是拥有完整的权限, 而且可以控制用户模式中的对象 当 DBA( 或其他任何拥有 CREATE USER 系统权限的用户 ) 创建用户时, 可将其他许多特征赋给用户, 例如用户可使用哪些表空间创建对象, 以及密码是否提前到期等 可使用 3 种方法验证数据库中的用户的身份 : 数据库身份验证 操作系统身份验证和网络身份验证 使用数据库身份验证时, 用户的加密密码存储在数据库中 与之相反, 操作系统身份验证进行如下假设 : 操作系统连接已经身份验证过的用户具有和某些用户相同的权限, 这些用户具有相同的或类似的名称 ( 取决于 OS_AUTHENT_PREFIX 初始参数的值 ) 网络身份验证使用基于公共密钥基础设施 (Public Key Infrastructure,PKI) 的解决方案 这些网络身份验证方法需要具有 Oracle 高级安全性选项的 Oracle 11g 或 12c 企业版 配置文件数据库资源不是无限的, 因此 DBA 必须为所有数据库用户管理和分配资源 数据库资源的一些示例是 CPU 时间 并发会话 逻辑读和连接时间 数据库配置文件是可以赋给用户的限定资源的命名集 安装 Oracle 后,DEFAULT 配置文件已经存在, 并且系统将其赋给任何还没有显式分配配置文件的用户 DBA 可添加新的配置文件或改变 DEFAULT 配置文件, 从而符合企业的需求 DEFAULT 配置文件的初始值允许无限使用所有的数据库资源 序列 Oracle 序列用于分配有序数, 并且保证其唯一性 ( 除非重新创建或重新设置序列 ) 它在多用户环境中生成一系列唯一数字, 而且不会产生磁盘锁定或任何特殊 I/O 调用的系统开销, 这一点不同于将序列加载到共享池中所涉及的情况 序列 (sequence) 可生成长达 38 位的数字, 数字序列可按升序或降序排列, 间隔可以是用户指定的任何值, 并且 Oracle 可在内存中缓存序列中的数字块, 从而获得更快的性能

19 第 1 章 Oracle 体系结构概述 21 序列中的数字可保证唯一, 但不一定有序 如果缓存数字块, 并且重新启动实例, 或者回滚使用序列中数字的事务, 则下次调用从序列中检索数字不会与原序列中已引用但未使用的数字相同 同义词 Oracle 同义词 (synonym) 只是数据库对象的别名, 用于简化对数据库对象的引用, 并且隐藏数据库对象源的细节 同义词可以赋给表 视图 物化视图 序列 过程 函数和程序包 与视图类似, 除了数据字典中的定义外, 同义词不会在数据库中分配任何空间 同义词可以是公有或私有的 私有同义词在用户的模式中定义, 并且只有该用户可用 公有同义词通常由 DBA 创建, 并且所有的数据库用户都可以自动使用公有同义词 提示 : 创建公有同义词后, 要确保同义词的用户拥有对该同义词引用的对象的正确权限 引用数据库对象时,Oracle 首先检查该对象是否存在于用户的模式中 如果不存在这样的对象,Oracle 就检查私有同义词 如果没有私有同义词,Oracle 就检查公有同义词 如果没有公有同义词,Oracle 就返回错误 PL/SQL Oracle PL/SQL 是 Oracle 对 SQL 的过程化语言扩展 当标准的 DML 和 SELECT 语句因为缺少过程化元素而无法以简单方式生成所需要的结果时,PL/SQL 非常有用, 这些过程化元素在传统的第三代语言 ( 如 C++ 和 Ada) 中很常见 从 Oracle 9i 开始,SQL 处理引擎在 SQL 和 PL/SQL 之间共享, 这意味着所有添加到 SQL 的新特性也可以自动用于 PL/SQL 下面简要介绍使用 Oracle PL/SQL 的优点 1. 过程 / 函数 PL/SQL 过程和函数是 PL/SQL 命名块的范例 PL/SQL 块是 PL/SQL 语句序列, 可将其视为用于执行功能的单位, 它最多包含 3 个部分 : 变量声明部分 执行部分和异常部分 过程和函数之间的区别在于 : 函数将单个值返回到调用程序, 如 SQL SELECT 语句 相反, 过程不返回值, 只返回状态码 然而, 过程的参数列表中可能有一个或多个变量, 编程人员可设置这些变量并且将其作为结果的一部分返回 过程和函数在数据库环境中有诸多优点 在数据字典中只需编译并存储过程一次, 当多个用户调用过程时, 该过程已经编译, 并且只有一个副本存在于共享池中 此外, 网络通信量会减少, 即使没有使用 PL/SQL 的过程化特性也是如此 一次 PL/SQL 调用所使用的网络带宽远小于单独通过网络发送的 SQL SELECT 和 INSERT 语句, 这还没有考虑到对通过网络发送的每条语句的重新解析 2. 程序包 PL/SQL 程序包 (package) 将相关的函数和过程以及常见的变量和游标 (cursor) 组合在一起 程序包由两个部分组成 : 程序包规范和程序包主体 在程序包规范中, 提供程序包的方法和属性, 方法的实现以及任何私有方法和属性都隐藏在程序包主体中 如果使用程序包而不是单独

20 22 第 Ⅰ 部分数据库体系结构 的过程或函数, 则在改变内嵌的过程或函数时, 任何引用程序包规范中元素的对象都不会失效, 从而避免了重新编译引用程序包的对象 3. 触发器 触发器 (trigger) 是一种特殊类型的 PL/SQL 或 Java 代码块, 在指定事件发生时执行或触发 事件类型可以是表或视图上的 DML 语句 DDL 语句甚至是数据库事件 ( 如启动和关闭 ) 可以改进指定的触发器, 使其作为审核策略的一部分在特定用户的特定事件上执行 在分布式环境中, 触发器非常有用, 它们可用于模仿不同数据库中的表之间的外键关系 触发器也可用于实现那些无法使用内置的 Oracle 约束类型定义的复杂完整性规则 第 17 章将介绍触发器如何应用于健壮的分布式环境中 外部文件访问 除了外部表外,Oracle 还有大量其他的方法可用于访问外部文件 : 在 SQL*Plus 中, 访问包含要运行的其他 SQL 命令的外部脚本, 或将 SQL*Plus SPOOL 命令的输出发送到操作系统的文件系统中的文件 在 PL/SQL 过程中, 使用 UTL_FILE 内置程序包读取或写入文本信息 ; 类似地,PL/SQL 过程中的 DBMS_OUTPU 调用可生成文本消息和诊断, 另一个应用程序可以捕获这些消息和诊断, 并保存在文本文件中 BFILE 数据类型可引用外部数据 BFILE 数据类型是指向外部二进制文件的指针 在 BFILE 可以用于数据库之前, 需要使用 CREATE DIRECTORY 命令创建目录别名, 该命令指定包含存放 BFILE 目标的完整目录路径的前缀 DBMS_PIPE 可与 Oracle 支持的任何 3GL 语言通信并交换信息, 如 C++ Ada Java 或 COBOL UTL_MAIL 是 Oracle 10g 中新增的程序包, 它允许 PL/SQL 应用程序发送电子邮件, 而不需要知道如何使用底层的 SMTP 协议栈 在使用外部文件作为数据源进行输入或输出时, 大量警告将按顺序出现 在使用外部数据源之前, 应该仔细考虑以下方面 : 数据库数据和外部数据可能经常不同步, 这种情况发生在其中一个数据源改变但没有和另一个数据源同步时 确保两个数据源的备份几乎同时发生, 从而确保恢复数据源时能使两个数据源保持同步, 这一点很重要 脚本文件可能包含密码, 许多组织禁止在脚本文件中使用普通文本表示任何用户账户 这种情况下, 操作系统身份验证方法可能好于用户身份验证方法 对位于由每个 DIRECTORY 对象所引用的目录中的文件, 应回顾其安全性 引用的操作系统文件的不严格安全性降低了数据库对象上的安全效果 数据库链接和远程数据库 数据库链接允许 Oracle 数据库引用存储在本地数据库之外的对象 命令 CREATE DATABASE LINK 创建到远程数据库的路径, 从而允许访问远程数据库中的对象 数据库链接打包如下内容 : 远程数据库的名称 连接到远程数据库的方法 用于验证远程数据库连接的用

21 第 1 章 Oracle 体系结构概述 23 户名 / 密码的组合 在某些方面, 数据库链接类似于数据库同义词 : 数据库链接可以为公有或私有, 并且它提供便捷的方法来访问另一个资源集 主要区别在于, 资源在数据库外部而不是同一个数据库中, 因此需要更多信息来解决引用问题 另一个区别在于, 同义词是对特定对象的引用, 而数据库链接则是定义的路径, 用于访问远程数据库中任意数量的对象 为在分布式环境中的多个数据库之间建立链接, 域中每个数据库的全局数据库名必须都不相同 因此, 重要的是正确分配初始参数 DB_NAME 和 DB_DOMAIN 为便于使用数据库链接, 可将同义词赋给数据库链接, 使表访问更透明 ; 用户并不知道同义词访问的是本地对象还是分布式数据库上的对象 对象可移动到不同的远程数据库, 也可以移动到本地数据库, 只要同义词名相同, 就可以使对象访问对用户保持透明 第 17 章将进一步介绍如何在分布式环境中利用远程数据库的数据库链接 1.4 Oracle 物理存储结构 Oracle 数据库使用磁盘上的大量物理存储结构来保存和管理用户事务中的数据 有些物理存储结构, 如数据文件 重做日志文件和归档的重做日志文件, 保存实际的用户数据 其他结构, 如控制文件, 用于维护数据库对象的状态, 而基于文本的警报和跟踪文件则包含数据库中例程事件和错误条件的日志信息 图 1-3 显示了这些物理结构与逻辑存储结构之间的关系, 逻辑存储结构在 1.2 节中已经介绍过了 实例 内存结构 后台进程 物理数据库结构 数据库 数据文件控制文件重做日志文件 归档的重做日志文件 数据文件 1 数据文件 2 数据文件 3 数据文件 4 逻辑数据库结构 数据库 SYSTEM 表空间 USERS 表空间 SYSAUX 表空间 图 1-3 Oracle 物理存储结构

22 24 第 Ⅰ 部分数据库体系结构 数据文件 每个 Oracle 数据库必须至少包含一个数据文件 (datafile) 一个 Oracle 数据文件对应于磁盘上的一个物理操作系统文件 Oracle 数据库中的每个数据文件只能正好是一个表空间中的一个成员, 然而一个表空间可由许多数据文件组成 (BIGFILE 表空间正好由一个数据文件组成 ) 当 Oracle 数据文件用完空间时, 它可以自动扩展, 只要 DBA 是使用 AUTOEXTEND 参数创建数据文件即可 通过使用 MAXSIZE 参数,DBA 也可以限制给定数据文件的扩展量 在任何情况下, 数据文件的大小最终都会受到它所驻留的磁盘卷的限制 提示 : DBA 通常必须确定是分配一个可以无限自动扩展的数据文件, 还是分配许多较小的具有有限扩展量的数据文件 在 Oracle 的早期版本中, 你别无选择, 只能有多个数据文件, 并在数据文件级别管理表空间 现在有了 BIGFILE( 大文件 ) 表空间, 可在表空间级别管理大多数方面 现在,RMAN 也可并行备份 BIGFILE 表空间 ( 从 Oracle Database 11g 开始 ), 明智的做法是创建一个数据文件, 让其在必要时自动扩展 数据库中的所有数据最终都驻留在数据文件中 数据文件中频繁访问的块缓存在内存中 类似地, 新的数据块不会立刻写出到数据文件, 而是在数据库写入程序进程处于活动状态时再写到数据文件 然而, 在用户的事务完成之前, 事务的改变就会写入重做日志文件 重做日志文件 无论何时在表 索引或其他 Oracle 对象中添加 删除或改变数据, 都会将一个条目写入当前的重做日志文件 (redo log file) 每个 Oracle 数据库必须至少有两个重做日志文件, 因为 Oracle 以循环方式重用重做日志文件 当一个重做日志文件充满了重做日志条目时, 如果实例恢复仍需要它, 则当前的日志文件被标记为 ACTIVE; 如果实例恢复不需要它, 则标记为 INACTIVE; 系统从文件开始处重新使用序列中的下一个日志文件, 并将其标记为 CURRENT 理想情况下, 永远不会使用重做日志文件中的信息 然而, 如果发生电源故障, 或者一些其他服务器故障造成 Oracle 实例失败, 数据库缓冲区缓存中新添加的或更新的数据块就可能尚未写入数据文件 重新启动 Oracle 实例时, 通过前滚操作将重做日志文件中的条目应用于数据库数据文件, 从而将数据库的状态还原到发生故障时间点的情况 为能从重做日志组中的一个重做日志文件丢失的情况中恢复, 可将重做日志文件的多个副本保存在不同的物理磁盘上 稍后将介绍如何多元复用重做日志文件 归档的日志文件和控制文件, 从而确保 Oracle 数据库的可用性和数据完整性 控制文件 每个 Oracle 数据库至少有一个控制文件, 用于维护数据库的元数据 ( 即有关数据库自身物理结构的数据 ) 控制文件包含数据库名称 创建数据库的时间以及所有数据文件和重做日志文件的名称和位置 此外, 控制文件还维护恢复管理器 (RMAN) 所用的信息, 如持久性 RMAN 设置和已在数据库上执行的备份类型 第 12 章将深入介绍对数据库结构进行改动时, 有关改

23 第 1 章 Oracle 体系结构概述 25 动的信息会立刻反映在控制文件中 因为控制文件对数据库操作至关重要, 所以也可对其进行多元复用 然而, 不论控制文件的多少个副本与一个实例关联, 系统也只会指定一个控制文件作为检索数据库元数据的主控制文件 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令是另一种备份控制文件的方式 它生成一个 SQL 脚本, 如果由于灾难性故障而丢失控制文件的所有多元复用二进制版本, 则可以用该脚本重新创建数据库控制文件 例如, 如果数据库需要重命名, 或者需要改变各种数据库限制 不重新创建整个数据库就无法改变这些限制, 此时就可以使用这种跟踪文件来重新创建控制文件 从 Oracle 10g 开始, 可使用 nid 实用程序来重命名数据库, 不必重新创建控制文件 归档的日志文件 Oracle 数据库有两种操作模式 :ARCHIVELOG 和 NOARCHIVELOG 模式 当数据库处于 NOARCHIVELOG 模式时, 重做日志文件 ( 也称为 联机的重做日志文件 ) 的循环重用意味着重做条目 ( 前面事务的内容 ) 在出现磁盘驱动器故障或与其他介质相关的故障时不再可用 在 NOARCHIVELOG 模式中进行操作, 可在发生实例故障或系统崩溃时保护数据库的完整性, 因为已经提交但还没有写入数据文件的所有事务都可在联机重做日志文件中找到 相反,ARCHIVELOG 模式将填满的重做日志文件发送到一个或多个指定的目的地, 并且可以在发生数据库介质故障事件后的任意给定时间点重新构造数据库 例如, 如果包含数据文件的磁盘驱动器崩溃, 则可将数据库的内容恢复到发生崩溃前的某个时间点, 只要在进行备份时生成了数据文件和重做日志文件最近的备份即可 对填满的重做日志文件使用多个归档日志的目标是 Oracle 高可用性的特性之一, 即 Oracle Data Guard ( 数据卫士 ), 原名 Oracle 备用数据库 (Standby Database) 第 13 章将详细介绍 Oracle Data Guard 初始参数文件 当数据库实例启动时, 为 Oracle 实例分配内存, 并打开两种初始参数文件中的一种 : 基于文本的文件, 名为 init<sid>.ora( 一般称为 init.ora 或 PFILE); 或者是服务器参数文件 ( 称为 SPFILE) 实例首先在操作系统的默认位置( 例如 Unix 上的 $ORACLE_HOME/dbs) 查找 SPFILE: spfile<sid>.ora 或 spfile.ora 如果这些文件都不存在, 实例查找名为 init<sid>.ora 的 PFILE 作为一种选择方案, 也可以使用 STARTUP 命令显式指定用于启动的 PFILE 无论哪种格式, 初始参数文件都可以指定跟踪文件 控制文件和填满的重做日志文件等文件的位置 它们也设置系统全局区域 (SGA) 中各种结构的大小限制, 以及限制有多少用户可以同时连接到数据库 在 Oracle 9i 以前, 使用 init.ora 文件仍是指定实例初始参数的唯一方法 虽然使用文本编辑器可以很容易地编辑该文件, 但有一些缺点 如果在命令行中使用 ALTER SYSTEM 命令改变动态系统参数, 则 DBA 必须记得改变 init.ora 文件, 从而使新的参数值可以在下次重新启动实例时生效

24 26 第 Ⅰ 部分数据库体系结构 SPFILE 使 DBA 可以更简单有效地管理参数 如果将 SPFILE 用于运行的实例中, 那么改变初始参数的任何 ALTER SYSTEM 命令都可以自动改变 SPFILE 中的初始参数, 或者只改变运行实例的初始参数, 或者两者都改动 此过程不需要编辑 SPFILE, 甚至可以不破坏 SPFILE 本身 虽然不能镜像参数文件或 SPFILE 自身, 但可将 SPFILE 备份到 init.ora 文件, 然后使用常规的操作系统命令或 RMAN( 在 SPFILE 的情况下 ) 备份 Oracle 实例的 init.ora 和 SPFILE 使用 DBCA 创建数据库时, 默认创建 SPFILE 警报和跟踪日志文件 当出错时,Oracle 通常将相关消息写入警报日志 (alert log), 但在后台进程或用户会话的情况下, 会将消息写入跟踪日志 (trace log) 文件 警报日志文件位于由初始参数 BACKGROUND_DUMP_DEST 指定的目录中, 它包含例程状态消息和错误条件 启动或关闭数据库时, 在警报日志中记录一条消息, 同时记录不同于默认值的初始参数列表 此外,DBA 提交的任何 ALTER DATABASE 或 ALTER SYSTEM 命令都会被记录 涉及表空间及其数据文件的操作也记录在该文件中, 例如添加表空间 删除表空间以及将数据文件添加到表空间 错误条件, 如空间不足的表空间 损坏的重做日志等, 也记录在此处 Oracle 实例后台进程的跟踪文件也通过 BACKGROUND_DUMP_DEST 定位 例如, PMON(Process Monitor, 进程监测 ) 和 SMON(System Monitor, 系统监测 ) 的跟踪文件在错误发生或 SMON 需要执行实例恢复时将记录一个条目,QMON(Queue Monitor, 队列监测 ) 的跟踪文件在它生成新进程时会记录一条消息 针对单独的用户会话或数据库连接也会创建跟踪文件 这些跟踪文件位于由初始参数 USER_DUMP_DEST 指定的目录中 在下面两种情况下会创建用户进程的跟踪文件 : 第一种情况是因为权限问题 空间不足等而在用户会话中生成某种错误 在第二种情况中, 可使用命令 ALTER SESSION SET SQL_TRACE=TRUE 显式地创建跟踪文件 针对用户执行的每个 SQL 语句生成跟踪信息, 可在调整用户的 SQL 语句时起到帮助作用 可在任何时间删除或重命名警报日志文件, 下次生成警报日志消息时重新创建警报日志文件 DBA 通常建立一个每天执行的批处理作业 ( 通过操作系统机制或 Oracle 企业管理器的调度程序 ), 用于逐日重命名和归档警报日志 备份文件 备份文件有多个来源, 如操作系统的复制命令或 OracleRMAN( 恢复管理器 ) 如果 DBA 执行 冷 备份 ( 关于备份类型的更多细节请参见 1.7 节 ), 备份文件就只是数据文件 重做日志文件 控制文件和归档的重做日志文件等文件的操作系统副本 除了数据文件的逐位图像副本 (RMAN 中的默认方式 ),RMAN 还可以生成数据文件 控制文件 重做日志文件 归档的日志文件以及 SPFILE 的完整备份和增量备份, 这些备份都采用特殊格式, 称为 备份集, 只有 RMAN 可以读取 RMAN 备份集的备份通常小于初始的数据文件, 因为 RMAN 并不备份未使用过的块

25 第 1 章 Oracle 体系结构概述 Oracle 管理文件 Oracle 9i 中引入 Oracle 管理文件 (OMF,Oracle Managed Files), 它通过自动创建和删除组成数据库中逻辑结构的数据文件, 简化了 DBA 的工作 如果没有 OMF,DBA 可能删除表空间, 而忘记删除底层的操作系统文件 这会造成磁盘资源利用率低下, 并增加不必要的数据库不再需要的数据文件备份时间 OMF 非常适合于较小的数据库, 这种数据库只有少量的用户和兼职 DBA, 并且不需要生产数据库的优化配置 即使数据库较小,Oracle 也建议最好为构成数据库的所有数据文件使用 ASM (Automatic Storage Management, 自动存储管理 ), 并且建议只使用两个磁盘组, 一个用于表和索引段 ( 如 +DATA), 另一个用于 RMAN 备份 控制文件的第二个副本 归档重做日志的副本 ( 如 +RECOV) 初始参数 DB_FILE_CREATE_DEST 指向 +DATA 磁盘组, DB_CREATE_ONLINE_DEST_1 指向 +DATA 磁盘组,DB_CREATE_ONLINE_DEST_2 指向 +RECOV 联机日志文件目标 LOG_ARCHIVE_DEST_n 同样如此 密码文件 Oracle 密码文件 (password file) 是磁盘上的 Oracle 管理或软件目录结构中的文件, 用于对 Oracle 系统管理员进行身份验证, 以执行创建数据库或启动和关闭数据库等任务 通过该文件授予的是 SYSDBA 和 SYSOPER 权限 对其他任何类型的用户进行身份验证都在数据库本身完成, 因为可能关闭数据库或没有安装数据库, 所以在此类情况下就需要另一种形式的管理员身份验证 如果密码文件不存在或者已经受损, 可使用 Oracle 命令行实用程序 orapwd 创建密码文件 由于要通过该文件授予非常高的权限, 因此应将该文件存储在安全的目录位置, 只有 DBA 和操作系统管理员可以访问该位置 一旦创建这种密码文件, 应将初始参数 REMOTE_LOGIN_ PASSWORDFILE 设置为 EXCLUSIVE, 允许 SYS 以外的用户使用密码文件 另外, 密码文件必须位于 $ORACLE_HOME/dbs 目录中 提示 : 创建至少一个非 SYS 或 SYSTEM 的用户, 该用户具有执行每日管理任务的 DBA 权限 如果有多个 DBA 管理一个数据库, 则每个 DBA 都应该有自己的 具有 DBA 权限的账户 作为一种备选方案, 也可以使用 OS 身份验证完成对 SYSDBA 和 SYSOPER 权限的验证, 这种情况下不需要创建密码文件, 并应将初始参数 REMOTE_LOGIN_PASSWORDFILE 设置为 NONE 1.5 多元复用数据库文件 为尽量降低丢失控制文件或重做日志文件的可能性, 数据库文件的多元复用 (multiplexing) 可减少或消除由于介质故障而造成的数据丢失问题 使用从 Oracle 10g 开始引入的 ASM 实例可在某种程度上使多元复用自动化 对于更注重预算的企业, 可手动多元复用控制文件和重做日志文件

26 28 第 Ⅰ 部分数据库体系结构 自动存储管理 使用 ASM(Automatic Storage Management, 自动存储管理 ) 是一种多元复用解决方案, 即将数据文件 控制文件和重做日志文件分布在所有可用的磁盘上, 从而自动布局这些文件 将新的磁盘添加到 ASM 群集时, 数据库文件将自动重新分布到所有的磁盘卷, 以优化性能 ASM 群集的多元复用特性可最小化数据丢失的可能性, 并且比将关键文件和备份放在不同物理驱动器上的手动方案更有效 手动的多元复用 即使没有 RAID 或 ASM 解决方案, 也仍可为关键数据库文件提供一些保护措施, 方法是设置一些初始参数, 并为控制文件 重做日志文件和归档的重做日志文件提供另外的位置 1. 控制文件 创建数据库时可立刻多元复用控制文件, 也可在创建之后的任意时刻多元复用控制文件, 这只需要很少几个步骤, 即可手动将控制文件复制到多个目的地 最多可以多元复用控制文件的 8 个副本 无论是在创建数据库时多元复用控制文件, 还是在创建之后多元复用它们,CONTROL_ FILES 的初始参数值都相同 如果希望添加另一个多元复用位置, 则需编辑初始参数文件, 将另一个位置添加到 CONTROL_FILES 参数 如果使用 SPFILE 而非 init.ora 文件, 可使用如下命令来改变 CONTROL_FILES 参数 : alter system set control_files = '/u01/oracle/whse2/ctrlwhse1.ctl, /u02/oracle/whse2/ctrlwhse2.ctl, /u03/oracle/whse2/ctrlwhse3.ctl' scope=spfile; ALTER SYSTEM 命令中 SCOPE 的其他可能值是 MEMORY 和 BOTH 指定 SCOPE 为其中任何一个值都会返回错误, 因为不能为运行的实例改变 CONTROL_FILES 参数, 只有在下一次重新启动实例时才能改变 因此, 只有 SPFILE 被改变 无论哪种情况, 下一步都是关闭数据库 将控制文件复制到由 CONTROL_FILES 指定的新目的地, 并且重新启动数据库 通过查看一个数据字典视图, 始终可以验证控制文件的名称和位置 : select value from v$spparameter where name='control_files'; 该查询将返回控制文件的每个多元复用副本的一行 此外, 视图 V$CONTROLFILE 包含控制文件的每个副本的一行, 并包含相应的状态 2. 重做日志文件 将一组重做日志文件改变到重做日志文件组中, 就可以多元复用重做日志文件 在默认的 Oracle 安装中, 会创建 3 个重做日志文件 如 小节中介绍的, 填满一个日志文件后, 按顺序填充下一个日志文件 填满第 3 个日志文件后, 重新使用第一个日志文件 为将这 3 个重

27 第 1 章 Oracle 体系结构概述 29 做日志文件改变到一个组中, 可添加一个或多个相同的文件, 以伴随每个已有的重做日志文件 创建组后, 将重做日志条目同时写入重做日志文件组 填满重做日志文件组时, 开始将重做日志条目写入下一个组 图 1-4 显示了如何使用 4 个组来多元复用 4 个重做日志文件, 每个组包含 3 个成员 重做日志组 1 重做日志组 2 重做日志组 3 重做日志组 4 LGWR 日志文件开关 LGWR 日志文件开关 LGWR 日志文件开关 成员 1 成员 1 成员 1 成员 1 物理磁盘 1 成员 2 成员 2 成员 2 成员 2 物理磁盘 2 成员 3 成员 3 成员 3 成员 3 物理磁盘 3 LGWR 日志文件开关 图 1-4 多元复用的重做日志文件 将成员添加到重做日志组非常简单 在 ALTER DATABASE 命令中, 指定新文件的名称以及将要添加到其中的组的名称即可 创建的新文件的大小与组中其他成员相同 : alter database add logfile member '/u05/oracle/dc2/log_3d.dbf' to group 3; 如果填满重做日志文件的速度快于归档它们的速度, 则一种可行的解决方案是添加另一个重做日志组 下例显示如何将第 5 个重做日志组添加到图 1-4 中的重做日志组 : alter database add logfile group 5 ('/u02/oracle/dc2/log_3a.dbf', '/u03/oracle/dc2/log_3b.dbf', '/u04/oracle/dc2/log_3c.dbf') size 250m; 重做日志组的所有成员必须大小相同 然而, 不同组之间的日志文件大小可以不同 此外, 重做日志组可以有不同的成员数量 在前面的示例中, 首先有 4 个重做日志组, 然后添加另外一个成员到重做日志组 3( 共 4 个成员 ), 并添加了具有 3 个成员的第 5 个重做日志组 从 Oracle 10g 开始, 可使用重做日志文件大小估计顾问 (Redo Logfile Sizing Advisor) 来帮助确定重做日志文件的最优尺寸, 以避免过多的 I/O 活动或瓶颈 查看第 8 章可了解使用重做日志文件大小估计顾问的更多信息

28 30 第 Ⅰ 部分数据库体系结构 3. 归档的重做日志文件如果数据库处于 ARCHIVELOG 模式, 则在重做日志开关循环中可以重用重做日志文件之前,Oracle 会将其复制到指定的位置 1.6 Oracle 内存结构 Oracle 使用服务器的物理内存来保存 Oracle 实例的许多内容 :Oracle 的可执行代码自身 会话信息 与数据库关联的单独进程 进程之间共享的信息 ( 如数据库对象上的锁 ) 此外, 内存结构还包含用户和数据字典 SQL 语句, 以及最终永久存储在磁盘上的缓存信息, 如来自数据库段的数据块和数据库中已完成事务的相关信息 分配给 Oracle 实例的数据区域称为系统全局区域 (System Global Area,SGA) Oracle 的可执行代码驻留在软件代码区域 此外, 名为程序全局区域 (Program Global Area,PGA) 的区域对于每个服务器和后台进程来说都是私有的,Oracle 为每个进程分配一个 PGA 图 1-5 显示了这些 Oracle 内存结构之间的关系 SGA 共享内存 数据库缓冲区缓存 ( 默认大小 ) KEEP 缓冲池 RECYCLE 缓冲池 数据库缓冲区缓存 ( 大小为 nk) 数据库缓冲区缓存 ( 大小为 nk) 大型池 Java 池 流池重做日志缓冲区缓存 共享池 数据字典缓存 控制结构 固定的 SGA 保留池 库缓存 共享 SQL 区域 PL/SQL 过程和程序包 软件代码区域 PGA 非共享内存栈空间会话信息排序 散列 合并区域 图 1-5 Oracle 逻辑内存结构 系统全局区域系统全局区域是用于 Oracle 实例的一组共享内存结构, 由数据库实例的用户共享 启动 Oracle 实例时, 系统根据在初始参数文件中指定的值或在 Oracle 软件中硬编码的值, 为 SGA 分配内存 控制 SGA 不同部分大小的许多参数都是动态的 ; 然而, 如果指定 SGA_MAX_SIZE 参数, 则所有 SGA 区域的全部大小必须不能超出 SGA_MAX_SIZE 的值 如果没有指定 SGA_MAX_SIZE, 但指定了参数 SGA_TARGET,Oracle 就自动调整 SGA 各组成部分的大小, 从而使分配的内存总量等同于 SGA_TARGET SGA_TARGET 是动态参数, 可在实例运行时改

29 第 1 章 Oracle 体系结构概述 31 变 MEMORY_TARGET 是 Oracle 11g 中新增的参数, 用于在 SGA 和 PGA( 稍后讨论 ) 之间平衡 Oracle 可用的所有内存, 以优化性能 SGA 中的内存以 区组 (granule) 为单位分配 区组的大小可为 4MB 或 16MB, 这取决于 SGA 的总体大小 如果 SGA 小于或等于 128MB, 区组就是 4MB; 否则, 区组为 16MB 接下来将介绍 Oracle 如何使用 SGA 中每个部分的重点内容 第 8 章将介绍如何调整与这些区域关联的初始参数等更多信息 1. 缓冲区缓存数据库缓冲区缓存 (buffer cache) 保存来自磁盘的数据块, 这些数据块有的满足最近执行的 SELECT 语句, 有的是通过 DML 语句改变或添加的已修改块 从 Oracle 9i 开始,SGA 中保存这些数据块的内存区域是动态的 这样做有一定优点, 因为它考虑到数据库中可能有一些表空间的块大小不同于默认块大小 最多有 5 种不同块大小 ( 一种是默认块大小, 最多具有其他 4 种块大小 ) 的表空间需要自己的缓冲区缓存 因为处理和事务需要每日或每周改变, 所以可动态改变 DB_CACHE_SIZE 和 DB_nK_CACHE_SIZE 的值, 而不需要重新启动实例, 从而获得比给定块大小的表空间更好的性能 Oracle 可使用两个具有相同块大小的额外缓存作为默认块大小 (DB_CACHE_SIZE):KEEP 缓冲池和 RECYCLE 缓冲池 从 Oracle 9i 开始, 这些缓冲池独立于 SGA 中的其他缓存分配内存 创建表时, 通过在 STORAGE 子句中使用 BUFFER_POOL_KEEP 或 BUFFER_POOL_RECYCLE 子句, 可指定表的数据块驻留在哪个缓冲池中 对于一天中频繁使用的表, 最好将其放在 KEEP 缓冲池中, 从而最小化检索表中数据块所需要的 I/O 2. 共享池共享池包含两个主要的子缓存 : 库缓存和数据字典缓存 共享池的大小由初始参数 SHARED_POOL_SIZE 确定 这也是一个动态参数, 其大小可以调整, 只要 SGA 的全部大小小于 SGA_MAX_SIZE 或 SGA_TARGET 即可 库缓存库缓存保存针对数据库运行的 SQL 和 PL/SQL 语句的有关信息 在库缓存中, 因为由所有用户共享, 所以许多不同的数据库用户可以潜在地共享相同的 SQL 语句 和 SQL 语句自身一起,SQL 语句的执行计划和解析树也存储在库缓存中 第二次由同一用户或不同用户运行同一条 SQL 语句时, 由于已经计算了执行计划和解析树, 因此可以提高查询或 DML 语句的执行速度 如果库缓存过小, 则必须将执行计划和解析树转储到缓存外面, 这就需要频繁地将 SQL 语句重新加载到库缓存中 查看第 8 章可了解监控库缓存效率的方法 数据字典缓存数据字典是数据库表的集合, 由 SYS 和 SYSTEM 模式拥有, 其中包含有关数据库 数据库结构以及数据库用户的权限和角色的元数据 数据字典缓存保存第一次读到缓冲区缓存之后的数据字典表的列的子集 数据字典中来自表的数据块常用于辅助处理用户查询和其他 DML 命令 如果数据字典缓存太小, 对数据字典中信息的请求将造成额外的 I/O 这些 I/O 绑定的数据字典请求称为 递归调用, 应该通过正确设置数据字典缓存的大小加以避免

30 32 第 Ⅰ 部分数据库体系结构 3. 重做日志缓冲区重做日志缓冲区保存对数据文件中的数据块所进行的最近的改动 当重做日志缓冲区的 1/3 已满或者每隔 3 秒时,Oracle 将重做日志记录写入重做日志文件 从 Oracle 10g 开始, 当重做日志缓冲区中存储了 1MB 重做信息时,LGWR 进程就将重做日志记录写入重做日志文件 一旦将重做日志缓冲区中的条目写入重做日志文件, 如果在将改动的数据块从缓冲区缓存写入数据文件之前实例崩溃, 这些条目就对数据库恢复起着至关重要的作用 只有将重做日志条目成功写入重做日志文件后, 才可以认为用户提交的事务完成 4. 大型池大型池是 SGA 的可选区域, 用于与多个数据库交互的事务 处理并行查询的消息缓冲区以及 RMAN 并行备份和还原操作 顾名思义, 大型池可为需要一次分配大块内存的操作提供所需要的大块内存 初始参数 LARGE_POOL_SIZE 控制大型池的大小, 这是从 Oracle 9i 版本 2 开始新增的一个动态参数 5. Java 池 Oracle 的 Java 虚拟机 (Java Virtual Machine,JVM) 使用 Java 池来处理用户会话中的所有 Java 代码和数据 将 Java 代码和数据存储在 Java 池中类似于将 SQL 和 PL/SQL 代码缓存在共享池中 6. 流池流池是 Oracle 10g 中新增的池, 使用初始参数 STREAMS_POOL_SIZE 可以确定其大小 流池保存用于支持 Oracle 企业版中 Oracle 流特性的数据和控制结构 Oracle 流管理分布式环境中数据和事件的共享 如果初始参数 STREAMS_POOL_SIZE 未初始化或者将其设置为 0, 则从共享池中分配用于流操作的内存, 并且最多可以分配共享池 10% 的容量 第 17 章将介绍关于 Oracle 流的更多信息 程序全局区域程序全局区域 (Program Global Area,PGA) 是分配给一个进程并归该进程私有的内存区域 PGA 的配置取决于 Oracle 数据库的连接配置 : 共享服务器或专用服务器 在共享服务器配置中, 多个用户共享一个数据库连接, 从而最小化服务器上的内存使用率, 但可能影响对用户请求的响应时间 在共享服务器环境中, 由 SGA 而不是 PGA 来保存用户的会话信息 对于大量同时进行, 伴有很少发生的请求或短期请求的数据库连接, 共享服务器是理想的环境 在专用服务器环境中, 每个用户进程获得自己的数据库连接,PGA 包含这种配置的会话内存 PGA 也包括一个排序区域, 当用户请求需要排序 位图合并或散列连接操作时, 就会使用这种排序区域 从 Oracle 9i 开始, 通过 PGA_AGGREGATE_TARGET 参数和 WORKAREA_SIZE_POLICY

31 第 1 章 Oracle 体系结构概述 33 初始参数的结合,DBA 可选择所有工作区域的全部大小, 并让 Oracle 管理并分配所有用户进程之间的内存, 从而简化系统管理 如前所述,MEMORY_TARGET 参数作为一个整体管理 PGA 和 SGA 内存来优化性能 软件代码区域软件代码区域存储作为 Oracle 实例的一部分运行的 Oracle 可执行文件 这些代码区域实际上是静态的, 只有在安装软件的新版本时才会改变 一般来说,Oracle 软件代码区域位于与其他用户程序隔离的权限内存区域 Oracle 软件代码是严格只读的代码, 可共享安装或非共享安装 当多个 Oracle 实例运行在同一服务器上和相同的软件版本级别时, 按可共享方式安装 Oracle 软件代码可节省内存 后台进程当 Oracle 实例启动时, 多个后台进程就会启动 后台进程是设计用于执行特定任务的可执行代码块 图 1-6 显示了后台进程 数据库和 Oracle SGA 之间的关系 与 SQL*Plus 会话或 Web 浏览器等前台进程不同, 用户无法看到后台进程的工作情况 SGA 和后台进程结合起来组成了 Oracle 实例 RECO PMON SMON 系统全局区域 (SGA) 数据库缓冲区缓存 重做日志缓冲区 用户进程 用户进程 共享服务器进程 D000 专用服务器进程 CKPT ARC0 脱机存储设备 图注 : DBW0 LGWR RECO PMON SMON CKPT ARC0 DBW0 LGWR D000 恢复器进程进程监控器系统监控器检查点归档程序数据库写入程序日志写入程序调度程序进程 用户进程 重做日志文件 控制文件 数据文件 图 1-6 Oracle 后台进程

32 34 第 Ⅰ 部分数据库体系结构 1. SMON SMON 是系统监控器 (System Monitor) 进程 在系统崩溃或实例故障的情况下, 由于停电或 CPU 故障, 通过将联机重做日志文件中的条目应用于数据文件,SMON 进程可执行崩溃恢复 此外, 它在系统重新启动期间清除所有表空间中的临时段 SMON 的一个常规任务是定期合并字典管理的表空间中的空闲空间 2. PMON 如果删除用户连接, 或者用户进程以其他方式失败,PMON( 也称为 进程监控器 ) 就会进行清除工作 它清除数据库缓冲区缓存以及用户连接所使用的其他任何资源 例如, 用户会话可能正在更新表中的某些行, 在一行或多行上放置锁 一场雷雨袭击了用户办公桌的电力设置, 当工作站的电源关闭时,SQL*Plus 会话消失 期间,PMON 将检测到连接不再存在, 并执行下面的任务 : 回滚到电源断开时正在处理的事务 在缓冲区缓存中标记可用的事务块 删除表中受影响的行上的锁 从活动进程列表中删除未连接进程的进程 ID 通过将实例状态的相关信息提供给传入的连接请求,PMON 也和监听器交互 3. DBWn 数据库写入程序 (database writer) 进程, 在 Oracle 的旧版本中也称为 DBWR, 负责将缓冲区缓存中新增的或改动的数据块 ( 称为 脏块 ) 写入数据文件 使用 LRU 算法,DBWn 首先写入最早的 最小的活动块 因此, 请求最多的块位于内存中, 即使它们是脏块 最多可启动 20 个 DBWn 进程,DBW0 ~ DBW9, 以及 DBWa ~ DBWj 通过 DB_WRITER_PROCESS 参数可以控制 DBWn 进程的数量 4. LGWR LGWR, 或称为 日志写入程序 进程, 负责管理重做日志缓冲区 在具有大量 DML 活动的实例中,LGWR 是最活跃的进程之一 直到 LGWR 成功地将重做信息 ( 包括提交记录 ) 写入重做日志文件, 才能认为事务已经完成 此外, 直到 LGWR 已经写入重做信息, 才可以通过 DBWn 将缓冲区缓存中的脏缓冲区写入数据文件 如果分组重做日志文件, 并且组中一个多元复用的重做日志文件已经受损,LGWR 将写入剩余的组成员, 并在警报日志文件中记录错误 如果组中的所有成员都不可用,LGWR 进程就会失败, 并且整个实例挂起, 直至问题得到纠正为止 5. ARCn 如果数据库处于 ARCHIVELOG 模式, 只要重做日志填满并且重做信息开始按顺序填充下一个重做日志, 归档程序进程 (ARCn) 就将重做日志复制到一个或多个目的地目录 设备或网络位置 最理想的情况下, 归档进程应在下一次使用填满的重做日志之前完成 否则会产生严重的性能问题 : 将条目写入重做日志文件前用户无法完成他们的事务, 而重做日志文件

33 第 1 章 Oracle 体系结构概述 35 还没有准备好接受新条目, 因为它仍在写入归档位置 对于该问题, 至少有 3 种可能的解决方案 : 使重做日志文件更大一些, 增加重做日志组的数量, 增加 ARCn 进程的数量 针对每个实例最多可启动 30 个 ARCn 进程, 其方法是增加 LOG_ARCHIVE_MAX_ PROCESSES 初始参数的值 6. CKPT 检查点进程 (checkpoint process), 即 CKPT, 可帮助减少实例恢复所需要的时间 在检查点期间,CKPT 更新控制文件和数据文件的标题, 从而反映最近成功的系统变更号 (System Change Number,SCN) 每次进行重做日志文件切换时, 都自动生成一个检查点 DBWn 进程按常规写入脏缓冲区, 将检查点从实例恢复可以开始的位置提前, 从而减少平均恢复时间 (Mean Time to Recovery,MTTR) 7. RECO RECO 即恢复器进程 (recoverer process), 用于处理分布式事务 ( 即包括对多个数据库中的表进行改动的事务 ) 的故障 如果同时改变 CCTR 数据库和 WHSE 数据库中的表, 而在可以更新 WHSE 数据库中的表之前, 两个数据库之间的网络连接失败了,RECO 将回滚失败的事务 1.7 备份 / 恢复概述 Oracle 支持许多不同形式的备份和恢复 可在用户级别管理其中的一些备份和恢复, 如导出和导入, 而大多数备份和恢复严格以 DBA 为中心, 如联机或脱机备份, 以及使用操作系统命令或 RMAN 实用程序 第 11 章和第 12 章将详细介绍如何配置和使用这些备份和恢复方法 导出 / 导入可使用 Oracle 的逻辑化 Export 和 Import 实用程序来备份和还原数据库对象 Export 是逻辑备份, 因为未记录表的底层存储特性, 只记录表的元数据 用户权限和表数据 根据当前任务, 以及是否拥有 DBA 权限, 可导出一个数据库中的所有表 一个或多个用户的所有表, 或者特定表集 相应的 Import 实用程序可酌情还原之前导出的对象 使用 Export 和 Import 实用程序的一个优点是, 在数据库中具有较高权限的用户能够管理自己的备份和恢复, 特别是在开发环境中 在 Oracle 的各个版本中, 一般都可以读取由 Export 命令生成的二进制文件, 从而使从 Oracle 旧版本到新版本的少量表的传输非常简单 Export 和 Import 本质上是 时间点 备份, 因此, 如果数据是易变的, 则 Export 和 Import 不是最健壮的备份和恢复解决方案 之前的 Oracle Database 版本包含 exp 和 imp 命令, 但这些在 Oracle Database 12c 中不再可用 从 Oracle 10g 开始,Oracle Data Pump(Oracle 数据泵 ) 替代了传统的导入和导出命令, 将这些操作的性能提高到新的水平 导出到外部数据源最多可加快两倍, 而导入操作最多可以加快 45 倍, 因为 Oracle Data Pump 导入使用直接路径加载, 这一点不同于传统的导入 此外, 从源数据库的导出可同时导入目标数据库, 而不需要中间的转储文件, 从而节省时间和管理工作 使用带有 expdb 和 impdb 命令的 DBMS_DATAPUMP 程序包可以实现 Oracle Data Pump, 它包

34 36 第 Ⅰ 部分数据库体系结构 括大量其他可管理特性, 如细粒度的对象选择 Oracle Data Pump 也与 Oracle 12c 的所有新功能保持同步, 如将整个可插入数据库 (PDB) 从一个容器数据库 (CDB) 移到另一个 第 17 章提供关于 Oracle 数据泵的更多信息 脱机备份建立数据库物理备份的一种方法是执行脱机备份 (offline backup) 为执行脱机备份, 需要关闭数据库, 并且将所有与数据库相关的文件, 包括数据文件 控制文件 SPFILE 和密码文件等, 复制到其他位置 一旦复制操作完成, 就可以启动数据库实例 脱机备份类似于导出备份, 因为它们都是时间点备份, 因此在需要最新的数据库恢复并且数据库不处于 ARCHIVELOG 模式时, 这些备份的作用较小 脱机备份的另一个不足之处在于执行备份所需要的停机时间, 任何需要 24/7 数据库访问的跨国公司通常不会经常进行脱机备份 联机备份如果数据库处于 ARCHIVELOG 模式, 则可能进行数据库的联机备份 (online backup) 可打开数据库, 并且用户可以使用该数据库, 即使当前正在进行备份 进行联机备份的过程非常简单, 只要使用 ALTER TABLESPACE USERS BEGIN BACKUP 命令将表空间转入备份状态, 使用操作系统命令备份表空间中的数据文件, 然后使用 ALTER TABLESPACE USERS END BACKUP 命令将表空间转移出备份状态即可 RMAN 备份工具 恢复管理器 (Recovery Manager), 更常见的叫法是 RMAN, 它从 Oracle 8 就开始出现了 RMAN 提供了优于其他备份形式的许多优点 它可在完整的数据库备份之间只对改动的数据块进行增量式备份, 同时数据库在整个备份期间保持联机 RMAN 通过以下两种方法跟踪备份 : 通过备份数据库的控制文件 ; 通过存储在另一个数据库中的恢复目录 对于 RMAN, 使用目标数据库的控制文件比较简单, 但对于健壮企业备份方法学, 这并不是最佳解决方案 虽然恢复目录需要另一个数据库来存储目标数据库的元数据和所有备份的记录, 但如果目标数据库中的所有控制文件由于灾难性故障而丢失, 这时就值得采用恢复目录的方法 此外, 恢复目录保留历史备份信息, 如果将 CONTROL_FILE_ RECORD_KEEP_TIME 的值设置得太低, 则可能在目标数据库的控制文件中重写这些备份信息 第 12 章将详细讨论 RMAN 1.8 安全功能 下面将概述 Oracle 12c 在数据库中控制并实施安全性的不同方法 第 9 章将深入介绍这些功能以及其他安全功能

35 第 1 章 Oracle 体系结构概述 权限和角色在 Oracle 数据库中, 权限 (privilege) 用于控制用户对可执行的操作以及数据库中对象的访问 控制对数据库中操作的访问的权限称为 系统权限, 而控制对数据和其他对象的访问的权限称为 对象权限 为便于 DBA 分配和管理权限, 数据库 角色 (role) 将权限结合在一起 换言之, 角色是指定的权限组 此外, 角色自身可以赋予角色 使用 GRANT 和 REVOKE 命令可授予以及取消权限和角色 用户组 PUBLIC 既不是用户也不是角色, 也不可删除该用户组 然而, 将权限授予 PUBLIC 时, 它们会被授予现在和将来的每个数据库用户 1. 系统权限系统权限授予在数据库中执行特定类型操作的权利, 如创建用户 改变表空间或删除任意视图 下面是授予系统权限的示例 : grant drop any table to scott with admin option; 用户 SCOTT 可删除任意模式中任何一个人的表,WITH GRANT OPTION 子句允许 SCOTT 将最近授予他的权限授予其他用户 2. 对象权限在数据库中的特定对象上可授予对象权限 最常见的对象权限是用于表的 SELECT UPDATE DELETE 和 INSERT, 用于 PL/SQL 存储对象的 EXECUTE, 以及用于授予在表上创建索引权限的 INDEX 在下面的例子中, 用户 RJB 可在 HR 模式的 JOBS 表上执行任意 DML 命令 grant select, update, insert, delete on hr.jobs to rjb; 审核 要审核用户对数据库对象的访问, 可以通过使用 AUDIT 命令在指定对象或操作上建立审核跟踪 (audit trail) 可审核 SQL 语句和对特定数据库对象的访问, 操作的成功或失败 ( 或者两者 ) 可记录在审核跟踪表 SYS.AUD$ 中, 如果 AUDIT_TRAIL 初始参数的值为 OS, 则记录在 O/S 文件中 对于每个审核操作,Oracle 都创建一条审核记录, 其中包括用户名 执行的操作类型 涉及的对象以及时间戳 各种数据字典视图, 如 DBA_AUDIT_TRAIL 和 DBA_FGA_AUDIT_TRAIL, 可以较容易地解释来自原始审核跟踪表 SYS.AUD$ 的结果 警告 : 对数据库对象进行过度审核可能会对性能产生负面影响 应该先对关键的权限和对象进行基础审核, 然后在基础审核表明潜在问题时再扩展审核

36 38 第 Ⅰ 部分数据库体系结构 细粒度的审核细粒度的审核功能是 Oracle 9i 的新增功能, 在 Oracle 10g 11g 和 Oracle 12c 中得到了增强, 并进一步地扩展了审核 : 在 EMPLOYEE 表上执行 SELECT 语句时, 标准审核可以进行检测 ; 细粒度的审核将生成一条包含 EMPLOYEE 表中特定访问列的审核记录, 例如 SALARY 列 使用 DBMS_FGA 程序包和数据字典视图 DBA_FGA_AUDIT_TRAIL 可实现细粒度的审核 数据字典视图 DBA_COMMON_AUDIT_TRAIL 将 DBA_AUDIT_TRAIL 中的标准审核记录和细粒度的审核记录结合在一起 虚拟私有数据库 Oracle 的虚拟私有数据库 (Virtual Private Database) 特性从 Oracle 8i 开始引入, 它将细粒度的访问控制和安全应用程序上下文结合起来 安全策略附加到数据, 而不是附加到应用程序, 这就确保了安全规则的实施与数据访问方式无关 例如, 一个医疗应用程序上下文可能根据访问数据的病人标识号返回一个谓词, 在 WHERE 子句中使用该谓词可确保从表中检索的数据只是与该病人相关的数据 标号安全性 Oracle 的标号安全性 (Label Security) 提供了 VPD Out-of-the-Box( 预设值 ) 解决方案,VPD 即 Virtual Private Database( 虚拟专用数据库 ); 根据请求访问的用户标号和表自身行上的标号, 该解决方案可限制对任何表中行的访问 Oracle 标号安全性管理员不需要任何特殊的编程技巧就可以将安全性策略标号赋给用户和表中的行 例如, 高粒度的数据安全性方法允许应用程序服务提供商 (Application Service Provider, ASP) 的 DBA 只创建账户可接收应用程序的一个实例, 并且使用标号安全性来限制每个表中的行只包括单个公司的账户可接收信息 1.9 实时应用群集 Oracle 的实时应用群集 (Real Application Cluster,RAC) 允许不同服务器上的多个实例访问相同的数据库文件 无论是计划内的断电, 还是意外断电,RAC 装备都提供了相当高的可用性 可以使用新的初始参数重新启动一个实例, 而另一个实例仍然服务于针对数据库的请求 如果一个硬件服务器由于某种故障而崩溃, 则另一个服务器上的 Oracle 实例将继续处理事务, 即使从连接到崩溃服务器的用户看来, 这个过程也是透明的, 且具有最短的停机时间 然而,RAC 并不是一种只针对软件的解决方案 : 实现 RAC 的硬件也必须满足特定要求 共享数据库应该在支持 RAID 的磁盘子系统上, 从而确保存储系统的每个组件都是容错的 此外,RAC 需要在群集中的节点之间具有高速互连或私有网络, 从而使用缓存融合 (Cache Fusion) 机制支持一个实例到另一个实例的通信和块传输 图 1-7 显示了一个双节点 RAC 装备 第 10 章将深入介绍 RAC 的建立和配置

37 第 1 章 Oracle 体系结构概述 39 内存 内存 高速互连 SGA( 系统全局区域 ) SGA( 系统全局区域 ) 第一个服务器 : 第二个服务器 : 后台进程 后台进程 数据库 : 共享磁盘驱动器 数据库文件 图 1-7 双节点的 RAC 配置 1.10 Oracle 流 作为 Oracle 企业版的一个组成部分,Oracle 流是 Oracle 基础结构的高级组成部分, 它是 RAC 的补充 Oracle 流允许数据和事件在同一个数据库中或两个数据库之间平稳地流动和共享 它是 Oracle 众多高可用性解决方案的一个关键部分, 用于配合并增强 Oracle 的消息队列 数据复制和事件管理功能 第 17 章将介绍如何实现 Oracle 流的更多信息 1.11 Oracle 企业管理器 Oracle 企业管理器 (Oracle Enterprise Manager,OEM) 是一组重要工具, 用于帮助对 Oracle 基础结构的所有组成部分进行综合性管理, 包括 Oracle 数据库实例 Oracle 应用服务器及 Web 服务器 如果第三方应用程序存在管理代理, 则 OEM 可在任何与 Oracle 的提供目标相同的框架中管理第三方应用程序 OEM 通过 IE Firefox 或 Chrome 完全支持 Web, 因此支持 IE Firefox 或 Chrome 的任意操作系统平台都可以用于启动 OEM 控制台 使用具有 Oracle 网格控制 (Grid Control) 的 OEM 时, 需要做的一个关键决定是选择管理仓库 (management repository) 的存储位置 OEM 管理仓库存储在与管理或监控的节点或服务分离的数据库中 它将来自节点和服务的元数据集中起来, 为管理这些节点提供了方便 因此, 应该经常备份对仓库数据库的管理, 并将该备份与被管理的数据库隔离 OEM 的安装提供了大量的 预设 值 当 OEM 安装完成时, 已经准备好建立电子邮件通知, 用于向 SYSMAN 或其他任何符合关键条件的电子邮件账户发送消息, 并且自动完成初始目标的发现

38 40 第 Ⅰ 部分数据库体系结构 1.12 Oracle 初始参数 Oracle 数据库使用初始参数来配置内存设置和磁盘位置等 有两种方法可用于存储初始参数 : 使用可编辑的文本文件和使用服务器端的二进制文件 不管采用什么方法来存储初始参数, 都存在一组已定义的基本初始参数 ( 从 Oracle 10g 开始 ), 每个 DBA 在创建新的数据库时都应该熟悉这些初始参数 从 Oracle 10g 开始, 初始参数主要分为两类 : 基本初始参数和高级初始参数 因为 Oracle 越来越自动化管理, 所以 DBA 每天必须熟悉和调整的参数数量正逐渐减少 基本初始参数表 1-3 列出了 Oracle 12c 的基本初始参数, 并进行了简要描述 随后会对这些参数做进一步的解释, 并对应该如何设置其中的一些参数给出建议, 这取决于硬件和软件环境 应用程序类型以及数据库中的用户数量 表 1-3 基本初始参数 初始参数说明 CLUSTER_DATABASE COMPATIBLE CONTROL_FILES DB_BLOCK_SIZE 启用该节点作为群集的一个成员允许安装新的数据库版本, 同时确保与该参数指定的版本兼容指定该实例的控制文件的位置指定 Oracle 块的大小 这种块大小用于创建数据库时的 SYSTEM SYSAUX 和临时表空间 DB_CREATE_FILE_DEST OMF 数据文件的默认位置 如果没有设置 DB_CREATE_ ONLINE_LOG_DEST_n, 该参数也用于指定控制文件和重做日志文件的位置 DB_CREATE_ONLINE_LOG_DEST_n DB_DOMAIN DB_NAME OMF 控制文件和联机重做日志文件的默认位置 数据库驻留在分布式数据库系统中的逻辑域名 ( 如 us.oracle.com) 最多 8 个字符的数据库标识符 放置在 DB_DOMAIN 值的前 面, 形成完全限定的名称 ( 如 marketing.us.oracle.com) DB_RECOVERY_FILE_DEST 恢复区域的默认位置 必须和 DB_RECOVERY_ FILE_DEST_ SIZE 一起设置 DB_RECOVERY_FILE_DEST_SIZE 以字节为单位的文件最大尺寸, 该文件用于在恢复区域位置 的恢复 DB_UNIQUE_NAME 数据库的全局唯一名称 它可将同一 DB_DOMAIN 中具有相 同 DB_NAME 的数据库区分开 INSTANCE_NUMBER JOB_QUEUE_PROCESSES 在 RAC 安装中, 群集中该节点的实例数量 允许执行作业的最大进程数量, 范围为 0~1000

39 第 1 章 Oracle 体系结构概述 41 初始参数说明 ( 续表 ) LDAP_DIRECTORY_SYSAUTH 为具有 SYSDBA 和 SYSOPER 角色的用户启用或禁用基于目 录的授权 LOG_ARCHIVE_DEST_n 对于 ARCHIVELOG 模式, 最多有 31 个位置用于发送归档的 日志文件 LOG_ARCHIVE_DEST_STATE_n NLS_LANGUAGE 设置对应的 LOG_ARCHIVE_DEST_n 地点的可用性 指定数据库的默认语言, 包括消息 日和月的名称, 以及排 序规则 ( 如 AMERICAN) NLS_LENGTH_SEMANTICS 指定 VARCHAR2 或 CHAR 表列的默认长度语义, 其值为 BYTE 或 CHAR NLS_TERRITORY 用于日和星期编号的地域名称 ( 如 SWEDEN TURKEY 或 AMERICA) OPEN_CURSORS PGA_AGGREGATE_TARGET PROCESSES 每个会话最多可以打开的游标数量 分配给实例中所有服务器进程的全部内存 可同时连接到 Oracle 的最大操作系统进程数量,SESSIONS 和 TRANSACTIONS 从这个值派生 REMOTE_LISTENER REMOTE_LOGIN_PASSWORDFILE ROLLBACK_SEGMENTS 网络名称, 分析该名称可了解 Oracle Net 远程监听器 指定 Oracle 如何使用密码文件,RAC 中必须使用该参数 引起联机的私有回滚段名称, 前提是撤消管理没有用于事务 回滚 自从 Oracle Database 10g 引入 Automatic Undo Management 后, 极少需要更改该参数 SESSIONS 最大会话数量, 也可表示实例中同时具有的用户数量 默认 值为 1.1*PROCESSES+5 Oracle 建议, 除非在极特殊情况下, 否则应使用该参数的默认值 SGA_TARGET 指定所有 SGA 组成部分的全部大小, 该参数自动确定 DB_CACHE_SIZE SHARED_POOL_SIZE LARGE_POOL_ SIZE STREAMS_POOL_SIZE 和 JAVA_POOL_SIZE SHARED_SERVERS STAR_TRANSFORMATION_ENABLED UNDO_MANAGEMENT 启动实例时分配的共享服务器进程数量 开始执行查询时控制查询优化 指定撤消管理是自动 (AUTO) 还是手动 (MANUAL) 如果指定 MANUAL, 回滚段就用于撤消管理 UNDO_TABLESPACE 将 UNDO_MANAGEMENT 设置为 AUTO 时使用的表空间 本书后面将再次用到其中一些参数, 并讨论用于 SGA PGA 和其他参数的优化值 下面列出为每个新数据库设置的一些参数

40 42 第 Ⅰ 部分数据库体系结构 1. COMPATIBLE COMPATIBLE 参数允许安装较新版本的 Oracle, 同时限制新版本的特性集, 就像安装了旧的 Oracle 版本一样 该方法可以很好地用于数据库升级, 同时保留与那些在新版本软件下运行可能会失败的应用程序的兼容性 当重做或重写应用程序, 使其在新版本的数据库中工作时, 可以重新设置 COMPATIBLE 参数 使用该参数的缺点在于, 没有任何新的数据库应用程序可以利用新的特性, 除非将 COMPATIBLE 参数设置为与当前版本相同的值 2. DB_NAME DB_NAME 指定数据库名称的本地部分 该参数最多可为 8 个字符, 并且必须以字母或数字字符开头 一旦设置该参数, 就只能用 Oracle DBNEWID 实用程序 (nid) 改变该参数 DB_NAME 在数据库的每个数据文件 重做日志文件和控制文件中记录 在数据库启动时, 该参数的值必须匹配控制文件中记录的 DB_NAME 的值 3. DB_DOMAIN DB_DOMAIN 指定驻留数据库的网络域的名称 在分布式数据库系统中,DB_NAME 和 DB_DOMAIN 结合起来的值必须唯一 4. DB_RECOVERY_FILE_DEST 和 DB_RECOVERY_FILE_DEST_SIZE 当由于实例故障或介质故障而进行数据库恢复操作时, 可方便地使用闪回恢复区 (flash recovery area) 来存储和管理与恢复或备份操作相关的文件 从 Oracle 10g 开始, 参数 DB_RECOVERY_FILE_DEST 可以是本地服务器上的目录位置 网络目录位置或 ASM 磁盘区域 参数 DB_RECOVERY_FILE_DEST_SIZE 限制了允许将多少空间分配给恢复或备份文件 这些参数都是可选的, 但如果指定了这些参数,RMAN 就可以自动管理备份和恢复操作需要的文件 这种恢复区域的尺寸应该足够大, 从而可以保存所有数据文件 递增的 RMAN 备份 联机重做日志 尚未备份到磁带的归档日志文件 SPFILE 和控制文件的两个副本 5. CONTROL_FILES 创建数据库时,CONTROL_FILES 参数并不是必需的 如果未指定该参数,Oracle 将在默认位置创建控制文件 或者, 如果配置了 OMF, 则在由 DB_CREATE_FILE_DEST 或 DB_CREATE_ONLINE_LOG_DEST_n 指定的位置和由 DB_RECOVERY_FILE_DEST 指定的次级位置创建控制文件 一旦创建了数据库, 如果正在使用 SPFILE, 则 CONTROL_FILES 参数反映控制文件位置的名称 ; 如果正在使用文本初始参数文件, 则必须以手动方式将位置添加到此文件 然而, 本书强烈推荐在单独的物理卷上创建控制文件的多个副本 控制文件对于数据库完整性至关重要, 并且非常小, 应该在单独的物理磁盘上创建至少 3 个多元复用的控制文件副本 此外, 应该执行 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令, 用于在发生大灾难时创建文本格式的控制文件副本 下面的示例指定 3 个用于控制文件副本的位置 :

41 第 1 章 Oracle 体系结构概述 43 control_files = (/u01/oracle10g/test/control01.ctl, /u03/oracle10g/test/control02.ctl, /u07/oracle10g/test/control03.ctl) 6. DB_BLOCK_SIZE 参数 DB_BLOCK_SIZE 指定数据库中默认 Oracle 块的大小 在创建数据库时, 使用该块大小创建 SYSTEM TEMP 和 SYSAUX 表空间 理想情况下, 该参数应等于操作系统块大小或是操作系统块大小的倍数, 从而提高 I/O 效率 在 Oracle 9i 之前, 可为 OLTP 系统指定较小的块大小 (4KB 或 8KB), 并为 DSS(Decision Support System, 决策支持系统 ) 数据库指定较大的块大小 ( 最大为 32KB) 然而, 现在的表空间最多可以有 5 种块大小共存于同一数据库中,DB_BLOCK_SIZE 采用较小的值比较好 然而, 一般倾向于使用 8KB 作为所有数据库的最小值, 除非已经在目标环境中严格证明 4KB 的块大小不会造成性能问题 Oracle 建议, 除非有特殊原因 ( 例如许多表的行宽超过 8KB), 在 Oracle Database 12c 中, 对于每个数据库而言,8KB 都是理想的块大小 7. SGA_TARGET Oracle 12c 还可通过另一种方式为 设置它然后忘记它 数据库提供方便, 就是能够指定所有 SGA 组成部分的内存总数 如果指定 SGA_TARGET, 参数 DB_CACHE_SIZE SHARED_POOL_SIZE LARGE_POOL_SIZE STREAMS_POOL_SIZE 和 JAVA_POOL_SIZE 将由 ASMM (Automatic Shared Memory Management, 自动共享内存管理 ) 自动确定其大小 如果设置 SGA_TARGET 时手动指定了这 4 个参数中任何一个参数的大小, 那么 ASMM 将使用手动方式指定大小参数作为最小值 一旦实例启动, 自动确定大小的参数就可以动态递增或递减, 只要没有超出参数 SGA_MAX_SIZE 指定的值即可 参数 SGA_MAX_SIZE 指定整个 SGA 的硬上限, 不可以超出或改变这个值, 除非重新启动实例 不论如何指定 SGA 的大小, 都需要确保服务器中有足够可用的空闲物理内存来保存 SGA 的组成部分和所有后台进程, 否则将会产生过多分页, 从而影响性能 8. MEMORY_TARGET 按照 Oracle 文档的说法,MEMORY_TARGET 并不是一个 基本 参数, 但是它可以极大地简化实例内存管理 此参数指定 Oracle 系统范围内的可用内存, 然后 Oracle 在 SGA 和 PGA 之间重新分配内存, 以优化性能 该参数在一些硬件和 OS 组合上不可用 例如, 如果在 Linux 操作系统上定义了大页面, 就无法使用 MEMORY_TARGET 9. DB_CACHE_SIZE 和 DB_nK_CACHE_SIZE 参数 DB_CACHE_SIZE 指定 SGA 中用于保存默认大小的块的区域大小, 这些块包括来自于 SYSTEM TEMP 和 SYSAUX 表空间的块 如果一些表空间的块大小不同于 SYSTEM 和 SYSAUX 表空间的块大小, 那么最多可以定义 4 个其他的缓存 n 的值可以是 和 32, 如果 n 的值与默认块大小相同, 则对应的 DB_nK_CACHE_SIZE 参数为非法 虽然这个参数不是基本初始参数, 但在从具有不同于 DB_BLOCK_SIZE 的块大小的另一个数据库中传送

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al RMAN sql> sqlplus / as sysdba 查看数据库版本 sql> select * from v$version; 查看数据库名称 sql> show parameter db_name; 一 使用 RMAN 时, 需要将数据库设置成归档模式 sql> conn / as sysdba; sql> show user 查看数据库是否为归档模式 sql> archive log list

More information

System Global Area, Oracle Background process Oracle, Server Process user process, user process : SQL*PLUS SYSTEM SQL> select name from v$datafile; NA

System Global Area, Oracle Background process Oracle, Server Process user process, user process : SQL*PLUS SYSTEM SQL> select name from v$datafile; NA ORACLE By Chao_Ping and Parrotao 1 Oracle9i, SGA 2 Oracle9i 3, 4, Oracle? Oracle??? Oracle 1 Overview Oracle, Datafile, Background process, System Global Area, Server Process User Process System Global

More information

ebook10-5

ebook10-5 Oracle 7.x RDBMS 5 Oracle S Y S S Y S T E M O r a c l e 5.1 O r a c l e R D B M S O r a c l e O r a c l e 5.2 SYS SYSTEM S Y S S Y S T E M O r a c l e S Y S V $ D B A C O N N E C T R E S O U R C E S Y

More information

回滚段探究

回滚段探究 oracle oracle internal DBA oracle document oracle concepts oracle document oracle DBWR update t set object_id = '0' where object_id = '12344'; 1 row updated. commit; Commit complete. 0 12344 12344 0 10%

More information

Microsoft Word - WJ01.doc

Microsoft Word - WJ01.doc 第 1 章 认 证 目 标 解 释 Oracle 的 备 份 和 恢 复 解 决 方 案 2 OCP 认 证 考 试 指 南 (1Z0-063) Oracle Database 12c 高 级 管 理 ASM(Automatic Storage Management, 自 动 存 储 管 理 ) 是 一 项 十 分 重 要 的 Oracle 数 据 库 技 术, 它 适 用 于 各 种 环 境, 甚

More information

SPFILE的使用

SPFILE的使用 9i SPFILE Oracle9i spfile Oracle9i Oracle rman Oracle spfile spfile Oracle Oracle9i -spfile,spfile 9i Oracle pfile spfile ALTER SYSTEM ALTER SESSION spfile spfile SPFILE RMAN Oracle PFILE PFILE SPFILE,

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1 使用 odu 恢复被 drop 表过程 一. 数据库版本 SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production PL/SQL Release

More information

关于我 姓名 : 葛云杰 网络 ID:Fiyo 电话 : 邮箱

关于我 姓名 : 葛云杰 网络 ID:Fiyo  电话 : 邮箱 宗尚技术分享在分享中得到快乐 应用上线过程分析 数据库创建 葛云杰 (Fiyo) 山东诺安诺泰信息系统有限公司电话 :18660746900 邮件 :sdfiyon@gmail.com 关于我 姓名 : 葛云杰 网络 ID:Fiyo www.xiaoqrobot.org 电话 :18660746900 邮箱 :sdfiyon@gmail.com 应用上线过程分析 数据库创建 应用上线过程需要做哪些事情?

More information

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20%

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20% 38 11 2013 11 GeomaticsandInformationScienceofWuhanUniversity Vol.38No.11 Nov.2013 :1671-8860(2013)11-1339-05 :A GIS Key-value 1 1 1 1 (1 129 430079) : 设计了一种基于 Key-value 结构的缓存 KV-cache 旨在简化数据结构 高效管理缓存数据

More information

PowerPoint Presentation

PowerPoint Presentation 数 据 库 培 训 项 目 研 究 Oracle 索 引 探 究 B*tree 索 引 与 位 图 索 引 的 特 点 作 者 : 赵 超 2008 年 12 月 18 日 实 验 环 境 Windows-server2003 内 存 :2G Oracle 10.2.0 ORACLE_SID=orcl 索 引 类 型 B*tree 索 引 ( 默 认 方 式 ) 位 图 索 引 (bitmap) 反

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

untitled

untitled Database System Principle Database System Principle 1 SQL 3.1 SQL 3.2-3.3 3.4 3.5 3.6 Database System Principle 2 3.1 SQL SQL Structured Query Language SQL Database System Principle 3 SQL 3.1.1 SQL 3.1.2

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

ebook 96-16

ebook 96-16 16 13 / ( ) 16-1 SQL*Net/Net8 SQL*Net/Net8 SQL*Net/Net8 16-1 / S Q L SQL*Net V2 N e t 8 S Q L * N e t N e t ( ) 16.1 S Q L O r a c l e S Q L 16 401 ) ( H R _ L I N K create database link p u b l i c (

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

长 安 大 学 硕 士 学 位 论 文 基 于 数 据 仓 库 和 数 据 挖 掘 的 行 为 分 析 研 究 姓 名 : 杨 雅 薇 申 请 学 位 级 别 : 硕 士 专 业 : 计 算 机 软 件 与 理 论 指 导 教 师 : 张 卫 钢 20100530 长安大学硕士学位论文 3 1 3系统架构设计 行为分析数据仓库的应用模型由四部分组成 如图3 3所示

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

项目 3 创建和管理表 任务实现 Office Visio PK 3 FK FK1 3.1 相关知识 SQL Server 一 制订表规划 1. 表要存储什么对象 2. 表中每一列的数据类型和长度 059

项目 3 创建和管理表 任务实现 Office Visio PK 3 FK FK1 3.1 相关知识 SQL Server 一 制订表规划 1. 表要存储什么对象 2. 表中每一列的数据类型和长度 059 项目 3 创建和管理表 表是数据库中最重要的基础对象 它包含数据库中的所有数据 其他数据库对象 例如索引和视图等 都是依赖于表而存在的 若要使用数据库来存储和组织数据 首先就需要创建表 在本项目中将通过 15 个任务来创建和管理表 主要内容包括表的设计 理解 SQL Server 2008 中的数据类型 以及创建和修改表等 任务 1 表的设计 任务描述 Office Visio 3.1 3.1 项目

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

Oracle高级复制配置手册_业务广告_.doc

Oracle高级复制配置手册_业务广告_.doc Oracle 高 级 复 制 配 置 手 册 作 者 : 铁 钉 Q Q: 5979404 MSN: nail.cn@msn.com Mail: nail.cn@msn.com Blog: http://nails.blog.51cto.com Materialized View Replication 复 制 模 式 实 现 了 单 主 机 对 多 个 复 制 站 点 的 数 据 同 步. 在 主

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

季刊9web.indd

季刊9web.indd 在 全 国 现 场 会 上 成 功 展 示 全 国 烟 叶 收 购 暨 现 代 烟 草 农 业 建 设 现 场 会 7 月 6 日 至 8 日 在 昆 明 召 开 在 国 家 局 的 领 导 下, 由 我 司 技 术 开 发 的 烟 站 ( 单 元 ) 烟 叶 管 理 信 息 系 统 在 现 场 会 上 成 功 展 示, 并 得 到 参 会 领 导 及 代 表 们 的 关 注 与 认 可 该 系 统

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

untitled

untitled OO 1 SQL Server 2000 2 SQL Server 2000 3 SQL Server 2000 DDL 1 2 3 DML 1 INSERT 2 DELETE 3 UPDATE SELECT DCL 1 SQL Server 2 3 GRANT REVOKE 1 2 1 2 3 4 5 6 1 SQL Server 2000 SQL Server SQL / Microsoft SQL

More information

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S 9 DB2 优化器 DB2 SQL select c1 c2 from ( DB2 )??? DB2?!?, no no DB2 I/O ( transrate overhead ) SQL DML (INSERT UPDATE DELETE) DB2 (access plan) DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( 728 747 ) SQL

More information

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘 ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client

More information

Slide 1

Slide 1 Oracle 数据库系列课程 Oracle 数据库系列课程概述 基础课程架构设计应用开发运维优化综合类 数据库和 SQL 语言基础课程 数据库逻辑设计及建模 PL/SQL 语言高级课程 DBA 高级课程 Oracle 11g 新特性 PL/SQL 语言基础课程 数据库物理设计 SQL 应用优化高级课程 故障诊断高级课程 Oracle 12c 新特性 DBA

More information

untitled

untitled 1Oracle 1.1Oracle 1.1.1Oracle 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6Oracle 1.1.7Oracle 1.1.8 1.1.9Oracle 1.2Oracle 1.3Oracle 2 2.1 2.2 2.3 2.4 3 3.1 3.2 3.3 3.4 4 4.1 4.2 4.3 5 5.1 5.2

More information

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 1/54 数 据 库 系 统 基 础 哈 尔 滨 工 业 大 学 2011.~2012. 数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 3/54 第 6 章 数 据 库 管 理 与 维 护 6.1 数 据 库 管 理 员 的 基 本 职 责 6.2 数 据 库 存 储 与 性 能 管 理 6.3 数 据 库

More information

作业参考答案

作业参考答案 本章的知识点了解 SQL 语言发展史掌握关系数据库体系结构 三层结构在关系数据库体现 ) 掌握基本表定义 包括修改 删除定义 ) 掌握视图的概念与定义 删除定义理解索引的概念与定义 删除定义总结 SQL 数据定义的特点总结用户数据查询的基本结构掌握 SELECT 子句重复元组的处理掌握 FROM 子句掌握 WHERE 子句理解更名 属性 列 ) 运算理解字符串操作理解元组显示顺序理解分组掌握聚集函数掌握空值处理理解嵌套子查询的概念

More information

单元四数据的查询 数据库原理与应用 课内例题 任务 5 多表查询 课内例题 例创建数据表 orders, 并向表中添加记录 首先创建表 orders,sql 语句如下 : CREATE TABLE orders( o_num int NOT NULL AUTO_INCREMENT, o_date d

单元四数据的查询 数据库原理与应用 课内例题 任务 5 多表查询 课内例题 例创建数据表 orders, 并向表中添加记录 首先创建表 orders,sql 语句如下 : CREATE TABLE orders( o_num int NOT NULL AUTO_INCREMENT, o_date d 任务 5 多表查询 课内例题 例创建数据表 orders, 并向表中添加记录 首先创建表 orders,sql 语句如下 : CREATE TABLE orders( o_num int NOT NULL AUTO_INCREMENT, o_date datetime NOT NULL, c_id int NOT NULL, PRIMARY KEY (o_num) ) ; 插入需要演示的数据,SQL

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

运维2010年端午节日封网及值守

运维2010年端午节日封网及值守 PostgreSQL 和 Oracle 的管理艺术 Francs.tan 1 章节目录 2 一 体系结构二 维护经验三 备份四 监控 第一章 3 一 体系结构二 维护经验三 备份四 监控 1.1 Oracle 体系结构 4 1.2 PostgreSQL 体系结构 5 Client Interface Master Session Processes postgres postgres... postgres

More information

主要内容 一 ZFS 文件系统二 ZFS 文件系统数据完整性 1 一 ZFS 文件系统 ZFS 文件系统简介存储池 2 二 ZFS 文件系统数据完整性什么是数据完整性

主要内容 一 ZFS 文件系统二 ZFS 文件系统数据完整性 1 一 ZFS 文件系统 ZFS 文件系统简介存储池 2 二 ZFS 文件系统数据完整性什么是数据完整性 一 ZFS 文件系统二 ZFS 文件系统数据完整性 老师 : 冯丹 2010 年 10 月 25 日 主要内容 一 ZFS 文件系统二 ZFS 文件系统数据完整性 1 一 ZFS 文件系统 ZFS 文件系统简介存储池 2 二 ZFS 文件系统数据完整性什么是数据完整性 主要内容 一 ZFS 文件系统二 ZFS 文件系统数据完整性 ZFS 文件系统简介存储池 1 一 ZFS 文件系统 ZFS 文件系统简介存储池

More information

ebook46-23

ebook46-23 23 Access 2000 S Q L A c c e s s S Q L S Q L S Q L S E L E C T S Q L S Q L A c c e s s S Q L S Q L I N A N S I Jet SQL S Q L S Q L 23.1 Access 2000 SQL S Q L A c c e s s Jet SQL S Q L U N I O N V B A S

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

untitled

untitled http://idc.hust.edu.cn/~rxli/ 1.1 1.2 1.3 1.4 1.5 1.6 2 1.1 1.1.1 1.1.2 1.1.3 3 1.1.1 Data (0005794, 601,, 1, 1948.03.26, 01) (,,,,,) 4 1.1.1 Database DB 5 1.1.1 (DBMS) DDL ( Create, Drop, Alter) DML(

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

Oracle Database 10g: SQL (OCE) 的第一堂課

Oracle Database 10g: SQL (OCE) 的第一堂課 商 用 資 料 庫 的 第 一 堂 課 中 華 大 學 資 訊 管 理 系 助 理 教 授 李 之 中 http://www.chu.edu.tw/~leecc 甲 骨 文 俱 樂 部 @Taiwan Facebook 社 團 https://www.facebook.com/groups/365923576787041/ 2014/09/15 問 題 一 大 三 了, 你 為 什 麼 還 在 這

More information

Microsoft Word - OD01-2

Microsoft Word - OD01-2 第 1 章 Oracle Database 11g 体系结构 与 Oracle 之前的版本相比,Oracle Database 11g 进行了有意义的升级 新增加的功能使得开发人员 数据库管理员和最终用户能够更好地控制数据的存储 处理和检索 本章将介绍 Oracle Database 11g 体系结构的重要部分 后面的章节将详细讨论这些新的功能, 包括 SQL 重放 变更管理和结果缓存等内容 本章的目标是从总体上介绍在

More information

Oracle数据库应用技术16 [兼容模式]

Oracle数据库应用技术16 [兼容模式] 第十六章 Oracle 闪回技术 主讲内容 : 闪回技术 闪回表 闪回数据库的使用 ; 复习上节课内容 备份和恢复概述 RMAN 工具 RMAN 备份 恢复 第 2 页 本节课内容 1. 闪回技术概述 2. 闪回删除 3. 闪回版本查询 4. 闪回数据库 第 3 页 一. 闪回技术概述 目的 : 为了让用户及时获取误操作之前的数据 ; 多种形式 : 闪回表 (Flashback Table) 闪回删除

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品 Autodesk Product Design Suite Standard 20122 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品设计 Autodesk Product Design Suite Standard 版本包包括以下软件产产品

More information

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 1...3 2...20 3...28 4...41 5 Windows SQL Server...47 Microsoft SQL Server 2005 DBSRV1 Microsoft SQL Server

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

Presentation title goes here

Presentation title goes here DBI-B303 SQL Server 升级的价值与技术展望 何雷微软全球商业服务部 SQL Server 版本 发布时间 发布时间间隔 SQL Server 2016 2016 年 约 24 个月 SQL Server 2014 2014 年 4 月 25 个月 SQL Server 2012 2012 年 3 月 23 个月 SQL Server 2008 R2 2010 年 4 月 20 个月

More information

前言 本手册对协同管理系统的数据备份相关事宜进行说明 如对手册存在疑问, 可与致远互联 的客户服务人员联系 北京致远互联软件股份有限公司 2 / 15

前言 本手册对协同管理系统的数据备份相关事宜进行说明 如对手册存在疑问, 可与致远互联 的客户服务人员联系 北京致远互联软件股份有限公司 2 / 15 致远协同管理软件 数据备份手册 北京致远互联软件股份有限公司 2017 年 8 月 北京致远互联软件股份有限公司 1 / 15 www.seeyon.com 前言 本手册对协同管理系统的数据备份相关事宜进行说明 如对手册存在疑问, 可与致远互联 的客户服务人员联系 北京致远互联软件股份有限公司 2 / 15 www.seeyon.com 目录 1 非结构化数据备份与恢复...4 2 数据库备份与恢复...6

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 CHAPTER 1 Understanding Core Database Concepts 1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 1 Understanding Core Database Concepts

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

PowerPoint Presentation

PowerPoint Presentation Skill-building Courses Intro to SQL Lesson 2 More Functions in SQL 通配符 :LIKE SELECT * FROM Products WHERE PName LIKE %gizmo% PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo

More information

untitled

untitled ArcSDE ESRI ( ) High availability Backup & recovery Clustering Replication Mirroring Standby servers ArcSDE % 95% 99.9% 99.99% 99.999% 99.9999% 18.25 / 8.7 / 52.5 / 5.25 / 31.8 / Spatial Geodatabase

More information

赵松涛写作

赵松涛写作 第 2 章构建环境 安装 Oracle 9i 本章介绍 Oracle 9i 网络中两种主要的成分 数据库服务器和管理客户机的安装和配置 过程 本章目的在于帮助读者掌握如何安装 Oracle 9i 以及如何配置 Oracle 9i 网络环境 2.1 安装数据库服务器 本书采用 Windows 2000 Server 作为安装的网络操作系统平台, 数据库服务器采用 Oracle 9i Database

More information

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w 1 1.1 D B M S To w e r C D 1. 1 968 I B M I M S 2 0 70 Cullinet Software I D M S I M S C O D A S Y L 1971 I D M S containing hierarchy I M S I D M S I M S I B M I M S I D M S 2 2. 18 R D B M S O R D B

More information

98_364_Test Bank_Lesson04

98_364_Test Bank_Lesson04 第 4 课 : 了解数据存储 选择题 1. 清除冗余数据称为什么? a) 规范化 b) 重复数据消除 c) 环回 d) 返回 难度 : 中等章节参考 : 规范化数据库解释 : 在过去数据存储成本 比当前 高很多的时候, 利 用有关数据存储的规范化技术发挥着更 大作 用 简单地说, 规范化即消除冗余数据以节省空间 2. 以下哪项表 示消除重复的组? 难度 : 困难章节参考 : 什么是规范化? 解释 :

More information

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建 2 第 二 讲 创 建 和 管 理 表 与 简 单 记 录 操 作 Copyright SWFC-CISC, 2013. All rights reserved. 教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 000-544 Title : DB2 9.7 Advanced DBA for LUW Version : DEMO 1 / 10 1. A DBA needs to create a federated database and configure access to join

More information

Insert title here

Insert title here ORACLE 高级管理与性能调优最佳实践培训班 举办时间 :2017-03-21 至 2017-03-26 2017-05-23 至 2017-05-28 2017-07-25 至 2017-07-30 2017-08-15 至 2017-08-20 上课地点 : 杭州市 成都市 青岛市 北京市课程费用 :4500 元 / 位培训师 : 专家团培训对象 : 从事数据库管理的相关人员适用行业 : 适用专业

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

rA E3 FR1 Installation Addendum.fm

rA E3 FR1 Installation Addendum.fm Empower 3 Feature Release 1 安装附录 Empower 3 Feature Release 1 安装附录 本文档是 Empower 3 安装 配置和升级指南 的附录 其中介绍了如何在 Windows Server 2008 R2 或 Solaris 10 中创建支持 Oracle 真正应用集群 (RAC) 的 Empower 3 Feature Release 1 (FR1)

More information

Oracle数据库应用技术4 [兼容模式]

Oracle数据库应用技术4 [兼容模式] Oracle 数 据 库 应 用 技 术 河 南 中 医 学 院 信 息 技 术 学 院 王 哲 第 四 章 管 理 表 空 间 主 讲 内 容 : 表 空 间 及 管 理 第 2 页 主 要 内 容 一. 表 空 间 基 础 知 识 二. 管 理 表 空 间 三. 其 他 表 空 间 第 3 页 一. 表 空 间 基 础 知 识 在 创 建 数 据 库 时,Oracle 会 自 动 地 创 建 多

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

ebook 132-2

ebook 132-2 2 SQL Server 7.0 SQL Server SQL Server 7 SQL Server 7 5 2.1 SQL Server 7 SQL Server 7 SQL Server SQL Server SQL Server 2.1.1 SQL Server Windows NT/2000 Windows 95/98 ( r a n d o m access memory R A M )

More information

分析体系结构如何左右SQL性能

分析体系结构如何左右SQL性能 第 2 周 从案例中分析体系结 构如何左右 SQL 性能 法律声明 声明 本视频和幻灯片为炼数成金网络课程的教学资料, 所有资料只能在课程内使用, 丌得在课程以外范围散播, 违者将可能被追究法律和经济责任 课程详情访问炼数成金培训网站 http://edu.dataguru.cn 当前课程进度 体系结构知识 体系结构知识 Oracle 的体系结构 ( 简化版 ) instance PMON SMON

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

2014 年 87 月 259 日 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 容量 供应商 系列 型号 格式 可用性 兼容性能 备注 500G Seagate Pipeline HD2 ST CS - 可用 Seagate Pi

2014 年 87 月 259 日 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 容量 供应商 系列 型号 格式 可用性 兼容性能 备注 500G Seagate Pipeline HD2 ST CS - 可用 Seagate Pi 纠正点从 2014 年 5 月 12 日的版本开始 我们缺少的 4TB 硬盘的型号 : WJ-ND400 / 和 WJ-HD616K / WJ-716K / WJ-ND400 WJ-HD616K WJ-HD716K 4TB 红 40PURX-64GVNY0 AF OK 4TB 红 40EFRX-68WT0N0 AF OK 纠正点 1 2014 年 87 月 259 日 K-HW508K / HW516K

More information

习题1

习题1 习 题 1 数 据 库 系 统 基 本 概 念 1.1 名 词 解 释 DB DB 是 长 期 存 储 在 计 算 机 内 有 组 织 的 统 一 管 理 的 相 关 数 据 的 集 合 DB 能 为 各 种 用 户 共 享, 具 有 较 小 冗 余 度 数 据 间 联 系 紧 密 而 又 有 较 高 的 数 据 独 立 性 等 特 点 DBMS 是 位 于 用 户 与 操 作 系 统 之 间 的

More information

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30 0 配置 Host MIB 设备 V 1.1.2 ( 简体版 ) 0 Update: 2016/1/30 前言 N-Reporter 支持 Host Resource MIB 监控主机 (Host) 状态, 本文件描述 N-Reporter 用户如何配置 Host MIB 设备 文件章节如下 : 1. 配置 Windows Server 2003... 2 1-1.Windows Server 2003

More information

SQL Server SQL Server SQL Mail Windows NT

SQL Server SQL Server SQL Mail Windows NT ... 3 11 SQL Server... 4 11.1... 7 11.2... 9 11.3... 11 11.4... 30 11.5 SQL Server... 30 11.6... 31 11.7... 32 12 SQL Mail... 33 12.1Windows NT... 33 12.2SQL Mail... 34 12.3SQL Mail... 34 12.4 Microsoft

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

试卷代号 : 1256 座位号巨口 国家开放大学 ( 中央广播电视大学 ) 2016 年春季学期 开放本科 期末考试 数据库应用技术试题 2016 年 7 月 题号 分数 总分 l ee 得分评卷人 一 单项选择题 ( 每个题只有一个答案是正确的. 请将正确的答案坡 写到括号内 本题共 2 个小题,

试卷代号 : 1256 座位号巨口 国家开放大学 ( 中央广播电视大学 ) 2016 年春季学期 开放本科 期末考试 数据库应用技术试题 2016 年 7 月 题号 分数 总分 l ee 得分评卷人 一 单项选择题 ( 每个题只有一个答案是正确的. 请将正确的答案坡 写到括号内 本题共 2 个小题, 试卷代号 : 1256 座位号巨口 国家开放大学 ( 中央广播电视大学 ) 2016 年春季学期 开放本科 期末考试 数据库应用技术试题 2016 年 7 月 题号 分数 总分 l ee 得分评卷人 一 单项选择题 ( 每个题只有一个答案是正确的. 请将正确的答案坡 写到括号内 本题共 2 个小题, 每小题 2 分. 共 40 分 1. 下列功能中, 不属于数据库管理系统功能的是 () A. 数据库对象定义

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

Inception: 云时代的 MySQL 审核工具 Oracle Code 设计与实现 周彦伟极数云舟 CEO Oracle ACE Director for MySQL 8 May 2018 Copyright 2017, Oracle and/or its affiliates. All ri

Inception: 云时代的 MySQL 审核工具 Oracle Code 设计与实现 周彦伟极数云舟 CEO Oracle ACE Director for MySQL 8 May 2018 Copyright 2017, Oracle and/or its affiliates. All ri Inception: 云时代的 MySQL 审核工具 Oracle Code 设计与实现 周彦伟极数云舟 CEO Oracle ACE Director for MySQL 8 May 2018 Copyright 2017, Oracle and/or its affiliates. All rights reserved. 免责声明 以下内容旨在概述产品的总体发展方向 该内容仅供参考, 不可纳入任何合同

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

4. 设有学生表 ( 学号, 姓名, 所在系, 身份证号 ) 和系表 ( 系名, 系办公地点儿下列关于两个 表的引用关系的描述, 正确的是 ( ) A. 设置学生表中的 " 所在系 " 为外键 B. 设置系表中的 " 系名 " 为外键 C. 设置学生表的学号为主键 D. 元法表达这两个表的引用关系

4. 设有学生表 ( 学号, 姓名, 所在系, 身份证号 ) 和系表 ( 系名, 系办公地点儿下列关于两个 表的引用关系的描述, 正确的是 ( ) A. 设置学生表中的  所在系  为外键 B. 设置系表中的  系名  为外键 C. 设置学生表的学号为主键 D. 元法表达这两个表的引用关系 试卷代号 :1256, 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末气 数据库应用技术试题 得分 评卷人 li I 2016 年 1 月一分一一-治一一一E 一J 山一 一一一一 单项选择题 { 每个题只有一个答案是正确的, 请将正确的答案填 写到括号内 本题共 20 个小题, 每小题 2 分, 共 40 分 ) 1. 下列属于数据模型三要素的是 ( ) A.

More information

数据库朊务

数据库朊务 创 刊 词 硅 谷 明 天 计 划 已 久 的 系 列 技 术 简 报, 在 广 大 客 户 朋 友 的 关 注 下, 自 即 日 起 正 式 创 刊 了 作 为 该 系 列 技 术 简 报 责 任 编 辑, 在 此 向 广 大 客 户 朋 友, 和 参 与 该 系 列 简 报 撰 写 编 辑 美 工 发 布 的 所 有 同 事, 表 示 深 深 的 谢 意, 感 谢 大 家 的 持 续 关 注 和

More information

* r p . 4 6 12 3 5 7 8 9bk bm btbsbrbqbp bo bn bl [ ] [ ] [ ] [ ] [SET] 1 2 3 4 5 6 7. cmcl ck 8 9 0 bk bl bm bn bo 1 2 1 2+ - bp bq 8 2 4 6 br r bs p bt ck cl cm 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

四川天一学院信息工程系毛玉环

四川天一学院信息工程系毛玉环 四川天一学院信息工程系毛玉环 教学目标 1 1 1 掌握 SQL Server 2005 数据库系统的数据库类型 了解系统数据库的功能 了解数据库中的基本对象的特点 1 1 1 掌握数据库文件及文件组的概念及配置策略 掌握使用 Transact-SQL 创建数据库的方法 掌握查看数据库的基本方法 1 1 掌握修改文件组 增大数据库及收缩数据库方法 掌握删除数据库的方法 3.1 SQL Server

More information

Microsoft Word - 07.doc

Microsoft Word - 07.doc 目的 Oracle DBA 两日速成课程 Http://www.yangwenjun.com 制作人 : 杨文军摘自 Oracle 网站 第 7 章 : 管理模式对象 模式是一个数据库对象的集合 模式为一个数据库用户所有, 并具有与该用户相同的名称 模式对象是由用 户创建的逻辑结构, 用以包含或引用他们的数据 模式对象包含诸如表 视图和索引之类的结构 您可以使用 Oracle Enterprise

More information

oracle-Ess-05.pdf

oracle-Ess-05.pdf 5 135 1 3 6 O r a c l e 1 3 7 1 3 8 O r a c l e 1 3 9 C O N N E C T R E S O U R C E D B A S Y S O P E R S Y S D B A E X P _ F U L L _ D A T A B A S E 1 4 0 I M P _ F U L L _ D A T A B A S E D E L E T E

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

模板

模板 第六章数据库的创建 启动和关闭 6.1 数据库创建前的考虑 6.1.1 数据库规划 准备数据库的创建需要时需要仔细的研究和规划 下面推荐如何规划 : 规划数据库表和索引并估计需要的空间 计划是组成你的数据库的操作系统文件布局 合适的文件分配能通过分散存取文件的 I/O 操作可以很明显地改进数据库性能 当安装 Oracle 创建数据库时, 有几种分散文件的 I/O 操作的方法 例如, 把重做日志文件放置在不同磁盘上或条带分隔

More information

K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V G Seagate Pipeline HD2 ST CS - 可用 Seagate Pipeline HD2 ST1000VM002 - 可用 1T Seagate SV35.5

K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V G Seagate Pipeline HD2 ST CS - 可用 Seagate Pipeline HD2 ST1000VM002 - 可用 1T Seagate SV35.5 注意请使用 5T 或 6T 的硬盘架 (WJ-ND400/ WJ-HDE400/WJ-HD716/WJ-HD616) 请不要在 5TB 或 6TB 硬盘底部安 2 颗螺丝 ( 下方标记 ), 因为螺丝要长于螺旋孔的深度 顶视图 底视图 1 K-HW508K / HW516K K-NL408K / NL416K 最新固件版本 :V3.200 500G Seagate Pipeline HD2 ST3500312CS

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

01

01 ZEBRA 技术白皮书 条码编码 101 相关知识介绍 引言 20 70 数据 80 20 90 (JIT) AIAG EIA HIBCC HAZMAT 条码的优势提高数据准确性 99% 85% / / 提升效率 / 2 Zebra Technologies 保持一致性 ID 改进库存和资产管理 成本 / 效益分析 ID ID ID (ERP) RFID Zebra Technologies 3 ID

More information

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内 容 分 发 网 络 Alibaba Cloud Content Delivery Network 一

More information

P4i45GL_GV-R50-CN.p65

P4i45GL_GV-R50-CN.p65 1 Main Advanced Security Power Boot Exit System Date System Time Floppy Drives IDE Devices BIOS Version Processor Type Processor Speed Cache Size Microcode Update Total Memory DDR1 DDR2 Dec 18 2003 Thu

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information