第1篇 Oracle概述
第1章 Oracle数据库基础 2
1.1 理解关系数据库系统(RDBMS) 3
1.1.1 什么是数据库 3
1.1.2 关系数据模型 3
1.1.3 数据库种类及厂家 6
1.2 关系数据库规范化理论 6
1.2.1 关系与关系模式 6
1.2.2 函数依赖 7
1.2.3 范式理论 8
1.3 Oracle 11g数据库产品 11
1.3.1 数据管理部分的新功能 11
1.3.2 PL/SQL部分的新功能 12
1.3.3 其他的新功能 14
1.4 Oracle数据类型 14
1.5 小结 15
1.6 习题 15
第2章 Oracle 系统的安装 17
2.1 环境和系统配置 18
2.2 Windows环境下的安装过程 18
2.2.1 选择安装方法 18
2.2.2 选择安装类型 19
2.2.3 指定主目录详细信息 19
2.2.4 产品特定的先决条件检查 20
2.2.5 选择配置选项 20
2.2.6 概要 21
2.2.7 安装 22
2.2.8 安装结束 22
2.3 创建数据库 23
2.3.1 启动Oracle 11g的数据库配置助理 23
2.3.2 执行操作选择 23
2.3.3 选择模板 24
2.3.4 数据库标识界面 24
2.3.5 数据库管理选项界面 25
2.3.6 数据库身份证明界面 25
2.3.7 存储选项界面 26
2.3.8 数据库文件所在位置界面 26
2.3.9 恢复配置界面 27
2.3.10 示例方案选项界面 27
2.3.11 数据库初始参数 28
2.3.12 安全设置界面 30
2.3.13 自动维护任务界面 30
2.3.14 数据库存储界面 31
2.3.15 创建选项界面 33
2.3.16 确认界面 33
2.3.17 创建完成提示界面 34
2.4 安装后的工作 34
2.4.1 Oracle的服务 34
2.4.2 创建监听服务 36
2.4.3 测试本地Oracle数据库服务 38
2.4.4 通过网络服务名连接Oracle实例 39
2.5 HR演示模式 40
2.5.1 用户和模式 40
2.5.2 HR模式 40
2.6 小结 41
2.7 习题 41
第3章 SQL*Plus和SQL Developer 43
3.1 SQL*Plus 44
3.2 常见的SQL*Plus命令 44
3.2.1 登录SQL*Plus 44
3.2.2 退出SQL*Plus 44
3.2.3 SQL*Plus帮助 45
3.2.4 显示表、视图结构命令DESC 45
3.2.5 列出缓冲区命令语句LIST 45
3.2.6 保存缓冲区命令到文件 46
3.2.7 读取命令文件到缓冲区 46
3.2.8 将屏幕信息转储到文件中 47
3.2.9 数据的格式化输出 47
3.3 SQL Developer 48
3.3.1 SQL Developer概述 48
3.3.2 SQL Developer用户界面 48
3.3.3 创建数据库连接 50
3.3.4 使用CREATE TABLE对话框
添加新表 51
3.3.5 更改表定义 52
3.3.6 给表添加约束 53
3.3.7 向表中添加数据 54
3.3.8 访问数据 56
3.3.9 使用报表 56
3.3.10 添加用户定义的报表 57
3.4 习题 57
第2篇 Oracle SQL和PL/SQL
第4章 简单的SELECT语句 60
4.1 SELECT语句基础 61
4.1.1 SELECT语法 61
4.1.2 列的别名 62
4.1.3 字符串的连接 62
4.2 SQL中的单行函数 63
4.2.1 单行字符函数 63
4.2.2 单行数字函数 67
4.2.3 日期函数 70
4.2.4 转换函数 71
4.2.5 空值处理函数 72
4.3 SQL中的组函数 73
4.3.1 多记录组函数 73
4.3.2 带GROUP BY的计算 74
4.3.3 用HAVING来限制分组计算 75
4.4 限制与排序 75
4.4.1 限制条件 76
4.4.2 用ORDER BY子句对结果排序 77
4.5 习题 77
第5章 表和完整性约束 79
5.1 创建表 80
5.1.1 创建表结构的语法 80
5.1.2 创建表结构例子 80
5.1.3 为表和列加注释 81
5.2 修改表 83
5.2.1 修改表结构命令 83
5.2.2 增加新列和修改列 83
5.2.3 删除表中的某个列 84
5.3 删除表 84
5.4 主键 84
5.4.1 创建主键 85
5.4.2 改变主键 86
5.4.3 删除主键 86
5.5 外键 87
5.5.1 建立外键 87
5.5.2 修改外键 90
5.5.3 删除外键 90
5.6 Oracle的约束定义 90
5.6.1 CHECK约束 91
5.6.2 NOT NULL约束 93
5.6.3 唯一性约束 93
5.6.4 约束检验 95
5.7 习题 95
第6章 使用SQL进行数据操作 97
6.1 INSERT操作 98
6.1.1 INSERT语句语法 98
6.1.2 插入带空值的数据行 98
6.1.3 日期和文字插入 99
6.1.4 子查询插入 99
6.1.5 用子查询取得值的插入 100
6.2 UPDATE操作 100
6.2.1 UPDATE命令语法 100
6.2.2 用日期更新操作 100
6.2.3 用文字更新操作 101
6.2.4 用查询更新操作 101
6.3 DETELE操作 102
6.3.1 有条件的DELETE操作 102
6.3.2 条件中带子查询的删除 102
6.3.3 删除表中的重复行 102
6.4 用MERGE实现更新和插入 104
6.5 清空表TRNUCATE 106
6.6 DML的提交和撤销 107
6.7.1 自动提交的设置 107
6.7.2 保存点和撤销 109
6.7 习题 111
第7章 索引、视图和序列 113
7.1 索引 114
7.1.1 创建索引的语法 114
7.1.2 创建索引 114
7.1.3 修改索引 115
7.1.4 删除索引 116
7.1.5 监视索引是否被使用 116
7.1.6 创建表时创建索引 116
7.2 索引有关的数据字典 117
7.2.1 索引数据字典 117
7.2.2 数据字典查询例子 118
7.3 视图 119
7.3.1 创建视图语法 120
7.3.2 创建一个新视图 120
7.3.3 删除一个视图 121
7.3.4 视图有关的数据字典 121
7.4 序列 122
7.4.1 建立序列 122
7.4.2 修改序列 123
7.4.3 使用序列 124
7.4.4 删除序列 125
7.5 习题 125
第8章 PL/SQL基础 128
8.1 概述 129
8.1.1 PL/SQL的优点 129
8.1.2 PL/SQL程序块的基本结构 129
8.1.3 创建、运行和测试一个PL/SQL
匿名块 130
8.2 PL/SQL基本语法 131
8.2.1 常量和变量的命名 131
8.2.2 变量赋值 132
8.2.3 字段类型%TYPE 134
8.2.4 行类型%ROWTYPE 135
8.2.5 注释 137
8.2.6 数据库赋值 137
8.3 PL/SQL处理流程 138
8.3.1 条件语句 138
8.3.2 循环语句 141
8.4 游标的使用 144
8.4.1 显式游标 144
8.4.2 隐式游标 146
8.4.3 游标循环 147
8.5 异常 150
8.5.1 异常处理概念 150
8.5.2 预定义的异常 150
8.5.3 非预定义异常 151
8.5.4 自定义的异常处理 152
8.6 习题 155
第9章 存储过程、函数、触发器和包 157
9.1 存储过程 158
9.1.1 创建过程 158
9.1.2 使用过程 159
9.1.3 删除过程 160
9.2 函数 160
9.2.1 创建函数 160
9.2.2 使用函数 162
9.2.3 删除函数 163
9.3 触发器 164
9.3.1 触发器类型 164
9.3.2 DML触发器 164
9.3.3 替代触发器 167
9.3.4 系统触发器 169
9.3.5 触发器管理 170
9.4 创建包和使用包 171
9.4.1 包声明的定义 171
9.4.2 包主体的定义 172
9.4.3 使用包 173
9.4.4 删除包 173
9.5 过程、函数、触发器、包有关的
数据字典 173
9.6 习题 175
第3篇 Oracle管理
第10章 Oracle数据库系统结构 179
10.1 Oracle实例 180
10.1.1 系统全局区(SGA) 180
10.1.2 程序全局区(PGA) 180
10.1.3 Oracle后台进程 181
10.2 Oracle数据库文件 183
10.2.1 数据文件 183
10.2.2 控制文件 183
10.2.3 日志文件 184
10.2.4 初始化参数文件 184
10.2.5 警告文件 185
10.2.6 跟踪文件 186
10.2.7 口令文件 187
10.3 Oracle数据库逻辑组成 188
10.3.1 表空间与数据文件 188
10.3.2 段(SEGMENT) 190
10.3.3 区间(EXTENT) 190
10.3.4 数据块(DATA BLOCK) 191
10.4 实例管理 191
10.4.1 启动实例 191
10.4.2 关闭数据库 193
10.4.3 监控和管理实例 194
10.5 Oracle的数据字典 197
10.5.1 数据字典的分类 197
10.5.2 USER_视图字典使用示例 199
10.5.3 其他视图字典使用示例 203
10.6 习题 204
第11章 管理表空间与数据文件 208
11.1 表空间与数据文件概念 209
11.1.1 表空间概念 209
11.1.2 数据文件概念 210
11.2 创建表空间 210
11.2.1 表空间创建语法 211
11.2.2 创建表空间 212
11.3 表空间的管理 214
11.3.1 管理SYSTEM表空间 214
11.3.2 管理SYSAUX表空间 216
11.3.3 使表空间脱机/联机 216
11.3.4 设置只读表空间 217
11.4 删除表空间 218
11.5 数据文件的常规管理 219
11.5.1 数据文件的数目 219
11.5.2 给表空间增加新的数据文件 219
11.5.3 控制数据文件的自动扩展 220
11.5.4 调整数据文件大小 220
11.5.5 使数据文件联机或脱机 221
11.5.6 创建大数据文件的表空间 222
11.5.7 升级字典表空间为本地表空间 223
11.6 表空间与数据文件数据字典 223
11.7 习题 225
第12章 管理控制文件和日志文件 227
12.1 控制文件概念 228
12.2 控制文件的管理操作 228
12.2.1 在初始化参数文件中指定
控制文件 228
12.2.2 将控制文件存储在不同磁盘中 229
12.2.3 给控制文件所在磁盘留出空间 231
12.3 控制文件相关的数据字典 231
12.4 日志文件概念 234
12.4.1 联机重做日志文件 234
12.4.2 日志切换概念 235
12.5 日志文件管理 237
12.5.1 建立多个日志文件 237
12.5.2 重新命名日志成员 238
12.5.3 删除重做日志文件 240
12.6 归档日志管理 242
12.6.1 归档日志概念 242
12.6.2 日志工作模式 242
12.6.3 切换日志工作模式 243
12.7 习题 245
第13章 管理用户与权限 247
13.1 用户管理 248
13.1.1 创建用户 248
13.1.2 修改用户 250
13.1.3 删除用户 252
13.2 权限管理 252
13.2.1 GRANT 命令与REVOKE 命令 253
13.2.2 系统权限的授予与撤销 254
13.2.3 对象权限的授予与撤销 256
13.3 角色管理 258
13.3.1 预定义角色 259
13.3.2 创建角色 259
13.3.3 给角色授权 260
13.3.4 将角色授予用户 260
13.3.5 删除角色 261
13.4 有关的数据字典 261
13.4.1 查询角色信息 261
13.4.2 查询用户拥有的对象权限 262
13.5 习题 262
第14章 Oracle Database 11g闪回技术 266
14.1 闪回表 267
14.2 闪回删除 269
14.2.1 回收站机制 269
14.2.2 使用闪回删除 271
14.3 闪回版本查询 272
14.4 闪回事务查询 273
14.5 闪回数据库 275
14.5.1 闪回数据库 276
14.5.2 使用闪回数据库 277
14.6 闪回数据归档 279
14.6.1 创建与管理闪回数据归档区 280
14.6.2 为表指定闪回数据归档区 282
14.6.3 使用闪回数据归档 283
14.7 习题 283
第4篇 系统优化调整与工具
第15章 Oracle系统调优与SQL优化 286
15.1 常用调优工具 287
15.1.1 动态性能视图V$ 287
15.1.2 TKPROF工具 288
15.1.3 Explain Plan 289
15.1.4 AUTOTRACE实用程序 289
15.2 性能有关的动态性能视图 291
15.2.1 系统相关的性能视图 291
15.2.2 当前会话状态视图 293
15.2.3 闩、锁相关的视图 296
15.3 调整内存分配 296
15.3.1 调整重做日志缓冲区 296
15.3.2 调整共享池 298
15.4 常用的SQL优化规则 300
15.4.1 SELECT语句中避免使用* 300
15.4.2 使用完全限定的列引用 301
15.4.3 使用WHERE子句替代
HAVING子句 302
15.4.4 使用TRUNCATE替代DELETE 303
15.4.5 使用表连接替代子查询 305
15.4.6 使用EXISTS替代IN 305
15.4.7 使用“<=”替代“<” 307
15.5 表的连接方法 307
15.5.1 嵌套循环连接 307
15.5.2 排序合并连接 309
15.5.3 哈希连接 312
15.6 有效使用索引 313
15.6.1 创建索引的基本原则 314
15.6.2 索引列上所使用的操作符 314
15.6.3 避免对唯一索引列使用NULL值 315
15.6.4 选择复合索引主列 316
15.6.5 监视索引是否被使用 317
15.7 习题 318
第16章 导出与导入 322
16.1 导出和导入概述 323
16.1.1 导出和导入的作用 323
16.1.2 导出方式 323
16.1.3 导入方式 324
16.1.4 导出和导入的参数传递 324
16.2 导出EXP实用程序 326
16.2.1 EXP命令语法 326
16.2.2 一般的 EXP备份 330
16.2.3 使用DIRECT直接路径导出 332
16.2.4 指定查询结果集的导出 333
16.3 导入IMP实用程序 334
16.3.1 IMP语法及参数 334
16.3.2 一般的IMP数据恢复 338
16.3.3 导入过程性能要点 339
16.4 习题 340
第17章 Oracle 11g企业管理器 342
17.1 Oracle 11g企业管理器介绍 343
17.2 Oracle 11g EM安装配置 344
17.2.1 安装选择说明 344
17.2.2 自定义安装 345
17.2.3 设置与安装数据库控制 346
17.2.4 启动Oracle 11g EM 346
17.2.5 登录到Oracle 11g EM 347
17.3 用企业管理器管理Oracle系统 349
17.3.1 实例管理 350
17.3.2 方案管理 351
17.3.3 用户管理 351
17.4 用企业管理器维护Oracle系统 353
17.4.1 表空间和数据文件管理 353
17.4.2 执行导出操作 355
17.4.3 浏览预警文件信息 360
17.5 用企业管理器进行性能调整 361
17.5.1 找出消耗最高的会话 362
17.5.2 找出顶级SQL语句 363
17.5.3 监视Oracle实例是否存在锁 363
17.6 习题 363