10G网络

2024-06-20

10G网络(精选7篇)

10G网络 篇1

近两年随着三网融合的推动, 宽带网络对用户来说不仅仅是上网、打电话等基本功能, 还包括有视频点播、高清IPTV、家庭无线覆盖等新业务的应用, 未来物联网的发展也离不开宽带网络的支撑。新业务所需的带宽将超过现有带宽的数倍, 预计在未来2-3年内, 用户接入带宽20M甚至50M乃至100M将会成为主流。GPON的下行带宽为2.5G, 虽然是EPON的2倍, 但仍然只能满足用户短期内的带宽需求。从长远来看, PON网络迈向10G的趋势不可逆转。

1 10G EPON提升FTTB网络品质

自2007年以来, 国内已经建设了数千万线的FTTB, 其中大部分都是近2年内完成的改造项目, 用户铜缆距离已经缩短到500米到1000米, 具备通过10G EPON建设进一步提升带宽的基础。

从国内宽带的发展历程来看, 虽然FTTH是接入网发展的终极目标, 但是随着FTTH建设的深入, 我们发现光纤到户将会对我们传统的建设和运维模式带来巨大的变革, 而且对于用户的使用习惯也会产生很大挑战, FTTH的建设将会是一个长期的过程, 不可能一蹴而就。如何利用现有的FTTB网络来提升接入网带宽, 是当前所需面临的重要问题。

对于10G EPON, 无须改变原FTTB网络的光缆拓扑结构和铜缆拓扑结构, 只需把原EPON的OLT下行EPON线卡和ONU的上行EPON线卡分别更换为10G EPON线卡即可, 完全保持原组网拓扑结构, 无需更改原来的铜缆和光缆网络拓扑。通过这种升级方式, 可实现EPON网络主干带宽提速10倍, 结合用户末端已经实施的FE、ADSL2+、VDSL2等高带宽接入手段, 迅速完成接入网带宽提速。FTTB网络升级方案有效避免了向FTTH网络演进实施难度和高成本弊端, 同时该方案配合LAN上行家庭网关, 可提高家庭网络的宽带速率, 满足更多的业务需求。如图1所示。

采用10G EPON进行网络建设既可以有效保护原由投资, 继承原有的建设和运维模式, 保持用户的使用习惯;又能够在短时间内迅速提高用户有效带宽, 达到运营商的宽带建设目标, 兼顾减少建设投资, 得其利却无其弊, 不失为另一种发展方向。

2 10G EPON比10G GPON更具优势

10G EPON的标准已经颁布2年, 远远领先于10G GPON, 产业发展成熟度要领先1.5~2年。同时10G EPON更注重设备的互通性研究, IEEE在10G EPON标准颁布后, 迅速成立了P1904.1 (SIEPON) 工作组, 致力于制订10G EPON系统层面的互联互通标准, 这也是IEEE首次成立标准工作组来制订系统级技术标准。根据SIEPON工作组计划, 标准将于2012年初正式颁布。

10G GPON标准有两个阶段, XGPON1和XGP O N2。目前XGP O N1已经正式发布, XGPON2由于不考虑和现网ODN的共存, 将很难实现网络平滑升级。从芯片的支持情况看, 目前主流芯片厂家还未开始XGPON1芯片的开发, 设备厂家主要采用自己开发的芯片来实现, 这给XGPON1的互通也带来了一定的阻力, 因此近期XGPON1还不具备商用条件。10G EPON和10G GPON的对比见表1。

对EPON而言现有的OLT平台只需新增10G EPON板卡即可完成升级和扩容, 而10G GPON则需要增加内置或外置的WDM器件, 实现10G波长的复用, 同时此操作会中断业务, 造成不必要的投诉。另外, 10G EPON支持上下行速率均为10G的对称模型, 也支持非对称模式, 即10G速率下行和1G速率上行。10G EPON支持FTTH/FTTB混合组网, FTTH和FTTB可在同一ODN网络中共存, 用户可按需选择, 大大降低了运营商建设成本。如图2所示。

运维方面, EPON和10G EPON可在同一网管平台进行管理, 网管无需新建。同时自动开通, SN认证, 北向接口等功能和EPON一致, 现网版本无需升级, 真正做到1G/10G EPON同平台共管理。

GPON在国内大概有近2年的商用历程, 而EPON在国内已经成熟商用5年, EPON在国内现网占有率接近90%。因此从现网向10G演进, EPON更有基础。

3 10G EPON已具备商用条件

当前10G EPON产业链正逐步走向成熟, 国内已有3-4家光模块厂家可生产10G对称速率的光模块, 目前整体价格还是偏高。随着2011年底10G EPON的小规模商用, 光模块的价格有望大幅下降, 成本可控制在普通EPON光模块的1.5倍左右。PON芯片方面, 当前主流PON芯片厂家如Opulan、PMC、Cortina、Broadcom相继发布了FPGA方案的PON芯片, 其中Opulan已有基于ASIC方案的PON芯片。价格方面, 从目前的产业发展速度来看, 预计到2012年底10G EPON的价格相比EPON高5%-20%, 届时10G EPON将完全满足大规模商用的需求。

目前国内已有几十个10G EPON试点工程, 通过这些试点充分验证了10G EPON的成熟度, 预计今年下半年还将会有小规模应用, 2012年将实现10G EPON规模部署。

4 烽火通信10G EPON技术进展

烽火通信有近8年的EPON研发和工程实施经验, EPON设备成熟稳定, 技术积累深厚。烽火10G EPON在业界同样处于领先地位, 烽火参与了10G EPON (IEEE802.3av) 标准制定的各项工作, 公司外籍技术专家杜文 (Duane Remein) 曾任IEEE 802.3av标准的主编、现任SIEPON工作组 (负责制订10G EPON互通标准) 副主席, 曾代表烽火通信在历次IEEE会议上提交了大量重要提案, 为10G EPON的标准化做出了重要贡献。

烽火通信已经多次参与了运营商组织的10G EPON测试, 测试成绩优秀。2010年5月联通集团10G EPON系统测试, 烽火1:256对称速率10G EPON首次验证。2011年4月电信集团10G EPON测试, 单系统测试项目全部通过, 同时实现了和其他厂家系统之间的互通。

作为国内优秀的信息通信设备与网络解决方案提供商, 烽火通信始终致力于建设更优质的宽带网络, 更轻松便捷的运维管理系统, 与产业链上各方共筑宽带网络的美好明天!

摘要:本文结合我国目前宽带网络的实际情况, 通过分析对比10GEPON和GPON的参数指标, 说明了10GEPON的技术优势,

关键词:10G,EPON,FTTB,GPON,OLT,平台,宽带网络

光纤接入迈向10G时代 篇2

近年来, 在市场需求的推动下, 在技术演进的支撑下, GPON、EPON开始在全球范围内获得规模部署, 而10G PON技术的日渐成熟, 以及40G PON技术浮出水面, 推动光纤接入网技术向更高速率挺进。

x PON规模化部署

“宽带化”是网络接入技术发展的必然方向, 在大规模的“光进铜退”之后, 我国的光纤接入网建设实现了快速发展, 尤其是以GPON和EPON为代表的x PON网络的规模部署, 更是为光纤接入网的“宽带化”奠定了坚实基础。

带宽需求的快速增长, 促使我国的三大运营商纷纷加快了x PON网络的规模化部署。数据显示, 2011年, 中国电信PON设备集采达到了1900万线, 中国移动达到800万线, 而中国联通则高达2500万线。后续, 随着“宽带中国”战略的日渐清晰以及宽带提速步伐的加快, x PON网络规模化部署的范围和力度都将继续增大。

市场需求推动着技术进步, 而技术进步又同时会推动市场的发展。近几年, PON技术日趋成熟促使了PON设备成本的下降, 尤其是GPON设备成本的快速降低, 不仅改变了PON设备市场的竞争格局, 更为整个光纤接入市场发展注入了新的活力。

在过去的一段时间内, 业界关于GPON、EPON孰优孰劣的争论不休。从技术上看, GPON高分光比的特点能够更好地满足网络建设的需要;而从价格上看, EPON是更优选择, 并且在FTTB的模式下具有部署需要, 因此运营商往往面临着两难选择。从2009年开始, 这一局面正在改变, 随着GPON产业链的日渐成熟以及应用范围的不断扩大, GPON设备的价格出现了大幅下降, 甚至在2011年出现了与EPON不相上下的局面。

GPON设备性价比的提升, 极大地提升了自身的竞争力, 同时也间接促进了EPON设备性价比的提升, 从而实现整个PON设备市场整体性价比的提升, 有利于提高运营商建网积极性, 进一步推动我国光纤接入网“宽带化”的发展进程。

10G PON日趋成熟

虽然GPON和EPON的规模部署已经展开, 但是放眼未来的业务发展, 当IPTV、高清视频等大流量、高带宽的业务逐渐被消费者认可, 现有的光纤接入网络将无法满足运营商业务开展的需要。因此, 近几年, ITU-T、FSAN、IEEE等各大标准化组织开始下一代PON技术的研究工作。而随着10G PON标准和产业链的日渐成熟, 它已经进入了运营商的部署范畴。

从技术标准上看, 无论是10G GPON还是10G EPON的标准开发和制定工作都已经基本完成, 相应的标准框架已经形成, 后续各大标准组织只需要根据应用过程中产生的问题对现有标准进行修订和补充;从产业链上看, 10G PON也已经比较完善, 无论是在核心的芯片还是光器件以及系统设备上, 都得到了国际主流厂商的支持, 并且设备的成本正在不断下降。这意味着, 只要市场需求实现突破, 10G PON就能够在较短时间内实现较快部署。

面对未来业务发展需要, 我国的运营商开始考虑和尝试10G PON的部署, 在2011年, 中国的三大运营商都开展了10G PON技术的相关测试, 中国电信和中国联通还在一些区域实现了10G PON的小规模部署。而同样出于未来网络演进的需要, 广电运营商也正在积极关注10G PON技术的发展。

