Oracle DBA|MySQL DBA|数据库管理,架构,监控与性能优化 --- NinGoo.net

使用Oracle正则表达式监控应用到数据库的连接情况

Oracle从10g开始支持正则表达式,在一些特殊的应用场景下,可以发挥超乎想象的便利。

通过v$session,可以监控应用服务器到数据库的连接的情况。假设应用服务器的名字都是有规律的,典型的如字母+数字+.+后缀的格式,例如app123.idc1表示位于idc1机房的app应用的123机器。当然,机器名的规则要根据具体的场景来分析得出,本文以上述规则来演示如何利用正则表达式来得到每组不同的应用服务器到数据库的连接情况。

对于数据库来说,可能有多组不同的应用服务器需要连接。典型的监控指标可以包括:每组应用服务器的机器数,每组应用服务器当前总的连接数,每组应用服务器中单台最大的连接数,每组应用服务器中单台最少的连接数。通过如下的sql语句,使用正则表达式,可以轻松获取上述四个指标:

select b.machine,
         count(*) machine_nums,
         b.cnt total_sessions,
         max(a.cnt) max_sessions,
         min(a.cnt) min_sessions
from
    (select machine,count(*) cnt
       from v$session
      group by machine) a,
    (select regexp_replace(regexp_replace(machine,'[0-9]','#'),'#+','#') machine,
            count(*) cnt
       from v$session
      group by  regexp_replace(regexp_replace(machine,'[0-9]','#'),'#+','#')
     ) b
where regexp_replace(regexp_replace(a.machine,'[0-9]','#'),'#+','#')=b.machine
group by b.machine,b.cnt
MACHINE        MACHINE_NUMS TOTAL_SESSIONS MAX_SESSIONS MIN_SESSIONS
--------------- ----------- -------------- ------------ ------------
db#.idc#                  1            22            22           22
test#.idc#                2            10             5            5
appa#.idc#               30           166            10            5
appb#.idc#               17            18             2            1

上面的sql中,使用了正则表达式函数REGEXP_REPLACE将数字替换成#,以方便对同组应用的机器进行分组统计。只要根据相应的规则进行修改,就可以适用到不同的场景。然后利用该sql固定时间如五分钟来采集数据,就可以得到趋势展示,绘成图形,直观的分析应用服务器到数据库的连接情况。

签证是个体力活

昨天一大早,和biti_rainy大师一起赶最早一班动车到上海,去梅陇镇广场非移民签证处签证。乡下的土包子进城,头一回,未曾料到,一个签证居然如此耗费体力。上午找地方休息了下,12点半吃完中饭,开始到楼下排队,队伍已经从门口拐了个弯到外面马路上排了一排,看起来很有春节期间买火车票的架势。

好不容易随队伍行进到头部,开闸放了几个人进电梯,到八楼,接着排队,又是七弯八拐的一长条,还有所谓的“伪军队长”在吆喝着维持秩序。约莫半个小时后,终于得以跨进签证室的大门,卸下皮带,鞋子,钱包等一些可能含有金属(手表好像可以不脱),过安检门,又是一阵手忙脚乱的穿戴。

穿戴好以后发现没有经验的坏处了,要填写签证通过后EMS快递护照的快递单,但没有带笔,只好等别人填完,这样又多折腾了十来分钟,就是这十来分钟,导致后来又多等了起码二十分钟到半个小时。填完后继续排队,有两个MM替你初检材料,会将156、157、邀请函、护照和签证费发票等必须的材料放一起塞给你,其他乱七八糟的一些材料则分开了,意思是接着排队到1/2号窗口只需要将必须的材料递交进去。

材料交进去后会领到一个号,然后等待叫到号码,表示材料初审完成,可以到3号窗口拿回材料,已经用一个透明袋封装好。轮到我们等叫号的时候,因为5号窗口采集指纹处队伍太长,广播说暂停叫号10~15分钟,晕,一堆人挤在一起站着等,这么叫几个号停一段时间,好不容易轮到,拿出袋子去准备扫描指纹,结果指纹采集机挂了,将机器从5号窗口挪到6号窗口又弄到4号窗口,折腾了半天,感觉体力透支快要站不下去了,终于4号窗口曙光初现。

采集完指纹后,终于熬到快解放了,接下来可以坐着排队等签证官面谈了。后面的事情就很简单了,签证官基本都会中文,前面有个面试者说了些啥签证官不里面的,签证官还跑里面叫了个翻译来帮助沟通。基本上签证面试通过只需要一两分钟的时间,如果时间长了,说明就危险了。前面有位兄弟问了半天,最后被拒,这哥们问签证官,那些材料能还给我么,下次我还可以继续用,这时候大厅一片安静,只听签证官MM说,你还要这些做什么,你这辈子都去不了美国啦。晕,难道是伪造材料被永久拒签了?这都能碰到。。。

轮到我了,7号窗口的金发签证官一共只问了四五个问题,一分钟不到,这段接近3个小时的体力活终于终结了。

你为什么去美国?
去参加Oracle举行的Open World大会。
你在现在公司工作多长时间了?
两年。
你在公司里做什么的?
数据库管理员,Database Administrator。
你是本科还是硕士还是博士?
本科。
你去美国哪里?
旧金山。
Ok,你通过了。Have a good trip.
Thank you

