Tag Archives: Oracle

Oracle Online 创建索引失败, ORA-08104

通过 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 的一个小问题

很久以前,我记录过如何用 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