Oracle 11g

107
ITPUB 电子杂志 总第十七期 http://www.itpub.net ITPUB 1 科技技术新动力

Transcript of Oracle 11g

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 1 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 2 页 科技技术新动力

本期内容导读

11g 新特性

Oracle 11g 新功能纵览 By 勤勤同学

7 月 12 日,甲骨文在美国纽约宣布推出 Oracle 数据库 11g,这是

Oracle 数据库这个全球 流行的数据库的 新版本。 Oracle 数据库

11g 有 400 多项功能,经过了 1500 万个小时的测试,开发工作量达

到了 3.6 万人/月。迄今为止,在甲骨文推出的产品中,Oracle 数据库

11g 是 具创新性和质量 高的软件。

如何使用 ADRCI By shahand

本文从 ADRCI 的概念入手,逐步展开说明这个新功能的特点及其使用

方法,并予以实例说明,通俗易懂,相信可使读者省去不少时间。

LOB 类型功能增强 By yangtingkun

Oracle 的 11g 中,OracleLOB 类型的功能得到了很大程度上的增强,

有功能方面的,有性能方面的,还有易用性方面的。

数据压缩技术 By NinGoo

从 Oracle11g 开始,将没有什么是不可压缩的。使用更强大的 CPU,

就可以降低或者延缓对存储空间无休止的渴求,或许很多大型 OLTP 和

大多数的数据仓库,都将从数据压缩技术中收益。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 3 页 科技技术新动力

Server Result Cache By NinGoo

Server Result Cache 通过在 SGA 中分配一个缓冲区来保存查询结

果, Oracle 引入了一个新的初始化参数来控制这个 cache 的大小:

result_cache_max_size。可以在 system、session、table 或者

语句级别来设置 cache 的使用。在语句级可以使用一个新的 hint 来控

制是否缓存查询结果。另外,Oracle 还提供了一个新的 PL/SQL 用来

监控和管理 Server Result Cache,比如可以清空整个 cache 的内容

或者清空某个查询的结果,也可以生成 cache 的使用报告等。

spfile Fault-tolerant 增强 By eygle

在以前的版本中,如果 spfile 参数文件丢失,我们只能通过备份去恢复,

或者从存在的 pfile 中创建,实际上如果仅仅是参数文件丢失,数据库

仍然在运行,那我们完全可以从数据库实例中得到当前的所有运行参数,

从 Oracle 11g 开始,为了完善这个机制,一个新的命令将被引入。

Memory_target 与自动内存管理 By eygle

Oracle11g 的自动内存管理特性是早已被预期的 Oracle 的又一增强,

是 Oracle 朝着自动内存管理方向所迈出的又一坚定步伐,是 Oracle

既定路线的又一延伸。这一特性不会使人惊讶,但是会使人欣喜。

统计信息收集 By hanson

本文描述了 11g 的新特性中,有关收集统计信息方面功能的增强。本文

围绕统计信息收集,分别对收集统计信息时可以设置的选项、对合并列

收集统计信息,对表达式和函数收集统计信息以及延迟发布统计信息这

四个方面做了阐述。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 4 页 科技技术新动力

RMAN By kamus

RMAN 除了单纯的备份恢复功能,已经被赋予了越来越多的责任,比如

创 建 Standby 数 据 库 , 比 如 跨 平 台 传 输 表 空 间 中 的 表 空 间 转 换 。

Oracle11g 的 RMAN 倒是没有太多飞跃性的更新。

分区 By kamus

Partition(分区)一直是 Oracle 数据库引以为傲的一项技术,正是分

区 的 存 在 让 Oracle 高 效 的 处 理 海 量 数 据 成 为 可 能 , 在 即 将 发 布 的

Oracle 11g 中,分区技术在易用性和可扩展性上再次得到了增强。

Oracle 11g alert 文件的变化 By shahand

在 oracle 11g 中,alert 文件的信息是以 xml 的文件格式存在的,另

外提供了普通文本格式的 alert 文件。

11g 安装

Oracle 11g 的基本安装 By shahand

本文配以详尽的图片给初学者提供了一个 Oracle 11g 基本安装的范

例,也使还没有拿到 11g 安装文件的朋友先睹为快。

Oracle 11g Advanced Installation By shahand

本文介绍了 Oracle 11g 高级的数据库安装,读者可结合基本的数据库

安装来对照阅读。

Oracle 11g 的数据库创建 By shahand

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 5 页 科技技术新动力

数据库的创建是不可或缺的,与之前的版本相比较,还有有了不少改进

与增强的地方,相信对读者有所帮助。

11g 资料与白皮书

Oracle 11g 资料和白皮书

Oracle 11g 扩展了 Oracle 特有的网格计算提供能力。Oracle 数据库 11g 在以下方面

包含大量新特性和功能增强:基础架构网格,包括可管理性、高可用性和性能等功能;

信息管理,包括内容管理、信息集成、安全性、信息生命周期管理以及数据仓库/商务

智能等功能;应用程序开发,PL/SQL、Java、.NET 和 Windows、PHP、SQL Developer、

Application Express 和 BI Publisher 等功能。文中的这些白皮书将使你了解更多有关

Oracle 11g 的新特性。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 技术丛书第四册

《循序渐进 Oracle》

作者 :盖国强 (eygle)

关于本书

在 2006 年,本书作者出版了《深入浅出 Oracle》一书,该书出版后,得到

了市场的普遍欢迎与广泛好评,应广大读者建议,作者继续撰写了本书,本

ITPUB 第 6 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 7 页 科技技术新动力

书在继承《深入浅出 Oracle》一书优点的同时,极力避免和修正了读者所指

出的不足,作者希望这些努力能够等到更广泛读者的认同。

《循序渐进 Oracle》一书即独立成书,又可以被视为《深入浅出 Oracle》

一书的姊妹篇。本书既名循序渐进,在作者的写作过程中一直遵循了这个原

则,书中内容从数据库的创建开始,从表空间管理深入,从备份恢复展开,

从 Statspack 优化扩展,到故障诊断结束,共计 11 章,全书章节布局按照

一个 DBA 需要具备的从业素质进行逐步深入,循序渐进的展开讲解,希望每

个读者在学习的过程中都能够逐步深入,有所收获;作为《深入浅出 Oracle》

一书的姊妹篇,这两本书完全可以互相借鉴、参照阅读,甚至在章节顺序上

完全可以重排成一本更全面的入门与进阶书籍。

根据 IDC 的 新统计数据,在 2006 年,Oracle 数据库以 44.4%的市场占

有率继续稳居关系数据库市场的首位,占据第二位的 IBM 份额为 21.2%

( IDC 2005 年的数据为 Oracle 占有 44.3%, IBM 占有 21.6%),随着

数据库市场的发展和扩大,相关的从业机会进一步增加,这对于学习和选择

Oracle 技术的朋友们都是一个很好的时机和机遇,而作者希望这本书能够在

这样的时代帮助读者朋友们更进一步。

本书作者 Eygle 活跃于国内著名 Oracle 技术论坛 ITPUB(www.itpub.net),

并 全 力 打 造 国 内 具 影 响 力 的 个 人 Oracle 技 术 站 点 Eygle.com

( www.eygle.com),在这个网络时代,读者可以通过在线的网络获得更

多的知识与交流,而图书作为作者沉淀、积累与知识分享,则是一个更为全

面的展示与起点,通过图书与网络的紧密结合,相信现在的读者可以比以往

的任何时代都能够得到快速的进步与提高,本书正是这样一个网络与现实的

结合体。

本书是 ITPUB 技术丛书的第四本,在《Oracle 数据库 DBA 专题技术精粹》

和《Oracle 数据库性能优化》、《深入浅出 Oracle》三书出版的 3 年多以

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 8 页 科技技术新动力

来, ITPUB 和 Oracle 市场都有了长足的发展,希望本书的出现能为读者带

来更深入的技术知识和更多的实践经验。

本书特点

本书是作者多年工作实践的积累和总结,针对 DBA 在工作中的必备知识与技

能,作者精心安排篇章构建本书。本书从数据库的创建入手,循序渐进的引

导大家对数据库管理的必备知识进行由浅入深的探索与学习,全书展现的是

DBA 入门、学习与深入的路线图。

本书继续贯彻了作者 "由浅入深、由点到线再及面 "的学习方法,既可以让初

学者参考学习,又可以帮助具备一定基础的中级 DBA 进行进阶学习,不同层

次的学习者都能从本书的不同内容中受益。

在数据库技术日益普及的今天,浅尝辄止的学习显然已经站不住脚,当今企

业对于 DBA 的要求也越来越高,而本书由浅入深循序渐进的讲解正是希望引

导读者展开 Oracle 技术的深入探索和学习。

本书结构

本书分为 11 章,具体结构划分如下。

第一章:创建 Oracle 数据库,这一章是全书的书眼,通过数据库的创建,由

点及面,很多知识在这一章全面展开,甚至包括数据库迁移与 RMAN。

第二章:从 OEM 到 iSQL*Plus,这是讲究实用的一章,在可能的环境下,

Oracle 的这些工具对于简化我们的管理与维护会起到极大的推进作用。

第三章:Oracle 的字符集,是否很多朋友都曾经为乱码所困惑,是否一个查

询返回的是一堆莫明其妙的 "靠 "字或其它字符?这一章对字符集问题进行了

全面的解析。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 9 页 科技技术新动力

第四章:用户的创建与管理,在完成了数据库创建之后,在提供用户使用之

前,数据库用户必须被创建,作为 DBA,用户的创建和管理是必备的知识。

第五章:表空间和数据文件,作为 Oracle 的逻辑和物理存储,理解空间管理

非常重要,这一章从外部管理到内部机制上对表空间和数据文件等内容进行

了深入分析,Oracle10g 的 ASM 新特性也被包含在这一章内。

第六章:临时表空间和临时文件,这一章介绍了临时表空间和临时文件的原

理及管理维护。

第七章:备份与恢复,作为 DBA 需要具备的一个 重要技能就是备份和恢复,

一个生产数据库的备份是重于一切的,本章全面介绍了 Oracle 数据库的备份

与恢复知识。

第八章:Oracle 的闪回特性,Oracle 从 9i 到 10g 不停的演进着一个强大的

功能,这个功能就是闪回( f lashback) ,这一重要功能已经简化了无数 DBA

的工作,本章从使用到原理上深入的介绍了 Oracle 的这一强大特性。

第九章:数据的加载和卸载,怎样和数据库进行数据交互是实践中经常遇到

的问题,Oracle 的外部表和 DataPump 都是常用的工具,这一章通过实践

的例子,介绍一些同 Oracle 数据库进行数据交换的方法。

第十章:从 statspack 到 ADDM,statspack 是 Oracle10g 之前 DBA 常

用的数据库性能诊断工具,ADDM 是 Oracle10g 引入的自动数据库诊断与监

控程序,本章对这两者的用法与分析进行全面的介绍。

第十一章:故障诊断及分析方法,在具备了全面的学习和知识掌握之后,本

章将告诉大家如何有效的将这些知识结合起来,形成稳定的分析方法和经验

积累。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 10 页 科技技术新动力

本书的读者对象

本书适用于打算进入 Oracle 领域的初学者,也适用于具备一定数据库基础、

打算深入学习 Oracle 技术的数据库从业人员,尤其适用于入门、进阶以及希

望深入研究 Oracle 技术的数据库管理人员;本书也可以作为各大中专院校相

关专业的教学辅导和参考用书,或作为相关培训机构的培训教材。

本书约定

1.为了给读者提供更多的学习资源,同时弥补本书篇幅有限的遗憾,本书提

供了部分的参考链接,许多本书无法详细介绍的问题都可以通过这些链接找

到答案。相关文档可以从作者的网站(www.eygle.com )上找到。

2.本书所列出的插图、运行结果可能会与读者实际环境中的操作界面有所差

别,这可能是由于操作系统平台、Oracle 版本的不同而引起的,在此特别说

明,一切以实际情况为准。

3.广大读者如有好的建议或在学习本书中遇到疑难问题,欢迎到相关网站

