Posts Tagged ‘DB2’

DB2 HADR+TSA在SAP系统的应用

April 26th, 2010

最近开始将DB2数据库从单纯的Hacmp的模式切换到HADR+TSA+HACMP模式。

原理感觉和Oracled的DG一样,但是功能还是偏弱,目前有一些限制的地方需要注意:

1.HADR is not supported in a partitioned database environment.
2.The primary and standby databases must have the same operating system version and the same version of the DB2 database system, except for a short time during a rolling upgrade.
3.The DB2 database system release on the primary and standby databases must be of the same bit size (32 or 64 bit).
4. Reads on the standby database are not supported. Clients cannot connect to the standby database.
5. Log archiving can only be performed by the current primary database.
6. You can use Self Tuning Memory Manager (STMM) only on the current primary database.
7. Backup operations are not supported on the standby database.
8. Non-logged operations, such as changes to database configuration parameters and to the recovery history file, are not replicated to the standby database.
9. Load operations with the COPY NO option specified are not supported.
10. HADR does not support the use of raw I/O (direct disk access) for database log files. If HADR is started via the START HADR command, or the database is activated(restarted) with HADR configured and raw logs are detected, the associated command will fail.

让DB2使用ssh协议

November 23rd, 2009

DB2默认会使用rsh协议,但是ssh有这数据加密和压缩传输的优点,我们往往会选择ssh来代替rsh协议,不管你是单节点还是dpf的数据库的环境。简单的步骤如下:

  • Change ownership to db2 instance id on the directory

              chown -R db2inst1:db2grp1 .ssh

  •  Add to the known_hosts   

              ssh-keyscan -t rsa dbhost >> known_hosts

  •  Set DB2 registry variable

               db2set DB2RSHCMD=/usr/bin/ssh

  • Testing:

               db2_all echo hi

DB2 UDB作为SAP系统数据库的Layout

November 23rd, 2009

比较老的一个文档了,但是比较经典,对于基于DB2中型的应用系统的数据库物理规划来说,还是比较有参考价值。我也在非sap的系统项目上线的时候里面参考过这个文档。一个合理规划为你的系统整体性能,后期运维来说还是相当的重要。

IBM Release DB2 UDB PureScale

October 14th, 2009

 

IBM最近release了DB2新的New feature:PureScale. 这个功能将为DB2带来所谓”unlimited capacity, application transparency and continuous availability”方面的增强。虽然IBM正在测试中,但是从已有的一些描述来看,这是一个有点类似Z/OS data sharing和Oracle RAC的功能。大家可以去IBM DB2 pureScale web site去了解更多的信息.我们一直期待基于UDB平台的单节点数据库也能有类似Z/OS data sharing的特性,希望这个New feature的推出,能够给我们带来一些惊喜…

在DB2v9.7上面简单测试CLPPLUS

June 25th, 2009

在DB2为了提高Oracle的兼容度,在9.7推出了和SQLPLUS非常相似的CLPPLUS。这个命令行环境为那些数据Oracle习惯的技术人员提供了一个非常熟悉的界面来操作DB2数据库。我简单测试了一下基本的功能:

1) DUAL
SQL> select to_char(to_date('2009-09-05','yyyy-mm-dd'),'day') from sysibm.dual;

确实基本上和sqlplus的操作体验差不多,为那些Oracle转到Db2的技术人员提供了一个比较容易上手的交互界面。

1
———–
saturday

2) Set timing on 这个功能最有用:)

SQL> set timing on;
SQL> select count(*) from empcp;

          1
———–
         42
Elapsed time: 6 millisecond(s)

3) Spool

SQL> spool 1.out;
SQL> select count(*) from empcp;

          1
———–
         42
SQL> spool off;

4) Describe table

SQL> desc emp;

Name                 Data Type       Type schema       Length    Scale Nullable
——————– ————— ————— ——– ——– ——–

EMPNO                CHARACTER       SYSIBM                 6        0 N
FIRSTNME             VARCHAR         SYSIBM                12        0 N
MIDINIT              CHARACTER       SYSIBM                 1        0 Y
LASTNAME             VARCHAR         SYSIBM                15        0 N
WORKDEPT             CHARACTER       SYSIBM                 3        0 Y
…………

5) Host command

SQL> host ls
1.out
clpplus.log

在DB2v9.7上面测试Index压缩功能

June 19th, 2009

简单的测试了一下索引压缩的功能,同时Monitor测试系统WorkLoad。简单步骤如下:

