oracle数据库精讲与疑难解析
❶ Oracle数据库精讲与疑难解析的介绍
本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的导入导出、备份与恢复、模式对象的管理以及应用程序开发等相关知识。本书旨在向读者解答使用Oracle中遇到的疑难问题,并展示管理Oracle的大量技巧。作者赵振平。
❷ Oracle数据库精讲与疑难解析的图书目录
第1篇 创建属于自己的Oracle数据库
第1章 认识Oracle的世界——Oracle的体系结构
1.1 Oracle的发家史
1.2 数据库
1.3 数据库管理系统(DBMS)
1.4 关系数据库的概念(RDBMS)
1.4.1 关系数据库模型
1.4.2 表
1.5 Oracle的总体框架结构
1.5.1 Oracle实例(Oracle Instance)
1.5.2 Oracle的存储结构
1.6 数据字典(Data Dictionary)
1.6.1 数据字典概述
1.6.2 数据字典的结构
1.6.3 数据字典的使用
第2章 迈出第1步——Oracle的安装/卸载
2.1 Oracle的安装
2.1.1 Oracle安装的几个概念
2.1.2 Oracle g(10.1)的安装——Windows篇
2.1.3 Oracle g的安装——Solaris篇
2.1.4 Oracle安装疑难解析
2.2 Oracle的卸载
2.2.1 Oracle完全卸载——Windows篇
2.2.2 Oracle完全卸载——UNIX篇
第3章 有米之炊——数据库的创建与删除
3.1 创建数据库
3.1.1 数据库创建概述
3.1.2 Solaris下用DBCA创建数据库
3.1.3 DIY——Solaris下手工创建数据库
3.1.4 数据库创建疑难解析
3.2 删除数据库
3.2.1 数据库删除概述
3.2.2 数据库删除——手工篇
3.2.3 数据库删除——DBCA篇
第2篇 网 络 管 理
第4章 Oracle网络管理并不难
4.1 Oracle网络体系结构
4.1.1 Oracle应用的几种网络结构
4.1.2 Oracle Net
4.1.3 OSI模型
4.1.4 Oracle Net的堆栈结构
4.1.5 Oracle监听器
4.1.6 连接描述符(connect identifier)
4.1.7 网络服务名(Net Service Name)
4.1.8 命名方法
4.1.9 配置Oracle网络的工具
4.2 Oracle网络管理
4.2.1 Oracle网络服务器端配置
4.2.2 Oracle网络客户端配置
4.3 Oracle网络管理疑难解析
4.3.1 Oracle网络服务器端配置疑难解析
4.3.2 Oracle网络客户端配置疑难解析
4.3.3 Oracle网络与防火墙(Firewall)
第3篇 系 统 管 理
第5章 系统管家婆——SQL*Plus的使用
5.1 系统管理工具SQL*Plus
5.2 SQL缓冲区(SQL Buffer)
5.3 SQL*Plus的环境配置
5.3.1 SQL*Plus的环境变量
5.3.2 SQL*Plus站点配置文件(Site Profile)
5.3.3 SQL*Plus用户配置文件(User Profile)
5.4 SQL*Plus的启动
5.5 SQL*Plus专有命令介绍
5.5.1 登录,注销命令
5.5.2 编辑命令
5.5.3 其他有用的SQL*Plus命令
5.6 SQL*Plus 与疑难解析
第6章 有始有终——数据库的启动与关闭
6.1 数据库启动
6.1.1 数据库启动原理
6.1.2 数据库启动
6.1.3 数据库启动疑难解析
6.2 数据库关闭
6.2.1 数据库关闭原理
6.2.2 数据库的关闭(SHUTDOWN)
6.2.3 数据库关闭疑难解析
第7章 理清两个模式问题——专有/共享服务器模式
7.1 理解专有服务器模式(Dedicated Server Mode)
7.2 共享服务器模式(Shared Server Mode)原理
7.2.1 共享服务器模式(Shared Server Mode)的架构
7.2.2 监听器和调度进程的关系
7.2.3 请求队列(Request Queue)/响应队列(Response Queue)
7.2.4 调度进程(Dispatcher Processes,Dnnn)
7.2.5 共享服务器进程(Shared Server Processes,Snnn)
7.3 共享服务器模式(Shared Server Mode)
7.4 共享服务器模式(Shared Server Mode)疑难解析
第8章 掌握两个管理问题——表空间和数据文件的管理
8.1 数据库存储结构
8.1.1 物理结构
8.1.2 逻辑结构
8.2 深刻理解表空间
8.2.1 大文件表空间
8.2.2 系统表空间
8.2.3 辅助表空间
8.2.4 回滚表空间(Undo Tablespace)
8.2.5 临时表空间
8.2.6 表空间中区的管理方式
8.2.7 表空间中段的管理方式
8.2.8 非标准块表空间
8.2.9 表空间的离线(Offline)与在线(Online)
8.2.10 只读表空间(Read-Only Tablespace)
8.3 深刻理解数据文件
8.3.1 数据文件的内容
8.3.2 数据文件的尺寸(Size)
8.3.3 离线数据文件
8.3.4 临时数据文件(Temporary Datafiles)
8.4 表空间管理 与疑难解析
8.4.1 永久表空间管理
8.4.2 临时表空间管理 与疑难解析
8.4.3 回滚表空间管理 与疑难解析
8.5 数据文件管理 与疑难解析
8.5.1 数据文件管理
8.5.2 数据文件管理疑难解析
第9章 进程管理
9.1 Oracle进程简介
9.2 用户进程
9.3 Oracle进程
9.3.1 服务器进程
9.3.2 后台进程
9.4 进程综合管理 与疑难解析
9.5 会话管理 与疑难解析
第10章 内存管理
10.1 Oracle内存结构简介
10.2 系统全局区
10.3 SGA自动管理
10.4 SGA组成介绍
10.4.1 数据库高速缓冲区
10.4.2 日志缓冲区
10.4.3 共享池
10.4.4 大池
10.4.5 Java池
10.4.6 流池
10.5 程序全局区
10.6 内存管理 与疑难解析
第11章 用户管理
11.1 用户验证
11.1.1 口令认证
11.1.2 外部认证
11.1.3 全局认证
11.2 Oracle的安全大门——权限(Privileges)
11.2.1 系统权限
11.2.2 对象权限
11.3 使权限管理变得更加容易——角色(Role)
11.4 限制用户的资源消耗——资源限制文件(Profile)
11.4.1 资源限制的级别
11.4.2 限制资源的参数
11.5 用户与权限管理 与疑难解析
11.5.1 用户管理 与疑难解析
11.5.2 权限管理 与疑难解析
11.5.3 角色管理 与疑难解析
11.5.4 资源限制文件管理 与疑难解析
第4篇 移动你的数据库
第12章 数据导出
12.1 数据导出方法介绍
12.1.1 Oracle最新导出工具——Data Pump Export
12.1.2 Oracle原来的导出工具——Export
12.2 数据导出
12.3 数据导出疑难解析
第13章 数据导入
13.1 数据导入方法介绍
13.1.1 Oracle最新导入工具——Data Pump Import
13.1.2 Oracle以前的导入方法——Import
13.2 数据导入
13.3 数据导入疑难解析
第5篇 Oracle文件管理
第14章 重中之重——控制文件的管理
14.1 控制文件的概念
14.2 控制文件管理 与疑难解析
第15章 成为数据库的最高统治者——口令文件(Password File)管理
15.1 超级用户权限(SYSDBA、SYSOPER)介绍
15.2 口令文件的基本概念
15.3 启用口令文件认证
15.4 口令文件管理 与疑难解析
第16章 联机日志文件管理
16.1 联机日志文件的概念
16.1.1 联机日志文件的内容
16.1.2 联机日志文件的循环利用
16.2 联机日志文件管理 与疑难解析
第17章 参数文件(PFILE/SPFILE)管理
17.1 参数文件的基本概念
17.2 初始化参数文件
17.3 服务器参数文件
17.4 初始化参数的修改
17.5 参数管理 与疑难解析
第6篇 Oracle高级专题
第18章 全球应用——分布式数据库疑难攻略
18.1 分布式数据库系统的概念
18.1.1 同构分布式数据库系统
18.1.2 异构分布式数据库系统
18.1.3 数据库链接(Database Link)
18.2 分布式数据库管理 与疑难解析
第19章 并不陌生的问题——裸设备
19.1 裸设备的概念
19.2 裸设备管理 与疑难解析
第7篇 数据库备份/恢复
第20章 备份/恢复之基石——归档(Archivelog)管理
20.1 归档的基本概念
20.1.1 非归档模式
20.1.2 归档模式
20.1.3 归档路径
20.2 归档管理 与疑难解析
第21章 必行之举——数据库备份
21.1 理解数据库备份
21.1.1 数据库失败的种类
21.1.2 备份和恢复的解决方案
21.1.3 备份和恢复的物理结构
21.1.4 备份的类型
21.1.5 执行用户管理的备份
21.2 恢复管理器(RMAN)
21.2.1 通道
21.2.2 备份集的维护
21.2.3 RMAN资料库
21.2.4 RMAN的使用
21.3 数据库备份 与疑难解析
21.4 恢复目录管理 与疑难解析
第22章 失而复得——数据库恢复
22.1 数据库恢复
22.1.1 实例恢复
22.1.2 介质恢复
22.1.3 用户错误(User Error)的恢复
22.2 数据库闪回(Flashback Database)
22.3 用户管理的恢复(User-managed Recovery)
22.4 联机日志文件丢失的恢复
22.5 控制文件损坏的恢复
22.6 数据文件损坏的恢复
22.7 表的恢复(用户错误的恢复)
第8篇 Oracle程序设计
第23章 数据库通用语言——SQL语句
23.1 结构化查询语言简介
23.2 SELECT语句
23.2.1 理解SELECT 语句
23.2.2 SELECT语句使用 与疑难解析
23.3 INSERT语句
23.3.1 理解INSERT语句
23.3.2 INSERT语句使用 与疑难解析
23.4 UPDATE语句
23.4.1 理解UPDATE语句
23.4.2 UPDATE语句使用 与疑难解析
23.5 DELETE语句
23.5.1 理解DELETE语句
23.5.2 DELETE语句的使用
23.6 SQL语句中,集合函数使用 与疑难解析
第24章 模式对象(Schema Object)的管理
24.1 模式(Schema)的概念
24.2 模式对象管理
24.2.1 表(Table)
24.2.2 索引(Index)
24.2.3 外部表(External Table)
24.2.4 临时表(Temporary Table)
24.2.5 分区表(Partition Table)
24.2.6 聚簇(Cluster)
24.2.7 索引组织表(Index-Organized Table,IOT)
24.2.8 视图
24.2.9 同义词
24.2.10 序列
第25章 PL/SQL应用程序开发
25.1 PL/SQL简述
25.1.1 PL/SQL块结构
25.1.2 数据类型
25.1.3 运算符
25.1.4 PL/SQL语句控制结构
25.2 存储过程(Stored Procere)
25.2.1 存储过程的基本原理
25.2.2 存储过程管理 与疑难解析
25.3 函数(Function)
25.3.1 函数的基本原理
25.3.2 函数的管理 与疑难解析
25.4 包
25.4.1 包的基本原理
25.4.2 包管理 与疑难解析
25.5 触发器
25.5.1 触发器的基本原理
25.5.2 触发器管理 与疑难解析
25.6 游标
25.6.1 游标的基本原理
25.6.2 游标管理 与疑难解析
速查目录
第2章 迈出第1步——Oracle的安装/卸载
第3章 有米之炊——数据库的创建与删除
第4章 Oracle网络管理并不难
第5章 系统管家婆——SQL*Plus的使用 实务
第6章 有始有终——数据库的启动与关闭
第7章 理清两个模式问题——专有/共享服务器模式
第8章 掌握两个管理问题——表空间和数据文件的管理
第9章 进程管理 实务
第10章 内存管理 实务
第11章 用户管理 实务
第12章 数据导出 实务
第13章 数据导入 实务
第14章 重中之重——控制文件的管理
第15章 成为数据库的最高统治者——口令文件(Password File)管理
第16章 联机日志文件管理 实务
第17章 参数文件(PFILE/SPFILE)管理
第18章 全球应用——分布式数据库疑难攻略 实务
第19章 并不陌生的问题——裸设备 实务
第20章 备份/恢复之基石——归档(Archivelog)管理 实务
第21章 必行之举——数据库备份
第22章 失而复得——数据库恢复
第23章 数据库通用语言——SQL语句
第24章 模式对象(Schema Object)的管理
第25章 PL/SQL应用程序开发 实务
❸ 【基于ORACLE数据库的SQL语句优化分析】 数据库查询语句的优化
【摘要】随着数据库应用范围及规模的不断扩大,数据库的性能问题逐渐显现,优化数据库有助于维持系统的稳定性以及运行的高效性。本文主要依据笔者在实际工作中的精坦敏拍英,对SQL语句优化的目的、SQL语句优化技术及原则进行全面分析和阐述。
【关键词】ORACLE数据库;SQL语句;优化
1前言
随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。作为信息系统管理的核心,数据库的主要操作就是查询,数据库的应用效率在很大程度上是由查询速度决定的,特别是对于规模较大的数据库而言,查询速度十分关键。查询速度在SQL语句中占有很大比重,所以,通过对查询语句进行优化有助于促进应用系统性能及效率的进一步提升。
2SQL语句优化分析
2.1SQL语句优化的目的
对于一个数据库而言,在确保设计无误的前提下,要想避免出现性能问题必须确保其拥有合理的SQL语句拿唤结构。最简单的数据库寻找数据路径是对SQL语句进行调整,ORACLE数据库性能提升的主要途径就是对SQL语句进行适当的调整。从本质上讲,SQL语句优化就是确保所使用的语句可以被优化器识别,对索引进行有效利用以便控制表扫描的I/O次数,有效防止出现表搜索。用高性能的SQL语句替代低性能的SQL语句,确定最佳的数据查找路径,尽可能使CPU时间与I/O时间保持平衡是进行优化的主要目的。在对SQL语句进行优化的过程中,以系统需求为依据确定最有可能实现性能提升的语句并进行优化。
2.2SQL语句优化技术及原则
当数据量积累到一定程度之后,对于数据库全表SQL语句进行一次扫描,若查询策略较好,一般只用几秒钟,但如果SQL语句性能较低,就需要用几分钟甚至更多时间。从这点不难看出,SQL语句性能对于查询速度具有极大的影响,所以,对于应用系统而言,不仅能满足功能的实现,还要保证SQL语句的质量。
(1)采取适宜的索引。为达到优化查询的目的,一项重要工作就是确定相适应的索引,并严格依照原则加以使用,与此同时,为有效控制I/O竞争,不可以在同一个磁盘中同时建立索引和用户表空间。
语句1:SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE CUS_NO NOT IN
(SELECT CUS_NO FROM SERVICE);
语句2: SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE NOT EXISTS
(SELECT * FROM SERVICE WHERE SERVICE.CUS_NO=CUSTOMER.CUS_NO);
上述两个语句可以达到一致的查询结果,对二者进行对比,当执行语句1时,由于ORACLE未利用CUSTOMER 表上CUS_NO索引,所以就会扫描整表,在执行语句2的过让羡程中,ORACLE所扫描的只是CUSTOMER 表子查询中的联合查询,并且使用了CUS_NO索引,因此,在执行效率方面明显优于前者。
(2)避免在SELECT子句中出现“*”。ORACLE在进行解析时,需要按照一定顺序对“*”进行转换,该项转换工作的进行需要对数据库的数据字典进行查询,势必需要花费较多的时间,这样就会导致较低的效率,所以,要避免在SELECT子句中出现“*”。
(3)如果必要可以利用COMMIT提交事务。ORACLE能够自动提交DDL语句,而诸如DML等类型的语句的提交则是通过手动方式或者回滚事务实现的。在编写应用程序的过程中,在操作诸如insert、delete以及update 等较为复杂的语境的时候,利用COMMIT提交事务可以讲会话中持有的锁加以释放,将存在于缓存中的未经修改的数据块进行清除,进而将系统资源予以释放,促进系统性能的进一步提升,因此,如果有必要,可以利用COMMIT对相关事务进行提交。
(4)联合查询连接顺序的确定。如果查询操作涉及到多个表,基础表应当是交叉表,所谓交叉表具体是指被其他表引用的表。连接执行效果在很大程度上受到FROM语句中表的顺序的影响,对于FROM中所包含的表,ORACLE解析器进行处理的顺序是由右至左,SQL语句中所选择的基础表会因优化器的不同而有所区别,在使用CBO的情况下,优化器会对SQL语句中各个表的物理大小以及索引状态进行检查,在此基础上确定一个花费最小的执行路径;在使用RBO的情况下,如果全部的连接条件均有索引与之相对应,那么,FROM子句中位置最后面的表就是基础表。
(5)IN用EXISTS取代。在对数个基础表查询过程中,一般需要进行表的连接。因为利用IN的子查询过程中,ORACLE的扫描对象是全表,因此,出于提高查询效率目的的考虑,应当将IN用EXISTS取代。
(6)在索引列中不使用计算。当通过对函数进行引用在WHERE子句中进行计算的时候,假如索引列只是函数的一部分,优化器就会针对全表进行扫描,而不会使用索引,所以,在索引列中不能使用函数。
3结语
综上所述,随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。在信息量迅速激增的形势下,数据库优化调整成为当前所面临的一大关键性问题,特别是对规模较大的数据库而言,及时进行优化的意义更加倍重大。对于数据库的运行性能而言,最主要的影响因素主要体现在以下几点:数据库系统架构的设计是否合理,资源配置是否科学以及SQL语句编写效率等。笔者从事的是电信企业的运营分析工作,每天都要从数据库取各种数据,可以说是离不开数据库,所以在实践中,我觉得严格遵守SQL语句优化原则及方法,并在实践中及时总结经验教训,可以实现对系统响应时间的有效控制,促进运行效率的提升。
参考文献
[1] 许开宇,胡文骅. 如何提高ORACLE数据库应用程序的性能[J]. 计算机应用与软件. 2002(10)
[2] 郑耀,吴建岚. 基于Oracle数据库的语句优化策略[J]. 信息与电脑(理论版). 2011(07)
[3] 高攀,施蔚然. 基于Oracle数据库的SQL语句优化[J]. 电脑编程技巧与维护. 2010(22)
[4] 钟小权,叶猛. Oracle数据库的SQL语句优化[J]. 计算机与现代化. 2011(03)
作者简介:
王勇军,男,(1981.1-),吉林通化人,就职于中国联合网络通信有限公司长春市分公司,通信工程师,本科,研究方向:SQL使用
(作者单位:中国联合网络通信有限公司长春市分公司)