« December 2005 | 首页

1 2 3 4 5 6 7 8 (Page 4 of 8)



| February 2006 »

January 20, 2006

Hammerora -- 开源的 Oracle 压力生成工具

此前我曾经在 利用开源工具实现自己的TPC-C 中介绍过 Hammerora , 经过了一段时间的发展, Hammerora 这个工具也已经有了一些变化。如果你正在寻找一款 Oracle 压力生成工具准备用来测试你的 Oracle 数据库, Hammerora 是一个非常好的选择。

这款工具是用 Tcl/Tk 写的(国内能用 Tcl/Tk 的人似乎非常少).其工作原理很简单:

......解析 Oracle 的 Trace 文件,并把它们转化为 OraTcl 程序,然后在 Oracle 数据库中用多个用户并发的对用户的事务进行"回放"。我们知道,Oracle 的 Trace 文件能够翔实的记录用户对数据库的操作。这样 Hammerora 能够保证对用户环境的真实模拟。

这个工具的优势:

  • 开源软件,用户可以添加自己需要的功能。而那些商业软件连 UI 字体修改一下都几乎是不可能的;
  • 开源软件,成本更低。相比之下 LoadRunner 之类的工具太庞大了,而且 License 费用不菲;
  • 基于 Oratcl 与 Oracle 交互。可以真实反应 SQL 在数据库中的运行信息。而本身的开销很小。

距离我上次关注这个工具到现在, 已经更新了好几个版本, Hammerora Linux 平台的最新版本 1.2.6 已经支持 Oracle 10g Release 2 instant client.另外一个我以前没太关注的地方是这个工具的远程模式(Remote Modes), 一个 Hammerora 可以运行在Master 或者是 Slave 模式下, 这使得使得分布式压力测试成为可能.

Windows 版本的软件安装非常容易. 但要注意目录名字不要有中文和空格(我是遇到了这个问题). 使用界面看图

更多参考

更多和 Oracle 相关的开源工具.

January 19, 2006

用 Sitemap Generator 创建 Google Sitemap

今天偶然注意到 Google 对我的站内搜索数量锐减,从前一段时间的将近 1 万 变成现在的不到 1 千了.稍加分析了一下,原来在每篇文章的页面最上方也加了站点的描述内容,最初的目的完全是为了美观,没想到搜索引擎把这些页面都当作相似页面成处理了.雅虎和百度的站内搜索结果也是类似的.

不由得想起另一个问题: Google 的爬虫到底能不能遍历我的站内所有页面 ? 似乎不太可能.回想起 Google 的 Sitemap 也发布很久了, 并且不提供联机创建 Sitemap 的功能, 已经能够说明对很多比较复杂的站点 Google 仍有不足之处. Google 推这个工具的功能恐怕也是为了用户能从客户端把信息推到搜索引擎这一端(Google 用意).

此前我的站点 Sitemap 采用的是 MT 模板的方式 ,参考 Google Sitemaps using Movable Type , 这样我的旧站的内容就忽略掉了. 我现在使用的 Dreamhost 的服务,是支持 Python 的 ,并且可以 Shell 登陆, 准备用 Google 推荐的 sitemap-generator 来"帮助Google一下". 具体的操作在 Google 的帮助页面有很详细的说明. 需要注意的是,该工具要通过代理才可以下载,不知道其他人是不是也和我一样.

我的操作结果:

$ python sitemap_gen.py --config=dbanotes_config.xml
Reading configuration file: dbanotes_config.xml
Opened URLLIST file: example_urllist.txt
Walking DIRECTORY "/home/fenng/dbanotes.net/"
Opened ACCESSLOG file: /home/fenng/logs/dbanotes.net/http/access.log
Opened ACCESSLOG file: /home/fenng/logs/dbanotes.net/http/access.log.0
Sorting and normalizing collected URLs.
Writing Sitemap file "/home/fenng/dbanotes.net/sitemap.xml.gz" with 10855 URLs
Notifying search engines.
Notifying: www.google.com
Count of file extensions on URLs:
     421  (no extension)
       1  .avi
       6  .back
       1  .cert
       2  .cfg
     238  .cgi
       2  .cgi-original
       1  .chm
      13  .conf
      89  .css
       9  .ctl
      13  .dat
      27  .db
       7  .doc
      12  .dump
    1090  .gif
       4  .gif0000644
       8  .gz
     261  .htm
       2  .htm0000644
    2244  .html
      60  .ico
      82  .idx
       6  .inc
       1  .ini
     219  .jpg
     382  .js
       1  .lang
       5  .lib
     118  .lock
       1  .log
       1  .lst
       2  .mysql
      15  .pdf
    1643  .php
      62  .pl
    1093  .pm
     547  .png
       9  .pod
       2  .postgres
       3  .py
       6  .rar
       6  .rdf
       4  .readme
       1  .rss
       1  .sh
      10  .sql
       2  .sqlite
       2  .src
       1  .svg
       2  .swf
       1  .template
     560  .tmpl
      53  .tpl
      59  .txt
       4  .types
       4  .wsdl
     179  .xml
       1  .xsl
      15  .zip
    1241  /
