用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(五. 结合 IronTrack SQL)

本想把 p6spy 结合 SQL Profiler 或 IronTrack SQL 的使用介绍掇凑于一块来写。简单点说,只是一贴上图样,篇幅便需拖拉难遂人愿,也好,索性把它们分成两个篇章。一来每篇主旨鲜明,二来五篇成一系列比起四更来的自然且吉利。

前面讲过 p6spy 本身就可利用 Log4j 的 SocketAppender 向远端发送日志,SQL Profiler 不过是在这个基础上作了进一步拓展。而接下来要说的 IronTrack SQL 就略有不同了,看它带的 p6spy.properties 文件,里面有 IronTrack SQL 给 p6spy 定制的一个模块:module.ibeam=com.irongrid.ibeam.server.IBeamFactory。它用到了 log4j-1.2.8.jar,不过还得研究下 Log4j 在其中所起的作来。现在就来介绍 p6spy 结合 IrconTrack SQL 的使用,最好是你知道如何单独使用 p6spy。压缩包里有文档:是 IronTrackSQL\docs\index.html。

p6spy + IronTrack SQL 观察 SQL 语句 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(四. 结合 SQL Profiler)

p6spy 虽好,但把 SQL 语句输出到文件或是控制台中看起来有些吃力。若能图形界面展示出来便可一目了然,亲切许多。有种方法是配置 p6spy.properties 使用 Log4j 的 SocketAppender,然后启动 Log4j 的 org.apache.log4j.net.SocketServer 界面,或是在 Eclipse log4j plug-in 中也能观察所执行的 SQL 语句。

不过还有种更专业做法,本篇将介绍 p6spy 如何结合 Sql Profiler 或 IronTrack SQL 来使用,并附以贴图,来感受一下吧。也以此来完成关于 p6spy 的这个系列。其实你到后面也会发现,即便是用 Sql Pofier 的实现过程也是借助了 Log4j 的 SocketApender,你可以从它自己带的 p6spy.properties 文件中的配置看出来,即其中的 log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender 这么一个配置。 阅读全文 >>

一篇没有听众的演讲(林语堂)

以前在哪儿说过,假如有人仿安徒生作“无色之画”,做几篇无听众的演讲,可以做得十分出色。这种演讲的好处,在于因无听众,可以少忌讳,畅所欲言,倾颇合 “旁若无人”之义。以前我曾在中西女塾劝女子出嫁,当时凭一股傻气说话,过后思之,却有点不寒而栗,在我总算掬愚诚,郊野叟献曝,而在人家,却未必铭感五内。假如在无听众的女子学校演讲,那便可尽情发挥了。比如在这样一个幻想的大学毕业典礼演讲,我们可以不怕校长难为情,说些时常敢怒而不敢言的话。在一个幻想的小学教员暑期学校,也可以尽情吐露一点对小学教育不大客气的话……婚姻的致词向来也是许多客套,没人肯对新郎新娘说些结婚常识而不免有点不吉利的老实话。因此我就以“婚礼致词”为题作例举隅: 阅读全文 >>

9 个基于JavaScript 和 CSS 的 Web 图表框架

jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS  的 Web 图表框架。

jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现。本文介绍了9个优秀的基于 JavaScript 与 CSS 的 Web 图表框架。 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(三. 定制输出)

既然提到 p6spy 的输出,那就有必要说明一下 p6spy 输出日志的格式了。从上一篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置 中把输出的一段内容拿过来,如下:

03-16-09 15:12:06:656|16|4|statement|SELECT * FROM OM_CUSTOMERS  WHERE CUSTOMER_ID=? ORDER BY CUSTOMER_ID ASC|SELECT * FROM OM_CUSTOMERS  WHERE CUSTOMER_ID=2194 ORDER BY CUSTOMER_ID ASC
03-16-09 15:12:06:671|15|3|statement|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=?|SELECT * FROM OM_ORDER_TYPE WHERE TYPE_ID=25
03-16-09 15:12:06:687|16|1|statement|select * from sys_lookups where lookup_type=?  and lookup_code=? |select * from sys_lookups where lookup_type='OM_ORDER_STATUS'  and lookup_code='70'
03-16-09 15:12:06:812|-1||resultset|select * from sys_lookups where lookup_type='OM_ORDER_STATUS'  and lookup_code='70' |meaning = 已安排生产 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(二. Tomcat 下的配置)