10G网络 篇3

在维护设备的过程中, 我们常常会涉及到对Oracle数据库的一些基本操作。然而, 当我们想更深入了解它时, Oracle的复杂性以及UNIX系统人机界面的单调性却总是令我们感到难以上手。本文将介绍如何通过Oracle企业管理器对数据库进行监控与操作以及如何在UNIX环境下配置使用Oracle10g企业管理器。

1 OEM简介

1.1 OEM概述

Oracle Enterprise Manager (Oracle企业管理器, 简称OEM) 是通过一组Oracle程序, 为管理分布式环境提供管理服务。它为管理员提供了一个基于Internet标准的管理框架, 一个稳定的控制台程序, 一组实用的管理工具。

OEM控制台与每一个服务器上的智能化代理 (Intelligent Agent) 相对应。智能化代理能够监控系统的特定事件并且执行任务 (作业) 就象你在系统本地一样。事件和作业的结果会被送回控制台, 这样DBA就可以从任何可以访问Web应用的位置通过OEM对数据库和其他服务进行各种管理和监控操作。

1.2 OEM的功能

实现对Oracle运行环境的完全管理, 包括Oracle数据库、Oracle应用服务器、HTTP服务器等的管理;

实现对单个Oracle数据库的本地管理, 包括系统监控、性能诊断与优化、系统维护、对象管理、存储管理、安全管理等;

实现对多个Oracle数据库的集中管理。

2 OEM的应用

2.1 OEM的用户与登录

OEM管理员是可以登录到OEM控制台, 并执行设置封锁期、电子邮件通知调度、设置首选身份证明等管理任务的数据库用户。在默认情况下, 只有SYS, SYSTEM和SYSMAN三个数据库用户才能登录和使用OEM控制台。其中, SYSMAN用户是OEM控制台的超级用户, 是在安装OEM的过程中创建的, 用于执行系统配置、全局配置等任务。通常需要创建其他普通的OEM控制台管理员, 进行OEM控制台的日常管理和维护工作。

2.2 OEM的属性页

OEM登陆后即进入其主目录页面, 该页面用来显示数据库运行状态的信息。点击“性能”, 即进入“性能”属性页, 通过该页面可以实时监控数据库服务器运行状态, 提供系统运行参数。通过“管理”属性页, 可以配置和调整数据库的各个方面, 以提高性能和调整设置。通过“维护”属性页, 可以实现数据库的备份与恢复, 将数据导出到文件或从文件中导入数据, 将数据从文件加载到Oracle数据库中, 收集、估计和删除统计信息, 同时提高对数据库对象进行SQL查询的性能。

2.3 小结

通过以上的介绍, 我们不难看出OEM具有非常强大的功能和极为友好的人机交互界面。利用OEM, 在数据库维护过程中, 我们可以以极低的成本和极小的复杂性换取高可用性、可伸缩性和极佳的服务性能;在数据库的查询操作中, 我们可以很直观的看到数据库中所有的表、视图、索引等, 以及其中所包含的所有字段, 操作简便, 结果显示清晰明了, 格式化效果好。所以, OEM为我们学习、维护Oracle数据库提供了有力的技术支持。

3 OEM的配置

在人机界面以命令行方式为主的UNIX系统环境下, 单调、抽象的操作方式无疑给我们对数据库的维护增添了不少困难, 而集成了强大功能的OEM就是我们的“答案”。这里我们结合OEM的三层框架结构, 总结一下在UNIX环境下OEM的配置过程。

3.1 三层框架结构

Oracle企业管理器的不同于以往的客户-服务器结构, 具有三层框架结构, 即客户层、管理服务层和节点层。

客户层

客户层又可称为应用层或者交互层, 相当于客户端。在这一层上可运行控制台程序、管理工具以及各种客户应用程序, 并且可以有多个控制台程序同时运行。具有图形界面的控制台程序极大的方便了数据库管理员。

管理服务层

管理服务层由管理服务器和资料档案库组成。其中Oracle管理服务器是整个企业管理器三层框架结构的核心, 由它来提供管理的账户、处理进程, 以及作业、事件等管理功能。资料档案库主要是用来存放所有的系统信息、应用程序信息、被管理节点的状态信息, 以及系统管理工具包的信息。Oracle管理服务器有一项最重要的职能就是把一个任务分配给多个智能代理来执行。

结点层

结点层由若干个结点组成, 一个结点可以是一个数据库, 还可以是其他类型的对象或者目标。在各个结点上都运行有智能代理, 负责该结点的本地处理及监控。智能代理的运行独立于数据库及结点中的其他对象或目标, 独立于控制台, 独立于管理应用程序, 并且独立于Oracle管理服务器。这样做的一个好处就是:当整个系统其他部分变得不可用时, 智能代理还能够独立的运行。

3.2 在UNIX下配置OEM

3.2.1 配置节点层

为了管理结点和结点上的oracle服务, 必须在结点上配置并运行一个智能代理。

(1) 运行root.sh:

每一次oracle安装之后, 都必须运行root.sh脚本。该脚本设置了智能代理的执行文件的访问权限。此脚本还创建或更新智能代理所用来确定是否系统上的所有数据库都可以发现的oratab文件。验证oratab文件列出了系统中的每个数据库, 并且遵循了正确的语法。root.sh shell脚本文件应当已经写下了Oracle Home和SID的值。

(2) 检查dbsnmp的文件访问权限:

为了验证root.sh已被成功的执行了, 检查dbsnmp的文件访问权限:

列出关于dbsnmp的相关详细信息:

如果dbsnmp的所有者是root, 访问权限是-rwsr-xr-x, 说明root.sh被成功的执行了。

(3) 在Unix上启动智能代理:

在UNIX系统上, 智能代理是由"lsnrctl"程序来启动和停止dbsnmp进程的。

3.2.2 配置Oracle管理服务层

Oracle管理服务器 (OMS) 提供了在EM客户端和被管理结点之间的集中控制。OMS要有一个EM库 (Repository) 来存储所有的系统数据, 应用数据和环境中被管理结点的状态。

(1) 检测是否启动OEM服务

这里显示警告, 提示需要添加或者重新建立库。我们可以通过运行企业管理器配置助理来完成创建。

3.2.3 配置客户层

从Oracle10g开始, Oracle极大的增强了OEM工具, 并通过服务器端进行EM工具全面展现。在10g中, 客户端可以不必安装任何Oracle客户端工具, 仅凭浏览器就可以调用强大的EM工具。

(1) 启动EM工具控制台

在Server端, 可以通过如下命令启动EM工具控制台:

(2) 访问EM工具控制台

启动完成后, 我们就可以通过在浏览器端输入相应的url访问EM工具控制台了。

4 结束语

10G网络 篇4

1 数据库性能的评价依据

优化数据库系统的性能, 通常是采取相应措施, 既减少对磁盘的访问而又能获得用户所需要的相关数据, 以达到降低系统对用户的响应时间、提高数据吞吐量、提升数据库的可用性的目标。评价一个数据库的性能是否优异的一些通用准则如下所述。

1.1 系统响应时间

系统响应时间是指从用户按下提交按钮到数据显示在输出设备上所花费的时间。系统响应时间是评价数据库性能的一项重要指标, 很多客户对系统响应时间都有严格的要求, 因此缩短系统响应时间非常重要。

1.2 数据加载时间

为满足加载数据的时间需求, 管理员可调整计算机的I/O子系统缩短数据加载时间, 而系统其他方面的性能会由此受到影响。此时可分别调整系统的数据库运行性能和数据加载性能, 将影响减至最小。

1.3 系统实际吞吐量

吞吐量是指在给定单位时间内传送的位 (bit) 数量。实际吞吐量是指在给定间隔内接收到的用户数据量减去必须重新传输的字节数后的吞吐量。提高系统吞吐量的方法为:1) 减少系统总的响应时间;2) 减少服务时间。

1.4 对用户支持能力

另一个评价系统性能的重要因素是系统对用户的支持能力。要使系统能支持更多的用户, 必须对系统在相关方面进行配置和调整。

2 影响数据库系统性能的主要因素

通过对数据库性能评价依据的分析, 发现很多因素都会影响Oracle 10g的性能。比如:数据库服务器、CPU、内存、网络、I/O、应用程序性能以及由用户所产生的数据库负载等。

下面列出的是一些导致系统性能下降的主要因素:

1) 数据库服务器:数据库服务器由数据库和实例组成, 是整个管理系统的核心。数据库的主要功能是保存数据, 其存储结构分为逻辑存储结构和物理存储结构。物理存储结构描述Oracle外部及其所处的操作系统环境中文件组织和管理数据的方式, 逻辑存储结构描述Oracle内部组织和管理数据的方式。

Oracle实例是指数据库服务器的内存及相关后台进程, 又称为Oracle数据库引擎。启动数据库后, 由实例来访问和控制磁盘中的数据文件。实例由SGA (System Global Area, 系统全局区) 和后台处理进程组成。

2) CPU:如某个数据库事务或其它应用占用了CPU资源, 其它数据库事务运行将可能会停滞, 从而延迟对数据库的响应。

3) 操作系统:操作系统控制和管理各种资源, 合理组织计算机系统的工作流程, 帮助用户合理利用和分配资源, 为用户提供方便的工作环境, 为多个用户提供安全高效的计算机资源共享。

4) 网络系统:系统的吞吐量和响应时间过长, 有可能是网络方面存在问题。数据库服务器与应用程序之间的交互是通过网络来进行的。在整个网络系统中, 影响较大的是网络I/O。I/O子系统如果超载, 系统输入输出量加大, 系统获得数据的等待时间延长, 从而影响整个系统的运行性能。

