Database 类别下的文章

CNOUG Planet

今天测试了一下 Planet ,非常优雅的聚合工具。刚好 CNOUG.net 荒芜很久了,决定做一个 Oracle/OpenSouce 类的聚合。

CNOUG 是什么 ?

可以理解为 ChiNa Oracle User Group, 不过 CNOUG.org 论坛已经存在好久了, 虽然现在不死不活的.
可以理解为 ChiNa Opensource User aGgregate; 也可以理解为...整那么多理解干啥啊,就是看最新信息的东西就成了。

如果你的 Blog 主题和 Oracle 、OpenSouce 相关,可以联系我加入。

被聚合的 Blog 一个小时更新一次.

--EOF--

通过 ONLINE 参数创建索引(或者重建索引), 如果进程被突然终止,或者是手工 CTRL+C 取消该操作, 在非常个别的时候,麻烦来了。重新创建索引,会告诉你该索引已经存在,drop index ,会告诉你该索引被锁,或者是 ORA-08104(this index object xxxxx is being online built or rebuilt) 错误。该过程失败之前创建的一些临时对象由 SMON 负责清除,糟糕的是, SMON 可能会不作为--我在 9i 上观察是 2 个小时(周期?)才清除掉。

如果是一个比较繁忙的 OLTP 系统, 并且是要维护单列索引,那么风险真的是很大的。在 SMON 清除这些临时对象之前,没有办法在该列上建立新的索引。服务器能撑住么?

在 10g 版本, Oracle 的 DBMS_REPARE 包新增了: online_index_clean ,能够手工进行清除:

dbms_repair.online_index_clean(
object_id     IN BINARY_INTEGER DEFAULT ALL_INDEX_ID,
wait_for_lock IN BINARY_INTEGER DEFAULT LOCK_WAIT)
RETURN BOOLEAN;

谢中辉说这是一个 Bug,经过仔细查看 Metalink ,发现很多文档都说的不够准确--10g 的功能,Oracle 还让 9i 的用户去用呢,很不幸,我也上当了。

非常繁忙的一天.

--EOF--

很久以前,我记录过如何用 Oracle 的 SQL*Plus 工具创建 HTML 页面。今天写脚本过程中才发现 SQL*Plus 在命令行参数和进入 SQL*Plus 后 set 设定上的一个小差异。

如果是命令行参数 -MARKUP HTML ON SPOOL OFF ,则会打印 HTML HEAD 等标记,也就是说是 -MARKUP 后面的 SPOOL OFF 参数是无效的;

如果是在 SQL*Plus 提示符下 set MARKUP HTML ON SPOOL OFF ,则的确不会打印 HTML HEAD 出来。

这个和文档的说明不一致,或许是 Bug。我的版本是 9.2.0.6 .

最近的诡异事情特别多。

--EOF--

Oracle SES 的实现案例

Oracle Secure Enterprise Search 站点上提供了一篇白皮书: Implementing search.oracle.com - A Case Study 比较详细的介绍了 http://search.oracle.com 的实现。Oracle 通过这个站点提供对公司首页内容与 OTN 的搜索。不过既然是安全搜索,为什么不加入 Metalink 内容的搜索呢?

服务器用的两台 Dell PowerEdge 2850(机器可挺破)。每台配置是 2 颗 3G 的超线程 CPU 加上 8G 内存。存储是 RAID 5 方式。共有 4.3T 内部(? 这个机型最大支持 1.8TB SCSI 内部存储,其余就需要接外部存储了啊? )磁盘空间可用。没有说具体的存储设备或是连接方式。划分了 700G 给当前用。其余留作扩展。写了一个简单的脚本定期从 OS 端检查磁盘状态。

操作系统用的红帽子 RHEL 3 Update 2。内核是 2.4.21-37.ELhugemem ,能够充分利用大内存。接下来的设置我有一点疑问。前面说的 700g 空间挂在目录 /u02 下,而 SES 软件安装在 /u01 下。这个目录是单个磁盘分区上的--这似乎是一个单点啊!

Oracle SGA 设置了 2.5G 左右。当前已经索引了 35 万篇文档,数据库大小是 15G,Cache 文件 17G,Log(搜索的Log) 文件 1G。如果 Oracle 不做站外搜索的话,4.3 T 的总空间是绰绰有余。其实我倒是觉得 Oracle 有义务对站外的 Oracle 论坛等相关信息作一下专门的搜索,也算是对广大用户负责的一种手段。

负载均衡设备选用的是 F5(青春偶像 F4 的旁边, 呵呵)。示意图如下:

Oracle SES and F5 负载均衡

最后的监控方法也值得借鉴。

整个搜索站点构建中,软件成本的标准是: $30K/CPU 或者是 $60/命名用户 或是 $30/员工。两台机器上的 SES 需要 License 是 12 万美金。这个报价可不低啊。

-EOF-

Oracle SES 爬虫

百度认为企业搜索市场是鸡肋,可 Oracle 公司正在该领域投入重兵,磨刀霍霍。前几天,Oracle 公司率先使用自家产品 Oracle Secure Enterprise Search 打造自己的站内搜索:http://search.oracle.com