在前篇 用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子) 大略介绍了 p6spy,并且在 http://www.p6spy.com/documentation/install.htm#install 也有 p6spy 在不同服务器下的安装方法。本文不打算依照官方的说明来做,我们让 Tomcat 的 Common 类加载器来加载 p6spy.jar 包,包含了 Tomcat 5/6 下的 p6spy 配置,数据库连接池实现用 C3P0,数据库为 Oracle,配置在一个与应用同名的单独的 xml 文件中,Tomcat 中是在应用的 META-INF/context.xml 文件中。步骤如下:

1. 软件准备

下载 Tomcat 5 或者 6 进行安装,不必多说。假设置 Tomcat 的目录为 $TOMCAT_HOME。
下载 p6spy-install.zip,解压缩 p6spy-install.zip,其中有 p6spy.jar 和 spy.properties
准备好数据库的驱动包,比如 Oracle 的 classes12.jar,和 C3P0 实现包,如 c3p0-0.9.0.2.jar。 阅读全文 >>

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(一. 引子)

一个企业应用程序的性能瓶颈可能会在硬件配置、网络方面、程序代码、应用服务器配置、数据库配置、SQL 语句。这里我把本文的关注点 SQL 无意间放在了最后,其实它不并不意味着最后考虑的,而是过程中就要时刻留意的。

SQL 语句的优化总得把所执行语句抓出来瞧瞧,分析分析。如果直接用 JDBC 或者是类 iBatis 的东西来访问数据库,那所执行的 SQL 语句是明确的,而现在的项目大多会用 ORM 组件,例如 Hibernate、JPA、CMP、TopLink 都有自己特定的查询语法,最终当然要转换成 SQL 语句的,所以会生成什么样的 SQL 语句就不甚明了,若人为的看着专有查询语句来相象出 SQL 语句并非易事。虽然 Hibernate 设置 show_sql=true 时也能打印出生成的 SQL(带?号参数),配合详细的日志参数值也可以对上,不过挺麻烦的。 阅读全文 >>

挖Linux中的古老缩略语[转]

Unix已经有35年历史了。许多人认为它开始于中世纪,这个中世纪是相对于计算机技术的产生和发展来说的。在过去的时间里,Unix和它的子分支Linux收集有许多的历史和一些完全古老的语言。在这篇技巧文章中,我们将介绍一少部分古老的语言和它们的目的和作用,以及它们真正的来源。

  RC

  在Linux中,最为常用的缩略语也许是“rc”,它是“runcomm”的缩写――即名词“run command”(运行命令)的简写。今天,“rc”是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。如/etc/rc是Linux启动的主脚本,而.bashrc是当Linux的bash shell启动后所运行的脚本。.bashrc的前缀“.”是一个命名标准,它被设计用来在用户文件中隐藏那些用户指定的特殊文件;“ls”命令默认情况下不会列出此类文件,“rm”默认情况下也不会删除它们。许多程序在启动时,都需要“rc”后缀的初始文件或配置文件,这对于Unix的文件系统视图来说,没有什么神秘的。 阅读全文 >>

Solaris 常用系统命令[转]

系统基本配置







如何查看日志信息

                dmesg | more /var/adm/messages*   

收集
exlpore
日志

  
              /opt/SUNWexplo/bin/explorer -k ->/opt/SUNWexplo/output

系统的基本状况

   
                       showrev 

系统运行时间,平均负载

                                 uptime                           

版本信息

                                               uname -a                                 

Update
版本

                                         more /etc/release                

系统补丁

 
     showrev -p 

已安装的补丁信息

  patchadd 123-12

打补丁

查看服务对应的端口

  more /etc/services

系统变量设置
env

sysdef

Shell
变量:
bash,csh,ksh

收集
explore
日志

先查看有没有装


# pkginfo |grep SUNWexplo

如果有安装的话:


# /opt/SUNWexplo/bin/explorer

收集到的文件在:


# /opt/SUNWexplo/output

清空日志:
cp /var/adm/messages /var/adm/messages.bkp  #cat /dev/null > /var/adm/messages

CPU
 

psrinfo -vp             
系统
cpu
数和速度

uptime                   cpu
平均负载

prstat -a               
实时进程的状态 (相当于 Linux 下的 top 命令)

ps -ef                  
显示所有进程的详细信息

kill pid
杀死进程

vmstat

mpstat

/usr/ucb/ps -aux

内存

prtdiag -v
系统硬件,电源接口等

查看内存大小
prtconf -vp | grep Mem

vmstat

swap -s