(http://www.eygle.com ) 进 行 探 讨 , 也 可 发 电 子 邮 件 到 :

[email protected]

订购方式

1. ITPUB 订购

书名:《循序渐进 Oracle--数据库管理、优化与备份恢复》,售价:68 元

( 含邮费,快递方式发货 )

书名:《深入浅出 Oracle--DBA 入门、进阶与诊断案例》,售价:65 元( 含

邮费,快递方式发货 )

书名:《 oracle 数据库性能优化》,售价:65 元( 含邮费,快递方式发货 )

书名:《Oracle 数据库 DBA 专题技术精粹》,售价: 65 元( 含邮费,快

递方式发货 )

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 11 页 科技技术新动力

联系方式 :

电话联络方式:王小姐 13366921750 , 010-81732264

网上联系方式:电子邮件联系:[email protected]

MSN: [email protected] (上班时间在线)

站 内 短 消 息 :

http://www.itpub.net/private.php?s=...ge&userid=93405

定购方式:可以把相应款项汇到以下银行卡中,汇款时请注意,汇款金额加

一些零头,以便区分(例如: 68.05 元或者 68.10 元)

招商银行: 6225 8801 0065 4988 收款人:王蓓

工商银行: 9558 8002 0013 6063 225 收款人:王蓓

建设银行: 6222 8000 1285 1005 265 收款人:王蓓

农业银行: 6228 4800 1019 8972 712 收款人:王蓓

邮政储蓄: 6221 8810 0003 1762 073 收款人:王蓓

中国银行: 4563 5101 0086 9346 670 收款人:王敏

请务必在汇款后,请立即告知我以下信息,以便我即刻核对款项,第一时间

为您发货

姓名: _________________

联系电话: ______________

汇款金额: ______________

汇款银行: ______________

定购书的名称: ___________

快递地址: ______________

2.网上书店 China-Pub 的定购地址如下 :

http://www.china-pub.com/computers/common/info.asp?id=35463

3.网上书店 Dearbook 的定购地址如下 :

http://www.dearbook.com.cn/Book/ViewBook.aspx?pno=ts00212167

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 12 页 科技技术新动力

4.上门取书

如果这周网上书店还到不了货,希望一睹为快的北京朋友也可以到我的住所

取书:

可以到 北四环 亚运村小营(华堂商场对面)拿书

来时请提前预约,电话 :6493 7293

希望等待能够尽快结束,也希望大家能够从本书中有所收获。

新书的第一章可以从本站得到完全版本,希望大家阅读以后再决定是否购买,

阅读链接:

http://www.eygle.com/archives/2008/08/stepbs_oracle_info.html

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 13 页 科技技术新动力

ITPUB 培训介绍

ITPUB培训中心(http://edu.itpub.net/)是 ITPUB技术社区(www.itpub.net)

的唯一培训机构,itpub培训中心成立于 2004 年,经过 4 年的培训历程,培

训学员遍布各个行业,在业内有广泛的知名度。

培训特色: ITPUB培训坚持案例教学法,讲师都是具有丰富行业背景和实施

经验的一线人员,以若干由浅入深的实际案例为主线索展开对理论知识和实

践技能的讲课。

优秀的师资: itpub培训机构的讲师均为 itpub的版主和 itpub资深技术专家,

拥有扎实的理论知识和丰富的实践技术。

良好的培训环境: itpub培训课程开班授课人数一般控制在 20 人以内,以确

保讲师能精心的辅导到每一位学员。课室环境内舒适的空调,人手一台电脑,

投影教学,理论听课和实践操作相结合。

培训课程安排:主要开设 oracle数据库相关培训和Oracle Applications 11i

相关培训。具体为 oralce数据库方面: oralce数据库基础DBA培训、 oracle

数据库性能优化培训、 oracle数据库备份与恢复专题培训、 oracle rac高可

用性培训。Oracle Applications 11i方面,主要是财务模块和制造模块培训。

企业培训服务:根据企业需求,专业定制培训课程,帮助企业短期提升 IT产

品使用技巧,完成知识更新,感受 新的 IT技术和产品,分享专家级 IT实践

经验。

网上报名(推荐使用),可以访问 ITPUB学习与交流中心,报名后我们会有

专人跟进联络 http://edu.itpub.net/

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 14 页 科技技术新动力

itpub培训咨询方式如下:

电话联系方式: 王小姐: 13366921750 , 010-81732264

咨询 ,报名MSN: [email protected]

电子邮件联系: [email protected]

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 15 页 科技技术新动力

本期目录

Oracle 11g新功能纵览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

如何使用ADRCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

LOB类型功能增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

数据压缩技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Server Result Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

spfile Fault-tolerant增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Memory_target与自动内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

统计信息收集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

RMAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

分区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Oracle 11g alert文件的变化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Oracle 11g的基本安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Oracle 11g Advanced Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Oracle 11g的数据库创建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Oracle 11g资料和白皮书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 16 页 科技技术新动力

Oracle 11g 新功能纵览

作者:勤勤同学

7 月 12 日,甲骨文在美国纽约宣布推出Oracle数据库 11g,这是Oracle数据库

这个全球 流行的数据库的 新版本。Oracle数据库 11g有 400 多项功能,经

过了 1500 万个小时的测试,开发工作量达到了 3.6 万人 /月。迄今为止,在甲

骨文推出的产品中,Oracle数据库 11g是 具创新性和质量 高的软件。

甲骨文公司数据库服务器技术高级副总裁Andy Mendelsohn说:“Oracle数据

库 11g以甲骨文公司 30 年的设计经验为基础,为企业提供了下一代信息管理能

力。我们的客户正面临着数据迅速增加、数据集成度不断提高以及实现数据连接

性的信息技术成本持续增大的压力,这种压力是空前的。Oracle数据库 10g率

先成为为网格计算而设计的数据库,一半以上的甲骨文客户已经迁移到了

Oracle数据库 10g。为了加速采用Oracle网格并扩大Oracle网格的规模,客户

要求我们提供一些关键功能,Oracle数据库 11g提供了这些功能。正如我们的

客户所说的那样,Oracle数据库 11g真正克服了挑战并实现了真正的创新。”

Oracle数据库 11g可以帮助企业管理企业信息、更深入地洞察业务状况并迅速

自信地做出调整以适应不断变化的竞争环境。新版数据库增强了Oracle数据库

独特的数据库集群、数据中心自动化和工作量管理功能。甲骨文客户可以在安全

的、高度可用和可扩展的、由低成本服务器和存储设备组成的网格上满足 苛刻

的交易处理、数据仓库和内容管理应用。

实时应用测试组件缩短变化所需时间、降低有关风险和成本

Oracle数据库 11g具有先进的自助式管理功能和自动化功能,可帮助企业满足

服务级别协议的要求。例如,对需要定期升级数据库和操作系统并改变硬件和系

统的企业来说,Oracle数据库 11g的Oracle实时应用测试(Oracle Real

application Testing)组件非常适用。这一功能使Oracle数据库 11g成为有史

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 17 页 科技技术新动力

以来第一个能够帮助企业以可控和经济的方法迅速测试并管理 IT环境变化的数

据库。

提高灾难恢复解决方案的投资回报

Oracle数据库 11g的Oracle Data Guard组件可帮助客户利用备用数据库,以

提高生产环境的性能,并保护生产环境免受系统故障和大面积灾难的影响。

Oracle Data Guard组件可以同时读取和恢复单个备用数据库,这种功能是业

界独一无二的,因此Oracle Data Guard组件可用于对生产数据库的报告、备

份、测试和“滚动”升级。通过将工作量从生产系统卸载到备用系统,Oracle Data

Guard组件还有助于提高生产系统的性能,并组成一个更经济的灾难恢复解决方

案。

增强信息生命周期管理和存储管理能力

Oracle数据库 11g具有极新的数据划分和压缩功能,可实现更经济的信息生命

周期管理和存储管理。很多原来需要手工完成的数据划分工作在Oracle数据库

11g中都实现了自动化,Oracle数据库 11g还扩展了已有的范围、散列和列表划

分功能,增加了间隔、索引和虚拟卷划分功能。另外,Oracle数据库 11g还具

有一套完整的复合划分选项,可以实现以业务规则为导向的存储管理。

Oracle数据库 11g以成熟的数据压缩功能为基础,可在交易处理、数据仓库和

内容管理环境中实现先进的结构化和非结构化数据压缩。采用Oracle数据库

11g中先进的压缩功能,所有数据都可以实现 2x至 3x或更高的压缩比。

全面回忆数据变化

Oracle数据库 11g具有Oracle全面回忆(Oracle Total Recall)组件,可帮助

管理员查询在过去某些时刻指定表格中的数据。管理员可以用这种简单实用的方

法给数据增加时间维度,以跟踪数据变化、实施审计并满足法规要求。

大限度提高信息可用性

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 18 页 科技技术新动力

在保护数据库应用免受计划停机和意外宕机影响方面,甲骨文一直领先于业界。

Oracle数据库 11g进一步增强了这种领先地位,数据库管理员现在可以更轻松

地达到用户的可用性预期。新的可用性功能包括:Oracle闪回交易(Oracle

Flashback Transaction),可以轻松撤销错误交易以及任何相关交易;并行备

份和恢复功能,可改善非常大数据库的备份和存储性能;“热修补”功能,不必

关闭数据库就可以进行数据库修补,提高了系统可用性。另外,一种新的顾问软

件 — 数据恢复顾问,可自动调查问题、充分智能地确定恢复计划并处理多种

故障情况,从而可以极大地缩短数据恢复所需的停机时间。

Oracle快速文件

Oracle数据库 11g具有在数据库中存储大型对象的下一代功能,这些对象包括

图像、大型文本对象或一些先进的数据类型,如XML、医疗成像数据和三维对象。

Oracle快速文件(Oracle Fast Files)组件使得数据库应用的性能完全比得上

文件系统的性能。通过存储更广泛的企业信息并迅速轻松地检索这些信息,企业

可以对自己的业务了解得更深入,并更快地对业务做出调整以适应市场变化。

更快的XML

在Oracle数据库 11g中, xml DB的性能获得了极大的提高,XML DB是Oracle

数据库的一个组件,可帮助客户以本机方式存储和操作XML数据。Oracle数据

库 11g增加了对二进制XML数据的支持,现在客户可以选择适合自己特定应用及

性能需求的XML存储选项。XML DB还可以通过支持XQuery、 JSR-170、

SQL/XML等标准的业界标准接口来操作XML数据。

透明的加密

Oracle数据库 11g进一步增强了Oracle数据库无与伦比的安全性。这个新版数

据库增强了Oracle透明数据加密功能,将这种功能扩展到了卷级加密之外。

Oracle数据库 11g具有表空间加密功能,可用来加密整个表、索引和所存储的

其他数据。存储在数据库中的大型对象也可以加密。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 19 页 科技技术新动力

嵌入式OLAP行列

Oracle数据库 11g在数据仓库方面也引入了创新。OLAP行列现在可以在数据库

中像物化图那样使用,因此开发人员可以用业界标准SQL实现数据查询,同时仍

然受益于OLAP行列所具有的高性能。

新的连续查询通知(Continuous Query Notif ication)组件在数据库数据发生

重要变化时,会立即通知应用软件,不会出现由于不断轮询而加重数据库负担的

情况。

连接汇合和查询结果高速缓存

Oracle数据库 11g中各项提高性能和可扩展性的功能可帮助企业维护一个高性

能和高度可扩展的基础设施,以向企业的用户提供质量 高的服务。Oracle数

据库 11g进一步增强了甲骨文在性能和可扩展性方面的业界领先地位,增加了查

询结果高速缓存等新功能。通过高速缓存和重用经常调用的数据库查询以及数据

库和应用层的功能,查询结果高速缓存功能改善了应用的性能和可扩展性。数据

库驻留连接汇合(Database Resident Connection Pooling)功能通过为非多

线程应用提供连接汇合,提高了Web系统的可扩展性。

增强了应用开发能力

Oracle数据库 11g提供多种开发工具供开发人员选择,它提供的简化应用开发

流程可以充分利用Oracle数据库 11g的关键功能,这些关键功能包括:客户端

高速缓存、提高应用速度的二进制XML、XML处理以及文件存储和检索。另外,

Oracle数据库 11g还具有新的 Java实时编译器,无需第三方编译器就可以更快

地执行数据库 Java程序;为开发在Oracle平台上运行的 .NET应用,实现了与

Visual Studio 2005 的本机集成;与Oracle快捷应用配合使用的Access迁移工

具;SQL Developer可以轻松建立查询,以快速编制SQL和 PL/SQL例程代码。

增强了自助式管理和自动化能力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 20 页 科技技术新动力

Oracle数据库 11g的各项管理功能用来帮助企业轻松管理企业网格,并满足用

户对服务级别的要求。Oracle数据库 11g引入了更多的自助式管理和自动化功

能,将帮助客户降低系统管理成本,同时提高客户数据库应用的性能、可扩展性、

可用性和安全性。Oracle数据库 11g新的管理功能包括:自动SQL和存储器微

调;新的划分顾问组件自动向管理员建议,如何对表和索引分区以提高性能;增

强的数据库集群性能诊断功能。另外,Oracle数据库 11g还具有新的支持工作

台组件,其易于使用的界面向管理员呈现与数据库健康有关的差错以及如何迅速

消除差错的信息。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://tech.it168.com/j/2007-07-19/200707191438578.shtml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 21 页 科技技术新动力

如何使用 ADRCI

作者: shahand

一.关于 ADR Command Interpreter (ADRCI)

关于Automatic Diagnostic Repository (ADR)

一个存放数据库诊断日志、跟踪文件的目录,称作ADR base,对应初始化参数

DIAGNOSTIC_DEST,如果设置了ORACLE_BASE环境变量,

DIAGNOSTIC_DEST等于ORACLE_BASE,如果没有设置ORACLE_BASE,则

等与ORACLE_HOME/log。

关于ADRCI

ADRCI Command-Line Util ity 命令行工具,使用该工具查看ADR中的日志和

跟踪信息,查看健康报告;还可以将相关错误日志和信息打包成 zip文件,以便

提供给 oracle support分析。

在ADRCI工具中可以执行很多命令,另外可以象 sqlplus一样执行脚本。

二.开始使用ADRCI

1.运行ADRCI,$ORACLE_HOME/bin/adrci

[root@ractest ~]# su - oracle

[oracle@ractest ~]$ which adrci

~/11g/bin/adrci

[oracle@ractest ~]$ adrci

ADRCI: Release 11.1.0.4.0 - Beta on Thu Jul 12 05:39:29 2007

Copyright (c) 1982, 2006, Oracle. Al l r ights reserved.

ADR base = "/home/oracle"

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 22 页 科技技术新动力

adrci>>

退出ADRCI,在 adrci>>提示符下敲入 exit或者 quit , 回车

大小写敏感:在 adrci中命令大小写不敏感

adrci>>SHOW traCEfi le

diag/rdbms/orcl/orcl/trace/orcl_ora_20187.trc

diag/rdbms/orcl/orcl/trace/orcl_fbar_11388.

但使用搜索串的时候是敏感的,比如:SHOW TRACEFILE %mmon%

2.如何得到帮助信息:

( 1)得到 adrci中的命令列表

adrci>>help

HELP [topic]

Avai lable Topics:

CREATE REPORT

( 2)也可以使用 adrci – help来得到 adrci的命令使用和选项。如:

[oracle@ractest ~]$ adrci -help

Syntax:

adrci [-help] [script=script_f i lename]

[exec = "one_command [;one_command;...]"]

Options Descript ion (Default)

-----------------------------------------------------------------

script script f i le name (None)

help help on the command options (None)

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 23 页 科技技术新动力

exec exec a set of commands (None)

-----------------------------------------------------------------------

( 3)如何得到特定命令的帮助信息:

adrci>>HELP SHOW TRACEFILE

Usage: SHOW TRACEFILE [f i le1 f i le2 ...] [-rt | -t]

[-i inc1 inc2 ...] [-path path1 path2 ...]

…………… .

3.使用ADRCI进行批处理命令或者脚本

(1) 使用 exec选项,用分号将命令隔开

这里文档中有个小问题,文档中写ADRCI EXEC="COMMAND[;

COMMAND]...",只能在windows平台这样写,在 unix/linux平台下必须用小

写来执行。

adrci>>show homes;show base; echo '20070712'

ADR Homes:

diag/rdbms/orcl/orcl

ADR base is "/home/oracle"

20070712

adrci>>

adrci>>

adrci>>exit

[oracle@ractest ~]$ adrci exec="show homes;echo '20070712';echo ' ';show

base; "

ADR Homes:

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 24 页 科技技术新动力

diag/rdbms/orcl/orcl

20070712

ADR base is "/home/oracle"

(2) 使用 script选项。 adrci SCRIPT=adrci_script.txt

但 shahand使用的 beta版似乎还有些问题。。。。好像没有任何结果一样

[oracle@ractest ~]$ cat /tmp/a

show homes;

[oracle@ractest ~]$ adrci script=/tmp/a

[oracle@ractest ~]$ cat /tmp/a

fadsfdsa

[oracle@ractest ~]$ adrci script=/tmp/a

[oracle@ractest ~]$ cat /tmp/a

show trace;

[oracle@ractest ~]$ adrci script=/tmp/a

[oracle@ractest ~]$ cat /tmp/a

SET HOMEPATH /home/oracle/diag/rdbms/orcl/orcl;show trace;

[oracle@ractest ~]$ adrci script=/tmp/a

[oracle@ractest ~]$

三.使用ADRCI查看Oracle数据库后台报警日志( alert_sid.log)和跟踪文

注意:以下大部分命令都需要用Ctrl+C 来结束,并返回到 adrci命令行

1.查看完整alert信息:

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 25 页 科技技术新动力

adrci>>SHOW ALERT

2. 查看 新 alert信息:

adrci>> SHOW ALERT –TAIL

查看 新 20 条 alert信息:

adrci>> SHOW ALERT -TAIL 20

只查看 600 的错误

adrci>>SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-600%'"

查看ORA-错误信息,注意这里的参数很好,比较人性化,可以帮助提供错误时

adrci>>SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-%'"

ADR Home = /home/oracle/diag/rdbms/orcl/orcl:

*************************************************************

2007-06-28 04:36:01.046000 +08:00

Errors in f i le /home/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_20222.trc:

ORA-00942: table or view does not exist

2007-07-03 08:19:52.641000 +08:00

ORA-1089 : opidrv abort

再用以下该命令的帮助:

adrci>>help show alert

Usage: SHOW ALERT [-p <predicate_string>] [-tai l [num]] [-v]

[-f i le <alert_f i le_name>]

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 26 页 科技技术新动力

Purpose: Show alert messages.

Options:

[-p <predicate_str ing>]: The predicate str ing must be double quoted.

The f ields in the predicate are the f ields in the alert message's

XML schema. To get the f ield def ini t ions, use command:

"describe&

3.查看跟踪文件

常用的有:

(1)列出所有跟踪文件: SHOW TRACEFILE

(2)模糊查询跟踪文件,比如某个进程的,注意这里区分大小写 SHOW

TRACEFILE %mmon%

(3)可以指定某个路径 SHOW TRACEFILE %mmon% -PATH

/home/steve/temp

(4)象 ls那样按时间排序 SHOW TRACEFILE -RT

四.其他体验和说明

1.关于在 adrci中执行 os命令,可以直接在 adrci中执行 os命令。所以当发出一

个不存在的命令的时候,错误信息也就是系统返回的了。虽然信息有点怪 …明

明在 ksh下,却返回 bash的错误。。。

adrci>>id ----------shahand偶然试出来的,居然可以直接执行

uid=10000(oracle) gid=1001(dba) groups=1001(dba),1002(oinstal l)

context=user_u:system_r:unconfined_t

adrci>>host date

DIA-48415: Syntax error found in str ing [host date] at column [9]

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 27 页 科技技术新动力

adrci>>host

[oracle@ractest ~]$ exit

exit

adrci>>! -------------这样不行

/bin/bash: -c: l ine 0: syntax error near unexpected token `newline'

/bin/bash: -c: l ine 0: `! '

Addit ional information: 512

adrci>>! date -------------这就可以

Thu Jul 12 06:20:40 CST 2007

---------------------------------------------------------------------------------

[oracle@ractest ~]$ ksh

$ adrci

ADRCI: Release 11.1.0.4.0 - Beta on Thu Jul 12 06:28:14 2007

Copyright (c) 1982, 2006, Oracle. Al l r ights reserved.

ADR base = "/home/oracle"

adrci>>abc

/bin/bash: abc: command not found --------明明在 ksh下,却返回 bash的错

误… .

Addit ional information: 32512

adrci>>ksh

$ abc

ksh: abc: not found<

2.确认了在 adrci中使用的 alert是 log.xml,而非 alert_orcl. log

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 28 页 科技技术新动力

对 alert进行置空 (> fi le), adrci不受影响;

对 log.log进行置空, adrci返回的错误挺吓人的: internal error code,跟

00600 一个风格啊。。。 应该是某些 tag找不到,就报这么狠的错误

adrci>>show alert

ADR Home = /home/oracle/diag/rdbms/orcl/orcl:

*************************************************************

DIA-48001: internal error code, arguments: [17183], [0x84B178C], [], [], [],

[], [], []

DIA-48154: reached end of f i le for alert log

DIA-48102: encountered the end-of-f i le when reading&nb

3.在 adrci中不能使用退格( backspace)怎么办

跟 sqlplus一样,有下面几种选择:

用 del键;

使用Ctrl+backspace;

使用Ctrl+u删除整行( bash下);

在 os命令行下 stty erase ^h (可以直接写到 oracle的 .profi le/.bash_profi le

下面)

4.另外 adrci一个重要的功能是查看 Incident和对 Incident打包的功能。本文没

有涉及到该部分内容。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.itpub.net/811724.html

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 29 页 科技技术新动力

LOB 类型功能增强

作者:yangtingkun

Oracle的 11g中,OracleLOB类型的功能得到了很大程度上的增强,有功能方

面的,有性能方面的,还有易用性方面的。

首先Oracle11g的 sqlplus已经可以支持BLOB的显示了。在 10g及以前版本,

是无法在 sqlplus里面显示BLOB的,必须要想办法转化为RAW,十分不方便,

现在 11g的 sqlplus已经可以支持 LOB类型的显示了。

这个功能完全是在 sqlplus客户端工具上完成的,只要 sqlplus是 11g以上版本,

就可以显示 blob,和Oracle的 server版本没有关系。

$ sqlplus yangtk/yangtk@ytk102

SQL*Plus: Release 11.1.0.6.0 - Production on Mon Aug 20 18:02:36 2007

Copyright (c) 1982, 2007, Oracle. Al l r ights reserved.

Connected to:

Oracle Database 10g Enterprise Edit ion Release 10.2.0.1.0 - Production

With the Parti t ioning, OLAP and Data Mining options

SQL> desc t_blob

Name Nul l? Type

----------------------------------------- --------

ID NUMBER

OTHER BLOB

SQL> COL OTHER FORMAT A50

SQL> SELECT * FROM T_BLOB;

ID OTHER

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 30 页 科技技术新动力

---------- --------------------------------------------------

1 ABC12340D30392BE398F

SQL>

上面是一个 11g的 sqlplus客户端,连接到 10g的 server,执行的查询,下面看

看用 10g的 sqlplus连接 11g的 server:

E:>sqlplus yangtk/yangtk@ora11g

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8 月 20 15:38:58 2007

Copyright (c) 1982, 2005, Oracle. Al l r ights reserved.

连接到 :

Oracle Database 11g Enterprise Edit ion Release 11.1.0.6.0 - Production

With the Parti t ioning, OLAP, Data Mining and Real Appl ication Testing options

SQL> SELECT * FROM T_BLOB;

SP2-0678: 列或属性类型无法通过 SQL*Plus 显示

在 sqlplus中显示BLOB内容只是 LOB类型增强的一小部分。Oracle在服务器端

对 LOB增加很多的功能。

首先 LOB类型的容量从 4G增加到了 大 128T,如果说原来的 4G的容量偏小的

话,那么 128T足够存放任何信息了。

目前数据库容量超过 10T的屈指可数, 128T几乎可以将任何一个数据库完全的

存放在一条记录的一个字段中了。

由于是在笔记本上虚拟出来的 11g环境,没有足够的空间来测试这个功能了。

Oracle11g增加了 LOB的新存储参数SECUREFILE,使用这个参数可以设置 LOB

的一些新功能,比如压缩 compress、加密 encript以及 duplicate功能。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 31 页 科技技术新动力

设置压缩功能可以对 LOB字段进行单独的压缩,这个压缩功能独立于表和索引的

压缩。

加密功能可以避免对 LOB字段进行明文存放。

DUPLICATE功能使得Oracle可以避免存储相同的 LOB数据,对于完全相同的

LOB,Oracle实际只存储一份。

除了上面三个新增功能外,Oracle对RETENTION也进行了增强。在 11g中对于

RETENTION功能进行了细化,增加了MAX/MIN/AUTO/NONE四个关键字。使

得用户可以设置 LOB类型的读一致性和闪回功能。

11g在 nocache和 cache reads语句中的 logging语句中新增了一个

FILESYSTEM_LINK_LOGGING,这种方式的 LOGGING只记录元数据的变化。

使用SECUREFILE还可以提高 LOB处理的性能。 FAST BULK DATA TRANSFER

可以提高大数据量访问的性能。 LOB PREFETCH可以提高常访问的小数据量

LOB的性能。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.itpub.net/838020.html

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 32 页 科技技术新动力

数据压缩技术

作者:NinGoo

随着数据量的不断海量, CPU 的不断强劲,双核四核的叫个不停,一种叫做时

间换空间的优化技术应该会越来越流行。所以,数据压缩对于今后的数据库来说,

应该会从核武器变成常规武器。 Oracle 从 9i 开始羞羞答答的引入表级压缩,一

直以来都是像中国的核电站一样,宣传的用处大,论实际的贡献就不怎么样了。

Oracle11g 似 乎 是 正 儿 八 经 的 要 推 广 数 据 压 缩 技 术 了 , 专 门 推 出 了 一 个 叫 做

Advance Compression 的 组 件 , 全 面 支 持 普 通 表 压 缩 , 非 结 构 化 数 据 压 缩

( SecureFi le 数据压缩), Data Pump 数据压缩,以及 RMAN 备份压缩,数据压

缩技术从此名正言顺的登上历史舞台。既然是专门做为一个 Option 推出,Oracle

一定是对该特性相当有信心,所以需要单独为该特性购买 License。

在 Oracle9i 中虽然引入了表压缩,但是有很大的限制。只能对批量装载操作(比

如直接路径装载, CTAS 等)涉及的数据进行压缩,普通的 DML 操作的数据是

无法压缩的。这应该是对于写操作的压缩难题没有解决,一直遗留到 Oracle11g,

总算是解决了关系数据压缩的写性能问题。Oracle 的表压缩是针对 Block 级别的

数据压缩,主要技术和 Oracle9i 差不多,还是在 Block 中引入 symbol 表,将 block

中的重复数据在 symbol 中用一个项表示。 Oracle 会对 block 进行批量压缩,而

不是每次在 block 中写入数据时都进行压缩,通过这种方式,可以尽量降低数据

压缩对于 DML 操作的性能影响。这样,在 block 级别应该会引入一个新的参数,

用于控制 block 中未压缩的数据量达到某个标准以后进行压缩操作。

SecureFi le 也是 Oracle11g 新推出的一项特性,用于存储非结构化数据。SecureFile

也将支持数据压缩操作。这样对于传统的 LOB 字段也可以进行压缩,将极大的

减少大型数据库的存储空间需求。当然,有得比有失,压缩和解压时,对于 CPU

的要求也将更高。但是,目前 CPU 的发展速度明显比 IO 和存储空间快速的情况

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 33 页 科技技术新动力

下,压缩是大有可为的技术。通过在压缩率和压缩效率方面的不断提升,以后应

该为成为各个数据库的标准配置。

除了对数据库中的数据进行压缩, Advance Compression Option 还将支持备份数

据的压缩。做为逻辑备份的 Data Pump 和物理备份的 RMAN 工具,都将支持该

技术。在 Oracle10gR2 中,Data Pump 已经开始支持压缩源数据,Oracle11g 中则

可以直接压缩导出文件,这样导出的时候就可以极大的减少存储空间的需求。在

以前版本中,利用 WinRAR 等,经常可以将几个 G 的导出文件压缩到几十 M,

Oracle11g 的白皮书上说压缩率可以达到 74.67%,等软件出来,大家可以好好的

测试一把。同样的,Oracle 也在 10g 中开始引入 RMAN 的压缩技术。但是 Oracle11g

号称采用了更先进的 ZLIB 要所算法,可以比 Oracle10g 的压缩算法快上 40%,

空间需求也将减少 20%。

除了上述的数据压缩技术, Oracle 11g Advanced Compression Option 还将引入另

外一种压缩技术。我们知道在 Data Guard 中,需要将日志从主库传递到备库。

如果主库的事务很多,则单位时间内需要传递的日志量将相当可观。如果能将这

些日志压缩后在传递,然后在备库解压后应用,将极大的减少对于网络带宽的需

求,从而已减少主备库的时间差。

另外,Oracle 的 bitmap 一直就是压缩存储的, 10g 中的 bi tmap 对于 9i 就有比较

大的改动,通过一些细节的完善,提供更好的性能和更高的稳定性,也是 oracle

一贯的风格。对于 bitmap 在 Oracle11g 中将如何实现,也将是非常值得关注的一

个特点。

从 Oracle11g 开始,将没有什么是不可压缩的。使用更强大的 CPU,就可以降低

或者延缓对存储空间无休止的渴求,或许很多大型 OLTP 和大多数的数据仓库,

都将从数据压缩技术中收益。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://tech.it168.com/db/o/2007-07-16/200707160913343_1.shtml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 34 页 科技技术新动力

Server Result Cache

作者:NinGoo

对于同样的操作,如果能在多个 process 或者 sess ion 间共享结果,对于性能优化

自然是非常有帮助的。从 oracle7 开始提供的 share pool,可以让同样的 SQL 可

以解析一次,执行多次,有效的减少了多个 session 执行相同 SQL 语句时的硬解

析,如果应用很好的使用了绑定变量,那么共享 SQL 对于系统整体性能的提升

是不言而喻的。

那么,除了能共享 SQL 和执行计划,还能共享什么?直接共享 SQL 执行后的结

果,使得相同或者部分相同的 SQL 语句甚至只需要执行一次,以后再次执行时

就直接得到结果?没错, Oracle11g 的新特性 Server Resul t Cache 就能提供这样

功能。Oracle 在白皮书上宣布,对于读频繁的系统,通过该特性,甚至有可能提

升系统性能 200%,对于大量报表的数据仓库项目来说,这个特性应该是一个不

错的消息。

Server Resul t Cache 通过在 SGA 中分配一个缓冲区来保存查询结果,Oracle 引入

了一个新的初始化参数来控制这个 cache 的大小: result_cache_max_size。可以

在 system、 sess ion、 table 或者语句级别来设置 cache 的使用。在语句级可以使

用一个新的 hint 来控制是否缓存查询结果。另外, Oracle 还提供了一个新的

PL/SQL 用来监控和管理 Server Result Cache,比如可以清空整个 cache 的内容或

者清空某个查询的结果,也可以生成 cache 的使用报告等。

既然使用了 cache,自然会有 cache 查找和 cache 数据清除算法的问题。估计查

找还会是通过 hash 算法,这样还需要引入几个相关的 la tch。 Cache 中的数据,

也应该是通过 LRU 或者类似 LRU 的算法来管理其生命期。

Server Resul t Cache 不仅仅能缓存整个查询的结果,也能缓存查询中某部分操作

的结果,比如缓存一次排序的结果,就可以避免再次执行时的排序操作。对于一

些比较耗资源的查询操作,缓存结果应该能很好的提升性能。不知道 11g 对于该

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 35 页 科技技术新动力

特性的引入,会不会像 Oracle7 引入共享池一样,极大的改善系统性能呢?我们

只好拭目以待更进一步的测试了。

除了 Server 端引入 Result Cache,Oracle11g 另外一个值得期待的特性就是 Client

端 cache 机制的引入。通过 OCI 接口,在 Client 端也可以缓存查询结果。典型的

场景就是我们在应用服务器端缓存查询结果,这样在前端执行该查询时,甚至不

需要到数据库中去执行该查询。客户端结果缓存在 OCI 进程中,可以被该进程

中的多个 session 或者线程共享。客户端缓存机制通过一个新的初始化参数来控

制: cl ient_resul t_cache_size,当该参数大于 0 时,该特性被启用。同样的,该

特性也可以在 system、 sess ion、 table 或者语句级来设置。通过在服务端设置参

数而不是客户端设置,可以集中的管理该特性,但是也可以在各个客户端单独进

行设置,客户端的设置将覆盖服务端的设置。

通过在服务端和客户端引入对于查询结果的缓存机制, Oracle11g 或许能极大的

提高查询性能。对于一些读比较频繁的系统,比如数据仓库应用, Oracle11g 或

者更值得期待。

Server resul t cache 是在 shared pool 中为查询结果开辟一块专用的缓存,通过新

引入的一个初始化参数来控制该 cache 的大小: resul t_cache_max_size。如果

resul t_cache_max_size=0 则表示禁用该特性。参数 resul t_cache_max_resul t 则控

制单个缓存结果可以占总的 Server resul t cache 大小的百分比。另外还有一个初

始化参数用于控制 Server resul t cache 的模式: resul t_cache_mode,如果取值为

auto,则优化器会自动判断是否将查询结果缓存;如果取值为 manual(这是默认

值),则需要通过查询提示 resul t_cache 来告诉优化器是否缓存结果;如果取值

为 force,则系统会尽可能的缓存查询结果,当然,即使参数取值为 force,也可

以通过提示 no_resul t_cache 来拒绝缓存结果。在 i tpub 关于该特性的讨论中,有

人提到,文档中 resul t_cache_mode 只有 manual/force 两个取值。这个可能是文

档的 bug,通过给参数赋一个非法值得到的报错信息中明白的说明有三个取值:

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 36 页 科技技术新动力

SQL> alter session set result_cache_mode=a;

ERROR:

ORA-00096: inval id value A for parameter result_cache_mode, must be from

among FORCE, MANUAL, AUTO

Oracle11g 还引入了一个 package 专门用于管理 server resul t cache:

dbms_resul t_cache

清空 server resul t cache

SQL> exec dbms_result_cache.f lush

PL/SQL procedure successful ly completed.

查看 server resul t cache 的内存使用报告

SQL> set serveroutput on

SQL> exec dbms_result_cache.memory_report

R e s u l t C a c h e M e m o r y R e p o r t

[Parameters]

Block Size = 1K bytes

Maximum Cache Size = 1184K bytes (1184 blocks)

Maximum Result Size = 59K bytes (59 blocks)

[Memory]

Total Memory = 5132 bytes [0.006% of the Shared Pool]

.. . Fixed Memory = 5132 bytes [0.006% of the Shared Pool]

.. . Dynamic Memory = 0 bytes [0.000% of the Shared Pool]

PL/SQL procedure successful ly completed.

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 37 页 科技技术新动力

通过动态性能视图 v$resul t_cache_stat is t ics 可以知道 server resul t cache 的使用

统计信息。

SQL> select * from v$result_cache_statist ics;

ID NAME VALUE

---------- -------------------------------- --------

1 Block Size (Bytes) 1024

2 Block Count Maximum 1184

3 Block Count Current 0

4 Result Size Maximum (Blocks) 59

5 Create Count Success 0

6 Create Count Fai lure 0

7 Find Count 0

8 Inval idation Count 0

9 Delete Count Inval id 0

10 Delete Count Val id 0

10 rows selected.

其他相关动态性能视图:

v$resul t_cache_objects

v$resul t_cache_memory

v$resul t_cache_dependency

下面我们看一个实际的例子

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 38 页 科技技术新动力

SQL> set autotrace on

SQL> select /*+ result_cache */ count(*) from test;

COUNT(*)

----------

11865

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1)

