ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的区别

  有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。我们先来看一下他们的定义:

A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
Schemas and users help database administrators manage database security.

  从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
  一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
  一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表是属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不是user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
  表空间:一个表空间就是一片磁盘区域,他有一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引等 。每个表空间有一个预制磁盘区域称为初始区间(initial extent)用完这个区间后再用下一个,直到用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件。
  instance是一大坨内存sga,pga….和后台的进程smon pmon…..组成的一个大的应用。
  schema就是一个用户和他下面的所有对象。
  tablspace 逻辑上用来放objects,物理上对应磁盘上的数据文件或者裸设备。
  在Oracle中,结合逻辑存储与物理存储的概念,我们可以这样来理解数据库、表空间、SCHEMA、数据文件这些概念:
  数据库是一个大圈,里面圈着的是表空间,表空间里面是数据文件,那么schema是什么呢?schema是一个逻辑概念,是一个集合,但schema并不是一个对象,oracle也并没有提供创建schema的语法。
  schema:一般而言,一个用户就对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema,用户是不能创建schema的,schema在创建用户的时候创建,并可以指定用户的各种表空间(这点与PostgreSQL是不同,PostgreSQL是可以创建schema并指派给某个用户)。当前连接到数据库上的用户创建的所有数据库对象默认都属于这个schema(即在不指明schema的情况下),比如用户scott连接到数据库,然后create table test(id int not null)创建表,那么这个表被创建在了scott这个schema中;但若这样create kanon.table test(id int not null)的话,这个表被创建在了kanon这个schema中,当然前提是权限允许。
  但一定要注意一点:schema好像并不是在创建user时就创建的,而是在该用户创建了第一个对象之后才将schema真正创建的,只有user下存在对象,他对应的schema才会存在,如果user下不存在任何对象了,schema也就不存在了;
数据库:在oracle中,数据库是由表空间来组成的,而表空间里面是具体的物理文件—数据文件。我们可以创建数据库并为其指定各种表空间。
  表空间:这是个逻辑概念,本质上是一个或者多个数据文件的集合。
  数据文件:具体存储数据的物理文件,是一个物理概念。一个数据文件只能属于一个表空间,一个表空间可以包含一个或多个数据文件。一个数据库由多个表空间组成,一个表空间只能属于一个数据库。
  若还不理解,下面是我从网上摘的一个比喻,很形象的解释了什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User,不妨一看。
  “我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西,如果一个user想使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了。”—摘自网络