增加
swap
分区:
mkfile 200m /tmp ,swap -a,swap -l

C5292

磁盘管理

iostat 
监视系统输入/输出设备负载

format 
系统几块磁盘,大小
Ctrl+D
的组合键退出

metastat
显示硬盘
raid
状态

检查硬盘信息
prtvtoc /dev/dsk/c0t0d0s5

查看
NBU
硬盘
available_media

如何添加硬盘

1
mkdir /usr/ldap3

2

newfs /dev/rdsk/c1t3d0s1 


       3


mount /dev/dsk/c1t3d0s1 /usr/ldap3

4

vi /etc/vfstab
添加文件系统信息

/dev/dsk/c1t2d0s0  /dev/rdsk/c1t2d0s0   /usr/ldap3      ufs     1  yes     logging


 

文件系统

df -k  
磁盘使用情况

磁带机的读存数据
: tar cpio

磁带机状态

  mt -f /dev/rmt/0 status

虚拟文件系统表

  /etc/vfstab

Solaris
硬盘分区

网络

ping

netstat -arp

ifconfig –a

系统基本操作

文件操作

压缩解压
tar gzip gunzip

iso
文件

  lofiadm

查看文件信息

  ls -lrt

目录大小

  du -sk dir

mkdir ,cd,

查找文件:
Find 
文件类型
file

查看文件
more

head

tail

cat
例如:
tail -10 /var/adm/messages

文件的权限
chmod: chmod 644 a.txt 

解包
tar vcf filename.tar

打包
tar cvf filename.tar dirname

.gz
文件
解压
gunzip filename.gz ; gzip -d filename.gz          
压缩
gzip filenam

.tar.gz 
解压:
tar zxcf file.tar.gz                                    
压缩;
tar zcvf file.tar.gz dirname

创建和编辑文件:

生成新文件或改变文件日期:
Touch  
文件拷贝
cp
移动文件
mv

修改文件: vi的用法

组合命令
:

输出重定向
>  
组合命令
|

常用管理命令
man

用户管理

groupadd

useradd

passwd

查看用户
/

more /etc/passwd

/etc/shadow

/etc/group

(who

finger

rusers

1

whodo

id


如何做系统硬件健康状况检查




# more /var/adm/messages*
(没有重大异常报错)



# df –k (“/”
使用率小于
85%)

# format
ctrl+d退出)(所有硬盘正常)

# prtdiag –v (
没有
failed
的部件、内存和
cpu
数量正确
)

# psrinfo –v (
系统中所有的
cpu
都处在
online
状态
)


运行级别

查看系统的运行级、日期及时间

  who   –r

系统运行级别
1

掉电(运行级
0

2

单用户(运行级
1

s

S

3

多用户(运行级
2

3

4

重引导(运行级
5

6

重新启动

  reboot, init 6

关闭系统:
shutdown

init 0

halt


 

其它管理

定时任务


crontab 
推到一个自定义的文件上


crontab -l>tmp

编辑这个文件,做需要的修改


vi tmp

推回
crontab
crontab tmp

NBU
备份

#bpdbjobs –report  
检查作业备份情况,返回为
0
即为正常

#bpps –a  
备份进程启动情况


 

磁盘阵列管理


 

#sccli

sccli: selected device /dev/rdsk/c2t0d0s2 [SUN StorEdge yyyy SN#08472F]

#sccli> show disks

输出的
Status
列,所有值正常情况下是
” ONLINE”

” STAND-BY”
,其它的值都是不正常的;



#sccli> show logical-drives

输出的
Status
列,其值正常情况下是
” Good”
,其它的值都是不正常的;



#sccli>show enclosure-status

输出的
Status
列,所有值正常情况下是
” OK”
或者
” Absent”
,其它的值都是不正常的;



#sccli>show FRUs

输出的
FRU Status
行,所有值正常情况下是
”OK”



其它的值都是不正常的;



#sccli> show peripheral-device-status

输出的
status
列,所有值正常情况下是
”within safety range”

” N/A”

” Hardware:N/A”

” Hardware:OK”



其它的值都是不正常的;



#sccli>exit

oracle

lsnrctl status
查看
listener
进程的状态

tnsping SID   
查看连通请款

sun cluster

scinstall -pv 
版本信息

luxadm -e port
光纤链路状态

Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容

在 Oracle 的存储过程执行中,我们可能希望它本身能完成邮件发送执行的结果,特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序--调用后,根据出口参数,发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。

所幸,Oracle 为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。 阅读全文 >>