1 0 RESULT CACHE OF '7rkq2h8sb7kdg5sjxw69z8c45g'

2 1 SORT (AGGREGATE)

3 2 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48

Card=12024)

Statist ics

----------------------------------------------------------

337 recursive cal ls

0 db block gets

291 consistent gets

0 physical reads

0 redo size

352 bytes sent via SQL*Net to cl ient

500 bytes received via SQL*Net from cl ient

2 SQL*Net roundtr ips to/from cl ient

5 sorts (memory)

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 39 页 科技技术新动力

0 sorts (disk)

1 rows processed

注意到执行计划中的 RESULT CACHE OF ‘ 7rkq2h8sb7kdg5sjxw69z8c45g’,说

明已经缓存前面两步的结果。

再来看 resul t cache 的内存使用情况

SQL> exec dbms_result_cache.memory_report

R e s u l t C a c h e M e m o r y R e p o r t

[Parameters]

Block Size = 1K bytes

Maximum Cache Size = 1184K bytes (1184 blocks)

Maximum Result Size = 59K bytes (59 blocks)

[Memory]

Total Memory = 103528 bytes [0.112% of the Shared Pool]

.. . Fixed Memory = 5132 bytes [0.006% of the Shared Pool]

.. . Dynamic Memory = 98396 bytes [0.107% of the Shared Pool]