原文来自:http://langgufu.iteye.com/blog/1469055

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第一部分 何为 Oracle? Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 Chapter 2, Data Blocks, Extents, and Segments 第 2 章,数据块,数据扩展,及数据段 Chapter 3, Tablespaces, Datafiles, and Control Files 第 3 章,表空间数据文件,及控制文件 Chapter 4, Transaction Management 第 4 章,事务管理 Chapter 5, Schema Objects 第 5 章,方案对象 Chapter 6, Dependencies Among Schema Objects 第 6 章,方案对象间的依赖关系 Chapter 7, The Data Dictionary 第 7 章,数据字典 Chapter 8, Memory Architecture 第 8 章,内存体系结构 Chapter 9, Process Architecture 第 9 章,进程体系结构 Chapter 10, Application Architecture 第 10 章,应用体系结构 Chapter 11, Oracle Utilities 第 11 章,Oracle 工具 Chapter 12, Database and Instance Startup and Shutdown 第 12 章,数据库及实例的启动与关闭 Part III Oracle Database Features 第三部分 Oracle 数据库特性 Chapter 13, Data Concurrency and Consistency 第 13 章,数据并发性与数据一致性 Chapter 14, Manageability 第 14 章,可管理性 Chapter 15, Backup and Recovery 第 15 章,备份与恢复 Chapter 16, Business Intelligence 第 16 章,业务智能 Chapter 17, High Availability 第 17 章,高可用性 Chapter 18, Partitioned Tables and Indexes 第 18 章,分区表及分区索引 Chapter 19, Content Management 第 19 章,内容管理 Chapter 20, Database Security 第 20 章,数据库安全 Chapter 21, Data Integrity 第 21 章,数据完整性   3  /   900     Chapter 22, Triggers 第 22 章,触发器 Chapter 23, Information Integration 第 23 章,信息整合 Part IV Oracle Database Application Development 第四部分 Oracle 数据库应用程序开发 Chapter 24, SQL, PL/SQL, and Java 第 24 章,SQL,PL/SQL,及 Java Chapter 25, Overview of Application Development Languages 第 25 章,应用程序开发语言概述 Chapter 26, Native Datatypes 第 26 章,原生数据类型 Chapter 27, Object Datatypes and Object Views 第 27 章,对象数据类型及对象视图
第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24 §1.2.2 数据字典概念 25 §1.3 SQL、SQL*Plus及 PL/SQL 25 §1.3.1 SQL和SQL*PLUS的差别 25 §1.3.2 PL/SQL语言 27 §1.4 登录到SQL*PLUS 27 §1.4.1 UNIX环境 27 §1.4.2 Windows NT和WINDOWS/2000环境 29 §1.5 常用SQL*PLUS 附加命令简介 32 §1.5.1 登录到SQL*PLUS 32 §1.5.2 EXIT和QUIT 32 §1.5.3 DESCRIBE(显示表、视图结构) 33 §1.5.4 LIST(列出)命令 33 §1.5.5 Change(替换字符串)命令 34 §1.5.6 Append(追加字符串)命令 34 §1.5.7 Save保存当前缓冲区命令到文件 35 §1.5.8 GET将命令文件读到缓冲区 35 §1.5.9 SPOOL将信息记录到文件 36 §1.5.10 再运行当前缓冲区的命令 36 §1.6 常用数据字典简介 37 §1.7 ORACLE数据类型 38 §1.8 SQL 语句基础 44 §1.8.1 SQL语句所用符号 44 §1.8.2 简单select 查询 45 §1.9 伪列及伪表 46 §1.10 使用SQL Worksheet工作 46 第二章 查询基础 50 §2.1 SELECT语句 50 §2.2 SQL的单记录函数 50 §2.2.1 单记录字符函数 50 §2.2.2 单记录数字函数 56 §2.2.3 单记录日期函数 62 §2.2.4 单记录转换函数 65 §2.2.5 其它的单记录函数 68 §2.3 SQL的组函数 73 §2.3.1 多记录组函数 73 §2.3.2 带 GROUP BY 的计算 75 §2.3.3 用 HAVING 来限制分组的计算 75 §2.4 控制和格式化输出 76 §2.4.1 用 ORDER BY 子句来对结果进行排序 76 §2.4.2 用 BREAK 命令 来对结果进行排列 76 §2.4.3 用 COMPUTE 命令对结果进行格式化 79 §2.5 配置会话环境 82 §2.5.1 ARRAYSIZE(取回的行数) 82 §2.5.2 AUTOCOMMIT(自动提交) 83 §2.5.3 LINESIZE(行显示宽度) 83 §2.5.4 LONG(长类型显示字节数) 83 §2.5.5 PAGESIZE(页行数) 83 §2.5.6 PAUSE(暂停) 84 §2.5.7 SPACE(列间空格) 84 §2.5.8 Termout (启/停屏幕显示) 84 §2.5.9 ECHO (启/停命令显示) 84 §2.5.10 TRANSACTION (启动事务) 85 §2.5.11 SHOW ALL(列出所有参数) 85 §2.6 格式化输出 87 §2.6.1 一般数据的格式化输出 87 §2.6.2 日期的格式化输出 88 §2.7 加标题 89 §2.8 建立简单报告 90 §2.9 输入变量 91 第三章 表及索引的定义操作 94 §3.1 建立表结构 94 §3.1.1 建立表结构命令 94 §3.1.2 建立表结构例子 96 §3.1.3 建立临时表结构 97 §3.3 修改表结构 98 §3.3.1 修改表结构命令 98 §3.3.2 修改表结构例子 99 §3.3.3 删除表结构 101 §3.3.4 使用CHECK作限制约束 101 §3.3.5 使用UNRECOVERABLE创建表 102 §3.3.6 将表移动到新的数据段或新的表空间 102 §3.3.7 手工分配表的存储空间 104 §3.3.8 标记不使用的列和删除不使用的列 104 §3.3 主键 106 §3.3.1 创建主键 106 §3.3.2 改变主键 109 §3.3.3 删除主键 109 §3.4 外部键 110 §3.4.1 建立外部键 110 §3.4.2 修改外部键 112 §3.4.3 删除外部键 112 §3.5 索引 112 §3.5.1 建立索引 112 §3.5.2 修改索引 114 §3.5.3 删除索引 115 §3.6 新索引类型 115 §3.6.1 基于函数的索引 115 §3.6.2 反向键索引 117 §3.6.3 索引组织表 117 §3.7 抽象数据类型的使用 118 §3.8 大数据类型的使用 119 §3.8.1 可用数据类型 119 §3.8.2 为LOB数据类型指定存储 120 §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据字典 124 §3.9.2 数据字典查询例子 125 第四章 视图、同义词和序列 128 §4.1 视图 128 §4.1.1 使用视图来修改表数据 128 §4.1.2 创建一个新视图 128 §4.1.3 删除一个视图 130 §4.1.4 改变视图 131 §4.2 实体视图(MATERIALIZED VIEW) 131 §4.2.1 创建实体视图 131 §4.2.2 创建实体视图日志 137 §4.2.3 修改实体视图 139 §4.2.4 修改实体视图日志 141 §4.2.45 实体视图完整例子 142 §4.3 序号(sequence) 146 §4.3.1 建立序号 146 §4.3.2 修改序号 147 §4.3.3 使用序号 147 §4.3.4 删除序号 147 §4.4 同义词 148 §4.4.1 建立同义词 148 §4.4.2 删除同义词 149 §4.5 视图、同义词和序列有关的数据字典 149 第五章 簇与分区 150 §5.1 簇( cluster ) 150 §5.1.0 簇概念 150 §5.1.1 建立簇 152 §5.1.2 改变簇 155 §5.1.3 删除簇 155 §5.1.4 删除簇索引 156 §5.1.5 收集簇信息 156 §5.2 分区 158 §5.2.1 分区的优点 158 §5.2.2 分区的方法 159 §5.2.3 创建表的分区 159 §5.2.3 创建索引的分区 164 §5.2.4 维护表分区和索引分区 167 §5.3 簇与分区有关的数据字典 169 §5.3.1 分区、簇数据字典列表 169 §5.3.2 基本的分区、簇信息查询 169 第六章 使用SQL 进行数据操作 170 §6.1 INSERT操作 170 §6.1.1 用文字插入操作 171 §6.1.2 用子查询插入操作 171 §6.2 UPDATE操作 172 §6.2.1 用文字更新操作 173 §6.2.2 用查询更新操作 173 §6.2.3 用相关子查询更新操作 174 §6.3 DETELE操作 174 §6.3.1 用delete删除全部记录的操作 174 §6.3.2 用delete有条件删除部分记录 175 §6.3.3 用delete分段删除大量记录 175 §6.4 insert、delete及update 的提交和撤消 176 §6.4.1 自动提交的设置 176 §6.4.2 保留点和撤消 177 第七章 复杂查询语句的使用 180 §7.1 复杂查询语句的使用 180 §7.1.1 相关子查询 180 §7.1.2 外连接 180 §7.1.3 自我连接 181 §7.1.4 UNION,INTERSECT及MINUS 182 §7.2 创建复杂的视图 183 §7.2.1 分组视图 183 §7.2.2 合计视图 183 §7.2.3 组合视图 184 §7.3 家族树 184 §7.3.1 排除单一体和分枝 184 §7.3.2 遍历至根 185 §7.4 在from 使用视图 187 第八章 一些高级的用法 188 §8.1 关于DECODE 188 §8.1.1 DECODE 的if-then-else逻辑 188 §8.1.2 DECODE 的简单例子 188 §8.1.3 DECODE实现表的转置 189 §8.2 关于访问远程数据库 192 §8.2.1 数据库链接 192 §8.2.2 使用同义词获得本地透明 193 §8.2.3 在视图使用user伪列 194 §8.2.4 使用COPY功能 195 §8.2.5 管理Oracle名称服务器 196 §8.3 关于上下文的使用 196 §8.3.1 设置上下文选项 196 §8.3.2 为上下文查询设置表 197 §8.3.3 优化文本索引 199 §8.4 关于维数(DIMENSION) 199 §8.4.1 CREATE DIMENSION语法 200 §8.4.2 创建维的例子 201 第九章 安全管理 203 §9.1 CREATE USER 命令 203 §9.2 建立用户 204 §9.2.1 外部验证(Authenticated )用户 204 §9.2.2 全局(Globally)验证用户-企业验证 204 §9.3 ALTER USER 命令 205 §9.4 DROP USER 命令 205 §9.5 GRANT 命令与REVOKE 命令 206 §9.5.1 GRANT 命令 206 §9.5.2 REVOKE 命令 206 §9.6 权限和角色 207 §9.6.1 建立角色 207 §9.6.2 给角色授权 208 §9.6.3 授权角色给用户 209 §9.7 有关的数据字典 209 §9.7.1 与用户、角色与权限有关的数据字典 209 §9.7.2 查询数据字典信息 209 第十章 其它一些常见问题及技巧 212 §10.1 一些常见问题 212 §10.1.1 Oracle与2000年问题 212 §10.1.2 如何正确插入日期数据 213 §10.1.3 在查询只返回满足条件的部分记录 214 §10.1.4 快速大量删除数据Truncate 215 §10.1.5 Rowid的使用 215 §10.1.6 在查询不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not in和Not Exists 218 §10.1.9 关于 COPY命令 218 §10.1.10 列值为NULL情形的处理 219 §10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 常用技巧 221 §10.2.1 long 类型的查询 222 §10.2.2 如何确定执行时间 222 §10.2.3 如何终止用户会话 222 §10.2.4 用TRANSLATE对数据加密和解密 224 §10.2.5 如何用查询来修改数据 225 §10.2.6 如何产生创建用户的脚本 226 §10.2.7 如何产生创建表结构的脚本 227 §10.2.8 如何产生创建视图的脚本 229 §10.2.9 如何产生创建序号的脚本 229 §10.2.10 如何为用户创建公共同义词 229 第二部分 Oracle PL/SQL基础 231 第十一章 PL/SQL 程序设计简介 231 §11.1 概述 231 §11.2 SQL与PL/SQL 231 §11.2.1 什么是PL/SQL? 231 §11.2.1 PL/SQL的好处 232 §11.2.1.1 有利于客户/服务器环境应用的运行 232 §11.2.1.2 适合于客户环境 232 §11.2.1.3 客户及服务器端的好处 232 §11.2.2 PL/SQL 可用的SQL语句 233 §11.3 运行PL/SQL程序 233 §11.4 PL/SQL内置包 234 第十二章PL/SQL 块结构和组成元素 235 §12.1 PL/SQL结构 235 §12.2 PL/SQL块 236 §12.3 标识符 236 §12.4 PL/SQL 变量类型 237 §12.4.1 变量类型 237 §12.4.2 复合类型(记录和表) 238 §12.4.3 使用%ROWTYPE 240 §12.4.4 LOB类型 240 §12.4.5 用户定义的子类型 241 §12.4.6 数据类型的转换 243 §12.5 运算符和表达式(数据定义) 243 §12.5.1 关系运算符 243 §12.5.2 一般运算符 244 §12.5.3 逻辑运算符 244 §12.6 变量赋值 245 §12.6.1 字符及数字运算特点 245 §12.6.2 Boolean 赋值 245 §12.6.3 数据库赋值 245 §12.6.4 可转换的类型赋值 246 §12.7 变量作用范围以可见性 248 §12.8 注释 248 §12.9 简单例子 249 §12.9.1 简单数据插入例子 249 §12.9.2 简单数据删除例子 249 第十三章PL/SQL 处理流程 250 §13.1 条件语句 250 §13.2 循环 251 §13.3 标号和GOTO 254 §13.4 NULL 语句 255 第十四章 光标的使用 255 §14.1 光标概念 255 §14.1.1 处理显式光标 255 §14.1.2 处理隐式光标 257 §14.2 光标循环 258 §14.2.1 简单循环 258 §14.2.2 WHILE循环 259 §14.2.3 光标 FOR 循环 260 §14.2.4 关于NO_DATA_FOUND和%NOTFOUND 260 §14.2.5 SELECT FOR UPDATE 光标 261 §14.3 光标变量 262 §14.3.1 声明光标变量 262 §14.3.2 为光标变量分配存储空间 262 §14.3.3 打开光标变量 262 §14.3.4 关闭光标变量 262 §14.3.5 光标变量例子 263 §14.3.6 光标变量 265 第十五章 错误处理 267 §15.1 异常处理概念 267 §15.1.1 预定义的异常处理 267 §15.1.2 触发异常情态 268 §15.1.3 处理异常情态 269 §15.1.4 用户定义的异常处理 270 §15.2 异常情态传播 271 §15.2.1 在执行部分引发异常情态 271 §15.2.2 在声明部分引发异常情态 272 §15.3 异常处理编程 273 §15.4 在 PL/SQL 使用 sqlcode,sqlerrm 273 第十六章 存储过程和函数 276 §16.1 引言 276 §16.2 存储过程 276 §16.2.1 创建过程 276 §16.2.2 使用过程 278 §16.2.3 开发存储过程步骤 279 §16.2.3.1 编辑存储过程源码 279 §16.2.3.2 对存储过程程序进行解释 279 §16.2.3.3 调试源码直到正确 279 §16.2.3.4 授权执行权给相关的用户或角色 279 §16.2.4 与存储过程相关数据字典 280 §16.3 创建函数 281 §16.4 过程和函数的例外处理 282 §16.4.1 使用系统定义的例外处理 282 §16.4.1.1 没有例外处理的缺点 283 §16.4.1.2 使用预定义的例外处理 283 §16.4.2 使用用户定义的例外处理+ 286 §16.4.2.1 定义的用户例外处理 286 §16.4.2.2 使用户EXCEPTION_INIT处理 286 §16.4.2.3 使用户raise_application_error处理 286 第十七章 创建包和使用包 287 §17.1 引言 287 §17.2 包的定义 288 §17.3 包的开发步骤 289 §17.4 包的头部说明 289 §17.5 包体的说明 290 §17.6 删除过程、函数和包 293 §17.7 包的管理 293 §17.7.1 包有关的数据字典 293 §17.7.2 包无效对象的查询和编译 294 §17.7.3 包源代码的导出 296 第十八章 触发器 297 §18.1 触发器类型 297 §18.1.1 DML触发器 297 §18.1.2 替代触发器 298 §18.1.3 系统触发器 298 §18.2 创建触发器 298 §18.2.1 创建DML触发器 299 §18.2.2 创建替代(Instead_of)触发器 300 §18.2.3 创建系统触发器 300 §18.2.4 触发器触发次序 302 §18.2.5 使用触发器谓词 302 §18.3 删除和使能触发器 303 §18.4 创建触发器的限制 304 §18.5 变异表 305 §18.5.1 变异表典型例子 307 §18.5.2 变异表错误的处理 308 §18.6 触发器数据字典与管理 309 §18.6.1 触发器数据字典 309 §18.6.2 无效触发器的编译 310 第十九章 外部存储过程 311 §19.1 什么是外部例程 311 §19.2 C外部例程 311 §19.2.1 调用步骤 312 §19.2.2 参数映射( 转换) 317 第二十章 会话间通信 319 §20.1 DBMS_PIPE 319 §20.1.1 发送消息 319 §20.1.2 接收消息 320 §20.1.3 示例 321 §20.2 DBMS_ALERT 340 §20.2.1 使用警告 341 §20.2.2 警告所用的各个过程 341 §20.2.3 警告例子 342 §20.3 DBMS_PIPE 和 DBMS_ALERT 343 第二十一章 数据库作业和文件I/O 344 §21.1 数据库作业 344 §21.1.1后台进程 344 §21.1.2运行作业 344 §21.1.3失效作业 346 §21.1.4删除作业 347 §21.1.5修改作业参数 348 §21.1.6与作业参数有关数据字典 350 §21.2 文件I/O 350 §21.2.1 安全性 351 §21.2.2 打开和关闭文件 351 §21.2.3文件输出 353 §21.2.3文件输入 354 §21.2.4文件操作例子 354 第二十二章 在PL/SQL 使用SQL语句 355 §22.1在PL/SQL 使用DML语句 355 §22.2 伪列 357 §22.3 GRANT、REVOKE 和权限 358 §22.3.1 对象和系统权限 358 §22.3.2 GRANT和REVOKE命令语法 358 §22.4 事务控制 359 §22.4.1 COMMIT 和 ROLLBACK 359 §22.4.2 保留点 SAVEPOINT 360 §22.5 在PL/SQL使用SQL函数 361 §22.5.1 错误处理函数 362 §22.5.2 数字函数 362 第二十三章 PL/SQL程序的测试和调试 363 §23.1 问题诊断 363 §23.1.1 调试指南 363 §23.1.2 显示在编译产生的错误 363 §23.2 插入测试表 364 §23.3 DBMS_OUTPUT的使用 364 §23.4 PL/SQL调试器 365 §23.4.1 Procedure Builder调试器 365 §23.4.2 SQL-Station调试器 366 §23.5 程序设计方法 366 §23.5.1 模块化程序设计 366 §23.5.2 自顶向下设计 366 §23.5.3 数据抽象 366 第二十四章 性能及其它问题 367 §24.1共享池 367 §24.1.1 共享池工作原理 367 §24.1.2 估计共享池大小 368 §24.1.3 将PL/SQL 驻留在共享池 369 §24.2 SQL 语句调整 370 §24.3 网络问题 373 §24.4 PL/SQL wrap(转换器) 373 §24.4.1 运行 wrap实用程序 373 §24.4.2 输入和输出文件 374 §24.5 DBMS_OUTPUT的使用 374 第二十五章 对象类型 376 §25.1 对象类型定义 376 §25.1.1 定义对象类型头 376 §25.1.2 定义对象类型体 376 §25.1.3 定义对象类型例子 377 §25.1.4 初始化对象类型 378 §25.1.5 使用对象类型 379 §25.2 对象类型修改 381 §25.3 对象类型删除 381 第二十六章 动态PL/SQL简介 383 §26.1 概述 383 §26.1.1 静态SQL和动态SQL 383 §26.1.2 用DBMS_SQL 包实现动态 383 §26.1.3 用本地动态SQL实现动态 385 §26.2 使用DBMS_SQL进行动态编程 385 §26.2.1 执行DML、DDL及Alter session语句 385 §26.2.2 示例 388 §26.2.3 执行DDL 语句 389 §26.2.4 执行PL/SQL 块 390 §26.4 本地动态SQL 391 §26.4.1使用EXECUTE IMMEDIATE语句 391 §26.4.2向后兼容情况 392 §26.4.3指定参数模式 393 第二十七章 LOB和DBMS_LOB包简介 394 §27.1 LOB类型一般使用 394 §27.1.1 LOB类型存储 395 §27.1.2 临时LOB类型 395 §27.1.3 LOB类型的接口 396 §27.2 一般LOB表与数据加载 396 §27.2.1 建立包含LOB的表 396 §27.2.2 用EMPTY_CLOB或EMPTY_BLOB插入LOB 398 §27.2.3 一般的LOB插入 399 §27.3 内部LOB和DBMS_LOB的使用 399 §27.3.1 APPEND过程 400 §27.3.2 CLOSE过程 401 §27.3.3 COMPARE函数 401 §27.3.4 COPY过程 403 §27.3.5 ERASE过程 405 §27.3.6 GETCHUNKSIZE函数 406 §27.3.7 GETLENGTH函数 407 §27.3.8 INSTR函数 408 §27.3.9 READ过程 409 §27.3.10 SUBSTR函数 410 §27.3.11 WRITE过程 411 §27.3.12 WRITEAPPEND过程 412 §27.4临时LOB 413 §27.4.1 建立临时LOB 413 §27.4.2 查看临时LOB 414 §27.4.3 释放临时LOB 414 §27.4.4 从BFILE加载临时LOB 415 §27.4.5 查看临时LOB是否打开 415 §27.4.6 显示临时LOB数据 416 §27.4.7 从临时LOB读数据 417 §27.4.8 从临时LOB读部分数据 418 §27.4.9 比较两个临时LOB数据 419 §27.4.10 查看临时LOB模式的存在 420 §27.4.11 得到临时LOB的长度 421 §27.4.12 拷贝部分临时LOB数据 421 §27.4.13 为临时LOB拷贝位置 422 §27.4.14 加临时LOB到另外的LOB 423 §27.4.15 写追加到临时LOB 424 §27.4.16 写数据到临时LOB 424 §27.4.17 修理临时LOB数据 425 §27.4.18 删除临时LOB数据 426 §27.5外部LOB (BFILE) 426 §27.5.1 BFILE目录指定 426 §27.5.2 建立包括BFILE列的表 427 §27.5.3 用BFILENAME()插入数据 428 §27.5.4 从另外表选择BFILE插入数据 429 §27.5.5 用初始化BFILE位置来插入数据BFILE行 429 §27.5.6 动态加载数据BFILE的表 429 §27.5.7 用BFILE数据来加载LOB数据 430 §27.5.8 用FILEOPEN打开BFILE 431 §27.5.9 用OPEN打开BFILE 431 §27.5.10 用FILEISOPEN看BFILE是否打开 431 §27.5.11 用ISOPEN看BFILE是否打开 432 §27.5.12 显示BFILE 432 §27.5.13 从BFILE读数据 433 §27.5.14 读部分BFILE 433 §27.5.15 比较BFILE 434 §27.5.16 判断BFILE是否存在模式 434 §27.5.17 判断BFILE是否存在 435 §27.5.18 得到BFILE长度 435 §27.5.19 拷贝BFILE的LOB位置 436 §27.5.20 得到目录别名和文件名字 436 §27.5.21 用初始化BFILE位置更新BFILE 437 §27.5.22 用FILECLOSE关闭BFILE 437 §27.5.23 用CLOSE关闭BFILE 437 §27.5.24 用CLOSEALL关闭所有BFILE 438 §27.5.25 用DELETE等删除BFILE数据 438 §27.6 使用SQL*loader加载LOB 438 §27.6.1 加载图象和文本文件 438 §27.6.2 加载文本文件 439 第二十八章 PL/SQL编程技巧 442 §28.1用触发器实现日期格式的自动设置 442 §28.2如何避免TOO_MANY_ROWS错误 443 §28.3如何解决TOO_MANY_ROWS问题 446 §28.4如何在PL/SQL使用数组 447 §28.5如何使用触发器完成数据复制 448 §28.6在PL/SQL实现Truncate 449 §28.7如何导出存储过程、触发器的代码 450 附录A:SQL及SQL*PLUS 命令参考 459 %FOUND 460 %ISOPEN 460 %NOTFOUND 461 %ROWCOUNT 462 %ROWTYPE 463 %TYPE 463 (+) 464 @ (“at” 号) 464 @@ 465 ABS 465 ACCEPT 466 ACOS 466 ADD_MONTHS 467 ALTER CLUSTER 467 ALTER DATABASE 468 ALTER FUNCTION 469 ALTER INDEX 469 ALTER PACKAGE 470 ALTER PROCEDURE 470 ALTER PROFILE 471 ALTER RESOURCE COST 471 ALTER ROLE 472 ALTER ROLLBACK SEGMENT 472 ALTER SEQUENCE 473 ALTER SESSION 473 ALTER SNAPSHOT 474 ALTER SNAPSHOT LOG 475 ALTER SYSTEM 475 ALTER TABLE 476 ALTER TABLESPACE 477 ALTER TRIGGER 478 ALTER TYPE 478 ALTER USER 479 ALTER VIEW 480 ANALYZE 480 APPEND 481 ASCII 481 ASIN 482 ATAN 482 ATAN2 483 AUDIT 483 AVG 484 BFILENAME 484 BLOCK 485 BTITLE 486 CEIL 487 CHANGE 488 CHARTOROWID 488 CHR 489 CLEAR 489 CLOSE 490 COLUMN 490 COMMENT 491 COMMIT 492 COMPUTE 492 CONCAT 493 CONCATENATE 493 CONNECT BY 494 CONVERT 494 COPY 495 COS 496 COSH 496 COUNT 497 CREATE CLUSTER 497 CREATE CONTROLFILE 498 CREATE DATABASE 499 CREATE DATABASE LINK 500 CREATE PROFILE 500 CREATE DIRECTORY 501 CREATE FUNCTION 501 CREATE INDEX 502 CREATE LIBRARY 503 CREATE PACKAGE 503 CREATE PACKAGE BODY 504 CREATE PROCEDURE 506 CREATE ROLE 507 CREATE ROLLBACK SEGMENT 507 CREATE SCHEMA 508 CREATE SEQUENCE 509 CREATE SNAPSHOT 509 CREATE SNAPSHOT LOG 510 CREATE SYNONYM 511 CREATE TABLE 511 CREATE TABLESPACE 513 CREATE TRIGGER 514 CREATE TYPE 515 CREATE TYPE BODY 516 CREATE USER 516 CREATE VIEW 517 CURRVAL 518 CURSOR_ALREADY_OPEN 518 DATATYPE 519 DATATYPE —CHAR 519 DATATYPE —DATE 520 DATATYPE —FLOAT 520 DATATYPE —LONG 520 DATATYPE —LONGRAW 521 DATATYPE —MLSLABEL 521 DATATYPE —NUMBER 521 DATATYPE —RAW 522 DATATYPE —ROWID 522 DATATYPE —VARCHAR 522 DATATYPE —VARCHAR2 522 DECLARE 523 DECODE 523 DEFINE 524 DEL 524 DELETE 525 DEREF 526 DESCRIBE 526 DROP CLUSTER 527 DROP DATABASE LINK 527 DROP DIRECTORY 528 DROP FUNCTION 528 DROP INDEX 528 DROP LIBRARY 529 DROP PACKAGE 529 DROP PROCEDURE 530 DROP PROFILE 530 DROP ROLE 531 DROP ROLLBACK SEGMENT 531 DROP SEQUENCE 532 DROP SNAPSHOT 532 DROP SNAPSHOT LOG 532 DROP SYNONYM 533 DROP TABLE 533 DROP TABLESPACE 534 DROP TRIGGER 534 DROP TYPE 535 DROP TYPE BODY 535 DROP USER 536 DROP VIEW 536 DUMP 537 DUP_VAL_ON_INDEX 537 EDIT 538 EMPTY_BLOB 538 EMPTY_CLOB 539 EXCEPTION INIT Pragma 539 EXECUTE 540 EXISTS 540 EXIT 541 EXIT 542 EXIT-WHEN 542 EXP 543 EXPLAIN PLAN 543 FETCH 544 FLOOR 545 FOR-LOOP 545 FORMAT 546 FORMAT —DATE 546 FORMAT —NUMBER 547 GET 547 GLB 548 GOTO 548 GRANT 549 GREATEST 550 GREATEST_LB 550 HEXTORAW 551 HOST 551 IF-THEN 552 IF-THEN-ELSE 552 IF-THEN-ELSEIF 553 INITCAP 554 INPUT 554 INSERT 555 INSTR 555 INSTRB 556 INTERSECT 557 INVALID_CURSOR 557 INVALID_NUMBER 558 KEYWORDS 559 LABELS 560 LAST_DAY 561 LEAST 561 LEAST_LB 562 LENGTH 562 LENGTHB 562 LIKE 563 LIST 564 LN 565 LOCK TABLE 565 LOG 566 LOGIN_DENIED 566 LOOP 567 LOWER 568 LPAD 568 LTRIM 569 LUB 569 MAKE_REF 570 MAX 570 MIN 571 MINUS 571 MOD 572 MONTHS_BETWEEN 572 NEW_TIME 573 NEXT_DAY 574 NEXTVAL 574 NLS_CHARSET_DECL_LEN 575 NLS_CHARSET_ID 575 NLS_CHARSET_NAME 576 NLS_INITCAP 576 NLS_LOWER 577 NLS_UPPER 577 NO_DATA_FOUND 578 NOAUDIT 579 NOT_LOGGED_ON 579 NULL 580 NVL 581 OPEN 581 OPEN-FOR 582 运算符 582 运算符— < > 583 运算符—> 583 运算符—> = 584 运算符—! = 584 运算符—* 585 运算符—+ 586 运算符—-* 586 运算符—/ 587 运算符—<= 587 运算符—= 588 运算符—AND 589 运算符—BETWEEN 589 运算符—IN 590 运算符—IS NOT NULL 590 运算符—IS NULL 591 运算符—NOT 591 运算符—NOT BETWEEN 592 运算符—NOT IN 592 运算符—OR 593 PRIOR 593 PROGRAM_ERROR 594 PROMPT 595 PSEUDOCOLUMN 595 RAISE 595 RAWTOHEX 596 RECORD 596 REFTOHEX 597 REMARK 598 RENAME 598 REPFOOTER 599 REPHEADER 599 REPLACE 600 REPLACE 601 RETURN 601 REVOKE 602 ROLLBACK 603 ROUND 603 ROWIDTOCHAR 604 ROWTYPE_MISMATCH 605 RPAD 606 RTRIM 606 SAVE 607 SAVEPOINT 607 SELECT 608 SELECT INTO 608 SET 609 SET ROLE 611 SET TRANSACTION 612 SHOW 612 SIGN 613 SIN 614 SINH 614 SOUNDEX 615 SPOOL 615 SQLERRM 616 SQLPLUS 616 SQRT 617 START 617 STDDEV 618 STORAGE 618 STORAGE_ERROR 619 STORE 619 SUBSTR 620 SUBSTRB 620 SUM 621 SYSDATE 622 TABLE 622 TAN 623 TANH 623 TIMEOUT_ON_RESOURCE 624 TIMING 624 TO_CHAR (date) 625 TO_CHAR (label) 625 TO_CHAR (number) 626 TO_DATE (char) 626 TO_LABEL (char) 627 TO_MULTI_BYTE (char) 627 TO_NUMBER (char) 628 TO_SINGLE_BYTE (char) 628 TOO_MANY_ROWS 629 TRANSLATE 629 TRUNC (date) 630 TRUNC (number) 631 TRUNCATERUNCATE 631 TTITLE 632 UID 633 UNDEFINE 633 UNION 634 UNION ALL 634 UPDATE 635 UPPER 636 USER 636 USERENV 637 VALUE_ERROR 638 VARIABLE 638 VARIABLE ASSIGNMENT 639 VARIANCE 639 VSIZE 640 RESERVED WORDS 640 WHENEVER OSERROR 641 WHENEVER SQLERROR 642 WHILE-LOOP 642 ZERO_DIVIDE 643
贺辞 序 前言 第1章 建立和配置数据库 1.1 数据库创建规划 1.1.1 规划以及提出正确的问题 1.1.2 怎样确定恰当的数据块尺寸 1.2 组织文件系统 1.2.1 怎样命名数据库文件 1.2.2 使用最佳灵活结构 1.2.3 怎样配置符合 OFA 的 Oracle 文件 系统 1.3 规划数据库文件布局 1.3.1 最大化可用性的规划 1.3.2 最小化磁盘争用的规划 1.4 建立参数文件 1.4.1 配置参数的一些注意事项 1.4.2 建立参数文件的连接 1.4.3 优化数据字典存储 1.5 理解 CREATE DATABASE 命令 1.6 创建数据库的技术 1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration Assistant 创建数据库 1.7 完成数据库配置 1.7.1 创建表空间 1.7.2 执行数据字典配置脚本 1.7.3 建立另外的回退段 1.7.4 修改 SYSTEM 用户的缺省和临时 表空间 1.7.5 更改 SYS 和 SYSTEM 的缺省 口令 1.7.6 建立其他用户和模式对象 1.7.7 启用归档日志方式 1.7.8 进行数据库完全备份 1.7.9 配置数据库自动启动和关闭 1.7.10 在数据库投入使用之后对其进行 监控 1.7.11 怎样列出和描述初始化参数 1.7.12 怎样列出无记载参数 1.8 回顾 第2章 管理数据存储、对象和容量 2.1 配置数据存储 2.1.1 管理可用空间碎片 2.1.2 聚集可用空间的技术 2.1.3 管理区的碎片 2.1.4 查找接近 MAXEXTENTS 值的 对象 2.1.5 避免数据字典的碎片 2.1.6 本地管理区 2.1.7 进行全数据库重组 2.1.8 定义区大小和防止碎片的11个 技巧 2.1.9 避免区出超错误 2.1.10 避免空间出超错误 2.1.11 使行链接和行迁移最小化 2.1.12 怎样检测行链接/行迁移 2.1.13 利用脚本检查模式的链接行 2.1.14 消除行链接 2.1.15 消除行迁移 2.1.16 行链接/行迁移的技巧 2.1.17 怎样定义表的大小 2.1.18 怎样确定 PCTFREE 的最佳值 2.1.19 怎样决定 PCTUSED 的最佳值 2.1.20 怎样查找每个数据块的可用数据 区域 2.2 管理程序对象 2.2.1 怎样检查无效对象 2.2.2 怎样重新编译无效对象 2.2.3 在不同表空间之间移动索引 2.2.4 怎样查找最高点 2.2.5 怎样释放未用空间 2.3 DBMS_SPACE 程序包 2.3.1 使用 DBMS_SPACE.UNUSED _SPACE 2.3.2 使用 DBMS_SPACE.FREE _BLOCK 2.4 管理锁争用 2.4.1 怎样查找产生锁的 SQL 语句 2.4.2 怎样释放锁 2.4.3 怎样删除用户会话 2.4.4 怎样从数据字典提取视图创建 命令 2.4.5 怎样从数据字典提取索引定义 2.5 回顾 第3章 导出和导入技术 3.1 导出/导入特性概述 3.1.1 使用导出和导入 3.1.2 导出/导入的一般使用 3.1.3 导出方式 3.1.4 导入方式 3.1.5 创建必需的数据字典视图 3.1.6 指定导出/导入参数 3.1.7 在磁带上直接导出和导入数据 3.1.8 估计导出文件的大小 3.1.9 直接导出压缩文件 3.1.10 从压缩导出文件直接导入 3.1.11 创建一致的导出文件 3.1.12 检查导出/导入错误 3.1.13 用导出和导入管理区 3.1.14 组织和命名导出/导入文件 3.1.15 显示导出文件的内容 3.1.16 不能对恢复同时使用导出和归档 重做日志 3.1.17 增量、累积和完全的导出和导入 3.2 怎样优化导出性能 3.2.1 使用 DIRECT 路径导出 3.2.2 对传统的路径导出使用大的 BUFFER 值 3.2.3 对直接路径导出使用 RECORDL- ENGHT 参数 3.3 怎样优化导入参数 3.3.1 使用大的回退段 3.3.2 创建几个大的联机重做日志文件 3.3.3 导入过程关闭归档方式 3.3.4 分开导出转储文件、数据表空间、 回退段和联机重做日志文件 3.3.5 最小化检查点 3.3.6 单独创建索引 3.3.7 设置大的初始化参数 SORT_AREA _SIZE 3.3.8 使用大的导入缓冲区 3.3.9 最小化数据库提交次数 3.4 Oracle8i 的新特性 3.4.1 子分区的导出和导入 3.4.2 导出/导入多个转储文件 3.4.3 为卸载表的导出过程的选择语句 指定一个查询 3.4.4 导出/导入预计算优化程序统计 数据 3.4.5 可移动表空间 3.5 回顾 第4章 设计高可用性数据库 4.1 如何发现和保护“致命的弱点” 4.2 复用数据库控制文件 4.3 在硬件级上镜像控制文件 4.4 镜像和复用的区别 4.5 为高可用性选择磁盘类型 4.6 常规的 RAID 技巧 4.7 给控制文件增长的空间 4.8 如何配置日志组 4.9 保护 SYSTEM 表空间的三种简单 方法 4.10 为什么必须保护 ORACLE_HOME 4.11 保护操作系统 4.12 如何保护回退段 4.13 分类和划分数据 4.14 划分表空间的优先次序 4.15 如何配置高可用性的 TEMP 表空间 4.16 确保在归档日志目标位置有足够的 可用空间 4.17 如何调整联机重做日志 4.18 通过优化归档速度避免 LGWR 等待 4.19 将联机重做日志和归档重做日志文件 分开 4.20 如何加速实例的恢复 4.21 回顾 第5章 使用热备用数据库 5.1 什么是失败切换 5.2 热备用数据库 5.2.1 热备用数据库的优点 5.2.2 热备用数据库的缺点 5.2.3 建立和配置热备用数据库 5.2.4 创建备用数据库作为主数据库的 一个子集 5.2.5 选择备用站点 5.2.6 选择备用节点 5.2.7 进行热备用的失败切换 5.2.8 关于备用激活要记住的三个要点 5.2.9 备用激活后的四项工作 5.2.10 将归档重做日志自动传送到备用 数据库 5.2.11 启动管理恢复 5.2.12 只读打开备用数据库 5.2.13 热备用数据库的维护 5.3 回顾 第6章 高级的失败切换方法 6.1 将 Oracle 并行服务器用于失败切换 6.2 并行服务器失败切换的优点 6.3 并行服务器失败切换的缺点 6.4 性能考虑 6.5 降低并行服务器失败切换的时间 6.6 透明的应用程序失败切换 6.7 客户机失败切换的说明 6.8 将客户机失败切换用于负载平衡 6.9 为预定的节点停机使用客户机失败 切换 6.10 用 Oracle 复制实现失败切换 6.10.1 基本复制 6.10.2 基本复制失败切换的优点 6.10.3 基本复制失败切换的缺点 6.11 将高级复制用于失败切换 6.11.1 高级复制失败切换的优点 6.11.2 高级复制失败切换的缺点 6.12 利用 Oracle Fail Safe 6.12.1 选择节点配置 6.12.2 Oracle Fail Safe 的优点 6.12.3 Oracle Fail Safe 的缺点 6.13 其他高可用性的选项 6.13.1 鞋带状预算的高可用性:传送备份 磁带 6.13.2 采用远程镜像 6.13.3 应用程序镜像 6.14 利用混合配置技术 6.14.1 利用并行服务器与远程热备用 数据库 6.14.2 利用 Oracle Fail Safe 与远程热 备用数据库(仅 Windows NT 平台有效) 6.14.3 利用热备用数据库与远程镜像 6.15 回顾 第7章 备份和恢复技术 7.1 备份选项 7.2 操作系统备份 7.2.1 冷备份 7.2.2 OFA 和备份 7.2.3 热备份 7.2.4 使备份方式的持续时间最小化 7.2.5 为什么不应备份联机重做日志 7.2.6 ARCHIVELOG 和 NOARCHIV- ELOG方式 7.2.7 为什么应使用 ARCHIVELOG 方式 7.2.8 为什么应该复用归档重做日志 7.3 服务器管理备份 7.4 逻辑备份 7.4.1 文本文件备份 7.4.2 逻辑控制文件备份 7.4.3 使用导出和导入 7.4.4 导入方式 7.4.5 增量、累积和完全的导出和导入 7.4.6 创建一致的导出文件 7.4.7 不能同时使用导出和归档重做日志 进行恢复 7.5 开发备份和恢复计划 7.5.1 常规的备份技巧 7.5.2 快速备份的技巧 7.6 恢复策略和情况 7.6.1 数据库恢复和涉及的数据库结构 组织 7.7 各种需要恢复的情形 7.8 恢复丢失的数据文件 7.8.1 SYSTEM 数据文件的丢失 7.8.2 包含活动回退段的数据文件的丢失 7.8.3 其他数据文件的丢失 7.8.4 执行表空间恢复 7.8.5 执行数据文件恢复 7.8.6 在没有数据文件备份时怎样进行 恢复 7.8.7 恢复丢失的临时表空间 7.8.8 只读表空间丢失 7.8.9 索引表空间丢失 7.9 恢复联机重做日志 7.9.1 联机重做日志组某个成员丢失 7.9.2 非活动的重做日志组丢失 7.9.3 活动重做日志组丢失 7.10 恢复丢失的控制文件 7.10.1 被复用的控制文件成员丢失 7.10.2 控制文件完全丢失 7.11 回顾 第8章 性能优化 8.1 优化系统全局区域的技术 8.1.1 怎样优化数据缓冲区高速缓存 8.1.2 度量和优化库高速缓存的性能 8.1.3 度量和优化字典高速缓存的性能 8.1.4 怎样估计应用程序的效能 8.2 固定应用程序代码 8.2.1 怎样确定应该固定的对象 8.2.2 怎样确定当前固定的程序对象 8.2.3 怎样固定应用程序代码 8.2.4 使用 DBMS_SHARED_POOL.KEEP 的技巧 8.2.5 怎样生成进行固定操作的脚本 8.2.6 使用 DBMS_SHARED_POOL .UNKEEP 的技巧 8.3 优化数据排序的技术 8.3.1 在内存进行全部或大部分排序 8.3.2 最小化排序时的空间管理开销 8.3.3 使用多个 TEMP 表空间分布排序 8.4 优化数据存储的技术 8.4.1 使行链接和行迁移最小化 8.4.2 检测行链接/迁移 8.4.3 确定模式的链接行 8.4.4 防止和纠正行链接/迁移 8.4.5 行链接/迁移的技巧 8.4.6 使可用空间碎片最小化 8.4.7 使区增长最小化 8.4.8 怎样确定代价最高的查询 8.5 跟踪 SQL 8.5.1 设置用户会话内的跟踪 8.5.2 使用 DBMS_SYSTEM 设置用户 会话外的跟踪 8.5.3 生成系统跟踪 8.5.4 使用 tkprof 解释跟踪文件 8.5.5 使用 AUTOTRACE 获得 SQL 语句 执行计划和统计数据 8.6 优化回退段 8.6.1 最小化回退段争用 8.6.2 使动态扩充最小化 8.6.3 分布回退段的 I/O 8.7 优化索引 8.7.1 怎样确定和重建产生碎片的索引 8.7.2 怎样确定表的索引 8.8 优化磁盘 I/O 8.8.1 怎样查找和避免 I/O 热点 8.8.2 使用原始文件系统 8.9 生成优化程序统计数据 8.9.1 使用 DBMS_UTILITY.ANALYZE _SCHEMA收集统计数据 8.9.2 使用 DBMS_UTILITY.ANALYZE _DATABASE 收集统计数据 8.9.3 使用 DBMS_STATS 收集性能统计 数据 8.10 优化环境 8.10.1 怎样优化 Net8/SQL*Net 8.10.2 监控并优化系统资源 8.11 回顾 第9章 Oracle8i 的新特性 9.1 新的性能优化特性 9.1.1 设计的稳定性和存储概要 9.1.2 排序改进 9.1.3 实体化视图 9.1.4 利用 DBMS_STATS 收集性能统计 数据 9.2 新索引类型 9.2.1 基于函数的索引 9.2.2 反向键索引 9.2.3 降序索引 9.2.4 索引编排表 9.2.5 管理索引的新特性 9.3 新备份和恢复特性 9.3.1 多目标归档 9.3.2 多归档日志进程 9.3.3 使用 LogMiner 9.3.4 快速启动恢复 9.4 新导出/导入特性 9.4.1 使用多个导出/导入转储文件 9.4.2 选择性的查询导出 9.4.3 预先计算优化程序统计数据的导出 /导入 9.4.4 可移动表空间 9.4.5 混合导出/导入特性 9.5 新备用数据库特性 9.5.1 归档重做日志的自动传送 9.5.2 启用管理恢复 9.5.3 以只读方式打开备用数据库 9.6 管理作业队列的新特性 9.7 管理存储和对象的新功能 9.7.1 重新定位和组织表 9.7.2 删除表的列 9.7.3 将表列标记为不可用 9.7.4 本地管理的表空间 9.8 回顾 第10章 Internet DBA 10.1 Oracle8i — Internet 数据库 10.2 Oracle 与 Java 10.3 Oracle8i Java 虚拟机 10.4 Java VM 与 Oracle8i 服务器怎样通讯 10.5 Java 与 Oracle 应用程序服务器 10.6 Oracle Jdeveloper 10.7 与 Java 有关的初始化参数 10.8 Oracle Internet 文件系统 10.9 Oracle 应用服务器概览 10.10 OAS 组件 10.11 调整 OAS 内存请求 10.12 检查建议的最小硬件 10.13 设计 Oracle 应用服务器配置 10.14 Oracle 应用服务器的安装 10.15 使用 OAS 管理程序 10.16 怎样启动和停止 OAS 组件 10.17 OAS 怎样利用负载平衡 10.18 监控 CPU 的消耗情况 10.19 监控内存消耗 10.20 回顾 第11章 使用 Oracle 提供的程序包 11.1.1 程序包:它们是什么? 11.1 DBMS_JOB 和 DBMS_IJOB 程序包 11.1.1 Oracle 作业队列的概念 11.1.2 配置 SNP 进程的技巧 11.1.3 利用 DBMS_JOB 和 DBMS_IJOB 11.1.4 调度作业 11.1.5 更改作业 11.1.6 停止作业 11.1.7 其他作业队列过程 11.1.8 监控作业队列 11.1.9 管理属于其他用户的作业 11.1.10 利用作业队列定期分析模式 对象 11.2 DBMS_SYSTEM 程序包 11.2.1 使用 DBMS_SYSTEM.SET_SQL _TRACE_IN_SESSION 11.2.2 使用 DBMS_SYSTEM.SET_EV 11.2.3 使用 DBMS_SYSTEM.READ_EV 11.2.4 确定当前会话设置的事件级别 11.2.5 其他 DBMS_SYSTEM 程序 11.3 DBMS_SPACE 程序包 11.3.1 使用 DBMS_SPACE.UNUSED _SPACE 11.3.2 使用 DBMS_SPACE.FREE _BLOCKS 11.4 DBMS_SHARED_POOL 程序包 11.4.1 使用 DBMS_SHARED_POOL.SIZES 过程 11.4.2 使用 DBMS_SHARED_POOL.SIZES 的技巧 11.4.3 使用 DBMS_SHARED_POOL.KEEP 过程 11.4.4 使用 DBMS_SHARED_POOL.KEEP 的技巧 11.4.5 使用 DBMS_SHARED_POOL.UNKEEP 过程 11.4.6 使用 DBMS_SHARED_POOL.UNKEEP 的技巧 11.4.7 使用 DBMS_SHARED_POOL .ABORTED_REQUEST_THRESHOLD 过程 11.4.8 使用 DBMS_SHARED_POOL .ABORTED_REQUEST_THRESHOLD 的技巧 11.5 DBMS_UTILITY 11.5.1 使用 DBMS_UTILITY.COMPILE _SCHEMA过程 11.5.2 使用 DBMS_UTILITY.COMPILE _SCHEMA 的技巧 11.5.3 使用 DBMS_UTILITY.ANALYZE _SCHEMA 11.5.4 使用 DBMS_UTILITY.ANALYZE _DATABASE 11.5.5 使用 DBMS_UTILITY.GET _PARAMETER_VALUE 11.5.6 使用 DBMS_UTILITY.PORT _STRING 11.5.7 使用 DBMS_UTILITY.DB _VERSION 11.5.8 使用 DBMS_UTILITY.MAKE_DATA _BLOCK_ADDRESS 11.5.9 使用 DBMS_UTILITY.DATA_BLOCK _ADDRESS_FILE 11.5.10 使用 DBMS_UTILITY.DATA_BLOCK _ADDRESS_BLOCK 11.5.11 使用 DBMS_UTILITY.IS_PARALLEL _SERVER 11.5.12 使用 DBMS_UTILITY.CURRENT _INSTANCE 11.5.13 使用 DBMS_UTILITY.ACTIVE _INSTANCES 11.6 DBMS_ROWID 11.6.1 使用 DBMS_ROWID.ROWID _BLOCK_NUMBER 11.6.2 使用 DBMS_ROWID.ROWID _CREATE 11.6.3 使用 DBMS_ROWID.ROWID _OBJECT 11.6.4 使用 DBMS_ROWID.ROWID _RELATIVE_FNO 11.6.5 使用 DBMS_ROWID.ROWID_ROW _NUMBER 11.6.6 使用 DBMS_ROWID.ROWID_TO _ABSOLUTE_FNO 11.6.7 使用 DBMS_ROWID.ROWID _TO_EXTENDED 11.6.8 使用 DBMS_ROWID.ROWID_TO _RESTRICTED 11.6.9 使用 DBMS_ROWID.ROWID _TYPE 11.6.10 使用 DBMS_ROWID.ROWID _VERIFY 11.6.11 使用 DBMS_ROWID.ROWID _INFO 11.7 回顾 第12章 Oracle 安装和升级 12.1 Oracle 软件 12.2 Oracle 数据库 12.3 配置 Oracle 文件系统 12.3.1 最佳灵活结构 12.3.2 怎样配置一个符合 OFA 的 Oracle 文件系统 12.3.3 怎样命名数据库文件 12.3.4 为什么应对参数文件使用链接 12.4 安装 Oracle 服务器软件 12.5 安装前阶段 12.5.1 规则1:确保软件产品版本的兼 容性 12.5.2 规则2:为 Oracle 配置操作系统 12.5.3 规则3:分配足够的磁盘空间 12.5.4 规则4:配置安装环境 12.6 安装阶段 12.6.1 步骤1:配置安装环境 12.6.2 步骤2:启动 Oracle 安装 12.6.3 步骤3:选择和安装软件产品 12.7 安装后阶段:坚持五点 12.7.1 步骤1:检查错误 12.7.2 步骤2:运行 root.sh 脚本 12.7.3 步骤3:验证文件的许可权 12.7.4 步骤4:测试 Oracle 安装 12.7.5 步骤5:配置环境 12.7.6 其他安装后的任务 12.8 快速进行 Oracle 安装的五个技巧 12.8.1 从硬盘的准备区域进行安装 12.8.2 不安装文档 12.8.3 不安装产品的文档 12.8.4 不选择重新连接可执行文件 12.8.5 设置环境变量 DEF_INSTALL = TRUE 和 NO_README = TRUE 12.9 在 Windows NT 上安装 Oracle 12.9.1 安装前阶段 12.9.2 安装阶段 12.9.3 安装后阶段 12.10 修补、升级和移植 Oracle 12.10.1 始终将 Oracle 软件安装到新 的 ORACLE_HOME 目录 12.10.2 数据库升级前进行数据库冷备份 12.10.3 移植 Oracle 12.10.4 使用 Migration Utility 移植到 Oracle 8.0.x 12.10.5 用导出和导入移植 12.11 安装 UNIX 上的 Oracle 8 12.11.1 安装前阶段 12.11.2 安装阶段 12.11.3 安装后阶段 12.12 回顾 附录 A Oracle 服务器介绍 附录 B 动态性能(V$)视图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值