一次oracle故障处理过程

3 Comments2009年05月25日 作者: 大头刚 

中午接到报警,tomcat连接oracle并发数超过阀值,首先怀疑是否刚更新了程序,但询问一番后答案都是否。然后怀疑是有人进行大的操作。
登录到数据库机器,用top查看,是否有消耗资源的进程。发现所有的进程资源消耗比较平均,应该没有人在进程大查询或者大的操作。
使用ASH,查看数据库近15分钟发生了什么。

SYS@sg>@?/rdbms/admin/ashrpt
 
Defaults TO -15 mins
Enter VALUE FOR begin_time: -15
Report BEGIN TIME specified: -15

打开报告,发现可疑的sql。

SQL ID Planhash % Activity Event [...]

如何使用opatch给oracle打补丁

Leave a Comment2009年05月11日 作者: 大头刚 

1、下载
需要metalink的用户名口令
10.2及之后的数据库下载连接为:
http://updates.oracle.com/download/4898608.html
10.2之前的版本下载连接为:
http://updates.oracle.com/download/2617419.html
2、安装可以参照metalink Note 189489.1
安装其实很简单,unix下做一下unzip,然后把opath加到你的$PATH即可
3、opatch作用
opatch是用于维护”个别”补丁的,有人称其为interim path或是one-off patch
以解决TA ENQ AND US ENQ DEADLOCK DURING TRANSACTION RECOVERY IN RAC问题的interim patch 3777178为例,
安装及rollback的命令如下:

install:
oracle>unzip p3777178_9206_HP64.zip
oracle>cd 3777178
oracle>opatch apply
rollback:
oracle>cd 3777178
oracle>opatch rollback -id 3777178

查看:如下命令可以看到已经安装了哪些interim patch

$opatch lsinventory
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation. ALL rights reserved..
 
Oracle Home :
Central Inventory :
[...]

oracle和mysql如何实现合并行

1 Comment2009年05月06日 作者: 大头刚 

今天同事有个需求,要把结果集所有行合并成1行,每行之间用逗号隔开,尝试了几种方法,把过程记录。

SELECT id FROM test WHERE id<10;
USER_ID
———-
1
2
3
4
5
6
7
8
9
9 rows selected.

想得到的结果是:1,2,3,4,5,6,7,8,9
第一种方法,使用sql直接算出:

SELECT LTRIM(MAX(SYS_CONNECT_BY_PATH(user_id,’,')),’,') allrow
FROM (SELECT 1,user_id,1+(ROW_NUMBER() over(ORDER BY 1)) node_id,ROW_NUMBER() over(PARTITION BY 1 ORDER BY 1) rn
FROM test WHERE id<20)
START WITH rn = 1
CONNECT BY node_id-1 = PRIOR [...]