.. . . . . . Overhead = 65628 bytes

.. . . . . . Cache Memory = 32K bytes (32 blocks)

.. .. . . . . . . . Unused Memory = 30 blocks

.. ... . . . . . . Used Memory = 2 blocks

.. ... . . . . . . . . . . Dependencies = 1 blocks (1 count)

.. . . . . . . . . . . . . . Results = 1 blocks

.. .. . . . . . . . . . . . . . . . SQL = 1 blocks (1 count)

PL/SQL procedure successful ly completed.

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 40 页 科技技术新动力

查看 v$resul t_cache_stat is t ics

SQL> select * from v$result_cache_statist ics;

ID NAME VALUE

---------- ------------------------------ ----------

1 Block Size (Bytes) 1024

2 Block Count Maximum 1184

3 Block Count Current 32

4 Result Size Maximum (Blocks) 59

5 Create Count Success 1

6 Create Count Fai lure 0

7 Find Count 0

8 Inval idation Count 0

9 Delete Count Inval id 0

10 Delete Count Val id 0

注意到 Create Count Success=1 说明成功的缓存了一笔记录

再次执行该查询

SQL> select /*+ result_cache */ count(*) from test;

COUNT(*)

----------

11865

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1)

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 41 页 科技技术新动力

1 0 RESULT CACHE OF '7rkq2h8sb7kdg5sjxw69z8c45g'

2 1 SORT (AGGREGATE)

3 2 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48

Card=12024)

Statist ics

----------------------------------------------------------

0 recursive cal ls

0 db block gets

0 consistent gets

0 physical reads

0 redo size

352 bytes sent via SQL*Net to cl ient

500 bytes received via SQL*Net from cl ient

2 SQL*Net roundtr ips to/from cl ient

0 sorts (memory)

0 sorts (disk)

1 rows processed

注意到这里 consis tent gets=0,也就是该查询甚至不产生逻辑读了,也就是直接

从 resul t cache 中获得了查询结果。

查看 v$resul t_cache_stat is t ics

SQL> select * from v$result_cache_statist ics;

ID NAME VALUE

---------- ------------------------------ ----------

1 Block Size (Bytes) 1024

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 42 页 科技技术新动力

2 Block Count Maximum 1184

3 Block Count Current 32

4 Result Size Maximum (Blocks) 59

5 Create Count Success 1

6 Create Count Fai lure 0

7 Find Count 1

8 Inval idation Count 0

9 Delete Count Inval id 0

10 Delete Count Val id 0

注意到 Find Count = 1,说明上次缓存的结果被后续的查询应用了一次。如果继

续执行该查询,可以发现该统计信息相应增加。

当然,这个例子中,缓存了整个查询的结果,实际上也可以缓存执行计划中某一

步或者某几步的查询结果。例如,下面的例子中,就缓存了子查询的结果

SQL> select count(*) from (select /*+result_cache*/* from test where

object_id<100);

COUNT(*)

----------

98

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1)

1 0 SORT (AGGREGATE)

2 1 VIEW (Cost=48 Card=237)

3 2 RESULT CACHE OF 'fbbc5y53mwuj75buth9d2vwkkn'

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 43 页 科技技术新动力

4 3 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48

Card=237 Bytes=37446)

Statist ics

----------------------------------------------------------

716 recursive cal ls

4 db block gets

403 consistent gets

0 physical reads

0 redo size

350 bytes sent via SQL*Net to cl ient

500 bytes received via SQL*Net from cl ient

2 SQL*Net roundtr ips to/from cl ient

23 sorts (memory)

0 sorts (disk)

1 rows processed

SQL> select count(*) from (select /*+result_cache*/* from test where

object_id<100);

COUNT(*)

----------

98

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1)

1 0 SORT (AGGREGATE)

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 44 页 科技技术新动力

2 1 VIEW (Cost=48 Card=237)

3 2 RESULT CACHE OF 'fbbc5y53mwuj75buth9d2vwkkn'

4 3 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48

Card=237 Bytes=37446)

Statist ics

----------------------------------------------------------

0 recursive cal ls

0 db block gets

0 consistent gets

0 physical reads

0 redo size

350 bytes sent via SQL*Net to cl ient

500 bytes received via SQL*Net from cl ient

2 SQL*Net roundtr ips to/from cl ient

0 sorts (memory)

0 sorts (disk)

1 rows processed

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.ningoo.net/2007/07/17/oracle11g_new_feature_server_r

esult_cache.htm

http://www.ningoo.net/2007/08/22/oracle11g_new_feature_server_r

esult_cache2.htm

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 45 页 科技技术新动力

spfile Fault-tolerant 增强

作者:eygle

在以前的版本中,如果 spf i le 参数文件丢失,我们只能通过备份去恢复,或者从

存在的 pfi le 中创建 . . .

实际上如果仅仅是参数文件丢失,数据库仍然在运行,那我们完全可以从数据库

实例中得到当前的所有运行参数,从 Oracle 11g 开始,一个新的命令被引入,这

个命令是:

create spf i le from memory;

这个命令可以使用当前的参数设置在缺省位置创建一个 spfi le 文件,当然我们也

可以指定一个不同的位置:

SQL> create spf i le='/tmp/spf i le.ora' from memory;

Fi le created.

这一增强简化了我们在某些条件下的参数文件恢复,使得参数文件的可用性进一

步提高。

不要不相信,参数文件特别是 spf i le 文件损坏的情况非常常见,我自己也遭遇过

一次。

当然创建出来的参数文件比现有的文件包含了更多的参数:

[oracle@test126 ~]$ strings /tmp/spfile.ora

*.__db_cache_size=184M

*.__java_pool_size=4M

*.__large_pool_size=4M

*.__oracle_base='/opt/oracle' # ORACLE_BASE set from environment

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 46 页 科技技术新动力

*.__pga_aggregate_target=92M

*.__sga_target=284M

*.__shared_io_pool_size=0

*.__shared_pool_size=84M

*.__streams_pool_size=0

*._always_anti_join='CHOOSE'

*._always_semi_join='CHOOSE'

*._b_tree_bitmap_plans=TRUE

*._bloom_filter_enabled=TRUE

*._bloom_pruning_enabled=TRUE

*._complex_view_merging=TRUE

*._convert_set_to_join=FALSE

*._cost_equality_semi_join=T

*._cpu_to_io=0

*._dimension_skip_null=TRUE

*._eliminate_common_subexpr=TRUE

*._enable_type_dep_selectivity=TRUE

*._fast_full_scan_enabled=TRUE

*._first_k_rows_dynamic_proration=TRUE

*._gby_hash_aggregation_enabled=TRUE

*._generalized_pruning_enabled=TRUE

*._globalindex_pnum_filter_enabled=TRUE

*._gs_anti_semi_join_allowed=TRUE

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 47 页 科技技术新动力

*._improved_outerjoin_card=TRUE

*._improved_row_length_enabled=TRUE

*._index_join_enabled=TRUE

*._ksb_restart_policy_times='0'

*._ksb_restart_policy_times='60'

*._ksb_restart_policy_times='120'

*._ksb_restart_policy_times='240' # internal update to set default

*._left_nested_loops_random=TRUE

*._local_communication_costing_enabled=TRUE

*._minimal_stats_aggregation=TRUE

*._mmv_query_rewrite_enabled=TRUE

*._new_initial_join_orders=TRUE

*._new_sort_cost_estimate=TRUE

*._nlj_batching_enabled=1

*._optim_adjust_for_part_skews=TRUE

*._optim_enhance_nnull_detection=TRUE

*._optim_new_default_join_sel=TRUE

*._optim_peek_user_binds=TRUE

*._optimizer_adaptive_cursor_sharing=TRUE

*._optimizer_better_inlist_costing='ALL'

*._optimizer_cbqt_no_size_restriction=TRUE

*._optimizer_complex_pred_selectivity=TRUE

*._optimizer_compute_index_stats=TRUE

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 48 页 科技技术新动力

*._optimizer_connect_by_combine_sw=TRUE

*._optimizer_connect_by_cost_based=TRUE

*._optimizer_correct_sq_selectivity=TRUE

*._optimizer_cost_based_transformation='LINEAR'

*._optimizer_cost_hjsmj_multimatch=TRUE

*._optimizer_cost_model='CHOOSE'

*._optimizer_dim_subq_join_sel=TRUE

*._optimizer_distinct_elimination=TRUE

*._optimizer_enable_density_improvements=TRUE

*._optimizer_enable_extended_stats=TRUE

*._optimizer_enhanced_filter_push=TRUE

*._optimizer_extend_jppd_view_types=TRUE

*._optimizer_extended_cursor_sharing='UDO'

*._optimizer_extended_cursor_sharing_rel='SIMPLE'

*._optimizer_extended_stats_usage_control=240

*._optimizer_filter_pred_pullup=TRUE

*._optimizer_fkr_index_cost_bias=10

*._optimizer_group_by_placement=TRUE

*._optimizer_improve_selectivity=TRUE

*._optimizer_join_elimination_enabled=TRUE

*._optimizer_join_order_control=3

*._optimizer_join_sel_sanity_check=TRUE

*._optimizer_max_permutations=2000

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 49 页 科技技术新动力

*._optimizer_mode_force=TRUE

*._optimizer_multi_level_push_pred=TRUE

*._optimizer_native_full_outer_join='FORCE'

*._optimizer_new_join_card_computation=TRUE

*._optimizer_null_aware_antijoin=TRUE

*._optimizer_or_expansion='DEPTH'

*._optimizer_order_by_elimination_enabled=TRUE

*._optimizer_outer_to_anti_enabled=TRUE

*._optimizer_push_down_distinct=0

*._optimizer_push_pred_cost_based=TRUE

*._optimizer_rownum_bind_default=10

*._optimizer_rownum_pred_based_fkr=TRUE

*._optimizer_skip_scan_enabled=TRUE

*._optimizer_sortmerge_join_inequality=TRUE

*._optimizer_squ_bottomup=TRUE

*._optimizer_star_tran_in_with_clause=TRUE

*._optimizer_system_stats_usage=TRUE

*._optimizer_transitivity_retain=TRUE

*._optimizer_undo_cost_change='11.1.0.6'

*._or_expand_nvl_predicate=TRUE

*._ordered_nested_loop=TRUE

*._parallel_broadcast_enabled=TRUE

_partition_view_enabled=TRUE

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 50 页 科技技术新动力

*._pivot_implementation_method='CHOOSE'

*._pre_rewrite_push_pred=TRUE

*._pred_move_around=TRUE

*._push_join_predicate=TRUE

*._push_join_union_view=TRUE

*._push_join_union_view2=TRUE

*._px_minus_intersect=TRUE

*._px_pwg_enabled=TRUE

*._px_ual_serial_input=TRUE

*._query_rewrite_setopgrw_enable=TRUE

*._remove_aggr_subquery=TRUE

*._right_outer_hash_enable=TRUE

*._selfjoin_mv_duplicates=TRUE

*._sql_model_unfold_forloops='RUN_TIME'

*._sqltune_category_parsed='DEFAULT' # parsed sqltune_category

*._subquery_pruning_enabled=TRUE

*._subquery_pruning_mv_enabled=FALSE

*._table_scan_cost_plus_one=TRUE

*._union_rewrite_for_gs='YES_GSET_MVS'

*._unnest_subquery=TRUE

*._use_column_stats_for_function=TRUE

*.audit_file_dest='/opt/oracle/admin/dodd/adump'

*.audit_trail='DB'

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 51 页 科技技术新动力

*.compatible='11.1.0.0.0'

*.control_files='/opt/oracle/oradata/dodd/control01.ctl'

*.control_files='/opt/oracle/oradata/dodd/control02.ctl'

*.control_files='/opt/oracle/oradata/dodd/control03.ctl'

*.core_dump_dest='/opt/oracle/diag/rdbms/dodd/dodd/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_name='dodd'

*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2G

*.diagnostic_dest='/opt/oracle'

*.log_buffer=6000640 # log buffer update

*.memory_target=376M

*.open_cursors=300

*.optimizer_dynamic_sampling=2

*.optimizer_mode='ALL_ROWS'

*.plsql_warnings='DISABLE:ALL' # PL/SQL warnings at init.ora

*.processes=150

*.query_rewrite_enabled='TRUE'

*.remote_login_passwordfile='EXCLUSIVE'

*.resource_manager_plan=''

*.result_cache_max_size=992K

*.skip_unusable_indexes=TRUE

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 52 页 科技技术新动力

*.undo_tablespace='UNDOTBS1'

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.eygle.com/archives/2007/08/11gspfi le_fault_tolerant.ht

ml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 53 页 科技技术新动力

Memory_target 与自动内存管理

作者:eygle

很早以前我们就听说了 Oracle11g 的自动内存管理( Automatic Memory

Management)的新特性,这个新特性算不上惊人,但是却是 Oracle 在内存管理

上的又一重要增强。

如果这个参数设置过高,在实例启动时可能会出现如下错误提示:

SQL*Plus: Release 11.1.0.5.0 - Beta on Sun Jul 29 08:35:28 2007

Copyright (c) 1982, 2007, Oracle. Al l r ights reserved.

Connected to an idle instance.

SQL> startup

ORA-00845: MEMORY_TARGET not supported on this system

这一提示不是指特性不支持,而是你需要去调整内存设置。

在设置了这个参数后,自动内存调整启用:

SQL> show parameter memory

NAME TYPE VALUE

------------------------------------ ----------- --------------

hi_shared_memory_address integer 0

memory_max_target big integer 416M

memory_target big integer 416M

shared_memory_address integer 0

类似 SGA_MAX_SIZE 与 SGA_TARGET 一样, MEMORY_MAX_TARGET 与

MEMORY_TARGET 成对出现,这一特性的出现使得 PGA+SGA 作为整体内存使

用被一致的纳入自动管理范畴。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 54 页 科技技术新动力

而同样与 Oracle10g 类似,设置了自动内存管理之后,

PGA_AGGREGATE_TARGET 参数不再需要设置,代之发挥作用的参数是带有 2

个下划线的 __PGA_AGGREGATE_TARGET 参数,我们可以来看一下这几个参数

的解释:

SQL> select ksppinm,ksppdesc from x$ksppi

2 where ksppinm l ike '%pga%';

KSPPINM KSPPDESC

------------------- ----------------------------------

_pga_large_extent_size PGA large extent size

_use_ism_for_pga Use ISM for al locating large extents

_kdl i_sio_pga use PGA al locations for direct IO

_kdl i_sio_pga_top PGA al locations come from toplevel

PGA heap

pga_aggregate_target Target size for the aggregate PGA

memory consumed by the instance

__pga_aggregate_target Current target size for the aggregate

PGA memory consumed

_pga_max_size Maximum size of the PGA memory for

one process

总结一下:

Oracle11g 的自动内存管理特性是早已被预期的 Oracle 的又一增强,是 Oracle 朝

着自动内存管理方向所迈出的又一坚定步伐,是 Oracle 既定路线的又一延伸。

这一特性不会使人惊讶,但是会使人欣喜。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.eygle.com/archives/2007/08/11gspfi le_fault_tolerant.ht

ml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 55 页 科技技术新动力

统计信息收集

作者:hanson

1. 设置收集统计信息时的选项

我们知道,数据库里的对象的统计信息( s ta t is t ics)对于优化器得到正确的执行

计划来说起着至关重要的作用。因此从 10g R1 开始,只要使用 DBCA 安装的数

据库,都会自动创建一个 job,该 job 缺省周一到周五每天晚上 10 点到第二天早

上 6 点(周末则为全天)负责收集数据库所有对象的统计信息。不过,可能存在

某些情况,你需要用自己的脚本来收集某些特殊对象的统计信息。但是由于你采

用了自动收集统计信息, oracle 就会对所有对象使用相同的选项来收集统计信

息,这样你就失去了对某个对象的控制权。当你发现缺省的统计信息收集方式对

某个对象不是很合适时,你必须锁定该对象的统计信息,并使用一个特殊的选项

值对该对象来收集统计信息。

比如,某个表的列的数据倾斜(列为某种值的记录行数非常多,而某种值的记录

行数又非常少)的非常严重,这时如果采用标准的采样率:

ESTIMATE_PERCCENT=AUTO_SAMPLE_SIZE 可能就不适合了。这时你就需要

单独指定该对象的采样率。我们知道,在 11g 之前的收集统计信息方面, oracle

提供的类似的其他选项还包括: CASCADE、 DEGREE、 METHOD_OPT、

NO_INVALIDATE、 GRANULARITY。

到了 11g 里,则提供了更大的灵活性,从而使得你可以很简单的处理上面所说的

这种情况。在 11g 里,上面说的这些选项可以在不同的级别上分别设置,级别由

高到低分别为:global 级别、数据库级别、schema 级别、表级别。其中,低级别

的选项覆盖高级别的选项。

比如,对于上面所举的例子来说,如果要对你的一个特殊的、列上的值倾斜的很

严重的表收集统计信息时,你只需要简单的调用如下的存储过程来设置该表级别

上的的 ESTIMATE_PERCCENT=100 即可,如下所示:

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 56 页 科技技术新动力

SQL> exec

dbms_stats.set_table_prefs( 'Schema_name', 'Table_name', 'ESTIMATE_PERC

CENT', '100');

这样设置以后,当数据库在自动收集统计信息时,对于其他没有单独设置采样率

的表来说,采样率会采用 AUTO_SAMPLE_SIZE,而对于你单独设置的

Table_name 表,则会使用 100 的采样率来收集统计信息。

类似的,如果需要设置 global 级别上的选项,则调用 dbms_stats .set_global_prefs;

如果要设置数据库级别上的选项,则调用 dbms_stats .set_database_prefs;如果要

设置 schema 级别上的选项,则调用 dbms_stats .set_schema_prefs 即可。

同时到了 11g 里,除了上面提到的这些选项以外,还添加了另外三种新的选项:

PUBLISH、 INCREMENTAL、 STALE_PERCENT。其中:

1) PUBLISH:收集完统计信息以后是否立即将统计信息发布到数据字典里,还

是将它们存放在私有区域里。TRUE 表示立即发布,FALSE 表示存放到私有区域

里。

2) STALE_PERCENT:确定某个对象的统计信息过时的上限,如果过时就需要重

新收集统计信息,缺省为 10。计算某个表的统计信息是否过时,oracle 会计算自

从上一次收集该表的统计信息以来,该表中被修改的数据行数占该表的总行数的

百分比。然后用得出的百分比值与该选项配置的值(如果缺省,就是 10)进行

比较,大于 10,则说明该表的统计信息过时了,需要重新收集统计信息;否则

就认为该表的统计信息不过时,不用再次收集。