5) 实现应用程序:对数据库性能影响比较大的因素还包括实现应用程序的方法。如连接数据库的方式、SQL语句的灵活运用、使用数据库对象的情况以及数据库端程序设计等。

3 数据库系统性能调配优化的方法

通过对影响Oracle数据库性能的因素进行分析, 我们可以从以下几个方面对数据库系统进行配置, 以调整和优化系统的运行性能。

3.1 合理设计数据库

数据库的设计在系统设计中是一个非常重要的环节, 从根本上来说就是要实现数据的共享和安全存取。一个优秀的数据库设计必须要实现用户对于数据的要求, 而同时又要实现对数据的关联性、安全性、可移植性和可扩容性的要求等。

1) 明确系统所属的数据库类型。

在进行数据库设计时, 先要分清楚数据库所属的类型, 常见的有在线分析系统 (OLAP) 和在线事务处理系统 (OLTP) 。数据库的内存效率, 内存各种指标的命中率、并发操作控制等, 是在设计OLTP系统时特别要注意的。而数据分析、SQL执行时间、磁盘I/O及强调分区等。在设计OLAP系统的设计时要特别强调。现在购买火车票使用的网上订票系统, 就是一个典型的OLTP系统。如并发操作考虑不充分, 当遇到春节期间在线购票的用户太多时, 有可能导致系统近于瘫痪。

根据自己的经验设计数据库, 将系统资源分配给相关的用户, 尽量限制应用程序的用户数量, 对系统资源的使用情况密切监控, 了解用户所使用的资源数, 重视监控系统, 对系统调整及其结果做好详细记录。

2) 创建适用的数据文件。

每个Oracle数据库都有一个或多个数据文件, 数据库的主要作用是来保存在这些相关的数据文件。通过使用命令:select status, bytes, name from v$datafile, 可以查看数据文件的存放位置、大小和状态。OLTP系统是SQL语句提交和数据块变化都非常频繁的系统。为减少重复的SQL解析和物理I/O, 可采用变量绑定技术实现SQL的重用, 同时让数据块尽可能的保存在内存中, 以改善和提高数据库的性能。

3) 正确使用索引。

正确创建和正确使用索引具有很多优势。如在快速存取数据、实施数据的唯一性和参照完整性、多表检索查询数据时, 利用索引可以减少排序和分组的时间, 减少系统开销。对于Oracle系统来讲, 并不是创建了索引就一定会使用索引, 当Oracle自动搜集了表和索引的统计信息之后, 才会确定是否要使用索引, 只有高选择性的索引才会比全表扫描更有效率。因此, 对于规模比较小的表、频繁进行更新的表、在查询中很少用到的列等, 建议不要创建索引。

索引建立后会将占用磁盘空间, 当对数据进行插入、更新和删除等操作等操作后, 系统将重建索引, 延长了数据修改的时间, 所以, 应在需要的时候才创建索引, 在不需要索引时将其删除。适合建立索引的字段列一般为:主键列、表的外键、经常用于查询或多表连接的字段列、经常用于WHERE子句、ORDER BY子句、或GROUP BY子句的字段列等, 在这些字段列上创建索引, 会加快检索的速度。而对于在查询中很少使用的列、在表中具有较多重复值的字段列、数据需要频繁变更的字段列则不宜创建索引。因为在这类字段列上建立索引, 其检索性能会远远小于其修改性能, 得不偿失。

3.2 调整与优化内存管理

Oracle的内存结构包含两个部分:系统全局区 (SGA) 和程序全局区 (PGA) 。SGA主要包括了以下的数据结构:数据缓冲、重做日志缓冲、共享池、Java池、大池、流池、数据字典缓存及其他信息等, 这些部分的分配是否合理直接影响数据库的性能。

内存不足将减少数据的缓冲区空间, 影响系统访问最近存放的数据, 从而导致操作系统进行页面交换时频繁使用虚拟内存, 使计算机系统增加额外的I/O开销。

对那些支持大量连接的系统, 为保证计算机系统的可用资源能适用不同的用户对系统的资源需求, 要对内存做好详细计划, 严格控制与网络和连接用户有关的操作系统资源。

3.2.1 数据缓冲区

Oracle系统最近使用过的数据库数据块存放在数据缓冲区中。当用户下一次访问相同的数据时, 系统直接从数据缓冲区中读取数据返回给用户, 缩短查询时间。如果用户请求的数据不在数据缓冲区中, 则服务器进程要再次到数据文件中去读取数据给用户, 查询时间将延长。因此, 尽可能多的将用户请求数据保存在缓冲区中, 能较大的提高数据的操作性能。

许多大小相同的缓冲块组成了数据缓冲区。Oracle的数据缓冲区的大小直接由初始化参数文件中的db_cache_size参数决定。Oracle允许指定不同的数据块大小, 其中标准块的大小由db_block_size定义, 而非标准块的数据缓存区大小由db_nK_cache_size定义, 其中n为2、4、6、8、16或32。标准块和非标准块大小之和构成了数据缓冲区的实际大小。如, 假设在某个初始化参数文件中具有如下设置:

以上说明数据库标准块的大小为4KB, 具有标准块的大小的数据缓冲区为1024M, 除此之外还有块大小为2KB的数据缓冲256MB, 块大小为8KB的数据缓冲512MB。

使用较大的数据缓冲区, 可以提高数据库的访问性能。但数据缓冲区过大, 会给有限的系统物理内存带来压力, 数据库和操作系统其他方面的性能将受到影响。如果要查询数据缓冲区的大小, 可以使用具有DBA权限的用户按如下方法查看:SQL>show parameter db。

检查数据库缓冲区大小还可以通过查看数据缓冲区空闲率 (Free Ratio) 以及命中率 (Hit Ratio) 来实现。

1) 空闲率的检查方法

查询数据字典v$latch_children可以检测数据缓冲区是否有空闲, 得到的空闲冲突比例应该接近于0, 否则可以减少数据缓冲区大小。

2) 查询数据高速缓冲区的命中率的方法

计算公式:Hit Ratio=1- (physical reads/ (db block gets+consisten gets) ) 。

若命中率低可以加大INITXXX.ORA中DB_BLOCK_BUFFER的值。如果发现命中率低于90%, 则应该调整应用, 考虑是否增大数据缓冲区。

3.2.2 共享池

库缓冲区和数据字典缓冲区组成了系统的共享池, 可对SQL、PL/SQL程序进行语法分析、编译、执行。库缓冲主要用于存放已经解释并执行过的SQL语句和PL/SQL程序代码及其分析、执行计划等信息;数据字典缓存主要用于存放数据库对象表、索引、列定义以及用户权限等信息。必须合理设置共享池大小, 使共享池中保存较多的信息, 降低重复执行相同的SQL语句和PL/SQL程序的相同开销, 提高数据库的性能, 提高SQL或PL/SQL程序的执行效率。

共享池的大小由初始化参数shared_pool_size决定, 运行过程中使用alter system语句修改共享池的大小, 例如:SQL>alter sys-tem set shared_pool_size=20M;。

用以下方法查询共享池的大小:

可以通过共享池的空闲率、库缓存命中率以及数据字典缓存命中率来检查共享池设置是否合适。

1) 共享池内存空闲率

计算结果小于20%, 应该增大共享池的大小

2) 共享池命中率

Select sum (pinhits) /sum (pins) *100“hit radio”from v$librarycache;

如果共享池的命中率低于95%就要考虑调整应用 (通常是没应用bind var) 或者增加内存。

3) 库缓存命中率

Oracle文档对于数据库缓存命中率的定义为:

使用下列命令可以查询库缓存命中率。

库缓存命中率显示了对实际语句和PL/SQL对象的内存读操作所占的百分比, 库缓存命中率应该高于99%。

终端用户访问加速节点时, 如果该节点有缓存住了要被访问的数据时就叫做命中, 如果没有的话需要回原服务器取, 就是没有命中。取数据的过程与用户访问是同步进行的, 所以即使是重新取的新数据, 用户也不会感觉到有延时。命中率=命中数/ (命中数+没有命中数) , 缓存命中率是判断加速效果好坏的重要因素之一。

4) 数据字典缓存命中率

数据字典缓存命中率显示了对数据字典和其他对象的内存读操作所占的百分比, 其值应该高于90%, 否则需要调整共享池大小。使用下列命令查询数据字典缓存命中率。

select (1- (sum (getmisses) /sum (gets) ) ) *100"Hit Ratio"from v$rowcache;

from v$rowcache;

3.2.3 重做日志缓冲区

重做日志缓冲区用于缓存在对数据进行修改的操作过程中生成的重做记录, 当数据达到一定量时, 由日志写入进程LGWR写入重做日志文件。重做日志缓冲区的大小由log_buffer初始化参数指定, 该参数也可以在数据库运行过程中动态修改。重做日志缓冲区的大小对数据库的性能有很大影响。重做日志缓冲区过小, 会增加写盘的次数, 增加了系统的I/O负担。通常较大的重做日志缓冲区能够减少重做日志文件的I/O次数。

要查询重做日志缓冲区的大小, 可以用以下方法查询:

2) 查询数据字典v$parameter

如果日志缓冲区已满, 但还没有写入日志文件则日志写入处于等待状态即日志缓冲区写入失败。过多的日志写入失败说明日志缓冲区偏小, 影响数据库性能。

失败率的计算方法:

日志缓冲区的写入失败率应该接近于0, 如果失败率大于1%, 则说明日志缓冲区太小, 应该增加LOG-BUFFER的大小。

3.2.4 PGA程序全局区

PGA (Program Global Area程序全局区) 是一块包含有关单个服务器进程或单个后台进程的数据和控制信息的内存区域。PGA在创建进程时分配, 并在终止进程时回收, 不能共享。在专有服务器 (Dedicated Server) 模式下, Oracle会为每个会话启动一个Oracle进程;而在多线程服务 (Multi-Thread Server MTS) 模式下, 由多个会话共享通一个Oracle服务进程。PGA由chunk组成, 大小由pga_aggregate_target参数决定。用下列命令查看PGA的大小。