db2 => select INDNAME,COMPRESS_ATTR, INDEX_COMPRESSED, INDEX_OBJECT_L_SIZE, INDEX_OBJECT_P_SIZE from table (admin_get_index_info ('T', 'SAPR3', 'SOC3')) as t

INDNAME COMPRESS_ATTR INDEX_COMPRESSED INDEX_OBJECT_L_SIZE INDEX_OBJECT_P_SIZE
-------------------------------- ------------- ---------------- -------------------- --------------------
SOC3~0 N N 610473 610473

1 record(s) selected.

db2 => alter index "SAPR3"."SOC~0" compress yes
DB20000I The SQL command completed successfully.

db2 => reorg indexes all for table SAPR3.SOC3
DB20000I The REORG command completed successfully.

db2 => select INDNAME,COMPRESS_ATTR, INDEX_COMPRESSED, INDEX_OBJECT_L_SIZE, INDEX_OBJECT_P_SIZE from table (admin_get_index_info ('T', 'SAPR3', 'SOC3')) as t

INDNAME COMPRESS_ATTR INDEX_COMPRESSED INDEX_OBJECT_L_SIZE INDEX_OBJECT_P_SIZE
-------------------------------- ------------- ---------------- -------------------- --------------------
SOC3~0 Y Y 258896 258896

1 record(s) selected.

从Nmon收集的数据来看,峰值也就比Normal的时候多2%-3%,基本在可接受范围内。对于Update和Insert的并发影响测试留待以后进行。

参加DB2 Cobra Early Access Program

June 15th, 2009

提出申请后,很快得到批准。拿到Access Key后,开始下载DB2 V9.7的image文件。最近准备好好看看这个版本。

以下是DB2 V9.7 Release的New Feaure

» Read more: 参加DB2 Cobra Early Access Program

也说说DB2的备份和恢复

June 12th, 2009

作为成熟数据库产品,备份和恢复的功能基本上是最重要的部分之一。和ORACLE强大的RMAN比起来,DB2在这方面基本上没有什么太闪亮的地方。但是作为一个从DB2 V7就开始使用的老用户而言,DB2在备份和恢复这块随着版本的更新还是不断加强的。对我而言,下面这几个地方的增强,直接对我的工作量有好处:)

备份

对于备份而言Include Logs基本上是最大的一个增强:

这个选项的引入,基本上杜绝了新手们,老是在做恢复的时候 rollforward找不到日志文件的问题。而且比较有意思的是,我们不仅可以Include Logs而且我们还可以从备份文件里面单独retrieve日志文件出来。当然有朋友可能会问,Include Logs选项会让备份文件增长。这是必然,但是我们可以用Compress来明显压缩备份文件大小,一般带上Compress,备份文件将只要以前的1/3-1/4左右。当然有的朋友可能进一步会问,compress会带来Cpu的消耗,这个时候,我们可以用UTIL_IMPACT_PRIORITY在Online的时候来平衡备份的速度,减少资源的消耗.
对于DPF而言,include logs已经很完美的在DPF环境里面得到支持。同时在备份的时候,我们也可以将备份命令简化为:db2 backup database db_name on all dbpartitionnums to “PATH”

恢复

简化前滚的命令,比如:DB2 ROLLFORWARD DATABASE dbname TO END OF BACKUP。当然,你也可以用Recover命令来自动做ROLLFORWARD。在新的版本里面用recover来做PIT的恢复比传统方式还是简单一些。那么在恢复这个部分来讲,引入的新Rebuild这个特性,是一个很大的增强。众所周知,备份和恢复的一个重要应用的场景是数据的迁移,跨DB的数据库迁移一般都会用到重定向恢复,在v9之前的版本,我们需要自己手工来完成重定向恢复的脚本,在v9之后,我们可以使用rebuild的方式来自动生成重定向恢复脚本,相当方便。
在以前的版本里面自己写了一个脚本,来做重定向恢复,现在DB2可以自动帮你生成,做DBA好像越来越简单了.

当然,对于一个完整的软件生命周期管理的解决方案来说,DB2+TSM还是非常不错的选择。

现在DB2V9.7已经Announce,希望新的版本,有新的惊喜。

DB2 9.7终于支持分区表的Local Indexes

May 6th, 2009

在一年多以前,我曾经在<<对DB2 V9的疑问>>这篇blog里面提到我对db2v9这个版本的2个feature的疑问。其中一个是在db2v9里面的分区表上如何建立local索引。在和IBM的一些工程师交流的时候,他们好像对这个没啥概念。我也一直觉得这是一个很大的缺陷。在一年多后的今天,参加了一个DB2 9.7 OVERVIEW的conference。我终于在DB2 9.7的release里面看到了DB2 9.7终于有这样一个new feature:”Ability to create local (partitioned) index”