最痛苦的是还有花絮,晚上和同学吃完饭,20:50跑到南站,居然只剩下23:50到杭州东的车了,抵达杭州已经是今天凌晨两点,迷迷糊糊中上了一个出租车。出租车大哥说,到丰潭路打表45,我收你40,再顺路搭载一个人可以吧?什么,不打表,还40?当我第一次在东站打车啊。大半夜的,挺辛苦,就不投诉你了,下车,另外找一辆车,从文晖路走文三路过来,20分钟,28元,搞定,睡觉。

现在只需要期待10.1的到来了,和piner,biti_rainy,eylge三位ACE Director大师同行,相信此行美国一定大有收获,敬请期待NinGoo第一时间从美国发回的报道,哈哈。

淘宝网2010年校园招聘启航

最近收到不少应届生朋友的咨询,也有不少心急的简历发到了我的邮箱。今天从HR得到消息,淘宝网2010年校园招聘马上要开始了,招聘网站已经正式对外开放。有意向应聘淘宝网的应届生,可以通过此网站关注招聘的职位等信息。简历也请通过该平台递交即可。

淘宝网2010年校园招聘,点此进入

同时全国各大学宣讲时间也已经确定,第一场将于9.21从浙江大学开始。具体时间安排如下:

浙江大学 2009-9-21 浙大永谦学生活动中心小剧场 18:00–21:30
西安交通大学 2009-9-25 西交大就业中心一楼大厅 18:00–20:30
西北工业大学 2009-9-26 长安校区教学西楼A100(新校区大报告厅) 9:00–12:00
南京大学 2009-9-25 南大科技馆一楼报告厅 18:00–20:30
东南大学 2009-9-26 教学楼1#楼211或311 9:00–12:00
上海交通大学 2009-10-10 闵行区陈瑞球楼报告厅 18:00–20:30
清华大学 2009-10-10 待定 14:00–17:00
北京邮电大学 2009-10-12 教3楼339 9:00–12:00
中国科技大学 2009-10-13 西区学生活动中心学术报告厅 14:00–17:00
大连理工大学 2009-10-19 研究生教育大楼报告厅 14:00–17:00
四川大学 2009-10-19 老校区-就业中心201 15:00–18:00
电子科技大学 2009-10-20 清水河学生活动中心2楼圆厅 9:00–12:00
东北大学 2009-10-23 学生活动中心大厅 14:00–17:00
华南理工大学 2009-10-26 南校区A4-204报告厅 14:00–17:00
中山大学 2009-10-27 南校区熊德龙2楼报告厅 9:00–12:00
武汉大学 2009-10-26 人文馆主厅 14:00–17:00
华中科技大学 2009-10-27 大学生活动中心305教室 9:00–12:00
哈尔滨工业大学 2009-10-27 待定 14:00–17:00
复旦大学 待定 待定 14:00–17:00
杭州电子科技大学 2009-11-3 待定 待定
浙江工业大学 2009-11-10 待定 待定

搭建Oracle11gR2 DataGuard

安装好两台Oracle11gR2后,简单的建了个测试库,然后搭建了一套物理备库。整个过程非常简单,和以前的版本也没多大区别。不过因为11g密码以及密码文件名大小写的问题折腾了一下。

按照以前9i和10g的文档,使用如下语句创建了passwordfile:

orapwd file=$ORACLE_HOME/dbs/orapwTEST password=pass entries=30

结果发现主库的归档一直无法传递到备库,报:

ORA-16191: Primary log shipping client not logged on standby

根据以前的经验,重新创建了住备库的password file,根据metalink,修改了sec_case_sensitive_logon参数为false,都不行。最后才发现,必须将passwordfile中的sid改成小写才行。

orapwd file=$ORACLE_HOME/dbs/orapwtest password=pass entries=30

Oracle11g,最吸引人的特性是Active Data Guard,也就是物理备库在open read only的同时,可以apply log。启用该特性非常简单,首先要确保compatible=11.0.0.0以上,然后在open read only的状态下执行recover managed standby database disconnect即可。开启该特性最好能同时开启实时日志应用,以减少主备库之间数据的延迟,所以在备库添加好standby logfile:

recover managed standby database cancel;

alter database open;

alter database add standby logfile group 10 ('/u01/oracle/oradata/test/stbredo01.dbf') size 100m reuse;
alter database add standby logfile group 11 ('/u01/oracle/oradata/test/stbredo02.dbf') size 100m reuse;
alter database add standby logfile group 12 ('/u01/oracle/oradata/test/stbredo03.dbf') size 100m reuse;
alter database add standby logfile group 13 ('/u01/oracle/oradata/test/stbredo04.dbf') size 100m reuse;

然后将备库置于实时日志应用模式:

SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY

SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.

SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY

在主库创建测试表并插入数据:

SQL> create table ningoo.test_table(i int);
Table created.

SQL> insert into ningoo.test_table values(1);
1 row created.

SQL> commit;
Commit complete.

SQL> alter system archive log current;
System altered.

在备库查询:

SQL> select * from ningoo.test_table;
         I
----------
         1


常用标签: oracle life MySQL Oracle11g blog dba 新特性 oow2009 oow wordpress

最新评论 | Recent comments