3) INCREMENTAL:在分区表上收集 global 的统计信息时(将 GRANULARITY

设置为 GLOBAL),采用增量方式完成。使用该选项是因为对于某些分区表来说,

比如按照月份进行范围分区的分区表来说,除了代表当前月的分区里的数据会经

常变化以外,其他分区里的数据不会变动。因此在收集该分区表上的 global 的统

计信息时,就没有必要再次扫描那些非当前月的分区了。如果你将

INCREMENTAL 设置为 TRUE 时,则在收集统计信息时,就不会扫描那些非当前

月的分区里的数据,而只会扫描当前月的分区里的数据。 后将非当前月的分区

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 57 页 科技技术新动力

上已经存在的统计信息加上当前月新算出来的统计信息合并就得出了分区表的

global 的统计信息。

可以从视图:DBA_TAB_STAT_PREFS 里看到所有的收集统计信息时的各个选项

的值。

2. 对合并列收集统计信息

对于 where 条件里具有两个列以上的情况,比如 where c1=’ A’ and c2=’ B’

来说, 11g 以前优化器评估其 select iv i ty 时,总是将每个列的 select iv i ty 相乘,

从而得到整个 where 条件的 select iv iey。但是如果两个列具有很强的依赖关系,

比如汽车制造商与汽车型号这两个列来说,我们知道每个汽车制造商所生产的汽

车型号几乎都不会重复,也就是说当你发出 where 汽车制造商列 =’XXX’ and

汽车型号列 =’ XXX’时,与发出 where 汽车型号列 =’ XXX’时返回的记录行

数可能几乎一样。这时如果在计算 where 条件的 select iv i ty 时仍然采用将汽车制

造商列的 select iv i ty 乘以汽车型号列的 select iv i ty 时,就会导致总的 select iv i ty

过低,从而导致优化器估计返回的记录行数过少,从而可能导致不正确的执行计

划。

为了弥补这样的问题, 11g 以后可以让你将多个依赖程度很高列合并成一个组,

然后对该组收集统计信息。具体如何实现,则可以看下面的例子。

select

dbms_stats.create_extended_stats( 'Schema_name', 'Table_name', '(C1,C2)')

from dual;

通过调用函数 dbms_stats .create_extended_stats 将两个或多个列合并,并返回一

个虚拟的隐藏列的列名,其名字类似于:

SYS_STUW_5RHLX443AN1ZCLPE_GLE4。

然后,我们可以开始对表收集统计信息,收集完以后,你可以使用

ALL|DBA|USER_STAT_EXTIONSIONS 视图来查看列组合的统计信息。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 58 页 科技技术新动力

exec dbms_stats.gather_table_stats( 'Schema_name', 'Table_name');

如果你要对组合列收集直方图,则可以如下所示:

exec dbms_stats.gather_table_stats( 'Schema_name', 'Table_name',

method_opt=>'for columns (C1,C2) size AUTO');

3. 对函数以及表达式收集统计信息

如果 where 条件类似于 funct ion_name(table_name.column_name)=’ XXX’时,

则优化器在估计这样的 where 条件的 select iv i ty 时,总是会假设其 select iv i ty 为

1%,也就是该 where 条件将返回 table_name 里总记录行数的 1%的记录行数。

很明显的,这种假设肯定是错误的,从而可能导致优化器产生了不够优化的执行

计划。

从 11g 开始,我们可以对函数或者表达式收集统计信息了。该特性依赖于虚拟列,

也就是说你需要先用 dbms_stats .create_extended_stats 函数为

funct ion_name(table_name.column_name)创建一个虚拟列,然后对该虚拟列收集

统计信息。比如下面的例子。

select dbms_stats.create_extended_stats('Schema_name','Table_name','length(C1)') from

dual;

下面则显示的是对表达式来收集统计信息。

select dbms_stats.create_extended_stats('Schema_name','Table_name','C1*C2') from

dual;

然后你可以对表收集统计信息时,就会为函数 length(C1)对应的虚拟列收集统计

信息了。如果你要对该虚拟列收集直方图,则可以如下所示:

exec dbms_stats.gather_table_stats( 'Schema_name', 'Table_name',

method_opt=>'for columns (length(C1)) size AUTO');

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 59 页 科技技术新动力

_PRIVATE_STATS 里看到这些私有的统计信息。

为了测试这些私有统计信息,你可以有两种方法:

1) 第一种方式使用 DBMS_STAT.EXPORT_PRIVATE_STATS 存储过程将私有统

计信息转移到你自己的统计信息表(可以使用存储过程

DBMS_STATS.CREATE_STAT_TABLE 来创建你自己的统计信息表)里。然后可

以使用 expdp 导出你的统计信息表,然后再使用 impdp 将导出文件导入到测试环

境中,再使用 DBMS_STAT.IMPORT_TABLE_STATS 将其导入到测试环境中进行

测试。

2) 第二种方式不导出私有的统计信息,而是直接在产品库的 sess ion 级别,将

11g 引入的新的初始化参数: OPTIMIZER_PRIVATE_STATISTICS 设置为 TRUE

(缺省情况下该参数为 FALSE)。这时你执行 SQL 时,优化器就会参考私有统计

信息来解析 SQL 语句并生成执行计划了。

后,测试完毕,发现 新的统计信息没有问题的话,你就可以使用

DBMS_STAT.PUBLISH_PRIVATE_STATS 在产品库上将私用统计信息发布出去,

从而让优化器能够看到它们。

下面列举一个例子来简单说明这个过程。首先设置表级别的 publish 选项为 false:

exec dbms_stats.set_table_prefs('Schema_name','Table_name','PUBLISH','false');

然后,收集表的统计信息:

exec dbms_stats.gather_table_stats('Schema_name','Table_name');

第三,设置相关初始化参数:

alter session set optimizer_use_private_statistics = true;

第四,进行测试,运行相关的 SQL 语句,并检查产生的执行计划。

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 60 页 科技技术新动力

后,把该表的统计信息发布出去:

exec dbms_stats.publish_private_stats('Schema_name','Table_name');

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://tech.it168.com/db/2007-07-25/200707251225671.shtml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 61 页 科技技术新动力

RMAN

作者: kamus

RMAN 除了单纯的备份恢复功能,已经被赋予了越来越多的责任,比如创建

Standby 数据库,比如跨平台传输表空间中的表空间转换。 Oracle11g 的 RMAN

倒是没有太多飞跃性的更新。

1. 自定义 archivelog 删除策略

我们知道在 11g 之前,只有 backupset 的删除策略可以定义,比如保留多长时间

的备份或者保留多少份有效备份,而删除归档日志只有在 delete 命令中定义删除

全部备份完毕的或者删除从哪一个时间点到哪一个时间点的。而在 11g 中我们已

经可以通过 conf igure 命令来定义归档日志的删除策略的,比如增加了下面的语

法,只有在磁带上备份了 2 次的归档日志才会被 delete 命令删除。

CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO

DEVICE TYPE sbt ;

当然,仅仅是增加语法那就只能称为比较无聊的新功能了,除了 configure 语法

之外,现在在 11g 中通过 APPLIED ON

STANDBY 关键字可以定义只有对于所有的 standby 站点都已经 applied 的归档日

志才会被删除,或者定义所有被成功传送到 s tandby 站点的归档日志就可以被删

除。而以前这些都需要 DBA 自己撰写脚本从数据字典中查询到相关信息然后再

通过脚本删除。

2. 直接通过网络复制数据库

在 11g 之前如果要使用 duplicate 命令来复制一份数据库,那么则需要源数据库,

需要在目标机器上的一份有效备份,需要目标数据库,在 11g 中这一切被大大简

化。通过 FROM ACTIVE DATABASE 关键字,我们只需要有一个源数据库,就

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 62 页 科技技术新动力

可以简单地通过网络在另外一台机器上复制一个相同的数据库了。Oracle 会通过

一系列 Memory Scr ipt 在内存中 recover 并且 open 目标数据库。

另外,在 11g 之前,duplicate 数据库是不会自动复制 spfi le 的,而现在,我们通

过下面的语句,就可以让 Oracle 在复制过程中自动生成一份 spf i le,并且其中的

初始化参数允许额外定义。

DUPLICATE TARGET DATABASE

TO aux_db

FROM ACTIVE DATABASE

SPFILE PARAMETER_VALUE_CONVERT '/u01', '/u02'

SET SGA_MAX_SIZE = '200M'

SET SGA_TARGET = '125M'

SET LOG_FILE_NAME_CONVERT = '/u01', '/u02'

DB_FILE_NAME_CONVERT '/u01', '/u02';

在 11g 中使用 duplicate 复制一个数据库的准备步骤只需要目标数据库

( AUXILIARY 实例):

a . 通过一个 简单的 pfi le 把实例启动到 nomount 状态,这个 pfi le 中只需要包

含 DB_NAME 和 REMOTE_LOGIN_PASSWORFILE 参数即可

b . password 文件必须事先建好,而且 SYS 密码需要跟 source 数据库中相同,这

个通过 orapwd 可以轻松完成

c . 目录结构需要事先创建好并且具有正确的权限

3. 并行备份大文件

现在 Oracle 数据库中单个数据文件可以 大到 128T,而在以前的版本中 RMAN

的 小备份单位就是 dataf i le,那么对于以后可能出现的这种超大数据文件,

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 63 页 科技技术新动力

RMAN 备份就几乎无法操作了。在 11g 中,通过 backup 命令中的 SECTION SIZE

关键字,我们可以对数据文件指定 sect ion 了,每个 sect ion 都作为一个独立单位

来处理,每个数据文件可以 多指定 256 个 sect ion。

Sect ion 的好处在于,一可以并行备份多个 sect ion,提高备份速度;二可以分多

个时间分别备份一个大文件的多个 sect ion,时间上化整为零,更具有操作性。

4. RMAN Catalog 管理性增强

IMPORT CATALOG 命令允许我们将一个 catalog 库中的信息转储到另外一个

catalog 库,这在以前完全需要手工操作。

推出 Vir tual Recovery Catalogs 概念,这是 VPD 的实例应用,对于一个集中管理

的 catalog 设置多个用户的虚拟 catalog,每个用户只能管理自己的数据,安全性

的进一步提高。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://tech.it168.com/db/o/2007-07-18/200707181451171.shtml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 64 页 科技技术新动力

分区

作者:kamus

Part i t ion(分区)一直是 Oracle 数据库引以为傲的一项技术,正是分区的存在让

Oracle 高效的处理海量数据成为可能,在即将发布的 Oracle 11g 中,分区技术在

易用性和可扩展性上再次得到了增强。

1. Interval Part it ioning

在我曾经的一个项目中,由于数据量的巨大,所以表设计为每一个小时一个分区,

数据库管理员日常要做的一件重复而无聊的工作就是每隔一天要生成新的 24 个

分区,用以存储第二天的数据。

而在 11g 中这项工作可以交由 Oracle 自动完成了,基于 Range 和 List 的 In terval

Par t i t ioning 分区类型登场。

CREATE TABLE TB_INTERVAL

PARTITION BY RANGE (time_col)

INTERVAL(NUMTOYMINTERVAL(1, 'month'))

(PARTITION P0 VALUES LESS THAN (TO_DATE('1-1-2007', 'dd-mm-yyyy')));

指定需要 Oracle 自动创建分区的间隔时间,上面这个例子是 1 个月,然后至少

创建一个基本分区,上面这个例子是在 2007-1-1 之前的所有数据都在 P0 分区中,

以后每个月的数据都会存放在 Oracle 自动创建的一个新分区中。

目前还没有更多的资料显示 Oracle 如何控制每个新分区的属性,比如存放在哪

个表空间中,自动创建的数据文件有多大,如果是数据文件是裸设备如何处理,

当第一条跨分区的记录插入时实时创建分区效率如何,虽然这些仍然是未知数,

但是我们不得不承认这是一个人性化的进步。

2. System Part it ioning

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 65 页 科技技术新动力

又一个人性化的分区类型,系统分区,在这个新的类型中,我们不需要指定任何

分区键,数据会进入哪个分区完全由应用程序决定,实际上也就是由 SQL 来决

定,终于,我们在 Inser t 语句中可以指定插入哪个分区了。

假设我们创建了下面这张分区表,注意,没有指定任何分区键:

CREATE TABLE systab (c1 integer, c2 integer)

PARTITION BY SYSTEM

( PARTITION p1 TABLESPACE tbs_1,

PARTITION p2 TABLESPACE tbs_2,

PARTITION p3 TABLESPACE tbs_3,

PARTITION p4 TABLESPACE tbs_4 );

现在由 SQL 语句来指定插入哪个分区:

- - 数据插入 p1 分区

INSERT INTO systab PARTITION (p1) VALUES (4 ,5) ;

- - 数据插入第 2 个分区,也就是 p2 分区

INSERT INTO systab PARTITION (2) VALUES (7,8) ;

- - 为了实现绑定变量,用 pno 变量来代替实际分区号,以避免过度解析

INSERT INTO systab PARTITION ( :pno) VALUES (9 ,10) ;

由于 System Part i t ioning 的特殊性,所以很明显,这种类型的分区将不支持

Part i t ion Spl i t 操作,也不支持 create table as select 操作。

3. More Composite Part it ioning

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 66 页 科技技术新动力

在 10g 中,我们知道复合分区只支持 Range-Lis t 和 Range-Hash,而在在 11g 中

复合分区的类型大大增加,现在 Range, List, In terval 都可以作为 Top level 分

区,而 Second level 则可以是 Range,List,Hash,也就是在 11g 中可以有 3*3=9

种复合分区,满足更多的业务需求。

4. Virtual Column-Based Part it ioning

Virtual Column 是 11g 中的一个新功能,这种列中的数据并不实际存储于磁盘上

(我们可以看成是一个类似 Function 的列),只有当读取的时候才实时计算。暂