PGA的排序区设置是否合理对数据库性能有一定的影响。当对数据进行排序时, 数据库系统会将需要排序的数据保存到PGA程序缓存区中的一个排序区内, 然后在这个排序区内对这些数据进行排序。如数据排序与读取的操作都能够在内存中完成, 可在很大程度上提高数据库排序与访问的性能。若发现用户的很多操作都需要用到排序, 设置较大的排序区, 可以提高用户访问数据的效率。

排序区的大小占据PGA程序缓存取的大部分空间。在小型应用中, 数据库管理员可以直接采用其默认的值。在大型的应用中, 管理员需要手工调整这个排序区的大小, 以提高排序的性能。为了提高数据访问与排序的性能, 通过初始化参数SORT_AR-EA_SIZE在适当的情况下调整排序区的大小。

查询内存和磁盘排序命中率。

通常情况下, PGA内存排序率的值应该大于98%。即保证绝大多数的排序操作在内存中进行。否则, 就应该调整排序区大小, 即增加SORT-AREA-SIZE的大小。

3.3 磁盘I/O调整

磁盘I/O操作是数据库性能最重要的方面, 影响Oracle 10g数据库系统性能的主要因素中还有磁盘的I/O速度, 为了避免与I/O相关的性能瓶颈, 采用以下方法优化磁盘I/O。

1) 数据库的物理文件尽量分散到不同磁盘空间, 将数据文件放在独立磁盘上;

2) 为索引创建单独的表空间, 在不同磁盘中存储表数据和索引数据, 减少它们对磁盘存储空间的竞争;

3) 创建不同的表空间以存放不同的应用, 减少不同应用之间对磁盘的竞争;

4) 设置足够大的重做日志文件, 并且要存放在与数据文件不同的磁盘上, 减少日志文件对磁盘的竞争;

5) Oracle的文件和操作系统文件应尽可能地放在不同的磁盘上;

6) 创建专用的表空间和回滚段, 当系统操作出现失败时可以恢复数据;

7) 单独创建表空间存放用户数据, 用户数据不要与系统表空间存放在同一磁盘;

8) 为方便排序操作创建一个临时表空间, 在减少在进行存储空间分配和空间回收时产生的碎片;

9) 一般的应用不要占用系统表空间, 每个应用最好建立一个独立的表空间, 减少普通应用与数据库系统的磁盘竞争;

10) 管理表空间尽量采用本地管理方式, 而存储空间的分配可以自动管理。

3.4 碎片整理

在数据库系统的运行过程中, 数据的存取操作不断进行, 数据库将寻找自由范围最大的表空间来存放数据, 从而形成越来越多的较小的、离散的自由空间, 即生成磁盘碎片。碎片整理就成为了数据库日常维护中的重要的工作环节。一般将碎片分为三级:表空间级、表级、索引级。

表空间级碎片的出现主要是由于DROP TABLE和TRUNCATE等操作引起的。由于一个表空间中的表的EXTENT大小不同, 因此表空间使用一段时间后, 表空间的使用就出现了不连续, 在EXTENT之间会出现一些“洞”, 这种情况称为表空间碎片。设置所有的EXTENT都一样大, 不会出现表空间碎片。

表级碎片是一些零散的存储空间。当对一个表进行删除操作时, 被删除的数据释放出的存储空间不会被插入操作立即重用, 这样就形成了表级碎片。当表级碎片过多时, 导致查询响应时间变慢、产生大量行迁移、行链接导致数据存储不连续、浪费存储空间等。整理表碎片可采用如下步骤:

1) 整理表

SQL>alter table TABLE_NAME shrink space compact;

2) 重置高水位

SQL>alter table TABLE_NAME shrink space;

shrink的优势在于可以进行在线操作, 而且不需要重建索引。

3) 索引和表数据是级联关系的。当表中有建有太多索引, 进行表中数据删除操作的时候, 索引值将频繁变化, 索引条目也会被自动删除, 这样在index leafblock就会产生碎片。当索引的碎片过多时, 会影响执行查询的速度。在OLTP系统中有大量更新的表上建议不要创建大量的索引, 低基数列上也不要创建索引。为快速查找数据, 只在那些数据变化频率较低的列上创建索引。在已建索引的列上出现频繁的数据变化, 拟制索引碎片的产生最好的方法是重建索引。

3.5 CPU性能调整

服务器中一个重要的资源就是CPU。当CPU资源被某个数据库事务占用或被其它应用占用, 可能会影响数据库事务运行, 导致数据库系统响应迟缓。若CPU占用率超过90%, 则说明Oracle服务器CPU资源不足。引起CPU资源不足的原因主要有:锁冲突、低效率的SQL语句、SQL语句的重解析等。查询变慢是CPU资源不足的主要表像, 其实质是严重影响了数据库的性能。

调整CPU, 减少服务器的CPU对数据库性能的不利影响, 提高数据库系统的性能。

1) CPU的技术发展很快, 在Oracle领域要重视CPU并行技术的应用, 在执行事务处理和查询时分别使用不同的CPU处理器。最好分开数据库服务器和应用程序的CPU请求, 或在请求较多时, 实行对服务器请求的转移, 即采用多个服务器请求。

2) 进行数据查询时可使用PQO方式。PQO方式的优势很明显, 当用户需要查询的数据存放在不同的磁盘时, 可将SQL语句的请求分配到多个CPU进行处理, 对彼此独立的进程同时实现数据读取。

3) Oracle数据库与运行在同一台服务器上的其他所有软件共享CPU资源。如果CPU处理能力不足, 减少Oracle或者非Oracle程序的CPU消耗可以改善服务器上所有进程的性能。

对CPU的利用率进行调优实质上就是对每个单独的任务进行调优, 减少完成任务所需要的命令数量。通过负载均衡, SQL调优, 以及改进应用程序的设计等方式来具体完成CPU调优工作。

4 Oracle 10g常用优化工具

Oracle数据库提供了一些优化工具, 包括Oracle数据库在线数据字典、操作系统工具、SQL语言跟踪工具、OEM等。通过查询数据字典、分析动态性能视图, 获取数据库的运行信息, 有效的进行Oracle性能优化的工作。以下是几种常用的Oracle数据库性能优化工具。

1) Oracle数据库在线数据字典

Oracle在线数据字典能够反映出Oracle的动态运行情况, 有利于调整数据库性能。

2) 操作系统工具

如使用Unix操作系统的Vmstat、Iostat等命令可以查看到系统级内存和硬盘I/O的使用情况, 这些工具能够帮助管理员弄清楚系统瓶颈出现在什么地方。

3) SQL语言跟踪工具

Oracle提供了SQL-TRACE工具用于进行SQL语句的跟踪。当启用SQL-TRACE工具后, 系统将很快启动内核跟踪程序, 完整记录会话等相关信息, 同时写到相应的跟踪文件中, 并将结果输出成一个操作系统的文件。

4) TKPROF工具

TKPROF是用于分析oracle跟踪文件, 按需求生成清晰合理的输出结果的可执行工具。当系统的执行效率比较低时, 采用此工具跟踪用户的会话, 分析输出的结果, 找出问题所在, 从而确定解决问题的方法。

5) Oracle Enterprise Manager (Oracle企业管理器)

Oracle企业管理器是一个图形管理界面, 使用Oracle企业管理器可以方便地实现对数据库的管理, 简化操作, 特别适合初学者使用。许多通过命令能够完成的操作都可以使用Oracle企业管理器来完成, 如管理表、管理视图、管理表空间、管理索引等。

6) 优化SQL语句

使用这个命令可以帮助程序员写出高效的SQL语言。

7) DBMS-PROFILER (DBMS分析器)

代码的性能瓶颈在进行数据库调优时至关重要, 若要方便的发现代码的瓶颈所在之处, 使用Oracle数据库提供的DBMS_PRO-FILER包是比较好的选择。它可以对函数、触发器、存储过程及PL/SQL程序等进行测试, 发现影响程序性能的地方, 以及时进行改进。

说明:DBMS_PROFILER需要先安装再使用。

8) ADDM

ADDM是Oracle 10g新增的性能优化工具, 是植入Oracle数据库的一个自诊断引擎。ADDM通过检查和分析AWR获取的数据来判断Oracle数据库中可能的问题, 而STA则根据这些数据, 给出优化建议。ADDM能发现的问题主要有:负载导致的CPU瓶颈问题、过多的连接、过多的软解析、过多的commit和rollback事件以及由于shared pool过小、解析失败原因引起的过多硬解析问题等。

5 结束语

Oracle10g数据库系统性能调优是复杂繁琐的系统工程, 其工作贯穿于整个数据库系统开发的过程。从系统配置入手, 包括内存分配调整、磁盘I/O调整、操作系统调整以及磁盘碎片整理等, 整个过程是一个有机的整体, 缺一不可。数据库系统的性能调优应该充分利用各种能优化性能的资源, 正确使用调整工具进行反复的调整、以获得系统的最优性能。

参考文献

[1]朱亚兴.Oracle数据库系统应用开发实用教程[M].北京:高等教育出版社, 2012.

[2]文平.Oracle数据库性能优化的艺术[M].北京:机械工业出版社, 2012.

[3]姚世军.Oracle原理与应用[M].北京:中国铁道出版社, 2010.

[4]孙凤栋, 闫海珍.Oracle10g数据库系统性能优化与调整[M].计算机技术与发展2009 (2) .

[5]魏亚楠, 宋义秋.Oracle数据库应用系统的性能优化[J].制造业自动化, 2010 (8) .

[6]罗瑞明.Oracle数据库的性能优化方法研究[J].信息安全与技术, 2012 (5) .

10G网络 篇5