我很欣慰,不容易啊,呵呵。

关于一个存储过程问题的解决

May 4th, 2009

一个哥们转过来一个问题,一个金融行业的客户在部署应用的时候,发现当应用在作汇总数据的时候,随着数据的增加,处理性能呈非线性的降低,现在在处理到6000万条记录的时候,系统变得停滞,存在大量的I/O Wait.和排序溢出。
接到case后,因为不能直接连接客户的系统上直接察看。所以,我的第一反应是,让系统作一次runstats/reorg。但是客户说,他们每天定时作。于是,我让他们取出”select stats_time, tabname from syscat.tables where tabname = ‘tab_name’,发现果然是比较新的统计结果。没有办法只有让他们发db2support.zip,但是最后客户说他们在内网,大的压缩文件传不出来。晕…,只好让他们先传db/dbm cfg文件过来。发现其中虽然有不合理的地方,但是根据他们的硬件配置来看,不应该导致这样严重的局面。
没有办法,只好让他们把存储过程拿过来看看,发现他们的存储过程,大量的用到游标,然后根据不同的条件,将不同结果集insert到不同的表里面。一个典型的汇总处理过程,没看两眼,我就发现问题所在,客户的存储过程没有用到”临时表”,把这些存储过程改成用到临时表后,把修改后的程序和建立临时表空间的SQL发过去后。让客户重新编译后,客户称将近一亿条的大表处理,都能顺利完成。
可见临时表在大型系统中的数据汇总/排序处理应用中,是相当重要的。
不过,后来这个客户又碰到另外一个问题,也是关于存储过程中对临时表的调用,也蛮有意思的,下次说了。

IBM Announce DB2 9.7 For LUW

April 23rd, 2009

在Oracle收购Mysql之际,IBM不甘寂寞的推出DB2 9.7 for LUW.虽然这个版本不是一个革命性的升级,但是有一些新的特性,依然值得我们去关注。

从Announce出来的信息来看,在Compress,Partition table,数据库的管理,开发,XML几个方面都有一些新的改进。另外,我们依然在等待SAP对DB29.7的certification.

也许,对我来说,又一个Migration的项目在等待着我(:

分布式的数据库集群和海量数据存储的一点思考

April 3rd, 2009

题目很大,如果以为这是篇技术文章,那可就错了:)

过年的时候,回来和几个老朋友见面。大家好像都碰到面临着海量数据存储和数据处理能力overflow的压力。

一个哥们,一直做移动行业的ETL,N久没见。给我的第一个电话,就是讨论详单海量数据能否由过去的集中处理,能否考虑在ETL中使用分布式的集群。

另外一个老朋友,工作在一个亚洲数得着的一个大规模订单处理和流转系统环境里面从事应用架构方面的工作,现在也在考虑数据库层面架构的重构。过年就那么几天,和他喝了一次咖啡,吃了一次日本菜。每次主要讨论的都是系统架构的技术细节(:

至于我,以前从事过移动和烟草的一些项目,也对RAC和DPF,oltp/olap都有一些自己的体验,所以对架构这块也有一些兴趣。虽然目前的公司在我眼里是一个老牌保守的那种正统商业公司,但是随着公司内部”Open Source policy”的发布和Amazon saas这样服务在国外的流行,公司内部的论坛上对saas和cloud的讨论也越来越集中。而且已经有超过60个节点的cluster被用来做CAD计算。

对于db2来说,一直以来我在思考的就是两个问题,在大规模的分布式环境里面如何分离读写IO和DPF如何满足OLTP的要求。前一个问题,几年前和IBM讨论的时候,记得他们的技术人员提到用SQL复制/Q复制来做。对于这点,我是有疑虑的。经过几个项目的体会,这两种都基本上是表层面的,而且SQL复制性能相当一般。Q复制,性能还行,但是对于通道的维护那还是比较麻烦的,也不适合。最近,了解到一些新的解决方案可以帮助我找到答案。另一个问题,虽然听过沈刚的presentation,有一些启发但是这个还得结合应用来考虑。

就国内来说,阿里的Jacky.zhang目前主持的Amoeba+db的分布式架构和mysql的廉价集群项目,无疑是值得期待的。希望他的blog能继续给我们带来更detail的技术细节和更新的技术思路。

Jacky.Zhang,俺看好你哟:)