Number of errors: 0
Number of warnings: 0

之后更新 Google Sitemap 的配置信息,会立刻得到Google确认. 但是最后在搜索引擎中的表现,还要拭目以待.

更多阅读:Apache Cocoon sitemap concept

Updated: 2006-01-29 观察到搜索结果数量已经得到更新. 当日是 1800 多

January 18, 2006

Blog, Blogger,博客与网志

今天看到公司的杂志架上有本 06 年 1 月期的《福布斯》(中文版),封面上大大的标题"如何迎接来自博客的攻击"引起了我的注意,拿起杂志注意到封面也出现了"网志"的字眼,博客 vs. 网志,不由得想起 04 年 12 月的那场关于 Blog 译名的争论。说实话,我也不太喜欢"博客"这个字眼,我的 Blog 的读者可能会注意到我几乎从来不说"博客"这个词,最近我也在 页面的右下方贴了一个 "Blogger is not 博客"的图标。稍微表达一下我的立场。

回头还说《福布斯》这一期的文章,读下去会发现文中的网志/网络日志指的是 Weblog,但"博客"却对应 Blogger 这个词,给人的感觉怪怪的。据我所知,这份杂志中文版的文章都是翻译出来的,而且,译者的风格不统一也可以想见(Technorati 被翻译为"贴诺")。我之所以不喜欢这个词,主要的原因还是“博客”这个称呼因为某些人别有用心的滥用,而令更多人产生误导,有些令人生厌。正如 "黑客" 这个词一样。

虽然国内很多 Blogger 都抵制"博客"这个词,但令人大跌眼镜的是,Google 推出的 Blogger.com 中文版赫然出现的就是"博客",有趣“Blog” 这个词还是直接用英语。Google Directory 中文部分也是用的"博客",在 Google 上输入 "Define:Blogger" 并进行搜索,却只有一条可用的英文信息,中文结果为空,很微妙。

Blogger or "博客", 这其实不是个问题。朋友们看了我的站点后可以称呼我为一个"博客",当然我不会承认,因为我只是一个写 Blog 的人.




注:"博客"在这篇文章中只是一个元数据.

January 17, 2006

[Oracle 10g] 表空间更名

简单介绍

在 Oracle 10g 以前的版本,更改表空间名字是几乎不可能的事情,除非删除,重新创建,大费周章。Oracle 10g 新添加了一项更改表空间名字的功能,使得更改表空间名字瞬间即可完成。是个较为人性化的功能。

Added@2006/01/17:更名操作会更新数据字典、控制文件、联机数据文件头部等的表空间名字信息但是不会更改表空间 ID.

SQL> COL FILE_NAME format a70
SQL> SET linesize 120
SQL> SET pagesize 99
SQL> COL TABLESPACE_NAME format a10
SQL>
SQL> SELECT file_name, tablespace_name FROM dba_data_files;
FILE_NAME TABLESPACE ---------------------------------------------------------------------- ---------- /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/users01.dbf USERS /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/sysaux01.dbf SYSAUX /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/undotbs01.dbf UNDOTBS1 /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/system01.dbf SYSTEM /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/example01.dbf EXAMPLE /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/foo1.dbf FOO
6 rows selected.

该命令的语法很简单:

ALTER TABLESPACE tablespacename RENAME TO newtablespacename;

tablespacename 和newtablespacename 分别对应原来的表空间名字和更改后的表空间名字:

