- 博客(0)
- 资源 (21)
- 收藏
- 关注
IDM_6.3x_Crack_v16.3(IDM) 破解版
Internet Download Manager,简称 IDM,是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍,安排下载时程,带有续传功能,可以恢复因为断线、网络问题、计算机当机甚至无预警的停电导致下传到一半的资料。
2019-02-28
Oracle专家高级编程--详细书签版
带有详细书签的电子书籍目录
Oracle专家高级编程
基本信息
原书名: expert one-on-one Oracle
原出版社: Wrox Press
作者: (美)Thomas Kyte
译者: 袁勤勇 张玉魁等
丛书名: 清华版WROX公司.NET和Oracle编程经典系列
出版社:清华大学出版社
ISBN:7302053340
上架时间:2002-5-20
出版日期:2002 年4月
页码:1276
版次:1-1
所属分类: 计算机 > 数据库 > Oracle
内容简介
本书是一本关于使用Oracle成功开发应用程序的工具手册,由Oracle公司的资深开发人员Thomas Kyte集自己多年开发经验编写。学习本书能帮助读者彻底理解Oracle的工作原理,并将Oracle作为一个强大的计算环境来使用,书中内容可以迅速解决大多数信息管理问题。书中选择了最重要的特性和技术,并结合实际范例进行讲解,不仅阐述了这些特性,而且还讨论了如何使用它们开发软件,并指出了潜在的缺陷。
本书内容包括Oracle数据库的基本概念;Oracle数据库结构和实用程序;Oracle数据库性能优化;高级SQL特性;用interMedia、基于C的外部过程、Java存储过程和对象关系特性实现Oracle数据库功能的扩展;Oracle数据库安全管理的实现方式等。
本书适用于使用Oracle进行数据库开发的人员,包括有经验的Oracle开发人员、DBA、Oracle项目管理人员等。
作译者
本书提供作译者介绍
我是Tom Kyte。从Oracle 7.0.9版,即1993年起,我一直为Oracle公司工作。实际上从Oracle 5.1.5c版(在360KB软盘的单用户DOS版,价值99$)起,我一直使用Oracle。在进入Oracle公司之前,我已经做了6年的系统集成员,主要工作是构建大型的异构数据库和应用程序,大量的客户来自军事和政府部门。现在,我把大量的时间花费在Oracle数据库上,更明确地说,就是帮助使用Oracle数据库的人们。我直接与客户打交道,描述并构建他们的系统,更频繁的是帮助他们重建或优化数据库(“优化”经常是“重建”的同义词).此外,我是Oracle杂志的“AskTom”栏目背后的Tom,回答用户有关Oracle数据库和工具的问题.通常在一天内,我在http//asktom.0Oacle.0com上回答30到40个问题.每两个月,我在杂志上发表“最佳问题”.当然,所有问题都存储在Oacle数据库中,在Oracle站点上都能得到.我把时间主要都花费在帮助用户成功地使用Oracle数据库上.在我的空闲时间里,我在Oracle公司内部构建应用程序,开发软件.
本书是我每天工作的结晶.本书的内容涵盖了我所见的人们每天都可能遇到的主题和问题,并从“当我使用它时,我将以下面的方式进行”的角度讨论这些问题.本书是多年来在无数不同的情况下使用Oracle产品的经验的结晶.
Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 7.0.9版本开始就一直任职于Oracle公司,不过,其实他从5.1.5c版本就开始使用Oracle了。 在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府部门的客户构建大规模、异构数据库。 Thomas Kyte就是主持Oracle Magazine Ask Tom专栏和Oracle公司同名在线论坛的那个Tom,他通过这一方式热心地回答困扰着Oracle开发人员和DBA的各种问题。
目录
封面 -31
封底 -30
书名 -29
版权 -28
出版者的话 -27
前言 -26
序言 -19
目录 -13
第1章 开发成功的Oracle应用程序 1
1.1 我的方法 2
1.2 黑盒子方法 3
1.3 如何开发(如何妨碍开发)数据库应用程序 5
1.3.1 理解Oracle的体系结构 6
1.3.2 理解并行控制 10
1.3.3 与数据库无关 17
1.3.4 如何使它运行更快 27
1.3.5 数据库管理员与开发人员之间的关系 28
1.4 小结 29
第2章 体系结构 30
2.1 服务器 30
2.2 文件 36
2.2.1 参数文件 37
2.2.2 数据文件 39
2.2.3 临时文件 41
2.2.4 控制文件 42
2.2.5 重做日志文件 42
2.2.6 文件总结 46
2.3 内存结构 46
2.3.1 PGA和UGA 46
2.3.2 SGA 51
2.3.3 内存结构总结 60
2.4 进程 61
2.4.1 服务器进程 61
2.4.2 后台进程 65
2.4.3 从属进程 72
2.5 小结 73
第3章 封锁和并行性 74
3.1 锁定 74
3.2 封锁问题 76
3.2.1 丢失更新 76
3.2.2 阻塞 79
3.2.3 死锁 80
3.2.4 锁定扩大 84
3.3 锁定类型 84
3.3.1 DML锁定 85
3.3.2 DDL锁定 91
3.3.3 锁存器和内部锁定(入队) 94
3.3.4 手动封锁和用户自定义锁定 95
3.4 什么是并行控制 96
3.4.1 事务隔离等级 96
3.4.2 READ UNCOMMITTED隔离等级 97
3.4.3 READ COMMITTED隔离等级 99
3.4.4 REPEATABLE READ隔离等级 100
3.4.5 SERIALIZABLE隔离等级 103
3.4.6 只读事务 104
3.5 小结 105
第4章 事务 106
4.1 事务控制语句 106
4.2 完整性约束和事务 111
4.3 处理事务的不良习惯 114
4.4 分布式事务 119
4.5 重做和回滚 121
4.6 小结 124
第5章 重做和回滚 125
5.1 重做 125
5.1.1 COMMIT 126
5.1.2 回滚 131
5.1.3 产生多少重做 132
5.1.4 能够不让重做日志产生吗 142
5.1.5 不能分配一个新日志 145
5.1.6 块清除 146
5.1.7 日志竞争 149
5.1.8 临时表和重做/回滚 151
5.1.9 分析重做 153
5.2 回滚 154
5.2.1 什么产生最多/最少的撤消 154
5.2.2 SET TRANSACTION 154
5.2.3 “ORA-01555:Snapshot too old” 155
5.3 小结 164
第6章 数据库表 166
6.1 表的类型 166
6.2 术语 167
6.2.1 高水标记 167
6.2.2 自由列表 168
6.2.3 PCTFREE 和PCTUSED 170
6.2.4 INITIAL, NEXT和PCTINCREASE 176
6.2.5 MINEXTENTS 和 MAXEXTENTS 177
6.2.6 LOGGING 和 NOLOGGING 177
6.2.7 INITRANS 和MAXTRANS 177
6.3 堆组织表 177
6.4 索引组织表 181
6.5 索引组织表总结 194
6.6 索引聚簇表 194
6.7 索引聚簇表总结 201
6.8 散列聚簇表 201
6.9 散列聚簇总结 210
6.10 嵌套表 211
6.10.1 嵌套表语法 211
6.10.2 嵌套表存储 219
6.11 嵌套表总结 222
6.12 临时表 222
6.13 对象表 230
6.14 对象表总结 238
6.15 小结 238
第7章 索引 239
7.1 Oracle索引概述 239
7.2 B*Tree 索引 240
7.2.1 反向码索引 244
7.2.2 降序索引 245
7.2.3 应该在何时使用 B*Tree 索引 247
7.3 B*Trees 总结 254
7.4 位图索引 254
7.5 位图索引总结 257
7.6 基于函数的索引 257
7.6.1 重要的实现细节 257
7.6.2 基于函数索引的例子 258
7.6.3 警告 266
7.7 基于函数的索引总结 267
7.8 应用程序域索引 267
7.9 应用程序域索引总结 268
7.10 关于索引常见问题解答 268
7.10.1 索引能在视图中使用吗 269
7.10.2 索引和空 269
7.10.3 外码上的索引 272
7.10.4 为什么索引没有使用 273
7.10.5 索引使用了吗 278
7.10.6 神话:在索引中空间从来不会重用 278
7.10.7 神话:大部分有差别的元素应该在前边 281
7.11 小结 285
第8章 导入和导出 286
8.1 例子 286
8.2 为什么可以使用IMP 和EXP 287
8.2.1 检测冲突 288
8.2.2 抽取 DDL 288
8.2.3 克隆模式 288
8.2.4 传输表空间 288
8.2.5 重构实例 289
8.2.6 在平台之间复制数据 289
8.3 IMP/EXP的工作原理 289
8.3.1 选项 289
8.3.2 大量导出 293
8.3.3 数据子集 297
8.3.4 数据传输 297
8.3.5 获得DDL 303
8.3.6 备份和恢复 309
8.3.7 IMP/EXP不(再)是一个重新组织工具 310
8.3.8 导入到不同结构 310
8.3.9 直接路径导出 315
8.4 警告和错误 315
8.4.1 克隆 315
8.4.2 跨版本使用IMP/EXP 323
8.4.3 索引哪里去了 324
8.4.4 命名与默认名的约束 326
8.4.5 NLS问题 330
8.4.6 表跨越多个表空间 332
8.5 小结 336
第9章 数据装载 337
9.1 SQL*LOADER简介 337
9.2 如何装载 343
9.2.1 装载定界数据 343
9.2.2 装载固定格式的数据 346
9.2.3 装载日期 348
9.2.4 利用序列和其他函数装载数据 349
9.2.5 更新现有的行和插入新的行 355
9.2.6 装载报表类型的输入数据 357
9.2.7 装载一个文件到一个长RAW或长字段中 360
9.2.8 装载嵌入换行符的数据 361
9.2.9 卸载数据 371
9.2.10 装载LOB 382
9.2.11 用SQLLDR装载VARRAYS/嵌套表 392
9.2.12 在存储过程中调用SQLLDR 395
9.3 警告 399
9.3.1 不能选择欲使用的回滚段 399
9.3.2 TRUNCATE的不同作用 400
9.3.3 SQLLDR 默认为 CHAR(255) 400
9.3.4 命令行取代控制文件 400
9.4 小结 400
第10章 优化策略与工具 401
10.1 标识问题 401
10.2 我的方法 402
10.3 绑定变量与分析 407
10.4 绑定变量与分析总结 423
10.5 SQL_TRACE、TIMED_STATISTICS与TKPROF 423
10.5.1 设置跟踪 424
10.5.2 使用并解释TKPROF输出 426
10.5.3 使用并说明原始跟踪文件 435
10.6 SQL_TRACE、TIMED_STATISTICS与TKPROF总结 446
10.7 DBMS_PROFILER 447
10.8 说明 447
10.9 StatsPack 449
10.9.1 安装StatsPack 449
10.9.2 StatsPack 总结 467
10.10 V$ 表 467
10.10.1 V$EVENT_NAME 467
10.10.2 V$FILESTAT和V$TEMPSTAT 468
10.10.3 V$LOCK 468
10.10.4 V$MYSTAT 468
10.10.5 V$OPEN_CURSOR 469
10.10.6 V$PARAMETER 471
10.10.7 V$SESSION 471
10.10.8 V$SESSION_EVENT 474
10.10.9 V$SESSION_LONGOPS 474
10.10.10 V$SESSION_WAIT 474
10.10.11 V$SESSTAT 474
10.10.12 V$SESS_IO 474
10.10.13 V$SQL, V$SQLAREA 474
10.10.14 V$STATNAME 475
10.10.15 V$SYSSTAT 475
10.10.16 V$SYSTEM_EVENT 475
10.11 小结 475
第11章 优化器方案稳定性 476
11.1 概述 476
11.2 优化器方案稳定性的使用 479
11.2.1 实现优化的方法 480
11.2.2 开发工具 484
11.2.3 查看所使用的索引 486
11.2.4 查看应用程序执行的是什么SQL语句 486
11.3 优化器方案稳定性是如何工作的 486
11.4 创建存储大纲 489
11.4.1 存储大纲需要具备的权限 489
11.4.2 使用DDL 489
11.4.3 使用ALTER SESSION 490
11.5 OUTLN用户 491
11.6 在数据库之间移动大纲 492
11.7 得到正确的大纲 492
11.8 管理大纲 495
11.8.1 通过DDL管理大纲 495
11.8.2 OUTLN_PKG程序包 498
11.9 警告 501
11.9.1 大纲表的命名和使用场合 501
11.9.2 ALTER SESSION的问题 503
11.9.3 Drop User不删除大纲 503
11.9.4 “CURSOR_SHARING = FORCE”与大纲 503
11.9.5 大纲使用简单的文本匹配 504
11.9.6 默认情况下大纲在SYSTEM 表空间中 505
11.9.7 OR扩展 505
11.9.8 性能 506
11.9.9 大纲的名称空间是全局变量 510
11.10 可能遇到的错误 511
11.11 小结 512
第12章 分析函数 513
12.1 范例 513
12.2 分析函数是如何工作的 517
12.2.1 语法 517
12.2.2 分析函数 531
12.3 范例 533
12.3.1 前N个记录的查询 534
12.3.2 Pivot(行列转换)查询 544
12.3.3 访问当前行周围的行 552
12.4 警告 556
12.4.1 PL/SQL与分析函数 556
12.4.2 Where子句中的分析函数 558
12.4.3 NULL与排序 559
12.4.4 性能 561
12.5 小结 561
第13章 物化视图 562
13.1 简短历史 562
13.2 运行范例需要什么 563
13.3 例子 563
13.4 物化视图的使用 570
13.5 物化视图如何工作 571
13.5.1 设置 571
13.5.2 内部机制 572
13.6 确保视图可以使用 574
13.6.1 约束 574
13.6.2 维数 579
13.7 DBMS_OLAP 588
13.7.1 估计大小 589
13.7.2 维的验证 590
13.7.3 推荐物化视图 592
13.8 警告 594
13.8.1 物化视图不是为OLTP系统设计的 594
13.8.2 查询重写的完整性 595
13.9 小结 595
第14章 分区 596
14.1 分区的使用 596
14.1.1 提高可用性 596
14.1.2 减轻管理负担 598
14.1.3 增强DML和查询的性能 599
14.2 分区如何工作 601
14.2.1 表分区模式 601
14.2.2 分区索引 606
14.3 小结 625
第15章 自治事务 626
15.1 范例 626
15.2 为什么使用自治事务 628
15.2.1 不能回滚的审计 628
15.2.2 避免出现变异表的方法 631
15.2.3 在触发器中执行DDL语句 633
15.2.4 写入数据库 638
15.2.5 开发更多的模块化代码 647
15.3 它自治事务如何工作 648
15.3.1 事务控制 648
15.3.2 作用范围 650
15.3.3 结束自治事务 656
15.3.4 保存点 657
15.4 警告 659
15.4.1 非分布式事务 659
15.4.2 只有PL/SQL 659
15.4.3 整个事务回滚 659
15.4.4 事务级临时表 662
15.4.5 变异表 663
15.5 可能遇到的错误 665
15.6 小结 666
第16章 动态SQL 668
16.1 动态SQL与静态SQL 668
16.2 为什么使用动态SQL 670
16.3 如何使用动态SQL 672
16.3.1 DBMS_SQL 672
16.3.2 本地动态SQL 679
16.3.3 DBMS_SQL与本地动态SQL 683
16.4 警告 707
16.4.1 依赖链中断 708
16.4.2 代码更脆弱 709
16.4.3 更难以优化 709
16.5 小结 709
第17章 interMedia 710
17.1 简要历史 710
17.2 interMedia Text的用途 711
17.2.1 搜索文本 711
17.2.2 管理多种文档 714
17.2.3 从多种数据源中对文本建立索引 714
17.2.4 它毕竟是一个Oracle数据库 717
17.2.5 生成主题 718
17.2.6 搜索XML应用程序 720
17.3 interMedia Text如何工作 720
17.3.1 interMedia Text索引 724
17.3.2 关于ABOUT操作符 727
17.3.3 节搜索 728
17.4 警告 734
17.4.1 inter Media Text不是文档管理解决方案 734
17.4.2 索引同步 734
17.4.3 在数据库外部索引信息 735
17.4.4 文档服务 736
17.4.5 目录索引 736
17.5 可能遇到的错误 738
17.5.1 过期索引 738
17.5.2 外部过程错误 739
17.6 展望 739
17.7 小结 740
第18章 基于C的外部过程 741
18.1 何时使用外部过程 741
18.2 如何实现外部过程 742
18.3 配置服务器 744
18.3.1 验证外部过程程序 746
18.3.2 验证数据库环境 747
18.3.3 验证监听器 748
18.4 第一个测试 748
18.4.1 编译extproc.c代码 749
18.4.2 建立SCOTT/TIGER账户 750
18.4.3 创建demolib库 750
18.4.4 安装和运行 751
18.5 第一个外部过程 752
18.5.1 封装函数 753
18.5.2 C程序代码 763
18.5.3 建立外部过程 788
18.5.4 安装和运行 791
18.6 LOB到文件的外部过程 (LOB_IO) 793
18.6.1 LOB_IO调用规范 793
18.6.2 LOB_IO的Pro*C程序代码 795
18.6.3 建立外部过程 799
18.6.4 LOB_IO的安装和使用 802
18.7 错误信息 807
18.8 小结 814
第19章 Java存储过程 815
19.1 为什么使用Java存储过程 815
19.2 Java存储过程如何工作 816
19.2.1 传递数据 820
19.2.2 范例 830
19.3 错误信息 837
19.3.1 ORA-29549 Java会话状态被清除 837
19.3.2 权限错误 838
19.3.3 ORA-29531 类Y中没有方法X 838
19.4 小结 839
第20章 使用对象关系特性 840
20.1 使用对象关系特性的原因 840
20.2 对象关系特性如何工作 841
20.3 在系统中增加数据类型 841
20.4 增加数据类型总结 856
20.5 利用类型扩展PL/SQL 856
20.5.1 创建新的PL/SQL数据类型 856
20.5.2 集合的独特应用 868
20.6 利用数据类型扩展PL/SQL总结 873
20.7 对象关系视图 873
20.7.1 数据类型 874
20.7.2 O-R视图 874
20.8 小结 887
第21章 精细存取控制 889
21.1 范例 889
21.2 为什么使用这一特性 890
21.2.1 易于维护 890
21.2.2 在服务器上执行 891
21.2.3 避免共享用户账户 892
21.2.4 支持共享用户账户 892
21.2.5 在ASP中放置应用程序 892
21.3 该特性是如何工作的 893
21.3.1 范例1:实施安全策略 894
21.3.2 范例2:使用应用程序上下文 899
21.4 警告 918
21.4.1 参照完整性 918
21.4.2 游标隐藏 923
21.4.3 导出/导入 929
21.4.4 调试 933
21.5 错误信息 934
21.6 小结 938
第22章 多层身份验证 939
22.1 为什么使用多层身份验证 939
22.2 多层身份验证机制 941
22.3 审计代理账户 951
22.4 警告 953
22.5 小结 954
第23章 调用者权限和定义者权限 955
23.1 范例 955
23.2 何时使用调用者权限 958
23.2.1 开发通用实用程序 958
23.2.2 数据字典应用程序 963
23.2.3 通用对象类型 965
23.2.4 实现您自己的访问控制 966
23.3 何时使用定义者权限 969
23.3.1 性能和可伸缩性 969
23.3.2 安全性 969
23.4 调用者权限和定义者权限如何工作 970
23.4.1 定义者权限 970
23.4.2 调用者权限 975
23.5 警告 985
23.5.1 调用者权限和共享池利用率 985
23.5.2 性能 989
23.5.3 程序必须在错误处理上更健壮 991
23.5.4 使用SELECT *的副作用 993
23.5.5 注意“隐藏”列 994
23.5.6 Java和调用者权限 996
23.6 错误信息 1002
23.7 小结 1002
附录A 必须提供的程序包 1004
A.1 DBMS_ALERT 和DBMS_PIPE 1007
A.2 DBMS_APPLICATION_INFO 1017
A.3 DBMS_JAVA 1025
A.4 DBMS_JOB 1033
A.5 DBMS_LOB 1047
A.6 DBMS_LOCK 1066
A.7 DBMS_LOGMNR 1071
A.8 DBMS_OBFUSCATION_TOOLKIT 1097
A.9 DBMS_OUTPUT 1119
A.10 DBMS_PROFILER 1136
A.11 DBMS_UTILITY 1148
A.12 UTL_FILE 1177
A.13 UTL_HTTP 1185
A.14 UTL_RAW 1206
A.15 UTL_SMTP和发送邮件 1208
A.16 UTL_TCP 1221
附录B 技术支持、勘误表和p2p.wrox.com网站 1236
B.1 p2p.wrox.com网站的在线论坛 1236
B.2 在www.wrox.com网站在线检查勘误表 1237
B.3 如何确切地告诉我们您的想法 1239
前言
本书中材料的灵感来自于我开发Oracle软件的经验,以及与Oracle开发人员一起工作,帮助他们构建可靠的、健壮的、基于Oracle数据库应用程序的经验。本书的内容反映了我每天的工作内容和人们每天所遇到的问题。
本书包括了我认为最相关的内容,也就是Oracle数据库及其体系结构。我可以写一本类似主题的书,来解释如何使用特定语言和体系结构来开发应用程序。例如,一个使用Java Server Pages与Enterprise Java Beans通信的应用程序,该应用程序使用JDBC与Oracle进行通信。但是,为了成功地构建此类应用程序,您真正需要的是理解本书的主题。本书介绍我认为对使用Oracle进行成功开发所应该普遍了解的内容,而不管您是使用ODBC的Visual Basic程序员,还是使用EJB和JDBC的Java程序员,或者是使用DBI Perl的Perl程序员。本书不支持特定的应用程序体系结构;它不会比较3层结构和客户—服务器结构。相反,本书介绍数据库可以完成的工作,以及您必须了解的数据库工作方式。由于数据库是应用程序体系结构的核心,因此本书应该拥有广泛的读者群。
本书内容
拥有许多开发选项的一个问题是指出哪一个选项是满足特定需要的最佳选择。每个人都希望拥有尽可能多的灵活性(拥有尽可能多的选项),但是他们也希望事情简洁明了,换句话说就是容易。Oracle为开发人员提供了几乎无限的选择。不曾有人说过:“您不能在Oracle中做这个工作。”他们说:“在Oracle中有多少种不同方式供您选择来完成这个工作”。我希望本书将帮助您作出正确的选择。
本书写给这样的读者,他欣赏选择,但也喜欢关于Oracle特性和功能的一些指南和实际的实现细节。例如,Oracle拥有一个高效的特性,称为虚拟专用数据库(virtual private database)。Oracle文档告诉您如何使用该特性,以及该特性能够做什么。Oracle文档没有指出什么时候应该使用该特性,以及什么时候不能使用该特性,后考也许更为重要。它不会总告诉您其实现细节,如果您不清楚这些实现细节,就会被迷惑(我不是在谈bug,而是指此特性的工作方式,及其真正的用途)。
本书读者对象
本书的读者对象是使用Oracle作为数据库后端开发应用程序的任何人。本书写给需要了解如何使用数据库进行工作的专业Oracle开发人员。本书特点决定了本书的很多部分也是DBA(数据库管理员)所感兴趣的。本书的大多数范例使用SQL*PLUS来演示关键特性,因此您不会找到如何开发真正“酷”的GUI,但您会学习Oracle数据库工作原理,其关键特性的作用,什么时候应该(不应该)使用它们。
本书写给希望事半功倍地使用Oracle的人,写给希望使用新方法使用现有特性的人,写给希望如何把这些特性应用到现实世界(不仅仅是如何使用特性的例子,而且还有为什么这些特性首先是相关的)的人。对本书感兴趣的另一类人,是负责管理Oracle项目开发人员的技术经理,从某种角度讲,他们理解为什么懂得数据库对于成功是至关重要的,这一点也相当重要。本书能够为要以正确的技术培训员工的经理提供必备的参考。
为了充分利用本书,您必须具有下列知识:
●SQL的知识。您不必是最好的SQL编程员,但良好的使用SQL的知识对您是有帮助的。
●对PL/SQL的理解。这不是前提条件,但将帮助您“理解”范例。例如,本书将不会讲授如何编写一个for循环或声明一个记录类型,这些内容在Oracle文档和很多书籍中都有介绍。但是这并不是说,通过阅读本书您不会学到有关PL/SQL的知识。实际上,您将熟悉PL/SQL的很多特性,了解以前不知道的现有的程序包和特性。
●熟悉第三代语言,例如C或Java。能够读写第三代语言代码的人将能够成功地阅读并理解本书中的范例。
●熟悉Oracle服务器概念手册。
关于上述最后一点的说明:内于Oracle文档集的篇幅庞大,很多人发现Oracle文档在某种程度令人生畏。如果您刚刚起步,或根本没有阅读过Oracle文档,那么最好先从Oracle 8i Concept手册学起。该书大约有800页,涵盖了您需要知道的很多主要的Oracle概念。它可能没有给出每一个技术细节(这要用10 000—20000页文档介绍),但是它介绍了所有重要的概念。
该手册涵盖下列主题:
●数据库结构,如何组织、存储数据。
●分布式处理技术。
●Oracle的内存体系结构。
●Oracle的进程体系结构。
●将使用的模式对象(表、索引、聚簇等等)。
. ●内嵌的数据类型和用户定义的数据类型。
●SQL存储过程。
●事务工作原理。
●优化器。
●数据完整性。
●并行性控制。
本书在需要的时候,会对这些主题进行反复讲解。它们是基础,如果没有这些知识,您的Oracle应用程序很容易失败。这里建议您通读该书,并理解这些主题。
本书结构
为了帮助您阅读本书,本书组织为6个相对独立的部分(参见下面的描述)。这不是严格的划分,它们将帮助您迅速找到最需要的内容。本书共有23章,每一章实质上都是一本微型书,即一个独立部分。有时候,我会在其他章中引用范例或特性(尤其是“安全性”部分,它更多地依赖在以前章节中建立的范例和概念),但是您可以从本书中选择任何一章,并单独阅读。例如,读者不必为了阅读或使用第14章而首先阅读第10章。
每一章的格式和风格实际上是相同的:
●对特性或功能的简单描述。
●为什么(或为什么不)要使用它。概括介绍考虑使用该特性的时间,以及什么时候不要使用该特性。
●如何使用该特性。这不仅仅是SQL参考的简单副本,而且是分步骤详细描述该特性。这些内容正是读者所需要掌握的,这些内容也是您必须完成的操作,这些内容又是您必须掌握的关键知识。这部分的内容包括:
●如何实现它
●范例
●调试特性
●使用该特性的警告
●事先处理错误
●小结
本书有很多范例和大量的代码,所有这些都可以在http://www.wrox.com上下载。下面是对每一部分内容的详细介绍。
理解数据库
●第1章“开发成功的Oracle应用程序”。本章陈述了数据库编程的基本方法。所有的数据库都不会相同,为了成功地、按时地开发数据库驱动的应用程序,您必须确切地理解特定的数据库能够完成的工作,它是如何做的。如果您不知道数据库的功能,那么就有可能做那些重复性的工作,即开发数据库已经提供的功能。如果您不知道数据库如何工作,就可能开发性能拙劣、不能按预订方式操作的应用程序。
本章介绍了一些由于缺乏对数据库的基本理解而导致项目失败的实际例子。使用这种举例方法,本章讨论了开发人员需要理解的基本特性和功能。最低要求是您不能把数据库视为简单地返回答案的黑盒子,由数据库自身维护伸缩性和性能。
●第2章“体系结构”。Oracle数据库是高度复杂的工具。每次您连接到数据库,或发出一个UPDATE命令时,在后台发生许多进程,以保证应用程序运行平稳,数据的完整性得到维护。例如,如果需要,数据库保证拥有足够的信息以便能够把数据恢复到其本来的初始状态。它将高速缓存程序数据,并自动地在合适时重用数据,等等。在大多数时间里,所有这些操作都是透明的(至少对于开发人员来说),但是发生故障时,一半的工作是知道在何处找到问题。
本章介绍oracle体系结构的3个主要部件——内存结构(尤其是系统全局区域(System Global Area)、物理进程及其文件集(参数文件、重做日志文件等等)。理解Oracle体系结构是理解Oracle实现特定特性的独特方式及其如何影响应用程序的独特方式的基础。
●第3章“封锁和并行性”。不同数据库具有不同的运行方式(在SQL Server中运行良好,在Oracle中不一定能运行),理解Oracle实现锁定和并行控制的方式,对于应用程序的成功是绝对至关重要的。
本章讨论了Oracle解决这些问题的基本方法、能够应用的锁定类型(DML、DDL、锁存器(latches)……)以及没有注意实现封锁时产生的问题(死锁、阻塞、锁定扩大(escalation))。并行性控制部分讨论了Oracle提供的控制用户访问并修改数据库的功能。
●第4章“事务”。事务是所有数据库的基本特性,这是数据库区别于文件系统的特点之一。但是,事务常常被错误理解,许多开发人员甚至不知道他们竟然没有使用事务。本章解释了在Oracle中应该如何使用事务,也揭示了在用其他数据库进行开发时的一些“坏习惯”。特别是,强调原于性(atomicity)的含意,及其如何影响Oracle语句。接着讨论事务控制语句(COMMIT、SAVEPOINT、ROLLBACK)、完整性约束和分布式事务(两阶段提交)。最后,探讨有关使用事务的一些实际问题:如何记录事务以及重做(redo)和撤消(undo)的作用。
数据库结构和实用程序
●第5章“重做和回滚”。可以说,与DBA相比,一般开发人员没有必要理解同样多的重做和回滚(rollback)的细节,但开发人员也需要理解重做和回滚在数据库中的作用。在第一次定义重做以后,考查了COMMIT命令的确切功能。同时也考虑了诸如产生多少重做、日志的关闭、重做的分析等等问题。
在本章有关回滚的部分,在介绍Set transaction SQL语句之前,首先介绍是什么毫无例外地产生撤消操作。这一般用于选取一个大回滚段进行一些大型操作。然后,详细介绍臭名昭著的“ORA—01555 snapshot too old”错误,探讨其原因及其解决方案。
●第6章“数据库表”。Oracle支持很多类型的表。本章介绍各种类型的表:堆组织表(heap organized)(默认情况下的普通表)、索引组织(index organized)表、索引聚簇(index clustered)表、散列聚簇(hash clustered)表、嵌套(nested)表、临时(temporary)表和对象(object)表,并讨论了什么时候、如何、为什么使用它们。在大多数时候,堆组织表就足够使用了,但是您必须能够意识到什么时候使用其他类型的表更为合适。
●第7章“索引”。索引是应用程序的一个至关重要的方面。数据库程序的正确实现需要深入了解数据及其如何分布、如何使用的知识。索引常常被视为应用程序开发中事后规划的内容,从而使性能受到损害。
本章详细介绍不同类型的索引,其中包括B*Tree、位图、基于函数和应用程序域索引,并讨论什么地方应该或不应该使用它们。还将回答在“常见问题”部分中的问题,例如“索引在视图上能运行吗?”、 “为什么没用使用索引?”。
●第8章“导入和导出”。导入和导出是Oracle提供的两个最老的工具,它们用于从一个Oracle实例中抽取表、模式(schema)或整个数据库定义,并导入到另一个实例或模式中,但是很多开发人员并不知道如何使用这两种工具。这里介绍诸如大型导出、构建子集和传输数据并使用它们作为备份或重组工具等主题。本章最后介绍使用这些工具时潜在的缺陷和问题。
●第9章“数据装载”。本章重点介绍SQLLDR, 并介绍使用该工具装载并修改数据库中数据的各种方法。 本章内容包括如何装载定界的数据,如何更新现有行、插入新行,如何卸载数据,如何在存储过程中调用SQLLDR。SQLLDR是一个已建立的关键工具,但就实际使用而言,它还会导致许多问题。
性能
●第10章“优化策略和工具”。在本章中将详细介绍优化Oracle应用程序的方法,然后提供了使用优化工具的高度实用的指南和技巧。 开放部分集中介绍应用程序优化,包括下列专题:绑定变量(bind variable)和分析、 SQL_TRACE TIMED_STATISTICS和TKPROF、DBMS PROFILER,以及对应用程序进行日志操作的重要性。在应用程序完成彻底的优化以后,注意力应该转向数据库,尤其是在优化中使用的StatsPack实用程序组和V$表。
●第11章“优化器方案稳定性”。使用Oracle 8i(及其更高版本)的开发人员现在可以存储一组“服务器提示”,它称为优化器方案,详细描述如何在数据库中执行特定的SQL语句。显然,这有利于性能的提高,本章详细介绍如何生成大纲,如何管理大纲。
高级SQL特性
●第12章“分析函数”。有时候,针对数据库可以非常有规律地提出某些问题,但是直接使用SQL难于编写回答它们的查询,该查询也无法总能迅速地执行。Oracle 8.1.6引入了分析函数。这些函数扩展了SQL语言,容易编码此类查询,并通过功能类似的直接SQL查询显著提高性能。本章阐述了分析函数运行方式、完整的语法(包括函数、分区、窗口子句),然后给出了一个使用这些函数的完整的实际例子。
●第13章“物化视图”。某些“聚集”查询为了产生答案,必须处理数以千兆的数据。性能的含意很清晰,尤其是进行常见查询的时候,就是每当询问该问题时,将处理大量的数据。利用这个特性,我们简单地预先做一些工作。即在物化视图中汇总回答特定查询所需的数据,后续的查询重定向到该汇总数据。此外,数据库能够识别使用汇总数据的类似查询,并自动地重写查询。本章讨论了它的工作原理,建立物化视图的方法,包括约束、维数和DBMS_OLAP软件包的使用。
●第14章“分区”。分区自在简化大型表和索引的管理。它是通过“分割。占据”逻辑实现的,也就是把表和索引分成更小更易管理的小片。这是DBA和开发人员必须合作,以使应用程序的可用性和性能最大化的领域。本章介绍表分区和索引分区。还将介绍使用局部索引和全局索引的分区。前者常见于数据仓库,后者常见于OLTP系统。
●第15章“自治事务”。利用该特性,可以创建子事务,于事务可以独立于父事务提交或回滚变化。还将介绍自治事务适用的场合, 例如审核修改安全信息的“非法”企图,以避免使表发生突变,或作为在触发器中执行DDL的方法。本章还将讨论诸如事务控制、作用域、结束自治事务和存储点等。
●第16章“动态SQL”。在本章中,对在程序中使用SQL语句的两种方法进行了比较:“标准”的静态SQL方法和动态SQL方法。动态SQL是在运行时执行的SQL语句,而在编译时并不知道它们。还将介绍在程序中使用动态SQL的两种方法,也就是使用所提供的内置程序包DBMS_SQL和本机动态SQL。本机动态SQL是在PL/SQL中使用的声明方法。选择其中一种的理由很多,例如,在编译时是否知道绑定变量,是否知道结果,给定语句是否在会话中执行一次或多次,等等。本章将详细讨论这些问题。
可扩展性
●第17章“interMedia”。本章重点介绍interMedia Text。本章没有详细介绍如何使用interMedia Text,而是介绍什么是interMedia Text,它提供的功能,启用该功能的数据库特性。本章介绍如何搜索文本,管理各种文档,索引来自多种数据源的文本,搜索XML‘应用程序。本章最后给出了interMedia的说明,包括索引和数据库外的索引信息的同步化。
●第18章“基于C的外部过程”。Oracle 8.0中引入了在数据库服务器上实现过程的能力,这种过程可以用不同于PL/SQL的语言,例如C或Java编写。它们被称为外部过程。在本章中,将从体系结构的角度介绍基于C的过程。还将演示如何配置服务器以使用这些过程,测试安装,并建立一个传递、处理各种类型变量的范例过程。同时研究了LOB to File(LOB_IO)外部过程,该过程把CLOB、BLOB和BFILE写到硬盘上。
●第19章“Java存储过程”。通过明智地应用少量Java,可以获得大量的有用功能,而这些功能超出了PL/SQL所能实现的功能。在本章中,将介绍一个实际例子,该例子说明了该功能有用的场合,如获得目录列表或运行一个操作系统命令。最后,还将提供在试图使用该特性时可能遇到的问题以及一些解决方案。
●第20章“使用对象关系特性”。在数据库中,对象关系特性可用性极大地扩充了开发人员可以使用的数据类型集。但是,什么时候应该使用它?同样,什么时候不应该使用它?在本章中,将说明在系统中加入新数据类型(这里创建了一个新的PL/SQL数据类型)的方法,并介绍集合的独特用法。最后,将介绍对象关系视图,该部分内容适用于想使用对象关系特性,但仍然为应用程序提供关系视图的读者。
安全性
●第21章“精细存取控制”(Fine Grained Access Control)。该特性允许您在运行时把谓词附加到发给数据库的所有查询。该特性在服务器上实现,意味着能够访问数据库的任何应用程序都可以使用该特性。使用该特性的深层理由包括易维护和以ASP方式宿主应用程序的能力。通过测试一对范例您会弄清它的工作原理。其中一个范例基于安全策略的实现,另一个范例使用应用程序上下文。本章的最后是警告信息,其中包括参照完整性、导入导出问题,以及错误信息。
●第22章“多层身份验证”。在本章中,将讨论Web的作用, 它导致了客户在真正访问数据库之前向中间层应用程序服务器提供证书。将解释这个特性是如何实现的,以及如何工作的。还将介绍如何授权,如何审核代理账户。
●第23章“调用者和定义者权限”。从Oracle 8i开始,可以为一个存储过程的不同用户,授予不同的权限。利用调用者权限,可以开发存储过程,使存储过程能够在运行时以调用者特权执行。还将探讨为什么该特性很有用,例如开发通用的实用程序和数据字典应用程序时很有用;也将探讨为什么在大多数情况下,定义者权限仍然是正确的选择。在“如何工作”部分,将介绍在编译定义者和调用者权限过程时实际发生的操作。
附录
●附录A“必须提供的软件包”。开发过程中可能会忽略其中的很多软件包,或者说它们的目的没有真正被理解。在此,这里将讲解如何使用并扩展它们,帮助您搞清这些疑惑。
客户技术支持
我们努力使本书尽可能地难确并令读者便于阅读,但是本书的实际效果取决于您的心得体会。读者意见可通过email:feedback@wrox.com与我们联系,把您的批评、建议告诉我们。
源代码和更新代码
在使用本书中的例子时,您可能决定宁愿手工输入所有代码。许多读者这样做的理由是,这是熟悉所使用的编码技巧的好方法。
不管您是否输入代码,我们都把源代码放在我们的web站点:
http://www.wrox.com/
如果您要输入代码,也可以使用我们的文件来检查应该得到的结果,如果您认为输入有错误,您可以与站点代码进行比较。如果您不想输入代码,那就从我们的站点下载源代码吧。
无论使用哪种方法,它们都有助于您更新和调试。
勘误表
我们努力使文本和代码没有错误。但是,人难免犯错误,一旦错误被指出并更正,我们就反馈给读者。在http://www.wrox.com上有本书的勘误表。如果您发现了尚未报告的错误,请告诉我们。
我们的web站点也提供其他信息和支持,其中包括所有书中的源代码、范例章节、即将出版的书、文章、相关主题意见的预览。
2016-11-29
深入理解Oracle RAC 12c(完整书签)分卷1
深入理解Oracle RAC 12c(完整书签)深入理解Oracle RAC 12c(完整书签)深入理解Oracle RAC 12c(完整书签)
2016-08-12
VC编写的系统进程查看工具
源码对EnumProcess,Toolhelp32,NtQuerySystemInformation这三种方式分别作了3个函数;通过查看函数;很容易读懂源码
2016-07-20
c++多核高级编程中文版(含完整清晰目录)
完整目录的版本,上传给大家。书还不错。设计多核、多线程编程,时下比较流行的技术。
《C++多核高级编程》主要内容:并发编程和同步带来的各种缺陷、陷阱和挑战,调试和测试多核编程的方法与技术,如何使川跨下台技术米利用处理器的特定特性,操作系统在多核编程中的任务,将框架类作为并发构建块加以利用的方法,如何通过使用接口类宋降低任务同步和通信的复杂性。
《C++多核高级编程》适合于希望从事多核编程和多核应用程序开发的开发人员
2015-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人