所谓数据库的安全性是指数据库的任何部分都不允许受到恶意侵害或未经授权的存取或修改。其主要内涵包括三个方面:1保密性,即不允许未授权的用户存取信息。2) 完整性,即只允许被授权用户修改数据。3) 可用性,即不应拒绝已授权用户对数据的存取访问。

数据库系统受到的威胁主要有:对数据库的不正确访问,引起数据库数据的错误;为了某种目的,故意破坏数据库,使其不能恢复;非法访问不该访问的数据库信息,且又不留痕迹;用户通过网络进行数据库访问时,有可能受到各种技术的攻击;未经授权非法修改数据库数据,使其失去真实性;硬件毁坏;自然灾害;磁干扰等。为了保护数据库的安全,目前常用的数据库安全技术主要有用户认证、访问控制、信息流控制、推理控制、数据库加密等,其中应用最广也最为有效的是访问控制技术。

1 Oracle 10g数据库的安全体系结构

Oracle数据库的安全级别为C2级,其安全原理基于最小特权,此原则认为用户只应该具有完成其任务所必需的特权,而不应该具有更多的特权。Oracle 10g数据库的安全性可以被分为3个层次:

1)系统安全性:

指在系统级上控制访问和使用数据库的机制。包括有效的用户名及其口令、用户是否被授权连接到数据库、用户是否有足够的磁盘空间来存放用户模式对象、用户的资源限制、是否启动了数据库的审计功能、用户可以进行那些系统操作等。

2)数据库安全性:

指在实体级上控制访问和使用数据库的机制。包括用户可以存取的方案对象及在该对象上可以进行那些操作等,即用户必须具备存取该实体的权限。

3)网络安全性:

Oracle 10g数据库主要是面向网络提供服务的。其网络传输的安全至关重要,包括登陆助手、目录管理、标签安全性等集成工具。Oracle通过分发Wallet、数字证书、SSL安全套接字和数字密钥的办法来确保网络数据传输的安全性。

在Oracle的安全体系结构中,连接到数据库的用户有普通用户和数据库管理员用户两类。普通用户主要是通过各种应用程序和查询工具连接,使用数据库账户和口令来验证,必要时可实施Oracle高级数据加密技术;数据库管理员用户用sys、system或具有dba权限的账户连接,登录系统时需采用口令文件验证或操作系统验证。

作为连接到数据库的账户,必须首先是数据库中的用户,该用户只有在数据库中拥有必要的角色和权限,才能被数据库认可并可在数据库中进行相应的活动。在每个模式下,存储的核心是数据库的表。对于常规表,Oracle支持三个级别的安全性:表级、行级和列级。表级的安全性由表的拥有者通过表级授权来控制其他用户;行级的安全性可通过视图来实现;列级的安全性可直接定义在表上,也可以通过视图定义表的垂直投影子集来实现。在很多情况下,一个表中存储了分别属于多个部门或个人的不同安全级别的数据,此时单纯使用视图很难从根本上解决此类安全问题,同时,用户也可使用特殊工具绕过视图直接去访问表。对此,Oracle采用了虚拟私有数据库VPD和标签安全OLS两项技术来实现有关行级数据的保护。这样一来,不论用户采用何种工具访问数据库,均受到VPD和OLS的制约,从而达到了按行访问的目的。

当用户连接数据库时还需要通过系统概要文件对用户所使用的资源进行限制,如访问时间、登陆次数、占用CPU时间等。

2 Oracle 10g数据库应用系统的安全策略设计

数据库安全十分重要,但安全管理需要成本,过分的安全还会影响效率,因此,很多时候需要数据库管理员在性能、时间和安全之间进行折中,从而制定出一个适合特定应用的、灵活的安全策略。在设计Oracle10g数据库应用系统的安全策略时应从以下几个方面着手:

2.1 建立Oracle 10g数据库的安全机制及实施计划

在设计数据库过程中,首先规划表空间和数据库的模式,包括表和子程序对象、用户的类型、这些用户需要使用哪些数据以及需要什么样的权限。然后,通过由表和用户构成的对象/用户权限CRUD关联矩阵来明确与对象权限以及表与表空间的对应关系。

根据上述规划,可以在数据库中按照下列顺序创建模式及对象并授权:

1)创建用于存储用户及其所属对象的表空间。

2)在相应的表空间上创建用户,指定其默认的表空间并授予用户相应的角色和系统权限。

3)由用户创建各种所需要的数据库对象,并按照对象/用户权限CRUD关联矩阵为不同的用户授予对象权限。

4)尽可能地使用同义词和视图来存取数据,以减少用户对表的直接存取。

2.2 Oracle 10g数据库内部的管理策略

Oracle数据库系统安全管理的首要任务就是为每一个用户创建相应的数据库账号,任何用户对数据库的任何操作都必须强制通过系统安全设置检查后方能实施。在创建用户时,必须使用安全参数对用户进行限制,数据库用户的安全参数包括用户名和口令、用户默认表空间、临时表空间、用户存储空间限制以及用户资源文件限制等。

1)口令管理。

数据库系统安全依赖于口令,应使用较复杂的口令,系统以加密方式将口令存储在数据字典中。Oracle 10g通过概要文件对口令进行管理,通常可在概要文件中启用口令复杂性函数来校验口令,该函数脚本在文件utlpwdmg.sql中,也可根据需要创建口令规则更为复杂的函数。

2)权限管理。

Oracle数据库安全管理机制主要是通过权限进行设置,通过权限设置防止非授权的数据库存取、非授权的对具体对象的存取,只有通过权限的认证才可以存取数据库中的数据。

对用户授予权限时应本着授予最少权限的原则,特别是要谨慎授予带有with admin option的权限。同时要限制授予数据库对象用户使用对象权限和system权限的数量以及使用具有sys权限的连接。特别不能授予一般用户具有any的权限。

3)角色管理。

Oracle 10g通过角色大大简化了权限的管理,减轻了系统管理的开销,减少了系统的安全漏洞。在实际应用中,根据部门和企业的安全政策、操作规则划分出不同的数据库角色。在创建角色时,可以为角色设置安全性。角色的安全性通过为角色设置口令字进行保护,只有提供正确的口令字才允许修改或设置角色;通过设置角色的生效或失效实现系统权限的可用或不可用,从而弥补了系统的权限没有失效或生效的属性。

4)资源管理

可通过使用概要文件限制每个用户登录的次数、限制连接会话、CPU使用时间和逻辑读等,可通过使用默认的概要文件,也可通过create profile命令单独创建自己的概要文件来实现。

5)审计策略

Oracle 10g数据库审计具有审计发生在数据库内部的所有操作的能力,有三种不同的审计类型:权限审计、语句审计和方案对象审计。

在默认情况下,数据库的审计功能是关闭的。在必要的时候,数据库管理员可以有选择地灵活使用这些审计方法,对用户监视,防止用户对数据库进行非法操作,以确保数据库的安全;同时尽可能将审计事件的数量控制在合理的范围内,以节省系统资源。

审计记录可以写入SYS.AUD$表或操作系统的审计跟踪中。要注意保护审计记录,否则,用户可通过非法操作来删除其审计踪迹。Oracle 10g提供了两个SQL脚本来管理与审计有关的数据字典视图:CATAUDIT.SQL和CATNDAUD.SQL。数据字典包含与审计有关的两类视图:第一类确定哪些项目被审计,第二类建立在审计表上,表示从各种角度的审计记录。

2.3 网络数据通信的管理

1)采取各种措施保证网络的安全,如避免未经授权的网络访问,包括保护网络中的软件以及路由器等;对网络传输的数据进行加密;使用防火墙,将数据库服务器置于防火墙保护之下;检查网络有效的IP地址。

2)检查SSL。SSL是互联网安全通信的标准协议,它提供了数据集成数据机密的机制,支持安全认证和加密。在检查SSL时应注意以下几点:应确保配置文件使用正确的SSL端口号;应确保SSL模式下通信双方的一致性;要保证为tnsnames.ora和listener.ora文件中ADDRESS参数的protocol值指定tcp;服务器应支持客户端密码和证书密钥算法。

3) sqlnet.ora文件。在服务器端的sqlnet.ora文件中添加tcp.invited.nodes和tcp.uninvited.nodes参数可决定哪些客户机允许和不允许与服务器连接:

tcp.validnode_checking=yes

tcp.invited_nodes= (|name, |name)

tcp.excluded_nodes= (|name, |name)

4)监听器的使用。在默认情况下,监听器没有设置口令。此时,远程客户机可以通过监听控制器获得监听器的状态信息。因此,应设置监听器的口令,并限制其权限,使其不能在数据库或Oracle服务器地址空间中读写文件。

在listener.ora参数文件中,让admin_restrictions_=on可阻止在运行期间其他任何连接所做的有关监听器的修改。

除了设置口令外,还应更改数据库的端口号,对默认的端口号1521或不使用的端口应全部封锁住。

5)在数据库初始化参数文件init.中添加参数:remote_os_authent=false,以此严格限制远程客户端的连接。另外,不允许操作系统用户或Oracle数据库用户更改默认文件和目录的权限。

2.4 其他安全措施

Oracle数据库除上述基本的安全控制外,还另外提供了一些高级的安全性特性,如虚拟专用数据库 (VPD) 、标签安全、数据库加密、精细粒度审计 (FGA) 、N-tier用户验证支持等。它们分别用于加强数据库安全的不同部分,其中虚拟专用数据库和标签安全用于控制用户仅仅存取数据库中数据的某一个子集。数据库加密是一种主动的信息安全防范措施,只对数据库中机密程度较高的数据进行加密,可使用Oracle提供的系统包dbms_obfuscation_toolkit对其进行加密。精细粒度审计 (FGA) 特性用于监控/追踪用户的各种数据库操作,N-tier用户验证支持则使数据库可以通过诸如Kerberos或令牌卡等外部机制来取得第三方认证授权。

