Oracle数据库精讲与疑难解析(第2版)
Oracle数据库精讲与疑难解析(第2版)
赵振平编著
ISBN978-7-121-20021-2
2013年4月出版
定价:148.00元
1100页
16开
编辑推荐
耗时3年,作者曾为本书辞职在家专心写作
754个实务,件件源自实际工作的经验与教训,配有实务速查目录
分享经验,现在作者管理数据库时,就通过复制本书内容来搞定问题
为初学者去除Oracle的神秘面纱,少走弯路
为专业人士提供速查手册,遇到故障不求人
内容提要
本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动/关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的导入/导出、备份与恢复、模式对象的管理,以及应用程序开发等相关知识。本书旨在向读者解答使用Oracle中遇到的疑难问题,并展示管理Oracle的大量技巧。
本书第2版对Oracle进行更深入的介绍,新增RAC(集群)、HugePage、同步I/O、异步I/O、直接I/O、内存文件系统、自动存储管理(ASM)等内容。每个内容几乎都是Oracle的高级专题,它们从不同的角度去切入Oracle的性能,都值得读者慢慢品味!此外,RAC的系统介绍,使读者更容易理解和构建自己的Oracle集群!
目录
第1篇创建属于自己的Oracle数据库
第1章认识Oracle的世界——Oracle的体系结构 2
1.1 Oracle的发家史 2
1.2 数据库 3
1.3 数据库管理系统(DBMS) 3
1.4 关系数据库的概念(RDBMS) 3
1.4.1 关系数据库模型 4
1.4.2 表 5
1.5 Oracle的总体框架结构 5
1.5.1 Oracle实例(Oracle Instance) 6
1.5.2 Oracle的存储结构 7
1.6 数据字典(Data Dictionary) 8
1.6.1 数据字典概述 8
1.6.2 数据字典的结构 8
1.6.3 数据字典的使用 8
第2章迈出第1步——Oracle的安装/卸载 10
2.1 Oracle的安装 10
2.1.1 Oracle安装的几个概念 10
2.1.2 Oracle 11g R2(11.2)的安装——Windows篇 12
2.1.3 Oracle 11g RAC的安装——Linux篇 27
2.1.4 Oracle安装疑难解析 98
2.2 Oracle的卸载 123
2.2.1 Oracle完全卸载——Windows篇 123
2.2.2 Oracle完全卸载——UNIX篇 128
第3章有米之炊——数据库的创建与删除 137
3.1 创建数据库 137
3.1.1 数据库创建概述 137
3.1.2 Solaris下用DBCA创建数据库 139
3.1.3 DIY——Solaris下手工创建数据库 149
3.1.4 数据库创建疑难解析 155
3.2 删除数据库 164
3.2.1 数据库删除概述 164
3.2.2 数据库删除——手工篇 165
3.2.3 数据库删除——DBCA篇 165
第2篇网络管理
第4章 Oracle网络管理并不难 168
4.1 Oracle网络体系结构 168
4.1.1 Oracle应用的几种网络结构 168
4.1.2 Oracle Net 170
4.1.3 OSI模型 170
4.1.4 Oracle Net的堆栈结构 171
4.1.5 Oracle监听器 172
4.1.6 连接描述符(connect identifier) 173
4.1.7 网络服务名(Net Service Name) 174
4.1.8 命名方法 176
4.1.9 配置Oracle网络的工具 176
4.2 Oracle网络管理实务 176
4.2.1 Oracle网络服务器端配置 176
4.2.2 Oracle网络客户端配置 182
4.3 Oracle网络管理疑难解析 187
4.3.1 Oracle网络服务器端配置疑难解析 187
4.3.2 Oracle网络客户端配置疑难解析 194
4.3.3 Oracle网络与防火墙(Firewall) 215
第3篇系统管理
第5章系统管家婆——SQL*Plus的使用 222
5.1 系统管理工具SQL*Plus 222
5.2 SQL缓冲区(SQL Buffer) 223
5.3 SQL*Plus的环境配置 223
5.3.1 SQL*Plus的环境变量 223
5.3.2 SQL*Plus站点配置文件(Site Profile) 223
5.3.3 SQL*Plus用户配置文件(User Profile) 223
5.4 SQL*Plus的启动 223
5.5 SQL*Plus专有命令介绍 225
5.5.1 登录、注销命令 225
5.5.2 编辑命令 225
5.5.3 其他有用的SQL*Plus命令 227
5.6 SQL*Plus实务与疑难解析 228
第6章有始有终——数据库的启动与关闭 247
6.1 数据库启动 247
6.1.1 数据库启动原理 247
6.1.2 数据库启动实务 248
6.1.3 数据库启动疑难解析 261
6.2 数据库关闭 284
6.2.1 数据库关闭原理 284
6.2.2 数据库的关闭(SHUTDOWN)实务 284
6.2.3 数据库关闭疑难解析 288
第7章理清两个模式问题——专有/共享服务器模式 292
7.1 理解专有服务器模式 292
7.2 共享服务器模式原理 293
7.2.1 共享服务器模式的架构 293
7.2.2 监听器和调度进程的关系 293
7.2.3 请求队列(Request Queue)/响应队列(Response Queue) 294
7.2.4 调度进程(Dispatcher Processes,Dnnn) 294
7.2.5 共享服务器进程(Shared Server Processes,Snnn) 294
7.3 共享服务器模式实务 294
7.4 共享服务器模式疑难解析 305
第8章掌握两个管理问题——表空间和数据文件的管理 317
8.1 数据库存储结构 317
8.1.1 物理结构 317
8.1.2 逻辑结构 320
8.2 深刻理解表空间 327
8.2.1 大文件表空间 327
8.2.2 系统表空间 327
8.2.3 辅助表空间 327
8.2.4 回滚表空间(Undo Tablespace) 327
8.2.5 临时表空间 330
8.2.6 表空间中区的管理方式 331
8.2.7 表空间中段的管理方式 332
8.2.8 非标准块表空间 333
8.2.9 表空间的离线(Offline)与在线(Online) 333
8.2.10 只读表空间(Read-Only Tablespace) 333
8.3 深刻理解数据文件 334
8.3.1 数据文件的内容 334
8.3.2 数据文件的尺寸(Size) 334
8.3.3 离线数据文件 334
8.3.4 临时数据文件(Temporary Datafiles) 334
8.4 表空间管理实务与疑难解析 335
8.4.1 永久表空间管理 335
8.4.2 临时表空间管理实务与疑难解析 366
8.4.3 回滚表空间管理实务与疑难解析 373
8.5 数据文件管理实务与疑难解析 379
8.5.1 数据文件管理实务 379
8.5.2 数据文件管理疑难解析 388
第9章进程管理 390
9.1 Oracle进程简介 390
9.2 用户进程 391
9.3 Oracle进程 391
9.3.1 服务器进程 391
9.3.2 后台进程 391
9.4 进程综合管理实务与疑难解析 395
9.5 会话管理实务与疑难解析 403
第10章内存管理 408
10.1 Oracle内存结构简介 408
10.2 系统全局区(SGA) 409
10.2.1 SGA简介 410
10.2.2 SGA组成 411
10.3 程序全局区(PGA) 414
10.3.1 私有SQL区 414
10.3.2 SQL工作区 415
10.3.3 用户全局区 415
10.4 软件代码区 415
10.5 管理Oracle内存的方式 415
10.5.1 PGA自动管理 415
10.5.2 SGA自动管理 416
10.5.3 自动内存管理 416
10.6 内存管理实务与疑难解析 416
第11章用户管理 439
11.1 用户验证 440
11.1.1 口令认证 440
11.1.2 外部认证 440
11.1.3 全局认证 441
11.2 Oracle的安全大门——权限(Privileges) 441
11.2.1 系统权限 441
11.2.2 对象权限 444
11.3 使权限管理变得更加容易——角色(Role) 445
11.4 限制用户的资源消耗——资源限制文件(Profile) 446
11.4.1 资源限制的级别 447
11.4.2 限制资源的参数 447
11.5 用户与权限管理实务与疑难解析 448
11.5.1 用户管理实务与疑难解析 448
11.5.2 权限管理实务与疑难解析 453
11.5.3 角色管理实务与疑难解析 457
11.5.4 资源限制文件管理实务与疑难解析 463
第4篇移动数据库
第12章数据导出 468
12.1 数据导出方法介绍 468
12.1.1 Oracle最新导出工具——Data Pump Export 468
12.1.2 Oracle原来的导出工具——Export 468
12.2 数据导出实务 471
12.3 数据导出疑难解析 489
第13章数据导入 508
13.1 数据导入方法介绍 508
13.1.1 Oracle最新导入工具——Data Pump Import 508
13.1.2 Oracle以前的导入方法——Import 508
13.2 数据导入实务 510
13.3 数据导入疑难解析 530
第5篇 Oracle文件管理
第14章重中之重——控制文件的管理 544
14.1 控制文件的概念 544
14.2 控制文件管理实务与疑难解析 545
第15章成为数据库的最高统治者——口令文件(Password File)管理 555
15.1 超级用户权限(SYSDBA、SYSOPER)介绍 555
15.2 口令文件的基本概念 556
15.3 启用口令文件认证 557
15.4 口令文件管理实务与疑难解析 558
第16章联机日志文件管理 571
16.1 联机日志文件的概念 571
16.1.1 联机日志文件的内容 571
16.1.2 联机日志文件的循环利用 572
16.2 联机日志文件管理实务与疑难解析 572
第17章参数文件(PFILE/SPFILE)管理 584
17.1 参数文件的基本概念 584
17.2 初始化参数文件 585
17.3 服务器参数文件 585
17.4 初始化参数的修改 585
17.5 参数管理实务与疑难解析 586
第6篇 Oracle高级专题
第18章全球应用——分布式数据库疑难攻略 594
18.1 分布式数据库系统的概念 594
18.1.1 同构分布式数据库系统 595
18.1.2 异构分布式数据库系统 595
18.1.3 数据库链接(Database Link) 595
18.2 分布式数据库管理实务与疑难解析 595
第19章并不陌生的问题——裸设备 603
19.1 裸设备的概念 603
19.2 裸设备管理实务与疑难解析 604
第7篇数据库备份/恢复
第20章备份/恢复之基石——归档(Archivelog)管理 612
20.1 归档的基本概念 612
20.1.1 非归档模式 612
20.1.2 归档模式 613
20.1.3 归档路径 613
20.2 归档管理实务与疑难解析 614
第21章必行之举——数据库备份 636
21.1 理解数据库备份 636
21.1.1 数据库失败的种类 637
21.1.2 备份和恢复的解决方案 637
21.1.3 备份和恢复的物理结构 638
21.1.4 备份的类型 638
21.1.5 执行用户管理的备份 638
21.2 恢复管理器(RMAN) 639
21.2.1 通道 640
21.2.2 备份集的维护 640
21.2.3 RMAN资料库 642
21.2.4 RMAN的使用 643
21.3 数据库备份实务与疑难解析 643
21.4 恢复目录管理实务与疑难解析 665
第22章失而复得——数据库恢复 673
22.1 数据库恢复 673
22.1.1 实例恢复 673
22.1.2 介质恢复 674
22.1.3 用户错误(User Error)的恢复 675
22.2 数据库闪回(Flashback Database) 676
22.3 用户管理的恢复(User-managed Recovery) 676
22.4 联机日志文件丢失的恢复 677
22.5 控制文件损坏的恢复 689
22.6 数据文件损坏的恢复 700
22.7 表的恢复(用户错误的恢复) 711
第8篇 Oracle程序设计
第23章数据库通用语言——SQL语句 742
23.1 结构化查询语言简介 742
23.2 SELECT语句 743
23.2.1 理解SELECT语句 743
23.2.2 SELECT语句使用实务与疑难解析 744
23.3 INSERT语句 754
23.3.1 理解INSERT语句 754
23.3.2 INSERT语句使用实务与疑难解析 755
23.4 UPDATE语句 761
23.4.1 理解UPDATE语句 761
23.4.2 UPDATE语句使用实务与疑难解析 761
23.5 DELETE语句 763
23.5.1 理解DELETE语句 763
23.5.2 DELETE语句的使用 763
23.6 SQL语句中,集合函数使用实务与疑难解析 766
第24章模式对象(Schema Object)的管理 771
24.1 模式(Schema)的概念 771
24.2 模式对象管理 772
24.2.1 表(Table) 772
24.2.2 索引(Index) 790
24.2.3 外部表(External Table) 795
24.2.4 临时表(Temporary Table) 805
24.2.5 分区表(Partition Table) 809
24.2.6 聚簇(Cluster) 822
24.2.7 索引组织表(Index-Organized Table,IOT) 825
24.2.8 视图 831
24.2.9 同义词 836
24.2.10 序列 839
第25章 PL/SQL应用程序开发 844
25.1 PL/SQL简述 844
25.1.1 PL/SQL块结构 844
25.1.2 数据类型 845
25.1.3 运算符 845
25.1.4 PL/SQL语句控制结构 846
25.2 存储过程(Stored Procedure) 847
25.2.1 存储过程的基本原理 847
25.2.2 存储过程管理实务与疑难解析 847
25.3 函数(Function) 863
25.3.1 函数的基本原理 863
25.3.2 函数的管理实务与疑难解析 863
25.4 包 871
25.4.1 包的基本原理 871
25.4.2 包管理实务与疑难解析 871
25.5 触发器 878
25.5.1 触发器的基本原理 878
25.5.2 触发器管理实务与疑难解析 879
25.6 游标 899
25.6.1 游标的基本原理 899
25.6.2 游标管理实务与疑难解析 899
第9篇内存探索
第26章勿忘历史——Oracle内存管理的变迁 908
26.1 Oracle 内存变迁概述 908
26.2 Oracle 7 的内存管理 908
26.3 Oracle 8/8i的内存管理 909
26.4 Oracle 9i的内存管理 909
26.5 Oracle 10g的内存管理 909
26.6 Oracle 11g的内存管理 909
第27章 SGA之家——共享内存段 911
27.1 共享内存段的基本概念 911
27.2 共享内存段与内核参数 911
27.3 数据库启动与共享内存段 911
27.4 设置共享内存段 912
27.5 共享内存段的管理工具 913
27.5.1 Oracle小工具——sysresv 914
27.5.2 Oracle调试工具——oradebug 914
27.5.3 操作系统工具——ipcs(ipcrm) 915
27.6 查看内核参数对共享内存段的限制 916
27.7 共享内存段的空间使用情况 916
27.8 共享内存段与进程 917
27.9 删除共享内存段 917
第28章内存管理效率的提升——HugePage 919
28.1 HugePage的原理 919
28.2 HugePage的配置 920
28.3 HugePage疑难解析 923
第29章内存管理方式的巨变——内存文件系统 928
29.1 内存文件系统 928
29.2 第一阶段:传统模式(共享内存段) 929
29.3 第二阶段:新型模式(内存文件系统) 929
29.4 第三阶段:内存文件系统的设置 931
29.5 第四阶段:从“新型模式”切换到“传统模式” 931
第10篇 I/O探索
第30章永恒的主题——I/O(同步I/O、异步I/O、直接I/O) 934
30.1 磁盘的物理结构 934
30.1.1 盘片(碟片,Platter) 934
30.1.2 磁头(Head) 934
30.1.3 磁道(Track) 934
30.1.4 扇区(Sector) 934
30.2 磁盘工作原理 935
30.2.1 寻道时间(Seek Time) 935
30.2.2 旋转延迟(Rotational Latency) 935
30.2.3 传输时间(Transfer Time) 935
30.2.4 访问时间(Access Time) 935
30.3 衡量磁盘性能的两个指标 935
30.4 I/O介绍 935
30.4.1 同步I/O 936
30.4.2 异步I/O 936
30.4.3 直接I/O 936
30.4.4 Oracle与I/O配置 936
30.4.5 异步I/O的使用 936
30.4.6 直接I/O的使用 938
30.5 随机I/O和顺序I/O 939
30.5.1 随机I/O的原理 939
30.5.2 顺序I/O的原理 940
30.6 I/O大比拼 940
30.6.1 随机I/O和顺序I/O的巨大反差 940
30.6.2 同步I/O和异步I/O的对比 940
30.6.3 直接I/O与内存的使用 941
第11篇 RAC管理
第31章理论奠基——RAC简介 944
31.1 高可用性介绍 944
31.2 Oracle 集群 945
31.3 硬件架构 946
31.3.1 服务器介绍 946
31.3.2 共享存储介绍 946
31.3.3 网络介绍 952
31.4 软件架构 954
31.4.1 软件分层 954
31.4.2 Oracle Clusterware软件 955
31.4.3 Oracle RAC软件 962
第32章 RAC的意义——负载均衡和失败转移 963
32.1 负载均衡 963
32.1.1 负载均衡简介 963
32.1.2 客户端负载均衡 964
32.1.3 服务器端负载均衡 967
32.2 失败转移 967
32.2.1 失败转移简介 967
32.2.2 失败转移实战 967
第33章存储的主打曲——自动存储管理(ASM) 973
33.1 ASM基本概念 973
33.1.1 ASM实例(ASM Instance) 973
33.1.2 ASM磁盘组(ASM Disk Group) 973
33.1.3 ASM文件(ASM File) 974
33.1.4 区(Extent) 974
33.1.5 镜像和失败组(Mirroring and Failure Group) 975
33.2 配置ASM实例 976
33.2.1 创建ASM实例 976
33.2.2 ASM的初始化参数 978
33.2.3 ASM实例的连接 979
33.2.4 ASM的启动 979
33.2.5 ASM的关闭 980
33.2.6 检查ASM实例的状态 981
33.3 磁盘组的管理 981
33.3.1 准备磁盘(以裸设备为例) 981
33.3.2 确保ASM能够搜索到磁盘 984
33.3.3 创建磁盘组 985
33.3.4 磁盘组的加载/卸载 987
33.3.5 在磁盘组上创建表空间 988
33.3.6 往磁盘组中添加磁盘 989
33.3.7 从磁盘组中删除磁盘 989
33.3.8 删除磁盘组 989
33.3.9 手工重平衡磁盘组中的文件 990
33.3.10 磁盘和磁盘组的信息 990
33.4 管理工具ASMCMD 991
33.5 动态卷管理器(ADVM)和集群文件系统(ACFS) 992
33.5.1 动态卷管理器(ADVM)的使用 993
33.5.2 集群文件系统(ACFS)的使用 996
33.6 ASM管理疑难解析 997
第34章练兵场——RAC管理 1003
34.1 你必须清楚的一件情——命令运行环境 1003
34.2 集群管理工具 1003
34.3 集群的启动和关闭 1004
34.4 IP地址管理 1005
34.4.1 SCAN VIP的漂移 1005
34.4.2 检查SCAN的配置 1005
34.4.3 修改SCAN VIP和VIP 1005
34.4.4 私有IP地址的修改 1008
34.4.5 修改SCAN监听器的端口 1009
34.5 实例的管理 1010
34.5.1 实例的启动和关闭 1010
34.5.2 数据库的启动和关闭 1011
34.5.3 参数文件(PFILE、SPFILE)管理 1011
34.5.4 会话管理 1013
34.6 物理结构管理 1013
34.6.1 回滚表空间的管理 1013
34.6.2 联机重做日志的管理 1014
34.6.3 集群注册表(OCR)的管理 1015
34.6.4 Oracle本地注册表(OLR)的管理 1019
34.6.5 表决盘(Voting Disk)的管理 1020
34.6.6 集群注册表和表决盘管理实务 1022
34.7 节点管理 1029
34.7.1 节点失败那点事儿 1029
34.7.2 数据库管理模式 1030
34.7.3 删除节点 1031
34.7.4 增加节点 1042
作者简介
赵振平
生于20世纪末中国西南的一个边陲小镇。21世纪初,那是一个IT业动荡的日子,多少网站林立,又有多少网站倒闭;多少英雄冲锋,又有多少豪杰流泪。华尔街金融巨子们疯狂涌入IT业,克林顿总统先生的“信息高速公路”政策,为我们描绘了IT业的宏伟蓝图,不知天有多高、地有多厚的我们,被卷入了全球IT业的激流中。但是,在激流中有过倒下,在激流中有过彷徨.....在彷徨中思考未来。于是公元2001年,我正式主攻数据库和数据仓库。开始的岁月,Sybase、Oracle与SQL Server三座大山压得我无法喘息,从不低头的我们仍然要继续前行的路。N年以后,我们越过了Sybase、Oracle、SQL Server、MySQL、DB2这几座大山。但是,中国至今在数据库领域还没有太多的话语权,路还很远,很长......还需要更多的人与我们一起努力!!
前言
亲爱的朋友,在使用Oracle时,你肯定会遇到许多诸如下面的问题。
安装Oracle时,不能启动安装界面……
安装Oracle时,安装界面显示乱码……
Oracle 8i不能在奔腾4(P4)机器上安装……
不能完全卸载Oracle数据库……
数据库突然掉电……
一个数据文件损坏……
一个表中的数据被意外删除……
连接数据库时,提示:监听器不存在(TNS-12541 TNS: no listener)……
连接数据库时,提示:无法解析服务名(TNS-03505 Failed to resolve name)......
连接数据库时,提示“TNS-12535 TNS: operation timed out……”
数据库无法启动……
数据库无法关闭……
使用数据库时,报告错误“ORA-00104: deadlock detected; all public servers blocked waiting forresources……”
对表空间进行操作时,提示:表空间不存在(表空间确实存在)……
创建表时,报告错误“ORA-01950: no privileges on tablespace 'USERS'……”
创建表时,报告错误“ORA-01536: space quota exceeded for tablespace 'TBST'……”
往表中插入数据时,提示“ORA-01653: unable to extend table REP.PHONE_RESUME by 32 intablespace TBS_PRO……”
不能往表空间中添加数据文件……
不能杀掉一个进程……
如何提高Oracle的最大会话数……
为什么数据库高速缓冲区(Database Buffer Cache)的大小总是显示为0……
表被锁住,如何解锁……
为什么我不能成为超级用户……
遇到snapshot too old错误……
导出数据时,报告错误“EXP-00091: Exporting questionable statistics……”
如何把Access的数据导入Oracle中……
如何把Excel的数据导入到Oracle中……
导入数据时,报告错误“IMP-00020: long column too large for column buffer size (7) ……”
为什么数据总是被导到SYSTEM表空间……
修改初始化参数时,报告错误“ORA-32001: write to SPFILE requested but no SPFILE specified atstartup…...”
修改初始化参数时,报告错误“ORA-02095: specified initialization parameter cannot be modified……”
使用数据库连接时,报告错误“ORA-02019: connection description for remote database not found……”
执行命令ARCHIVE LOG LIST时,报告权限不足……
无法归档(ARCHIVELOG)数据库……
普通用户登录数据库时,报告错误“ORA-00257: archiver error. Connect internal only, until freed……”
在SELECT中使用函数时,报告错误“ORA-14551:cannot perform a DML operation inside a query……”
ORA-00937: not a single-group groupfunction……
查询数据时,报告错误“ORA-02032: clustered tables cannot be used before the cluster indexis built……”
访问序列时,报告错误“ORA-08002: sequence string.CURRVAL is not yet defined in thissession……”
执行存储过程,报告错误“ORA-01031: insufficient privileges……”
……......……......……......……......……......……......……......……......
遇到上面的问题,怎么办?Oracle博大精深,出现的问题亦千奇百怪,本书正是为了解决你使用Oracle中遇到的各种疑难问题而编写的,它能助你破除重重障碍,成功到达Oracle的彼岸。特别注意的是,本书不是只为了讲解基本概念而写,而是重在疑难解惑,与读者分享工作经验。
写本书的体会
我在2000年参加工作,2001年正式成为DBA(数据库管理员),一直从事Oracle数据库的管理工作,从Oracle 7到Oracle 8i,从Oracle 8i到Oracle 9i、Oracle 10g,直到当前的Oracle 11g,7年多的光阴,我依然奋斗在DBA这个行列。在以往的日子里,每当遇到许多疑难问题时,我总是重复经历(看英文文档—研究—解决问题)的过程。问题解决以后,我总是把解决的过程记录在一个文本文件中。正是这一次次的经历,为我积累了丰富的经验,也为我成就今天这本书打下了坚实的基础。正所谓“宝剑锋从磨砺出,梅花香自苦寒来”。积累的这个“文本文件”,现在也成了我的“宝贝”,所以,我会经常把它备份到好多地方,以防丢失!
2005年7月,电子工业出版社的胡辛征老师正在筹划一本有关Oracle疑难解析方面的书,我也很乐意与大家一起分享我的经验,于是我和胡老师不谋而合。
于是,我开始蜷伏在北京上地的某个角落,从日出东方到夕阳西下,经历了不知多少个日日夜夜。看过漫天尘土的春季,浸泡在炎热的夏季,看着秋天的落叶,不知不觉中走过了冬季。漫漫长路,历时三载,2008年元旦,本书初稿终于尘埃落定。
本书重在疑难解析,帮助读者解决使用Oracle中遇到的疑难问题。这本书中的疑难问题都是缘于我的亲身经历。
出于严谨性的考虑,本书中的例子我都在机器上重新进行了模拟试验,因此,这本书耗费了我大量的时间和精力。
由于这本书中例子很多、很常见,所以,虽然这本书是我自己写的,但是我自己也经常在使用这本书的电子版,当我遇到问题的时候,我只需要在本书的电子版中输入错误提示信息(或者关键字)进行搜索,马上就能找到答案,并且,只需把本书中给出的步骤(脚本/命令)复制出来,稍微修改一下,马上就能运行,真的很方便、很快捷!所以,我相信这是一本Oracle疑难解析方面的好书。因为这本书对我有用,所以管用!
学习Oracle其实并没有那么难,做任何事情都要讲究途径和努力。学习Oracle要先把它的体系结构、概念机制搞清楚,在了解、熟悉了这些之后,接下来的工作就是要建立一个测试环境并不断去实践,这是尤为关键的。因为做Oracle的DBA,其水平高低不在于你对它的名词概念掌握了多少,也不在于你是否有Oracle官方的OCP认证,而是在于你的实际排查、解决故障问题的能力——这是衡量一个数据库管理员水平高低的唯一标准。对于那些已经熟悉了Oracle的名词概念和体系结构的人,如果想要更进一步地提升自己的水平,那么本书正是提供了这样一种途径,让你掌握更多的解决Oracle问题的方法。水平再高的Oracle DBA也不敢说自己能解决Oracle出现的所有问题,Oracle机制复杂,版本也不断更新,总会有我们没有遇到过的问题出现,这就需要我们不断地积累经验、整理总结。我是一个对技术有些偏执的人,每当碰到一个技术问题时,我都会反复实验,钻研得很深很细,谓之触类旁通并非过誉,这本书总结了我多年以来在Oracle领域解决疑难问题的经验。
本书的结构
本书共34章,超过1000页,每章的第一节(或者更小的节)介绍一些基本概念,让初学者对Oracle的基本概念有个清晰的了解(介绍Oracle的体系结构,不是本书的重点)。然后下面一节将手把手教会读者如何(HOW TO)操纵数据库(大部分是基于命令行的)。如果在操纵数据库的时候遇到疑难问题,在最后一节(或者更小的节)将会告诉你为什么会出现这样的问题,并一步一步地教会读者如何解决这样的问题,只要严格按照书中给出的步骤,就一定能解决你遇到的问题(FAQ)。
本书快速目录
第1章认识Oracle的世界——Oracle的体系结构
本章介绍主要Oracle的一些基本概念。
第2章迈出第1步——Oracle的安装/卸载含43个实务
本章介绍如何安装/卸载Oracle,并帮助读者解决安装/卸载过程中遇到的疑难问题。
第3章有米之炊——数据库的创建与删除 含14个实务
本章介绍如何创建和删除数据库,并解决安装过程中遇到的疑难问题。
第4章 Oracle网络管理并不难含31个实务
本章介绍Oracle网络的基本配置,并解析Oracle网络中遇到的各种疑难问题。
第5章系统管家婆——SQL*Plus的使用含28个实务
SQL*Plus是Oracle的管理工具,本章主要介绍SQL*Plus使用的各种技巧。
第6章有始有终——数据库的启动与关闭 含44个实务
本章引导读者如何启动和关闭数据库,并解答启动数据库和关闭数据库中遇到的疑难问题。
第7章理清两个模式问题——专有/共享服务器模式含16个实务
本章介绍Oracle的两种模式——共享服务器(SharedServer)模式和专有服务器(DedicatedServer)模式,教会读者如何配置这两种模式,并解答配置这两种模式时遇到的疑难问题。
第8章掌握两个管理问题——表空间和数据文件的管理 含76个实务
本章介绍表空间/数据文件的基本概念,并解析表空间/数据文件使用中遇到的疑难问题。
第9章进程管理 含14个实务
本章介绍进程的基本概念,并解析与进程有关的疑难问题。
第10章内存管理 含27个实务
本章介绍Oracle内存的组成及内存使用中遇到的疑难问题。
第11章用户管理 含38个实务
本章介绍用户和权限,并解析用户管理及权限管理中遇到的各种疑难问题。
第12章数据导出 含39个实务
本章介绍Oracle数据的导出,详细介绍Oracle导出的各种方法(如使用Oracle的导出工具、使用第三方的导出工具)。本章介绍的导出方法并不仅仅局限于Oracle提供的导出方法。本章不仅介绍导出的各种技巧,还向读者展示导出过程中遇到的各种疑难问题,并给出应对之策。
第13章数据导入 含26个实务
如何把文本数据导入Oracle;如何把Excel的数据导入Oracle;如何把Access的数据导入Oracle。本章介绍数据的各种导入方法,并解析导入过程中遇到的各种疑难问题。本书并不局限于Oracle提供的导入工具。
第14章重中之重——控制文件的管理 含8个实务
本章介绍控制文件的管理,并介绍管理控制文件时遇到的各种疑难问题。
第15章成为数据库的最高统治者——口令文件(Password File)管理含14个实务
口令文件是Oracle安全体系的一部分,本章介绍控制文件的使用及控制文件管理时遇到的疑难问题。
第16章联机日志文件管理 含19个实务
本章介绍联机日志文件管理技巧及联机日志文件使用中遇到的各种疑难问题。
第17章参数文件(PFILE/SPFILE)管理含9个实务
数据库启动时会用到参数文件,本章介绍如何使用参数文件启动数据库,并解析参数文件使用中遇到的各种疑难问题。
第18章全球应用——分布式数据库疑难攻略 含12个实务
本章介绍如何使用分布式数据库,以及使用分布式数据库的技巧及解惑。
第19章并不陌生的问题——裸设备 含6个实务
本章详细介绍裸设备的基本概念,以及裸设备的使用技巧。
第20章备份/恢复之基石——归档(Archivelog)管理含25个实务
本章主要讨论归档的管理技巧,以及归档设置中的各种疑难问题。
第21章必行之举——数据库备份 含38个实务
本章通过实战演习,介绍数据库的各种备份方法。
第22章失而复得——数据库恢复 含32个实务
本章通过实战演习,介绍数据库故障的各种恢复技巧。
第23章数据库通用语言——SQL语句含26个实务
本章介绍SQL语句的使用技巧及疑难问题。
第24章模式对象(Schema Object)的管理含110个实务
本章介绍各种数据库对象的管理及管理数据库对象中会遇到的各种问题。
第25章 PL/SQL应用程序开发含70个实务
本章主要介绍程序开发过程中遇到的与数据库相关的各种疑难问题。
第26章勿忘历史——Oracle内存管理的变迁
本章主要讲述从Oracle 8到Oracle 11g内存管理的变化。
第27章 SGA之家——共享内存段
本章主要讲述共享内存段和SGA的关系。
第28章内存管理效率的提升——HugePage 含3个实务
本章主要讲述HugePage对Oracle内存的影响。
第29章内存管理方式的巨变——内存文件系统
本章着重介绍Oracle 11g和内存文件系统的关系。
第30章永恒的主题——I/O(同步I/O、异步I/O、直接I/O)
本章从操作系统的角度诠释各种I/O,以及它们对性能的影响。
第31章理论奠基——RAC简介
本章用通俗易懂的语言介绍RAC,使你对RAC的架构有一个清晰的了解。
第32章 RAC的意义——负载均衡和失败转移
本章展示负载均衡和失败转移的场景。
第33章存储的主打曲——自动存储管理(ASM)含4个实务
本章着重介绍Oracle的存储管理——ASM。
第34章练兵场——RAC管理含1个实务
本章内容贴近生产环境,着重介绍RAC管理的各种实战。
本书的实务速查目录电子版的下载地址是http://space.itpub.net/?13804621或www.broadview.com.cn。查询电子版实务目录,再翻阅本书内容,真正做到遇到问题速查解决。
本书的使用
本书的学习流程如下图所示。
本书的符号说明
〖Environment(环境)〗:对数据库环境和操作系统环境进行简要描述。
〖Symptom(现象)〗:对问题产生时的现象进行描述。
〖Cause(原因)〗:解释问题产生的原因。
〖Action(方法)〗:描述问题的解决方法和步骤。
2013年3月