Archive for March, 2008
全文索引的代价
Tuesday, March 11th, 2008
今天下午做了全文索引的update测试。被测试的SQL如下:
update ali_zeus_customer set OPEN_REASON=’wt’ where rownum=1 (OPEN_REASON字段是个全文索引字段)
结果做了把TRACE发现,仅仅是这条UPDATE,全文索引需要执行下面一系列的SQL,比普通INDEX字段维护的大家和成本要高很多。
update ali_zeus_customer set OPEN_REASON=’wt’ where rownum=1
DELETE “ZEUS”.”DR$ALI_ZEUS_CUST_OPEN_CIND$K” WHERE TEXTKEY = :rid RETURNING DOCID INTO :docid
INSERT INTO “ZEUS”.”DR$ALI_ZEUS_CUST_OPEN_CIND$N” (NLT_DOCID,NLT_MARK) VALUES(:docid,’U’)
INSERT INTO DR$DELETE (DEL_IDX_ID,DEL_IXP_ID,DEL_DOCID) VALUES(:idxid,:ixpid,:docid)
INSERT INTO CTXSYS.DR$PENDING (PND_CID, PND_PID, PND_ROWID, PND_TIMESTAMP, PND_LOCK_FAILED) VALUES(:1, :2, :3, SYSDATE, ‘N’)
begin ctxsys.syncrn(:idxid, :ixpid, :rtabnm); end;
select del_docid from ctxsys.dr$delete where del_idx_id = :idxid and del_ixp_id = [...]
Returnning into的使用
Tuesday, March 11th, 2008
今天在做ORACLE本身的TRACE的时候发现的。以前还真没用过。示例如下:
@>create table wt(id number,name varchar2(200)); Table created.
@>insert into wt values(1,’mytest’);
1 row created.
@>commit; Commit complete.
@>declare
2 va varchar2(200);
3 begin
4 delete from wt where id=1 returning name into va;
5 dbms_output.put_line(’My value:’ || va);
6 end;
7 /
My value:mytest
PL/SQL procedure successfully completed.
Mysql测试三:Mysql + DRBD + Heartbeat(v1)基本配置笔记及切换测试
Wednesday, March 5th, 2008
1、下载对应版本的heartbeat包
由于安装beartbeat的rpm包需要其他一些包为前提条件,所以可能还需要下载对应版本的其他的几个rpm包,像如下:
[root@mysql1 heartbeat]# rpm -ivh heartbeat-2.1.3-3.el4.centos.i386.rpm
warning: heartbeat-2.1.3-3.el4.centos.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
error: Failed dependencies:
heartbeat-pils = 2.1.3-3.el4.centos is needed by heartbeat-2.1.3-3.el4.centos.i386
heartbeat-stonith = 2.1.3-3.el4.centos is needed by heartbeat-2.1.3-3.el4.centos.i386
libpils.so.1 is needed by heartbeat-2.1.3-3.el4.centos.i386
libstonith.so.1 is needed by heartbeat-2.1.3-3.el4.centos.i386
然后下载heartbeat-pils-2.1.3-3.el4.centos.i386.rpm和heartbeat-stonith-2.1.3-3.el4.centos.i386.rpm,
在安装这两个包之后,即可正常安装heartbeat了。
2、配置相关文件
1) 找到安装后heartbeat的文档目录,将三个需要的配置文件样例copy到/etc/ha.d目录下准备后面的配置设
置(这样会更方便,而且有较为详细的配置说明):
[root@mysql1 ha.d]# rpm -q heartbeat -d
…
/usr/share/doc/heartbeat-2.1.3/AUTHORS
…
[root@mysql1 ha.d]# [...]
Mysql测试二:DRBD+Mysql 高可用方案设置测试
Tuesday, March 4th, 2008
测试环境:rhel3.5,drbd 8.0.7,mysql5.0.51-rc-log
1、首先从www.drbd.org下载了源代码包(我下载的8.0.7版本的包)
2、检查主机上面有没有linux的内核源代码,如果没有,需要找到相对应版本的源代码包安装上去。
3、开始安装drbd:
1) 解压:tar -zxvf drbd-8.0.7.tar.gz
2) 进入drbd源码目录,根据kernel源码位置来编译drbd:
make KDIR=/usr/src/kernel/ (如果没有更改过内核,可以直接运行make,编译程序会到/lib/module里面去自己根据相关配置寻找到kernel源码)
make install
如果没有报错,应该基本install好了,检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko
同时系统应该至少多了以下两个命令:drbdadm和drbdsetup
不要删除此源码目录,后面还会用到里面的./scripts/drbd.conf 和 ./drbd/drbd.ko
4、现在可以加载安装drbd模块了
insmod drbd.ko 或者 modprobe drbd
通过lsmod检查是否已经成功
#lsmod |grep drbd
如果有,则表示成功了
5、更改drbd配置文件:
/etc/drbd.conf
[root@mysql1 ha.d]# cat /etc/drbd.conf
…
on mysql1 {
device /dev/drbd0;
disk /dev/i2o/hda9;
address 10.0.65.45:8888;
flexible-meta-disk internal;
}
on mysql2 {
device /dev/drbd0;
disk /dev/sde2;
address 10.0.65.106:8888;
meta-disk internal;
}
…
6、primary node设置:
1) 创建matadata:
#drbdadm create-md all
2) 启动drbd:
#/etc/init.d/drbd start
3) 设置为主节点:
#drbdadm [...]
Mysql测试一:Mysql Slave群切换Master
Monday, March 3rd, 2008
测试环境:
Type OS Mysql
Master rhel3.5 5.1.22-rc-log
Slave1 rhel3.5 5.1.22-rc-log
Slave2 rhel4.4 5.1.22-rc-log
切换测试过程是:1) Master down
2) Slave1 切换成新的Master
3) Slave2 更换Master配置为原Slave2
详细过程如下:
1、从slave(slave1)群众中选定一个slave,准备钱换成master;
2、检查slave1的复制状态:
mysql> SHOW PROCESSLIST ;
+—-+————-+———–+——+———+————+———————————————————————–+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+————-+———–+——+———+————+———————————————————————–+——————+
| 1 | system user | | NULL | Connect | 54733 | Waiting for master to send event | NULL |
| 2 | [...]
阳光,草地,足球
Sunday, March 2nd, 2008
这个周末去财经踢球了,不幸的是,在踢一个球的时候,球踢空了。结果脚踝扭了。走路不成问题,但是不好发力。
躺在草地上,面对蓝天,感觉无比的惬意。很爽,很舒服!真惬意。要是天天能这样就好了。
今天下午去了孤山,也是面对太阳,太爽了。感觉人都飘起来了爽啊!
要是天天都这样就好了,前提是大师发我工资。呵呵~··
利用块跟踪来缩短增量备份时间
Saturday, March 1st, 2008
oracle提供增量备份数据库的功能,这个功能的大致原理就是根据上次备份记录的checkpoint scn来比较,备份自上次
备份以来,数据块头SCN变化过的块,9I版本的这个功能并不能有效减小备份时间,因为他还是要把整个文件读入缓冲区,逐个数据块进行检查和校验,只不过推入输出缓冲区的数据块会少很多,备份片会小很多,如果到备份设备的IO不存在瓶颈,花的时间可能和一次全备差不多,但是从10G版本开始,引入了BLOCK CHANGE TRACKING特性,这次算是真正的增量了。
当这个特性开启后,ORACLE会创建一个trace文件,并起用后台进程CTWR记录变化的数据块,当需要增量备份的时候,就直接读这个文件获得要备份的数据块,速度确实是有质的飞跃
–全备数据库
run
{
allocate channel c1 device type disk format ‘/opt/oracle/rman/mydb_full_bck%u’;
backup incremental level 0 database ;
}
allocated channel: c1
channel c1: sid=841 device type=disk
starting backup at 2008-03-01 18:19:10
finished backup at 2008-03-01 18:19:45
全备耗时35秒
–增量数据
sys@mydb>create table mytable tablespace myspace as select * from dba_objects where 1 = 2;
table created.
sys@mydb>insert into mytable select * from dba_objects;
12064 rows created.
……
sys@mydb>commit;
commit [...]