在Oracle_Homebin目录下的wrap.exe封装程序可加密PL/SQL源代码,加密后的应用程序不能编辑也不能被实施逆向工程。此外,定期进行数据库备份工作,以便在意外情况发生后,可以利用备份数据来恢复数据库,也是保证Oracle数据库系统安全的一个重要措施。

摘要:Oracle数据库占据了目前世界主流商用数据库系统市场80%以上的份额, 该文详细分析了Oracle 10g数据库的安全体系结构, 提出了一种较为完备的Oracle数据库应用系统的安全策略。

关键词:Oracle数据库,安全性,策略

参考文献

[1]萨师煊, 王珊.数据库系统概论[M].高等教育出版社, 2000.

[2]贾代平.Oracle DBA核心技术解析[M].电子工业出版社, 2006.

[3]任树华.Oracle10g应用指导与案例精讲[M].机械工业出版社, 2007.

10G网络 篇6

关键词:Debian,Oracle10g,ESXi4,安装

0 引言

Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,功能强大,能够处理大批量的数据,在管理信息系统、企业数据处理、因特网及电子商务等领域应用的非常多。Debian是最符合开源精神的Linux发行版,该系统以其高效、稳定、免费、开源等一系列特点,吸引着很多的计算机用户安装并使用。

通过Oracle官方认证的系统,只有Asianux 2、Asianux 3、Oracle Linux 4/Oracle VM、Oracle Linux 5/Oracle VM、Red Hat Enterprise Linux 5/Oracle VM、SUSE Linux Enterprise Server 10、SUSE Linux Enterprise Server 11等商业化的Linux发行版[1]。尽管商业化的发行版在性能以及功能多样性上有长处,但它价格昂贵,系统源码封闭,需要较长时间来学习掌握。而且商业化的发行版,产品升级以及系统补丁的发布都有相应的周期,当遇到一些核心问题时,只能等待商业产品的升级,对系统的改进几乎是不可能的。因此许多用户转而采用免费和开放源码的系统。本文就如何在开源发行版Debian(squeeze for amd64)上成功安装Oracle10g进行尝试,以便于能够在Debian系统下顺利使用Oracle进行研究。

1 系统的安装与优化

用VMware vSphere Client连接到ESXi的管理界面,创建一个虚拟机。在创建新的虚拟机时,选择典型配置,指定虚拟机名称和位置,选择要存储虚拟机文件的数据存储,指定要与虚拟机一起使用的客户机操作系统为Linux,选择版本为Debian GNU/Linux5(64位),指定虚拟磁盘大小为20GB,最后完成开始创建新虚拟机的任务。虚拟机的资源分配如下:CPU为4,内存为8G,硬盘两块分别为磁盘1[20G](安装系统),磁盘2[100G](Oracle数据库使用)。

1.1 系统分区

1.1.1 安装基本系统

使用磁盘1进行系统的安装。

/boot:ext2(256M) 主分区

swap:4G 主分区

/:剩余空间 主分区

基本安装方法参考Debian的官方安装说明[2]。

在VMware vSphere Client中对Linux的虚拟机管理并不方便,大部分操作都是通过ssh远程连接到虚拟机中来进行的,因此,只需要安装一个基本系统和ssh服务器。选择网络安装的方式来安装基本的系统,网络安装盘(netinst.iso)可以从Debian的官方镜像服务器下载[3],把这个ISO文件挂载为虚拟机的光盘,打开虚拟机的电源,就可以从光盘启动并进行网络安装Debian操作系统了。

基本系统安装完成后,就可以关闭VMware vSphere Client,通过ssh客户端远程登录到刚安装好的Debian系统中进行各项操作,本文的所有操作都是通过ssh远程连接到Debian虚拟机中进行的。

1.1.2 更新系统

修改/etc/apt/source.lst,配置较快的镜像服务器来安装软件包。本文选择中科大的Debian镜像服务器:

deb http://debian.ustc.edu.cn/debian/ testing main non-free contrib

deb-src http://debian.ustc.edu.cn/debian/ testing main non-free contrib

deb http://debian.ustc.edu.cn/debian-security/ testing/updates main contrib non-free

deb-src http://debian.ustc.edu.cn/debian-security/ testing/updates main contrib non-free

设置好安装源后,就可以执行如下命令来进行系统更新了:

aptitude update && aptitude full-upgrade

1.1.3 安装内核头文件

在安装vmware-tool过程中,需要编译相应的内核模块,需要安装内核头文件,因此,需要执行以下命令来安装相应的内核头文件:

aptitude install linux-headers-$(uname -r)

Esxi提供的工具在新的内核下(linux-2.6.39)无法正常编译,因此,需要到open-vm-tools官方网站上下载最新的源文件来进行编译。为了能够正常编译vmware-tools,还需要安装pkg-config、libglib2.0-dev等软件包,可通过如下命令实现:

aptitude install pkg-config libglib2.0-dev

准备工作完成后,就可以从官方网站(http://sourceforge.net/projects/open-vm-tools)下载并编译open-vm-tools了,编译并安装命令如下:

tar xf open-vm-tools-2011.07.19-450511.tar.gz

cd open-vm-tools-2011.07.19-450511

./configure--disable-multimon--disable-unity--disable-docs--disable-dependency-tracking--without-x--without-procps--without-dnet--without-icu--disable-tests-without-pam

make && make install

1.2 创建数据区

使用磁盘2创建数据区。数据库分区使用reiserfs文件系统,因此,还需要安装必要的工具以便创建reiserfs文件系统,可通过以下命令来安装相应的工具:

aptitude install reiserfsprogs

创建lvm(vg-data)并添加逻辑卷 data 。这一步创建lvm的目的是以备空间不够的时候可以再添加虚拟磁盘以扩展使用空间,采用以下命令完成:

pvcreate /dev/sdb

vgcreate vg-data /dev/sdb

lvcreate -l 100%FREE -n data vg-data

mkfs.reiserfs /dev/mapper/vg--data-data

echo/dev/mapper/vg—data-data/data reiserfs defaults 0 2>>/etc/fstab

按照以上步骤创建lvm(vg-data)并添加逻辑卷 data后,再开机后就可以自动挂载该文件系统。

2 安装Oracle数据库

2.1 获取安装文件

安装Oracle数据库可以从Oracle官方网站[4]下载安装文件:

0201_database_linux_x86_64.cpio.gz

gunzip 10201_database_linux_x86_64.cpio.gz

cpio -id < 10201_database_linux_x86_64.cpio

2.2 创建必要的用户和用户组

/usr/sbin/groupadd oinstall

/usr/sbin/groupadd dba

/usr/sbin/useradd -m -g oinstall -G dba -s /bin/bash oracle

2.3 设置内核参数

/etc/sysctl.d/oracle 文件中添加内核参数

kernel.shmall = 2097152

kernel.shmmax = 4294967296

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

2.4 配置shell参数

/etc/security/limits.conf 中增加oracle用户的系统资源使用限制参数:

确认 /etc/pam.d/login 文件中有这么一行参数:

session required pam_limits.so

当配置这个参数后,直接用oracle用户登录的时候,这些资源限制参数就可以生效了。

当以root身份登录到系统中,并su到oracle用户的时候,会发现,无法设置一些limit参数,因此,还需要对pam的某些参数进行配置,确认 /etc/pam.d/su 文件中有这么一行参数:

session required pam_limits.so

这时,当从另外一个用户身份su到oracle用户身份的时候,就可以使这些资源限制参数生效了。

在新的内核中,已经编译了hugetlbpages的支持,因此,就不需要重新编译内核或者禁用oralce使用hugetlbpages了,只需要把oracle所在的用户组添加到/proc/sys/vm/hugetlb_shm_group中就可以了。可以通过如下命令来达到这个目的:

echo$(awk-F:/dba/{print$3}/etc/group)>/proc/sys/vm/hugetlb_shm_group

也可以先到/etc/group中查找dba这个用户组的组ID,然后

echo 组ID > /proc/sys/vm/hugetlb_shm_group

也可以达到同样的目的。

这种设置方式只能在当前运行环境下生效,当重新启动计算机后,该配置信息就会丢失,因此,还需要进行一些额外的步骤,让系统重启后,也能生效,因此,需要把echo $(awk -F:$3}/etc/group)>/proc/sys/vm/hugetlb_shm_group这个命令添加到/etc/rc.local中,这样重启计算机后,oracle用户仍然可以使用hugetlbpages。

2.5 安装前准备工作

在安装Oracle数据库之前需要完成一些准备工作,包括系统软件的安装、安装目录的创建和环境变量的设置等,按如下命令进行:

mkdir /data/ORACLE (该目录名称是可以随便设定的)

chown oracle.oinstall /data/ORACLE

Oracle的安装程序中把一些系统工具的路径写死了,但在Debian系统中,这些工具所在路径并不相同,因此,需要做一些符号链接:

ln -s /usr/bin/basename /bin/basename

ln -s /usr/bin/awk /bin/awk

Oracle的正常运行需要某些运行库的支持,因此,必须安装必要的运行库,可以通过如下命令实现:

aptitude install ia32-libs libc6-dev libc6-dev-i386 zip unzip libaio-dev libstdc++5 g++-multilib

ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/

Oralce的安装程序需要寻找一些环境变量来设定安装目录,因此,需要预先设置好 ORACLE_BASE和ORACLE_HOME这两个环境变量:

export ORACLE_BASE=/data/ORACLE

export ORACLE_HOME=/data/ORACLE/oracle/product/10.2.0/db_1

2.6 安装Oracle

因为Oracle的安装程序中的jre的配置问题,当使用中文界面的时候,会出现汉字显示方块的情况,因此,通过设置如下环境参数来强制使用英文界面来进行安装:

export LANG=en_US.UTF-8

因为Debian并不是Oralce官方支持的Linux发行版,因此,需要以ignoreSysPrereqs这个参数来进行安装,强制让安装程序不进行系统检查:

./runInstaller -ignoreSysPrereqs

在安装过程中不创建数据库,等数据库程序文件安装完成后,再使用dbca这个工具来创建数据库。

在Oracle数据库安装结束后,安装程序要求以root身份运行两个脚本(也就是在系统目录下创建一些文件),因为Debian中没有nobody组,只有nogroup组,因此,需要对root.sh文件进行一些修改,把其中的 $CHGRP nobody $ORACLE_HOME/bin/extjob 换成 $CHGRP nogroup $ORACLE_HOME/bin/extjob

2.7 其他工作

由于运行Oracle配置工具的时候,汉字不能正常显示,被显示成方框,为了解决这个问题,需要做以下工作。

2.7.1 安装汉字字库

aptitude install ttf-arphic-uming

2.7.2 修改配置文件

cd $ORACLE_HOME/jdk/jre/lib

cp font.properties font.properties.orig

cp font.properties.zh_CN_UTF8.Sun font.properties

修改最后几行:

filename.-misc-fzsongti-medium-r-nor-mal--*-%d-*-*-p-*-iso10646-1=/usr/share/fonts/truetype/arphic/uming.ttc

appendedfontpath=/usr/share/fonts/truetype

这样修改后,执行Oracle的维护工具的时候,就可以正常显示汉字了。

2.7.3 创建数据库

用dbca来创建数据库。以下以一实例来说明如何创建数据库。

实例名为ora1;数据库类型为一般用途;统一密码为123;存储机制为文件系统。

数据库字符集为UTF8;国家字符集为UTF8;默认语言为简体中文;默认日期格式为中国

连接模式为共享服务器模式;共享服务器数为1

2.7.4 配置监听程序和本地NET服务

需要使用netca进行监听程序和本地NET服务的配置,否则,Oralce的网络监听程序无法正常启动,远程客户端无法连接到数据库。同样的,通过netca配置本地NET服务,这样,可以通过sqlplus命令运行程序连接数据库并执行相应的SQL语句,以进行数据库的管理和维护。

2.8 数据库的管理和维护

2.8.1 准备工作

在以后的管理过程中,都是以oracle用户来进行的,因此,需要设置一下oracle用户登录后的环境变量,在oracle的家目录的.bashrc中添加如下信息:

export ORACLE_BASE=/data/ORACLE

export ORACLE_HOME=/data/ORACLE/app/10.2.0/db_1

export PATH=$PATH:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8

2.8.2 数据库的启动

可以使用dbstart命令来启动相应的数据库,不过,在运行这个命令之前,需要在/etc/oratab中进行配置,以让dbstart命令知道需要自动启动哪些数据库,/etc/oratab中配置信息的格式如下:

ORACLE_SID:ORACLE_HOME:

ORACLE_SID是第2.7.4节中创建的本地NET服务名,ORACLE_HOME是oralce的安装目录,N表示不自动启动,Y表示自动启动,按照第2.7.3节中创建的数据库参数,此处就应该配置为

ora1:/data/ORACLE/app/10.2.0/db_1:Y

因为dbstart这个脚本中的配置信息有些问题,不能直接启动监听程序,因此,需要对这个文件做一些修改:

# Set this to bring up Oracle Net Listener

ORACLE_HOME_LISTNER=$ORACLE_HOME

配置完这些信息后,就可以以oracle用户身份运行dbstart,命令执行成功后,可以通过 lsnrctl 来查看状态

lsnrctl status 命令会输出类似如下信息:

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 16-9月 -2011 22:33:00

Copyright (c) 1991, 2005, Oracle. All rights reserved.

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=database2.bhu.edu.cn)(PORT=1521)))

LISTENER 的 STATUS

别名 LISTENER

版本 TNSLSNR for Linux: Version 10.2.0.1.0-Production

启动日期 15-9月 -2011 07:44:17

正常运行时间 1 天 14 小时 48 分 43 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件

/data/ORACLE/app/10.2.0/db_1/network/admin/listener.ora

监听程序日志文件

/data/ORACLE/app/10.2.0/db_1/network/log/listener.log

监听端点概要

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=database2.bhu.edu.cn)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "ora1" 包含 1 个例程。

例程 "ora1", 状态 READY, 包含此服务的 2 个处理程序...

服务 "ora1_XPT" 包含 1 个例程。

例程 "ora1", 状态 READY, 包含此服务的 2 个处理程序...

命令执行成功

2.8.3 数据库的管理和维护

Oracle提供了一个Web界面来进行数据库的管理和维护,通过执行如下命令来启动Web管理界面:

export ORACLE_SID=SID (其中SID是第2.7.4节步骤中配置的本地NET服务名)。

这个命令是必须的,因为Web管理界面必须与某个NET服务对应,否则无法启动Web管理界面。

设置好本地NET服务名后,就可以通过如下命令来启动Web管理界面了:

emctl start dbconsole

启动成功后,就可以通过浏览器来管理oralce数据库了:

http://数据库服务器IP或数据库服务器域名:1158/em/console/aboutApplication

用户名为sys,密码为123(在步骤第2.7.3节中创建数据库时设置),身份选择sysdba,即数据库管理员,登录后就可以对数据库进行管理和维护了。

2.8.4 sqlplus命令行工具的使用

除了使用Web管理界面进行管理外,还可以通过sqlplus命令行工具进行管理和维护。

在使用sqlplus之前,需要设置一个重要的环境变量:

export NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8

NSL_LANG决定了客户端使用什么样的字符集和语言与数据库通讯

SIMPLIFIED CHINESE 表示语言是简体中文

CHINA 表示区域国家标志为中国

UTF8 表示客户端的字符集为UTF8

另外一个重要的环境参数就是ORACLE_SID,设置这个参数后,就指定了缺省连接的服务名:

export ORACLE_SID=ora1

设置完这个必要的环境参数后,就可以使用sqlplus连接数据库了:

sqlplus /nolog

connect / as sysdba

如此,就以数据库管理员的身份登录到数据库了,在这个命令行下面可以做任何数据库的管理和维护工作,具体可以参考Oracle的官方手册:http://www.oracle.com/pls/db102/homepage。

3 结束语

本文主要介绍了如何在开源发行版Debian(squeeze for amd64)上成功安装Oracle10g,对Oracle10g安装过程中的系统安装优化、Oracle数据库的管理和维护等进行了实验,为在Debian系统下顺利使用Oracle数据库提供参考。

参考文献

[1]Linux Certification[EB/OL].(2012-07).http://download.ora-cle.com/docs/cd/B19306_01/relnotes.102/b15666/toc.htm.

[2] Debian GNU/Linux 6.0 Installation Guide[EB/OL].(2012-07). http://www.debian.org/releases/stable/amd64/.

[3] [EB/OL].(2012-07).http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-6.0.5-amd64-netinst.iso.

10G网络 篇7

Oracle 10g数据库作为全球最大的商用软件供应商Oracle公司的核心产品,其高性能、高安全性得到市场的普遍认可,成为商用软件开发中后台数据库的首选产品。随着数据量的不断增加,达到海量数据量(T级)时,应用程序如何高效地实现分页查询是一个重要的问题。

通常,应用程序对数据分页查询的处理方法是一次性从数据库中检索所有符合条件的数据,并将数据从数据库服务器端传输到客户端缓存,然后在客户端通过应用程序内部的编程对查询的结果进行分页显示。如果查询结果中数据量比较少,则对客户端的内存需求也比较少,对客户端的运行性能影响较小;但是,如果查询结果中数据量非常大,则客户端需要很多的内存空间来缓存查询的结果,导致客户端运行的性能显著降低,从而影响应用系统的可用性。因此,对于海量数据的分页查询就需要进行优化,减少对客户端运行的影响。

对于Oracle 10g数据库而言,数据库服务器端可以自动、动态地调整服务器实例中的内存结构。而且,Oracle 10g数据库服务器内存容量非常大,是普通客户机的级数倍。因此,对于海量数据的分页查询而言,如果能够充分利用数据库服务器端内存管理的特点,同时优化分页查询技术,可以极大地提高应用系统的执行效率。

本文就是基于此思想,利用PL/SQL程序在Oracle 10g数据库服务器端创建实现海量数据分页查询的、可共享的、优化了的功能模块,为用户提供一个通用的应用接口,将业务处理集中在数据库服务器端处理,而每次只将需要显示的部分数据传输到客户端,从而较少了对客户机的资源消耗,提高了应用系统执行性能。

1 数据库优化

在Oracle 10g数据库中,为了提高海量数据的查询效率,首先需要对数据库本身的配置进行优化,包括数据库服务器内存配置、内存区调整与优化、磁盘I/O调整以及索引的使用。

1.1 数据库服务器内存配置

适当配置数据库服务器的物理内存与虚拟内存大小,尽量避免内存交换和减少内存分页。

内存交换可能会带来很大的内存开销,应尽量避免。在Sloaris系统中,可以使用sar-w或vmstat-s命令来检查内存交换。如果存在内存交换,则需要节省内存,可以采用以下措施:避免不必要的系统daemon进程或应用程序;减少数据库缓冲区的大小;较少Unix文件缓冲区的数量。

少量内存分页对数据库性能影响不大,但是内存分页过多,将导致系统性能下降。在Sloaris系统中,可以通过sar-p或vmstat命令来监控分页。若内存分页过多,可以采用以下措施:安装更多内存;减少系统工作任务;配置系统核心使用更少内存;保持SGA在单个共享内存段中。

1.2 内存区调整与优化

在Oracle 数据库中,影响查询效率的实例内存区包括数据缓冲区、共享池以及PGA区。在Oracle 10g中可以手动配置这些内存区,也可以采用系统自动、动态的配置方法。

1.2.1 数据缓冲区调整与优化