实战演练

注意:在操作前后都请做好控制文件的备份工作

SQL>ALTER TABLESPACE foo RENAME TO test;
Tablespace altered.
SQL> SELECT file_name, tablespace_name FROM dba_data_files;
FILE_NAME TABLESPACE ---------------------------------------------------------------------- ---------- /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/users01.dbf USERS /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/sysaux01.dbf SYSAUX /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/undotbs01.dbf UNDOTBS1 /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/system01.dbf SYSTEM /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/example01.dbf EXAMPLE /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/foo1.dbf TEST

因为 system 和 sysaux 这两个表空间的特殊性,是不可以更名的:

SQL> ALTER TABLESPACE system RENAME TO mysystem;
ALTER TABLESPACE system RENAME TO mysystem
*
ERROR at line 1:
ORA-00712: cannot rename system tablespace 
SQL> ALTER TABLESPACE sysaux RENAME TO mysysaux; ALTER TABLESPACE sysaux RENAME TO mysysaux * ERROR at line 1: ORA-13502: Cannot rename SYSAUX tablespace

可以对 undo tablespace 重新命名,如果使用的是 spfile ,而不是 pfile, Oracle 会自动对 spfile 中的 undo_tablespace 进行更改(不过要在数据库重新启动之后才可以观察到),如果使用的是 pfile ,要对其进行手工更改。我们看看 spfile 的变化情况:

SQL> ALTER tablespace undotbs1 RENAME TO undotbs; 
Tablespace altered.
SQL> SQL> show parameter pfile
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /u01/app/oracle/product/10.1.0 /db_1/dbs/spfileTEST.ora SQL> show parameters undo
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started.
Total System Global Area 180355072 bytes Fixed Size 777996 bytes Variable Size 128983284 bytes Database Buffers 50331648 bytes Redo Buffers 262144 bytes Database mounted. Database opened. SQL> show parameters undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS SQL>

对脱机表空间的更名是不允许的:

SQL> ALTER TABLESPACE TEST OFFLINE;
Tablespace altered.
SQL> ALTER TABLESPACE test RENAME TO testoffline; ALTER TABLESPACE test RENAME TO testoffline * ERROR at line 1: ORA-01135: file 6 accessed for DML/query is offline ORA-01110: data file 6: '/u01/app/oracle/product/10.1.0/db_1/oradata/TEST/foo1.dbf'

给出的提示信息很有参考价值:更名操作是要对表空间进行 DML/query 操作的,表空间offline的话,则不可以。

那么如果表空间是只读的会怎么样呢?

SQL> ALTER TABLESPACE TEST ONLINE;
Tablespace altered.
SQL> ALTER TABLESPACE TEST READ ONLY;
Tablespace altered.
SQL> ALTER TABLESPACE test RENAME TO testreadonly;
Tablespace altered.
SQL> list 1* SELECT file_name, tablespace_name FROM dba_data_files SQL> /
FILE_NAME TABLESPACE ---------------------------------------------------------------------- ---------- /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/users01.dbf USERS /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/sysaux01.dbf SYSAUX /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/undotbs01.dbf UNDOTBS /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/system01.dbf SYSTEM /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/example01.dbf EXAMPLE /u01/app/oracle/product/10.1.0/db_1/oradata/TEST/foo1.dbf TESTREADONLY
6 rows selected.
SQL>

看来数据字典已经更新,不过Oracle会向alert_SID.log 中写入类似如下的日志:

ALTER TABLESPACE test RENAME TO testreadonly                                                 
Sat Nov 13 16:15:21 2004                                                                     
Tablespace 'TEST' is renamed to 'TESTREADONLY'.                                              
Tablespace name change is not propagated to file headersbecause the tablespace is read only. 
Completed: ALTER TABLESPACE test RENAME TO testreadonly 

注意Log里有个细微的小Bug:headersbecause。这是两个词,应该空开的 :-)

更名对 Bigfile 表空间一样有效。

限制条件

应用这个特性有个主要的限制条件:COMPATIBLE 初始化参数要求为 10.0 或者更高才可以

参考信息

Oracle Database Administrator's Guide 10g Release 1 (10.1) Part Number B10739-01 ( Note 62294.1 )


这是以前的旧文整理

本站相关标签|Tags Cloud