观察一下 Oracle Secure Enterprise Search(SES) 的爬虫:

"GET /OpenSource.htm HTTP/1.0" 200 7336 "-" \ 
"Oracle Secure Enterprise Search"
"GET /Publications.htm HTTP/1.0" 200 6959 "-" \ 
"Oracle Secure Enterprise Search"
"GET /OracleTech.htm HTTP/1.0" 200 14086 "-" \ 
"Oracle Secure Enterprise Search"
"GET /Others.htm HTTP/1.0" 200 5863 "-" \
"Oracle Secure Enterprise Search"
"GET /Others/Service.htm HTTP/1.0" 200 4268 "-" \ 
"Oracle Secure Enterprise Search"
"GET /Others/AboutMe.htm HTTP/1.0" 200 5186 "-" \ 
"Oracle Secure Enterprise Search"    

爬虫的名字就叫做 Oracle Secure Enterprise Search 。Web 日志上抓不到版本号。从 SES 服务器端的日志上可以得知目前的爬虫版本号为 10.1.6。

--EOF--

Oracle 10G的Data Pump技术能够在不同数据库间高速的移动数据库和元数据. 这个技术的基础是两个数据移动工具:Data Pump Export和Data Pump Import.

Oracle的Data Pump是通过一个PL/SQL包来实现的:DBMS_DataPump(也叫Data Pump API).Data Pump使用直接路径装载和外部表机制进行数据的移动. Data Pump使用DBMS_METADATA PL/Sql包进行包括ETL过程在内的所有的数据库对象操作.

Data Pump 是Oracle一些其它关键特性(如基于流的复制、逻辑Standby等、Grid)的基础。

Data Pump特性是集成到Oracle数据库10G中的,但是标准版本10G并行度只有1.

关键概念

Master Table

Master Table(MT)是Data Pump技术的核心.Master Table 用来保存整个过程中的细节信息(也可以说是一些元数据信息).有了MT,导出或者导入的重启动才变为可能.这些细节信息包括:

  • 产生Job状态的报告
  • 重新启动Job
  • 定位在Dump文件中的所有的对象.

主表在进行当前导出或者导入的操作的用户模式中被创建.该用户必须要有足够空间. 主表的名字和创建它的Job名字相同.这也就是说,你不能显式的指定一个和现有的表或者视图重名的Data Pump Job.

导出的时候,主表被创建,并在完成的时候写到Dump文件中.在启动导入的时候,主表从Dump文件集中载入到数据库中,并用来控制操作的顺序.主表也可以用一些参数来进行初始化操作.要注意的是主表不能跨文件存储.所以,指定的 Dump 文件的大小至少要能够容纳得下 MT .

主表依如下情况或被保留或者删除:

  • Job成功完成,MT 被删除.
  • 如果Job是使用STOP_JOB交互命令停掉的,MT将被保留以用来重启动Job.
  • 如果Job是使用KILL_JOB交互命令Kill掉的,MT将被删除,并且Job不能重新启动.
  • 如果Job意外中止,MT总是被保留.

记得此前曾有 Blogger 提过 PatchSet 9.2.0.8 将会是 Oracle 9i RDBMS终结版. Note:189908.1 中的描述是:

(9.2.0.8) Next (terminal) 9.2 Patch Set. Still being developed

将会是终结版. 当前仍在开发. 不过 Note:360241.1 中提到了:

Oracle Server - Enterprise Edition - Version: 9.0.1 to 9.2.0.9

如果不是笔误的话, 说明还有下一个版本?

一般来说, Oracle 的奇数版本特定组件版本号( component specific release number )都不如偶数版本稳定, 有趣的是, 实际上奇数版是 PatchSet 的偶数版. 比如 9.2.0.7 实际上是 PatchSet 的第六版(因为要从 9.2.0.1 算起).

不排除 Oracle 将在 大部分 9i 用户的支持服务都将过期的时候推出最后的 9.2.0.8, 然后促使大多数用户升级到 10GR2 上来.

关于 Oracle 的版本号, 其实有细微差别的, 下面这个图最清晰了:
Oracle Release Number.gif

DBA 们平时说起来这些, 都不是很严格.

--End.

在论坛上作了一个小小的调查: 大家说说看过的最有帮助的 Oracle 图书是什么 ? . 从参与的讨论中得到的一个有趣的结论: Oracle Database Concept 是对大多数 DBA 来说最有用的图书. Oracle 的概念手册是随版本号更新的. 执笔者 是 Michele Cyran , 对内容有贡献者大约还有 几十个人.

很多人都不掩饰对这本概念手册的喜爱, 有的 DBA 甚至仔细阅读过数遍。重剑无锋,大巧不工。以前和朋友聊天的时候说起过 "DBA 日常工作中可能 99% 的场景都只需要最基本的知识", 问题是: 最基本的知识是否掌握了 99% ?

这本书如果有影印版的话估计会是一本畅销书. Tom 的 Expert one-on-one Oracle 也被很多人推崇.

--End.

关于归档

本页包含 Database 类别下的所有文章.

上一类别为 Arch.

Geek 为下一类别.

回到 首页 查看最近发表的文章或者查看所有 归档文章.