时不讨论性能问题,这个功能还是比较有意思的。

可以通过这样的语句来创建虚拟列。

CREATE TABLE tb_v

(col_1 number(6) not nul l ,

col_2 number not nul l ,

col_v as (col_1 *( 1+col_2));

虚拟列虽然没有实际的存储空间,但是却可以跟其他普通列一样,创建索引,作

为分区键,甚至可以收集统计信息,这是让人感觉有意思的地方,一个实时计算

的 Function 如何创建索引呢?等到 11g 推出的时候就真相大白了。

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://tech.it168.com/db/o/2007-07-17/200707171412312.shtml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 67 页 科技技术新动力

Oracle 11g alert 文件的变化

作者:shahand

一.首先介绍 2 个新名词

Automatic Diagnost ic Reposi tory (ADR)—一个存放数据库诊断日志、跟踪文件的

目录,称作 ADR base,对应初始化参数 DIAGNOSTIC_DEST,如果设置了

ORACLE_BASE 环境变量, DIAGNOSTIC_DEST 等于 ORACLE_BASE,如果没

有设置 ORACLE_BASE,则等与 ORACLE_HOME/log。

SQL> show parameter DIAGNOSTIC

NAME TYPE VALUE

----------------------- ------------- ----------- --

diagnostic_dest str ing /home/oracle

ADRCI Command-Line Uti l i ty 命令行工具

使用该工具查看日志,跟踪信息,查看健康报告。

二.一个比较大的变化: aelrt xml f i le

在 oracle 11g 中,aler t 文件的信息是以 xml 的文件格式存在的,另外提供了普通

文本格式的 aler t 文件。

这两份 log 文件的位置分别是 V$DIAG_INFO 中的 Diag Aler t 和 Diag Trace 对

应的目录。

1* SELECT * FROM V$DIAG_INFO

INST_ID NAME VALUE

------------------------------------------------------------

1 Diag Enabled TRUE

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 68 页 科技技术新动力

1 ADR Base /home/oracle

1 ADR Home /home/oracle/diag/rdbms/orcl/orcl

1 Diag Trace /home/oracle/diag/rdbms/orcl/orcl/trace

1 Diag Alert /home/oracle/diag/rdbms/orcl/orcl/alert

1 Diag Incident /home/oracle/diag/rdbms/orcl/orcl/ incident

1 Diag Cdump /home/oracle/diag/rdbms/orcl/orcl/cdump

1 Health Monitor /home/oracle/diag/rdbms/orcl/orcl/hm

1 Default Trace Fi le

/home/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_1

2624.trc

1 Active Problem Count 0

1 Active Incident Count &nb

这个是 xml 格式的 aler t log:

[oracle@ractest ~]$ cd /home/oracle/diag/rdbms/orcl/orcl/alert

[oracle@ractest alert]$ ls - l

total 148

-rw-r----- 1 oracle dba 139355 Jul 3 08:21 log.xml

[oracle@ractest alert]$ tai l log.xml

<txt>QMNC started with pid=20, OS id=8646

</txt>

</msg>

<msg t ime='2007-07-03T08:21:31.911+08:00' org_id='oracle'

comp_id='rdbms'

msg_id='opiexe:2925:2802784106' type='NOTIFICATION'

group='admin_ddl '

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 69 页 科技技术新动力

level='16' host_id='ractest ' host_addr='10.200.15.180'

module='sqlplus@ractest (TNS V1-V3)' pid='8640'>

<txt>Completed: ALTER DATABASE OPEN

</txt>

</msg>

[oracle@ractest alert]$

这是文本格式的 aler t:

[oracle@ractest trace]$ cd /home/oracle/diag/rdbms/orcl/orcl/trace

[oracle@ractest trace]$ ls - l al*

-rw-r----- 1 oracle dba 27988 Jul 3 08:21 alert_orcl.

Aler t 文件记录了:关键错误( Crit ical errors ( incidents) ),数据库管理操作,

包括启动关闭数据库,创建、删除表空间,物化视图刷新错误等信息,另外我做

试验的时候还发现还包括有一般的 ddl 操作,下面是例子:

SQL> create table test as select * from dba_objects where rownum <50;

Table created.

SQL> insert into test select * from dba_objects where rownum < 10 ;

9 rows created.

SQL> commit

2 /

Commit complete.

SQL> delete from test where rownum < 30 ;

29 rows deleted.

SQL> commit;

ITPUB 电子杂志 总第十七期

http://www.itpub.net

Commit complete.

SQL> drop table test ;

Table dropped.

对应的 alert 信息:

Sat Jun 30 06:00:02 2007

Sat Jun 30 06:00:02 2007

Logminer Bld: Lockdown Complete. DB_TXN_SCN is UnwindToSCN

(LockdownSCN) is 304868

Sat Jun 30 08:51:24 2007

create table test as select * from dba_objects where rownum <50

Sat Jun 30 08:51:49 2007

drop table test

Sat Jun 30 08:52:03 2007

三.查看 alert 文件的方法:

1.使用 Enterpr ise Manager,进入 Oracle database home page,在 Related Links 点

击 Aler t Log Contents .

见图:

ITPUB 第 70 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

2 .使用 vi 等文本编辑 aler t_SID.log ( text-only a ler t log, without the XML tags)

3 .使用工具 adrci:

[oracle@ractest ~]$ which adrci

/home/oracle/11g/bin/adrci

[oracle@ractest ~]$ adrci

ADRCI: Release 11.1.0.4.0 - Beta on Tue Jul 3 09:02:14 2007

Copyright (c) 1982, 2006, Oracle. Al l r ights reserved.

ADR base = "/home/oracle"

adrci>>help show alert

Usage: SHOW ALERT [-p <predicate_string>] [-tai l [num]] [-v]

[-f i le <alert_f i le_name>]

…………

Examples:

show alert

ITPUB 第 71 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 72 页 科技技术新动力

show alert -p "message_text l ike '%incident%'"

show alert -tai l 20

adrci>>show alert -tai l 10

ADR Home = /home/oracle/diag/rdbms/orcl/orcl:

*******************************************************

2007-07-03 08:21:31.039000 +08:00

SMON: enabl ing cache recovery

Successful ly onl ined Undo Tablespace 2.

Veri fying f i le header compatibi l i ty for 11g tablespace encryption..

Veri fying 11g f i le header compatibi l i ty for tablespace encryption completed

SMON: enabl ing tx recovery

Database Characterset is WE8MSWIN1252

Starting background process SMCO

SMCO started with pid=18, OS id=8642

Opening with internal Resource Manager plan

Starting background process FBAR

FBAR started with pid=19, OS id=8644

repl ication_dependency_tracking turned off (no async multimaster

repl ication found)

Starting background process QMNC

QMNC started with pid=20, OS id=8646

Completed: ALTER DATABASE OPEN

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.itpub.net/805357.html

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 73 页 科技技术新动力

Oracle 11g 的基本安装

作者:shahand

准备安装

基本都是按部就班。

使用的 OS 版本: OEL4

[oracle@ractest orcl]$ cat /etc/redhat-release

Enterprise Linux Enterprise Linux AS release 4 (October Update 5)

[oracle@ractest orcl]$ cat /etc/enterprise-release

Enterprise Linux Enterprise Linux AS release 4 (October Update 5)

安装程序路径:

/mnt/Oracle11g_linux_x86_64/database

创建用户

groupadd -g 1001 dba

groupadd -g 1002 oinstal l

useradd -u 10000 -g dba -G oinstal l ,dba -d /home/oracle -s /bin/bash oracle

chown -R oracle:dba /home/oracle

usermod -g dba -G oinstal l ,dba oracle

使用的.bash_profile

export ORACLE_BASE=/home/oracle

export ORACLE_HOME=$ORACLE_BASE/11g

export ORA_CRS_HOME=$ORACLE_BASE/crs

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 74 页 科技技术新动力

export

ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbm

s/admin

export ORACLE_SID=orcl1

export

PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:${PATH}:$HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS10=$ORACLE_HOME/nls/data

export

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/l ib:/usr/l ib:/usr/local/l ib:$ORA

CLE_HOME/oracm/l ib:$ORACLE_HOME/l ib

export LIBPATH=$LIBPATH:$ORA_CRS_HOME/l ib:$ORACLE_HOME/l ib

export

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/j l ib:$ORACLE_HOME/j l

ib:$ORACLE_HOME/network/j l ib:$ORACLE_HOME/JRE

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

export NLS_LANG=american_america.WE8ISO8859P1

export DISPLAY=10.198.90.55:2

al ias sysdba="sqlplus '/as sysdba'"

export EDITOR=vi

修改的核心参数:

ITPUB 电子杂志 总第十七期

http://www.itpub.net

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs. f i le-max = 65536

net. ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

使用 xclock 检查 display 正确:

[oracle@ractest ~]$ xclock

[oracle@ractest ~]$ /mnt/Oracle11g_l inux_x86_64/database

[oracle@ractest ~]$ cd /mnt/Oracle11g_l inux_x86_64/database

[oracle@ractest database]$ ls - l

total 10

ITPUB 第 75 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 76 页 科技技术新动力

drwxr-xr-x 4 1003 oinstal l 96 Mar 23 18:45 doc

drwxr-xr-x 5 1003 oinstal l 1024 Mar 23 18:45 instal l

drwxr-xr-x 2 1003 oinstal l 1024 Mar 23 18:45 response

-rwxr-xr-x 1 1003 oinstal l 1251 Mar 23 18:45 runInstal ler

drwxr-xr-x 12 1003 oinstal l 1024 Mar 23 18:45 stage

-rw-r--r-- 1 1003 oinstal l 4638 Mar 23 18:45 welcome.html

[oracle@ractest database]$ ./runInstal ler

Starting Oracle Universal Instal ler.. .

Checking instal ler requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4,

UnitedLinux-1.0, asianux-1 or asianux-2

Passed

Al l instal ler requirements met.

Preparing to launch Oracle Universal Instal ler from

/tmp/OraInstal l2007-06-28_02-26-12AM. Please wait . ..[oracle@ractest

database]$ Oracle Universal Instal ler, Version 11.1.0.2.0 Production

Copyright (C) 1999, 2007, Oracle. Al l r ights reserved.

Oracle Universal Instal ler, Version 11.1.0.2.0 Production

Copyright (C) 1999, 2007, Oracle. Al l r ights reserved.

启动图形以后选择 basic&n

ITPUB 电子杂志 总第十七期

http://www.itpub.net

选择 oracle base 的时候, oracle 不推荐使用 user home 作为 oracle base,这里我

选 yes 忽略

ITPUB 第 77 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

进行 prerequirements 检查的时候,安装程序认为 swap 不足,我选择 YES 忽略

同上

ITPUB 第 78 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

两次点击 NEXT

执行提示脚本,安装完毕

ITPUB 第 79 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 80 页 科技技术新动力

[oracle@ractest database]$

[oracle@ractest database]$ su - root

Password:

[root@ractest ~]# /home/oracle/oraInventory/orainstRoot.sh

Changing permissions of /home/oracle/oraInventory to 770.

Changing groupname of /home/oracle/oraInventory to dba.

The execution of the script is complete

[root@ractest ~]# /home/oracle/11g/root.sh

Running Oracle 11g root.sh script.. .

The fol lowing environment variables are set as:

ORACLE_OWNER= oracle

ORACLE_HOME= /home/oracle/11g

Enter the ful l pathname of the local bin directory: [/usr/local/bin]:

Copying dbhome to /usr/ local/bin ...

Copying oraenv to /usr/local/bin .. .

Copying coraenv to /usr/local/bin .. .

Creating /etc/oratab f i le.. .

Entries wi l l be added to the /etc/oratab f i le as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root.sh script.

Now product-specif ic root actions wi l l be performed.

Finished product-specif ic root act ions.

[root@ractest ~]#

ITPUB 电子杂志 总第十七期

http://www.itpub.net

.

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.itpub.net/801945.html

ITPUB 第 81 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

Oracle 11g Advanced Installation

作者:shahand

准备安装,同基本安装,详见上一篇文章。

启动 runInstal ler ,选择 Advanced Instal la t ion。

传统界面不一一赘述

ITPUB 第 82 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 83 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

一路 next

ITPUB 第 84 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 85 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

执行 root .sh

[oracle@ractest database]$ su - root

Password:

[root@ractest ~]# /home/oracle/oraInventory/orainstRoot.sh

Changing permissions of /home/oracle/oraInventory to 770.

Changing groupname of /home/oracle/oraInventory to dba.

The execution of the script is complete

[root@ractest ~]# /home/oracle/11g/root.sh

Running Oracle 11g root.sh script.. .

The fol lowing environment variables are set as:

ORACLE_OWNER= oracle

ORACLE_HOME= /home/oracle/11g

Enter the ful l pathname of the local bin directory: [/usr/local/bin]:

ITPUB 第 86 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

Copying dbhome to /usr/local/bin .. .

Copying oraenv to /usr/local/bin .. .

Copying coraenv to /usr/local/bin .. .

Creating /etc/oratab f i le.. .

Entries wi l l be added to the /etc/oratab f i le as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root.sh script.

Now product-specif ic root actions wi l l be performed.

Finished product-specif ic root act ions.

[root@ractest ~]#

ITPUB 第 87 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

验证安装:

[oracle@ractest OPatch]$ ./opatch lsinventory

ls: /home/oracle/11g/jre: No such f i le or directory

ITPUB 第 88 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 89 页 科技技术新动力

Invoking OPatch 11.1.0.0.0

Oracle inter im Patch Instal ler version 11.1.0.0.0

Copyright (c) 2005, Oracle Corporation. Al l r ights reserved..

Oracle Home : /home/oracle/11g

Central Inventory : /home/oracle/oraInventory

from : /etc/oraInst. loc

OPatch version : 11.1.0.0.0

OUI version : 11.1.0.2.0

OUI location : /home/oracle/11g/oui

Log f i le location :

/home/oracle/11g/cfgtool logs/opatch/opatch2007-06-28_05-21-28AM.log

Lsinventory Output f i le location :

/home/oracle/11g/cfgtool logs/opatch/lsinv/lsinventory2007-06-28_05-21-2

8AM.txt

--------------------------------------------------------------------------------

Instal led Top-level Products (1):

Oracle Database 11g 11.1.0.4.0

There are 1 products instal led in this Oracle Home.

There are no Interim patches instal led in this Oracle Home.

--------------------------------------------------------------------------------

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.eygle.com/archives/2007/08/11gspfi le_fault_tolerant.ht

ml

ITPUB 电子杂志 总第十七期

http://www.itpub.net

Oracle 11g 的数据库创建

作者:shahand

以 oracle 用户运行 dbca,

#su - oracle

[oracle@ractest database]$ dbca

ITPUB 第 90 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

一般选择自定义数据库

输入数据库名称: orcl

ITPUB 第 91 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

不选择配置 Enterpr ise manager,

并手工输入 sys 和 system 的密码,我这里配置相同的密码,也可以不同。

ITPUB 第 92 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

设置 secure set t ing,使用默认值

分别是数据文件存放方式、路径、要安装的数据库选件

ITPUB 第 93 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 94 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

在配置 sga 的时候发现 gui 界面聪明了一些,有几处变化:

多了内存分配比例的滚动条、 typical 分配和 custom 分配数值相关联、 custom 分

配多了 manual 选项,看起来也算合理。

ITPUB 第 95 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

下面的又都是一样的

ITPUB 第 96 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 97 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

创建完毕。

确认数据库状态:

[oracle@ractest trace]$ sysdba

SQL*Plus: Release 11.1.0.4.0 - Beta on Thu Jun 28 04:42:32 2007

ITPUB 第 98 页 科技技术新动力

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 99 页 科技技术新动力

Copyright (c) 1982, 2007, Oracle. Al l r ights reserved.

Connected to:

Oracle Database 11g Enterprise Edit ion Release 11.1.0.4.0 - Beta

With the Parti t ioning, OLAP and Data Mining options

SQL> select * from v$version ;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edit ion Release 11.1.0.4.0 - Beta

PL/SQL Release 11.1.0.4.0 - Beta

CORE11.1.0.4.0Beta

TNS for Linux: Version 11.1.0.4.0 - Beta

NLSRTL Version 11.1.0.4.0 - Beta

SQL>

SQL> select status from v$instance ;

STATUS

------------

OPEN

SQL> select open_mode from v$database ;

OPEN_MODE

----------

READ WRITE

[root@ractest ~]# su - oracle

[oracle@ractest ~]$ ls - l

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 100 页 科技技术新动力

total 48

drwxr-xr-x 60 oracle dba 4096 Jun 28 03:40 11g

drwxr-x--- 3 oracle dba 4096 Jun 28 04:35 admin

drwxr-x--- 4 oracle dba 4096 Jun 28 04:24 cfgtool logs

drwxr-x--- 3 oracle dba 4096 Jun 28 04:35 diag

drwxr-x--- 3 oracle dba 4096 Jun 28 04:35 oradata

drwxrwx--- 5 oracle dba 4096 Jun 28 03:40 oraInventory

[oracle@ractest ~]$ cd admin/

[oracle@ractest admin]$ ls

orcl

[oracle@ractest admin]$ ls - l

total 8

drwxr-x--- 5 oracle dba 4096 Jun 28 04:35 orcl

[oracle@ractest admin]$ cd orcl/

[oracle@ractest orcl]$ ls

adump dpdump pf i le

[oracle@ractest orcl]$ ls - l

total 24

drwxr-x--- 2 oracle dba 4096 Jun 28 04:36 adump

drwxr-x--- 2 oracle dba 4096 Jun 28 04:35 dpdump

drwxr-x--- 2 oracle dba 4096 Jun 28 04:35 pf i le

[oracle@ractest orcl]$ ls - l

total 24

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 101 页 科技技术新动力

drwxr-x--- 2 oracle dba 4096 Jun 28 04:36 adump

drwxr-x--- 2 oracle dba 4096 Jun 28 04:35 dpdump

drwxr-x--- 2 oracle dba 4096 Jun 28 04:35 pf i le

[oracle@ractest orcl]$ ps -ef|grep ora

root 11522 11342 0 02:25 pts/3 00:00:00 su - oracle

oracle 11523 11522 0 02:25 pts/3 00:00:00 -bash

oracle 19779 11523 0 04:21 pts/3 00:00:00 /bin/sh -f

/home/oracle/11g/bin/dbca

.. ...

oracle 20177 19780 2 04:35 pts/3 00:00:01

/home/oracle/11g/bin/sqlplus -S

oracle 20190 1 0 04:35 ? 00:00:00 ora_pmon_orcl

oracle 20192 1 0 04:35 ? 00:00:00 ora_vktm_orcl

oracle 20194 1 0 04:35 ? 00:00:00 ora_diag_orcl

oracle 20196 1 0 04:35 ? 00:00:00 ora_dbrm_orcl

oracle 20198 1 0 04:35 ? 00:00:00 ora_psp0_orcl

oracle 20202 1 0 04:35 ? 00:00:00 ora_dia0_orcl

oracle 20204 1 0 04:35 ? 00:00:00 ora_mman_orcl

oracle 20206 1 0 04:35 ? 00:00:00 ora_dbw0_orcl

oracle 20208 1 3 04:35 ? 00:00:03 ora_lgwr_orcl

oracle 20210 1 0 04:35 ? 00:00:00 ora_ckpt_orcl

oracle 20212 1 0 04:35 ? 00:00:00 ora_smon_orcl

oracle 20214 1 0 04:35 ? 00:00:00 ora_reco_orcl

oracle 20216 1 0 04:35 ? 00:00:00 ora_cjq0_orcl

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 102 页 科技技术新动力

oracle 20218 1 0 04:35 ? 00:00:00 ora_mmon_orcl

oracle 20220 1 0 04:35 ? 00:00:00 ora_mmnl_orcl

oracle 20230 1 0 04:35 ? 00:00:00 ora_smco_orcl

oracle 20232 1 0 04:36 ? 00:00:00 ora_fbar_orcl

oracle 20234 1 0 04:36 ? 00:00:00 ora_qmnc_orcl

oracle 20241 1 85 04:36 ? 00:00:40 oracleorcl

(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 20243 1 0 04:36 ? 00:00:00 ora_w000_orcl

oracle 20246 1 0 04:36 ? 00:00:00 ora_q000_orcl

root 20280 20248 0 04:36 pts/2 00:00:00 su - oracle

oracle 20281 20280 0 04:36 pts/2 00:00:00 -bash

oracle 20314 20281 0 04:36 pts/2 00:00:00 ps -ef

oracle 20315 20281 0 04:36 pts/2 00:00:00 grep ora

[oracle@ractest orcl]$ export ORACLE_SID=orcl

[oracle@ractest orcl]$ sysdba

SQL*Plus: Release 11.1.0.4.0 - Beta on Thu Jun 28 04:36:57 2007

Copyright (c) 1982, 2007, Oracle. Al l r ights reserved.

Connected to:

Oracle Database 11g Enterprise Edit ion Release 11.1.0.4.0 - Beta

With the Parti t ioning, OLAP and Data Mining options

SQL> show parameter backgr

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

background_core_dump str ing partial

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 103 页 科技技术新动力

background_dump_dest str ing /home/oracle/diag/rdbms/orcl/o

rcl/trace

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edit ion Release

11.1.0.4.0 - Beta

With the Parti t ioning, OLAP and Data Mining options

[oracle@ractest orcl]$ cd /home/oracle/diag/rdbms/orcl/orcl/trace/

[oracle@ractest trace]$ ls - l

total 128

-rw-r----- 1 oracle dba 8823 Jun 28 04:37 alert_orcl. log

-rw-r----- 1 oracle dba 785 Jun 28 04:35 orcl_dia0_20202.trc

-rw-r----- 1 oracle dba 116 Jun 28 04:35 orcl_dia0_20202.trm

-rw-r----- 1 oracle dba 785 Jun 28 04:35 orcl_diag_20194.trc

-rw-r----- 1 oracle dba 116 Jun 28 04:35 orcl_diag_20194.trm

-rw-r----- 1 oracle dba 850 Jun 28 04:35 orcl_lgwr_20208.trc

-rw-r----- 1 oracle dba 116 Jun 28 04:35 orcl_lgwr_20208.trm

-rw-r----- 1 oracle dba 794 Jun 28 04:35 orcl_ora_20187.trc

-rw-r----- 1 oracle dba 151 Jun 28 04:35 orcl_ora_20187.trm

-rw-r----- 1 oracle dba 969 Jun 28 04:36 orcl_ora_20222.trc

-rw-r----- 1 oracle dba 188 Jun 28 04:36 orcl_ora_20222.trm

-rw-r----- 1 oracle dba 805 Jun 28 04:35 orcl_pmon_20190.trc

-rw-r----- 1 oracle dba 152 Jun 28 04:35 orcl_pmon_20190.trm

-rw-r----- 1 oracle dba 802 Jun 28 04:36 orcl_qmnc_20234.trc

-rw-r----- 1 oracle dba 116 Jun 28 04:36 orcl_qmnc_20234.trm

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 104 页 科技技术新动力

[oracle@ractest trace]$ tai l -f alert_orcl. log

CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE

'/home/oracle/oradata/orcl/users01.dbf ' SIZE 5M REUSE AUTOEXTEND ON

NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT

SPACE MANAGEMENT AUTO

Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE

'/home/oracle/oradata/orcl/users01.dbf ' SIZE 5M REUSE AUTOEXTEND ON

NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT

SPACE MANAGEMENT AUTO

ALTER DATABASE DEFAULT TABLESPACE "USERS"

Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"

Thu Jun 28 04:36:19 2007

Thread 1 advanced to log sequence 2

Current log# 2 seq# 2 mem# 0: /home/oracle/oradata/orcl/redo02.log

Thu Jun 28 04:37:00 2007

Thread 1 advanced to log sequence 3

Current log# 3 seq# 3 mem# 0: /home/oracle/oradata/orcl/redo03.log

Thu Jun 28 04:37:34 2007

Thread 1 advanced to log sequence 4

Current log# 1 seq# 4 mem# 0: /home/oracle/oradata/orcl/redo01.log

Thu Jun 28 04:38:09 2007

Thread 1 advanced to log sequence 5

Current log# 2 seq# 5 mem# 0: /home/oracle/oradata/orcl/redo02.log

编 者 注 : 您 可 以 通 过 以 下 连 接 参 与 关 于 本 文 的 讨 论 , 直 接 和 作 者 对 话 :

http://www.itpub.net/801966.html

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 105 页 科技技术新动力

Oracle 11g 资料和白皮书

Oracle 11g 扩展了 Oracle 特有的网格计算提供能力。 Oracle 数据库 11g 在以

下方面包含大量新特性和功能增强:基础架构网格,包括可管理性、高可用性和

性能等功能;信息管理,包括内容管理、信息集成、安全性、信息生命周期管理

以及数据仓库 /商务智能等功能;应用程序开发, PL/SQL、 Java、 .NET 和

Windows、 PHP、 SQL Developer、 Applicat ion Express 和 BI Publisher 等功能。

以下这些白皮书将使你了解更多有关 Oracle 11g 的新特性。

高效性

·Oracle Database 11g High Avai labi l i ty (PDF)

·Oracle Database 11g Flashback Data Archive (PDF)

存储

·Oracle Database 11g Part i t ioning (PDF)

·Oracle Database 11g Automatic Storage Management (PDF)

·Oracle Database 11g Compression (PDF)

·Oracle Database 11g Information Li fecyle Management (PDF)

信息管理

·Oracle Database 11g Unstructured Data (PDF)

·Oracle Database 11g XML DB (PDF)

应用集成

·Oracle Database 11g Streams (PDF)

·Oracle Database 11g Warehouse Bui lder (PDF)

网格计算

·Oracle Database 11g Real Appl ication Clusters (PDF)

应用程序开发

·Oracle Database 11g Appl ication Development (PDF)

性能

ITPUB 电子杂志 总第十七期

http://www.itpub.net

ITPUB 第 106 页 科技技术新动力

·Oracle Database 11g Performance (PDF)

管理

·Oracle Database 11g Manageabi l i ty and Real Appl ication Testing (PDF)

安全

·Oracle Database 11g Securi ty (PDF)

ITPUB 电子杂志 总第十七期

http://www.itpub.net

关于杂志

ITPub 免费电子杂志于2001 年1 月1 日创刊。

电子杂志是ITPUB 一系列活动之一,我们的目的是让更多的人了解IT 技术,让更多的人从

中得到知识。

电子杂志需要得到大家的支持,请把你们看到的、学到的、想到的记录下来发给我们:

mailto:[email protected] 或者相关斑竹,所有受到你们帮助的会员们会感谢您!

我们一起建设属于自己的免费电子杂志!

ITPUB,信息技术新动力!

版权归各位作者所有,如需转载,请联系mailto:[email protected] ,我们会与作者

联络

制作人员

主编/定稿/排版: Way(ITPub成员, mailto:[email protected]

组稿: Tigerfish(ITPub坛主, mailto:[email protected]

编辑的话

本人由于经验不足难免有些地方不尽人意,还请大家谅解。

感谢本次投稿的各位作者!

感谢各位版主的大力支持与信任!

ITPUB 第 107 页 科技技术新动力