数据缓冲区用于存储从数据库中检索的数据。如果用户请求的数据在数据缓冲区中,则数据从数据缓冲区中直接返回给用户,查询时间短;如果用户请求的数据不在数据缓冲区中,则先由服务器进程将数据从数据文件读取到数据缓冲区,然后再从数据缓冲区中将数据返回给用户,查询时间延长。因此,保证尽量多的用户请求数据在缓冲区中,避免读取数据文件,可以大大提高数据的操作性能。

通常数据缓冲区空闲率应该接近0,否则可以减少数据缓冲区大小;数据命中率应在90%以上,否则就需要分配更多的数据缓冲区。

1.2.2 共享池调整与优化

共享池主要由库缓存、数据字典缓存组成。其中库缓存主要用于存放已经解释并执行过的SQL语句和PL/SQL程序代码及其分析、执行计划等信息;数据字典缓存主要用于存放数据库对象信息以及用户权限等信息。合理设置共享池大小,使共享池中保存较多的SQL语句与PL/SQL语句的分析、编译、执行计划等信息以及相关数据对象和用户信息,可以提高SQL或PL/SQL程序的执行效率。

通常情况下,共享池的空闲率应该高于20%,库缓存命中率应该高于99%,而数据字典缓存命中率应该高于90%,否则需要调整共享池大小。

1.2.3 PGA区调整与优化

PGA区主要由私有会话区以及排序区构成。其中,排序区设置是否合理对查询排序效率有一定的影响。在Oracle数据库中,排序可以在PGA的排序区或临时表空间的临时段中进行,由于使用临时段时需要对磁盘进行I/O操作,降低了排序的效率,因此Oracle建议尽量在排序区中进行排序操作。

通常情况下,排序区的命中率应该高于95%,即保证绝大多数的排序操作在内存中进行。否则,就应该调整排序区大小,即增加SORT_AREA_SIZE的大小。

1.2.4 内存的自动管理

在Oracle 10g中,通过设置初始化参数SGA_TARGET,可以实现对SGA中的数据高速缓冲区、共享池、大型池、Java池和流池的自动管理,即这几个组件的内存调整不需要DBA来干预,系统自动进行调整。

1.3 磁盘I/O调整

磁盘的I/O速度对海量数据查询性能有很大的影响,解决好磁盘I/O问题,可以显著提高查询效率。影响磁盘I/O性能主要因素包括磁盘竞争、I/O次数过多和数据块空间的分配管理。可以按照以下规则进行磁盘I/O调整:

(1) 数据库的物理文件尽量分散到不同磁盘空间,避免相互之间的磁盘竞争,同时还可以实现均衡磁盘负载。

(2) 将同一个表空间的数据文件尽量平均分配到多个磁盘,实现磁盘之间的负载均衡。

(3) 将表和索引分散到不同的表空间,并尽量将表数据和索引数据存储到不同磁盘,减少数据文件和索引数据文件对磁盘的竞争。

(4) 为不同的应用创建不同的表空间,并将表空间所对应的数据文件存放到不同的磁盘,减少不同应用之间对磁盘的竞争。

(5) 系统表空间(SYSTEM表空间)尽量不要再分配给其他应用使用,减少数据库系统与应用之间的磁盘竞争。

(6) 根据表的特点以及数据量大小等,采用分区表、分区索引、索引化表、聚簇等结构,合理地将数据分散到不同的数据文件中,提高系统的I/O性能。

1.4 索引的使用

索引是数据库中专门用于提高查询效率的数据结构,在数据库表中创建适当的索引,可以显著提高海量数据的查询效率。适当是指在适当表的适当列上创建适当类型的索引。在Oracle数据库中可以按下列原则使用索引:

(1) 如果经常查询的数据量小于整个表中数据量的3%,则应该为该表创建索引。

(2) 在经常用于查询条件或连接条件的列上创建索引。

(3) 如果列的取值基数大,即范围大,重复率低,则应该创建B-Tree索引。

(4) 如果列的取值基数小,即范围小,重复率高,则应该创建位图索引。

(5) 合理设置复合索引中列的顺序。

(6) 控制索引的数量,过多索引反而导致查询效率降低。

2 分页查询关键技术

在Oracle 10g数据库中,海量数据分页查询涉及SQL优化、游标变量、批绑定、动态SQL、存储过程等多种技术。

2.1 SQL优化

实现分页查询时,通常需要先对数据进行排序,然后筛选在特定页面显示的数据。例如,从员工表(employees)中查询工资(salary)排序(从高到底)第startRownum名到第endRownum名之间的所有员工(startRownum<endRownum),SQL语句可以表示为:

SELECT * FROM (SELECT ROWNUM rn ,A.* FROM (SELECT * FROM employees WHERE salary IS NOT NULL ORDER BY salary) A ) B WHERE rn BETWEEN startRownum AND endRownum

该语句在查询的最外层控制分页的最大值(endRownum)和最小值(startRownum)。Oracle最内层(A)返回给中间层(B)的是所有满足条件的数据,而中间层(B)返回给最外层的也是所有数据,数据的过滤在最外层完成。如果能够在中间层(B)进行一次数据筛选,即将外层的查询条件推到中间层查询,在CBO 优化模式下,可以显著提高查询的执行效率。优化语句为:

SELECT * FROM (SELECT ROWNUM rn ,A.* FROM (SELECT * FROM employees WHERE salary IS NOT NULL ORDER BY salary ) A WHERE ROWNUM<endRownum) B WHERE rn>startRownum

随着数据量的增加,优化了的SQL语句的查询执行效率比没有优化的SQL语句的查询效率显著提高。表1显示了随着表中数据的增加,两种查询方法的效率比较。

2.2 游标变量

为了将数据库服务器端查询到的当前页的数据传递到客户端,需要首先将当前页的数据保存到一个缓冲区中,该缓冲区可以采用集合变量或游标变量技术来实现。采用游标变量技术时,当前页数据的结构、数据量不受限制,使用灵活。此外,在Oracle 10g中,系统预定义了一个游标引用类型,称为SYS_REFCURSOR,用户可以直接使用它定义游标变量,简化了以往版本中游标变量使用的繁琐。

2.3 批绑定

如果在数据库服务器端采用集合变量来缓存查询得到的当前页数据,则可以采用批绑定技术,减少数据库服务器中SQL引擎与PL/SQL引擎的交互次数,从而显著提高查询效率。批查询是指,利用BULK COLLECT语句一次返回多条记录信息,并存放到集合类型的变量中。

表2显示了采用批绑定技术和不采用批绑定技术进行数据查询的比较,从中可以看出,随着数据量的增加,采用批绑定技术可以显著提高查询效率。

2.4 动态SQL

为了保证数据库服务器端提供的分页查询接口具有通用性,能够根据用户的需要进行不同数据、不同条件的查询、显示,就需要采用动态SQL技术,即将用户的查询请求以字符串的形式传递到数据库服务器端,在进行编译时并不检查该查询语句所涉及的数据库对象是否存在、用户是否有权限执行该语句,而只是检查该字符串语法上是否正确,将对象、权限的检查推迟到语句的执行阶段。这样,用户的查询显示就不受特定对象、特点条件的限制了。

2.5 海量数据分页查询接口

为了给用户提供一个可共享的、执行效率高的、实现分页查询的接口,需要使用PL/SQL程序在数据库服务器端编写存储过程。通过IN、OUT、IN OUT不同模式参数的设置,与用户进行信息交换,在存储过程内部采用上述介绍的各种技术进行最优的分页查询优化。下面代码是分页查询的存储过程的原型。

3 分页查询技术比较

传统的数据分页查询采用ADO记录集分页法,也就是先将所有数据存放到客户端内存中,然后利用ADO自带的分页功能来实现分页,适合于少量数据的分页查询。本文所提出的优化的分页查询方法则是充分利用数据库服务器的性能,先将数据存储于数据库服务器的内存中,然后将数据一部分一部分地传递到客户端,从而适合海量数据的分页查询。表3对两种方法的执行效率进行了比较。

4 结 语

数据的分页查询是各种基于数据库的应用系统的基本功能,随着数据量的增加,特别是达到海量数据时如何有效提高数据的查询效率,提高应用系统运行效率,是一个非常重要的问题,直接影响到应用系统的可用性。本文针对Oracle 10g数据库中的海量数据的分页查询提供一种优化的方案,该方案采用Oracle 10g多种技术,创建可共享的存储过程,供用户调用,大大降低了对客户机资源的消耗,提高了应用程序的执行效率。

摘要:Oracle数据库中海量数据分页查询效率直接关系到应用系统的执行效率。介绍Oracle 10g数据库中一种优化的海量数据分页查询解决方案,分析了传统分页查询技术的不足,将数据库优化策略、SQL语句优化、游标变量、批绑定、动态SQL等多种技术融为一体,并提供一个可以共享的、优化的存储过程,提高了海量数据的分页查询效率。

关键词:分页查询,SQL优化,批绑定,动态SQL

参考文献

[1]Oracle Database PL/SQL User's Guide and Reference 10g Release2.B14261-01[EB/OL].http://www.oracle.com/pls/db102/por-tal.portal_db?selected=3,2008.

[2]Oracle Database PL/SQL Packages and Types Reference 10g Release2.B14258-02[EB/OL].http://www.oracle.com/pls/db102/por-tal.portal_db?selected=3,2007.

[3]Oracle Database SQL Reference 10g Release 2(10.2)B14200-02[EB/OL].http://www.oracle.com/pls/db102/portal.portal_db?selected=3,2009.

[4]Oracle Database Java Developer’s Guide 10g Release 2(10.2)B14187-01[EB/OL].http://www.oracle.com/pls/db102/portal.portal_db?selected=3,2008.

[5]John Oommen B,Jing Chen.On Enhancing Query Optimization in theOracle Database System by Utilizing Attribute Cardinality Maps[J].2008,3.

上一篇:扁桃体腺样体下一篇:舞蹈与戏曲的关系