您当前的位置:首页 > 电脑百科 > 数据库 > Oracle

Oracle常用工具使用-ProcWatcher

时间:2022-11-24 11:31:16  来源:今日头条  作者:3个石De磊

说明

Procwatcher是一种间隔检查和监视Oracle数据库或集群件进程的工具。该工具将使用Oracle工具(如oradebug short_stack)或OS调试器(如pstack,gdb,dbx或ladebug)收集这些进程的堆栈跟踪,并在指定时收集SQL数据。

可通过MOS文档:459694.1 下载

1.2. 解压并授权

[root@host1 software]# cd /
[root@host1 /]# mkdir prw
[root@host1 /]# chown oracle:oinstall prw
[root@host1 /]# cd prw
[root@host1 prw]# unzip prw_12.2.18.5.0.zip
Archive: prw_12.2.18.5.0.zip
inflating: prw.sh
[root@host1 prw]# chown oracle:oinstall prw.sh

1.3. 要求

  • $ PATH中必须有/bin和/usr/bin
  • 在oratab中设置instance_name或db_name或设置$ ORACLE_HOME env变量。(PRW在oratab中搜索它找到的SID,如果在oratab中找不到SID,它将默认为$ORACLE_HOME)。如果找不到要使用的$ORACLE_HOME,则Procwatcher无法正常运行。
  • 如果你只是为该用户的homes/instances进行故障排除,请将Procwatcher作为oracle软件所有者运行。如果要对集群件进程进行故障排除(EXAMINE_CLUSTER = true或正在为多个oracle用户进行故障排除),请以root用户身份运行。

如果要监视集群件,则必须在平台上安装相关的OS调试程序; PRW寻找:

linux - /usr/bin/gdb
HP-UX and HP Itanium - /opt/langtools/bin/gdb64 or /usr/ccs/bin/gdb64
Sun - /usr/bin/pstack
IBM AIX - /bin/procstack or /bin/dbx
HP Tru64 - /bin/ladebug

1.4. 查看是否符合安装条件

因为当前数据库安装在Linux系统上,使用Procwatcher是需要操作系统环境检查,首先要求执行用户PATH中包括/usr/bin和/bin目录。

[oracle@host1 ~]$ env | grep PATH
LD_LIBRARY_PATH=/u01/App/oracle/product/18.1.0/dbhome_1/lib:/u01/app/oracle/product/18.1.0/dbhome_1/oracm/lib:/lib:/usr/lib:/usr/local/lib
PATH=.:/usr/local/JAVA/bin:/usr/lib/oracle/11.2/client64/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin:/home/oracle/bin:/u01/app/oracle/product/18.1.0/dbhome_1/bin:/bin:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
CLASSPATH=/u01/app/oracle/product/18.1.0/dbhome_1/JRE:/u01/app/oracle/product/18.1.0/dbhome_1/jlib:/u01/app/oracle/product/18.1.0/dbhome_1/rdbms/jlib:/u01/app/oracle/product/18.1.0/dbhome_1.NETwork/jlib

环境变量中包括标准的$ORACLE_系列。

[oracle@host1 ~]$ env | grep ORA
ORACLE_UNQNAME=pdbcndba_p
ORA_NLS11=/u01/app/oracle/product/18.1.0/dbhome_1/nls/data
ORACLE_SID=cndba
ORACLE_BASE=/u01/app/oracle
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle/product/18.1.0/dbhome_1

执行用户要求是Oracle owner用户。如果是cluster(RAC)或者多个oracle user的情况,可以使用root来执行。

操作系统中必须包括系统调试工具。列表如下:

[oracle@host1 ~]$ rpm -qa | grep gdb
gdbm-1.10-8.el7.x86_64
gdb-7.6.1-94.el7.x86_64

1.5. 启动Procwatcher

[oracle@host1 prw]$ ./prw.sh start
Mon Jul 23 17:54:30 CST 2018: Starting Procwatcher as user oracle

Mon Jul 23 17:54:30 CST 2018: Thank you for using Procwatcher. :-)
Mon Jul 23 17:54:30 CST 2018: Please add a comment to Oracle Support Note 459694.1
Mon Jul 23 17:54:30 CST 2018: if you have any comments, suggestions, or issues with this tool.

Procwatcher files will be written to: /prw

Mon Jul 23 17:54:30 CST 2018: Started Procwatcher
[oracle@host1 prw]$ ./prw.sh stat
Mon Jul 23 17:41:12 CST 2018: PROCWATCHER VERSION: 12.2.18.5.0
Mon Jul 23 17:41:12 CST 2018: ### Parameters ###
Mon Jul 23 17:41:12 CST 2018: Procwatcher Directory (PRWDIR): /prw
Mon Jul 23 17:41:12 CST 2018: EXAMINE_CLUSTER=false
Mon Jul 23 17:41:12 CST 2018: EXAMINE_BG=true
Mon Jul 23 17:41:12 CST 2018: PRWPERM=744
Mon Jul 23 17:41:12 CST 2018: RETENTION=7
Mon Jul 23 17:41:12 CST 2018: WARNINGEMAIL=
Mon Jul 23 17:41:12 CST 2018: INTERVAL=60
Mon Jul 23 17:41:12 CST 2018: THROTTLE=5
Mon Jul 23 17:41:12 CST 2018: IDLECPU=3
Mon Jul 23 17:41:12 CST 2018: SIDLIST=
Mon Jul 23 17:41:12 CST 2018: ### Advanced Parameters (non-default) ###
Mon Jul 23 17:41:12 CST 2018: ### End Parameters ###

Mon Jul 23 17:41:12 CST 2018: Procwatcher is not running on local node host1
Mon Jul 23 17:41:12 CST 2018: Procwatcher files are be written to: /prw

1.6. 停止Procwatcher

[oracle@host1 prw]$ ./prw.sh stop
Mon Jul 23 17:57:49 CST 2018: Stopping Procwatcher

Mon Jul 23 17:57:49 CST 2018: Checking for stray debugging sessions...(waiting 1 second)
Mon Jul 23 17:57:50 CST 2018: No debugging sessions found, all good, exiting...

Mon Jul 23 17:57:50 CST 2018: Thank you for using Procwatcher. :-)
Mon Jul 23 17:57:50 CST 2018: Please add a comment to Oracle Support Note 459694.1
Mon Jul 23 17:57:50 CST 2018: if you have any comments, suggestions, or issues with this tool.

Mon Jul 23 17:57:50 CST 2018: Procwatcher Stopped

1.7. 查看Procwatcher状态

[oracle@host1 prw]$ ./prw.sh stat
Mon Jul 23 17:56:07 CST 2018: PROCWATCHER VERSION: 12.2.18.5.0
Mon Jul 23 17:56:07 CST 2018: ### Parameters ###
Mon Jul 23 17:56:07 CST 2018: Procwatcher Directory (PRWDIR): /prw
Mon Jul 23 17:56:07 CST 2018: EXAMINE_CLUSTER=false
Mon Jul 23 17:56:07 CST 2018: EXAMINE_BG=true
Mon Jul 23 17:56:07 CST 2018: PRWPERM=744
Mon Jul 23 17:56:07 CST 2018: RETENTION=7
Mon Jul 23 17:56:07 CST 2018: WARNINGEMAIL=
Mon Jul 23 17:56:07 CST 2018: INTERVAL=60
Mon Jul 23 17:56:07 CST 2018: THROTTLE=5
Mon Jul 23 17:56:07 CST 2018: IDLECPU=3
Mon Jul 23 17:56:07 CST 2018: SIDLIST=
Mon Jul 23 17:56:07 CST 2018: ### Advanced Parameters (non-default) ###
Mon Jul 23 17:56:07 CST 2018: ### End Parameters ###

Mon Jul 23 17:56:07 CST 2018: Procwatcher is currently running on local node host1
Mon Jul 23 17:56:07 CST 2018: Procwatcher files are be written to: /prw

Mon Jul 23 17:56:07 CST 2018: There are 0 concurrent debug sessions running...

1.8. 查看Procwatcher帮助信息

执行脚本prw.sh,可以自动的进行进程级别的数据收集。可以调用参数help来进行帮助信息。

[oracle@host1 ~]$ cd /prw/
[oracle@host1 prw]$ ./prw.sh help
Mon Jul 23 17:38:56 CST 2018: Building default prwinit.ora at /prw/prwinit.ora

Usage: prw.sh <verb>
TFA Syntax: tfactl prw <verb>

Verbs are:

start [all] - Start Procwatcher on local node, if 'all' is specified, start on all nodes
stop [all] - Stop Procwatcher on local node, if 'all' is specified, stop on all nodes
stat - Check the current status of Procwatcher
pack - Package up Procwatcher files (on all nodes) to upload to support
param - Check current Procwatcher parameters
deinstall [clean] - Stop Procwatcher and remove the Procwatcher directory (clean)
log [number] - See the last [number] lines of the procwatcher log file
log [runtime] - See contiuous procwatcher log file info - use Cntrl-C to break
init [directory] - Create a default prwinit.ora file
dir - Display Procwatcher directory
help - What you are looking at...

1.9. Procwatcher参数

从Procwatcher版本12.1.14.12开始,这些参数在Procwatcher目录的prwinit.ora文件中设置。如果没有看到prwinit.ora文件,则可以在集群环境中使用“prw.sh init ”或“prw.sh deploy”生成一个文件。

[oracle@host1 prw]$ cat prwinit.ora

#
# PROCWATCHER PARAMETERS - REVIEW CAREFULLY:
#
######################### CONFIG SETTINGS #############################
# Set EXAMINE_CLUSTER variable if you want to examine clusterware processes (default is false - or set to true):
# Note that if this is set to true you must deploy/run procwatcher as root unless using oracle restart
EXAMINE_CLUSTER=false

# Set EXAMINE_BG variable if you want to examine all BG processes (default is true - or set to false):
EXAMINE_BG=true

# Set permissions on Procwatcher files and directories (default: 744):
PRWPERM=744

# Set RETENTION variable to the number of days you want to keep historical procwatcher data (default: 7)
RETENTION=7
……

1.10. 模拟阻塞

会话1执行更新表

[oracle@host1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 24 15:02:45 2018

Copyright (c) 1982, 2016, Oracle. All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create table test (id number);

Table created.

SQL> insert into test values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> update test set id=4;

1 row updated.

会话2更新相同的表模拟阻塞

SQL> update test set id=4;

1 row updated.

会话2 hang住

现在演示如何使用Procwatcher对此进行故障排除,将启动Procwatcher:

[oracle@host1 prw]$ ./prw.sh start

现在将检查Procwatcher日志以确保它正在收集数据:

[oracle@host1 prw]$ cat prw_host1.log
…...
Tue Jul 24 15:02:43 CST 2018: Collecting process specific SQLs for SID cndba
Tue Jul 24 15:02:46 CST 2018: ..SQL: Running SQLsqltext.sql on SID cndba
Tue Jul 24 15:02:46 CST 2018: ..SQL: Running SQLash.sql on SID cndba
Tue Jul 24 15:02:49 CST 2018: SQL collection complete after 17 seconds (6 SQLs - average seconds: 2)
Tue Jul 24 15:02:49 CST 2018: Was going to debug process 13740 but it vanished...
Tue Jul 24 15:02:50 CST 2018: Getting stack for ora_fg_cndba 13918 using short_stack in /prw/PRW_DB_cndba/prw_ora_fg_cndba_13918_07-24-18.out
Tue Jul 24 15:02:51 CST 2018: Getting stack for ora_pmon_cndba 4479 using short_stack in /prw/PRW_DB_cndba/prw_ora_pmon_cndba_4479_07-24-18.out
Tue Jul 24 15:02:51 CST 2018: Getting stack for ora_lgwr_cndba 4517 using short_stack in /prw/PRW_DB_cndba/prw_ora_lgwr_cndba_4517_07-24-18.out
Tue Jul 24 15:02:52 CST 2018: Getting stack for ora_ckpt_cndba 4519 using short_stack in /prw/PRW_DB_cndba/prw_ora_ckpt_cndba_4519_07-24-18.out
Tue Jul 24 15:02:55 CST 2018: Getting stack for ora_smon_cndba 4521 using short_stack in /prw/PRW_DB_cndba/prw_ora_smon_cndba_4521_07-24-18.out
Tue Jul 24 15:02:57 CST 2018: WARNING: CPU is 0 % idle - less than 3 % idle, sleeping 5 seconds
Tue Jul 24 15:03:03 CST 2018: Getting stack for ora_arc0_cndba 4569 using short_stack in /prw/PRW_DB_cndba/prw_ora_arc0_cndba_4569_07-24-18.out
Tue Jul 24 15:03:03 CST 2018: Getting stack for ora_arc1_cndba 4573 using short_stack in /prw/PRW_DB_cndba/prw_ora_arc1_cndba_4573_07-24-18.out
Tue Jul 24 15:03:04 CST 2018: Getting stack for ora_arc2_cndba 4575 using short_stack in /prw/PRW_DB_cndba/prw_ora_arc2_cndba_4575_07-24-18.out
Tue Jul 24 15:03:07 CST 2018: Getting stack for ora_arc3_cndba 4577 using short_stack in /prw/PRW_DB_cndba/prw_ora_arc3_cndba_4577_07-24-18.out
Tue Jul 24 15:03:10 CST 2018: Waiting for these debug procs to finish:
ksh /prw/prw.sh shortstack start 4575 oracle cndba /u01/app/oracle/product/12.2.0/db_1 /prw/PRW_DB_cndba/prw_ora_arc2_cndba_4575_07-24-18
ksh /prw/prw.sh shortstack start 4577 oracle cndba /u01/app/oracle/product/12.2.0/db_1 /prw/PRW_DB_cndba/prw_ora_arc3_cndba_4577_07-24-18
……

Preacher的一个重要功能在于分析。经过分析后,它会自动将分析结果作为一系列的结果文件,直接告诉我们哪个进程出现问题。所以我们对于结果分析,可以直接从这个部分入手。

[oracle@host1 prw]$ cd PRW_DB_cndba/
[oracle@host1 PRW_DB_cndba]$ ll
total 96
-rwxr--r--. 1 oracle oinstall 3618 Jul 24 15:03 prw_ora_arc0_cndba_4569_07-24-18.out
-rwxr--r--. 1 oracle oinstall 3618 Jul 24 15:03 prw_ora_arc1_cndba_4573_07-24-18.out
-rwxr--r--. 1 oracle oinstall 3618 Jul 24 15:03 prw_ora_arc2_cndba_4575_07-24-18.out
-rwxr--r--. 1 oracle oinstall 3618 Jul 24 15:03 prw_ora_arc3_cndba_4577_07-24-18.out
-rwxr--r--. 1 oracle oinstall 4281 Jul 24 15:03 prw_ora_ckpt_cndba_4519_07-24-18.out
-rwxr--r--. 1 oracle oinstall 5540 Jul 24 15:02 prw_ora_fg_cndba_13740_07-24-18.out
-rwxr--r--. 1 oracle oinstall 17960 Jul 24 15:02 prw_ora_fg_cndba_13918_07-24-18.out
-rwxr--r--. 1 oracle oinstall 4281 Jul 24 15:03 prw_ora_lgwr_cndba_4517_07-24-18.out
-rwxr--r--. 1 oracle oinstall 4355 Jul 24 15:02 prw_ora_pmon_cndba_4479_07-24-18.out
-rwxr--r--. 1 oracle oinstall 3702 Jul 24 15:03 prw_ora_smon_cndba_4521_07-24-18.out
-rwxr--r--. 1 oracle oinstall 250 Jul 24 15:02 pw_latchholder_cndba_07-24-18.out
-rwxr--r--. 1 oracle oinstall 1545 Jul 24 15:02 pw_lock_cndba_07-24-18.out
-rwxr--r--. 1 oracle oinstall 1547 Jul 24 15:02 pw_sessionwait_cndba_07-24-18.out
-rwxr--r--. 1 oracle oinstall 1714 Jul 24 15:08 pw_sqltimings_cndba_07-24-18.out
-rwxr--r--. 1 oracle oinstall 4904 Jul 24 15:08 pw_waitchains_cndba_07-24-18.out

因此,对于上述所有数据,我们应该拥有所需的一切(大多数情况下)来解决争用问题。另外一个好处是,Procwatcher将自动收集这些数据而无需任何用户干预(一旦Procwatcher启动)。



Tags:ProcWatcher   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Oracle常用工具使用-ProcWatcher
说明Procwatcher是一种间隔检查和监视Oracle数据库或集群件进程的工具。该工具将使用Oracle工具(如oradebug short_stack)或OS调试器(如pstack,gdb,dbx或ladebug)收集这些进程的堆...【详细内容】
2022-11-24  Search: ProcWatcher  点击:(410)  评论:(0)  加入收藏
▌简易百科推荐
Oracle正式发布Java 22
Oracle 正式发布 Java 22,这是备受欢迎的编程语言和开发平台推出的全新版本。Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进,包括对Java 语言、其API...【详细内容】
2024-03-21  OSC开源社区    Tags:Oracle   点击:(10)  评论:(0)  加入收藏
oracle数据库基础学习
在当今数字化时代,数据库已成为企业运营的关键要素。而Oracle数据库,作为全球领先的企业级数据库管理系统,更是备受推崇。本文将带您深入了解Oracle数据库的基础知识,帮助您从零...【详细内容】
2024-01-20  EmSpace    Tags:oracle   点击:(92)  评论:(0)  加入收藏
一文聊聊如何快速监控 Oracle 数据库
Cprobe 是一个探针采集器,支持常见数据库、中间件的采集,比如 MySQL、Redis、MongoDB、Oracle、Kafka、ElasticSearch 等。安装配置 Oracle简单起见,我使用 Docker 启动 Oracl...【详细内容】
2023-12-26      Tags:Oracle   点击:(126)  评论:(0)  加入收藏
Oracle这个公开漏洞正在被8220挖矿组利用
有的网络攻击组织喜欢极具攻击力的0-Day漏洞,但也有的组织更愿意在那些已经公开的漏洞上下功夫,针对那些未能打好补丁的目标,不断优化策略和技术来逃避安全检测,从而最终实现入...【详细内容】
2023-12-22    FreeBuf.COM  Tags:Oracle   点击:(108)  评论:(0)  加入收藏
Oracle数据库性能监控:洞察系统瓶颈的利器!
在当今信息时代,企业对于数据的存储和管理变得越来越重要。Oracle数据库作为全球广泛应用的关系型数据库管理系统,承载着大量的业务数据和应用。为了确保数据库的高效稳定运行...【详细内容】
2023-12-18  编程技术汇  今日头条  Tags:Oracle   点击:(91)  评论:(0)  加入收藏
Oracle软件在主机平台的应用
// 下 栽 の 地 止 :http://quangneng.com/2573/主机平台通常指的是大型服务器,包括UNIX、Linux、IBM Mainframe等。Oracle数据库在这些主机平台上的应用非常普遍,原因有以下几...【详细内容】
2023-11-30  阿小白    Tags:Oracle   点击:(145)  评论:(0)  加入收藏
Oracle数据库存在不可用索引性能问题
在实践中ORACLE数据库存在不可用索引会引发性能问题。所谓的不可用索引,是指索引自身出了问题,不能被所有SQL使用到。这与因SQL写法不当而无法使用索引的索引失效情况不同。当...【详细内容】
2023-11-23  测试小号等闲之辈  微信公众号  Tags:Oracle   点击:(241)  评论:(0)  加入收藏
Oracle数据库容灾方案:持续运营的保障之道!
Oracle数据库的容灾方案是为了保障数据库持续运营和数据的高可用性而设计的。在企业级应用中,数据库的持续运行对于业务的正常操作至关重要。一旦发生数据库故障或灾难,将会对...【详细内容】
2023-11-23  编程技术汇  今日头条  Tags:Oracle   点击:(142)  评论:(0)  加入收藏
Oracle数据库事务管理:确保数据一致性的关键步骤!
事务管理是数据库管理中至关重要的一环,它确保了数据的一致性、完整性和可靠性。Oracle数据库提供了强大的事务管理功能,能够保证多个操作在数据库中作为一个逻辑单元执行,以确...【详细内容】
2023-11-20  编程技术汇  微信公众号  Tags:Oracle   点击:(195)  评论:(0)  加入收藏
从来不是侥幸!Oracle为何独得印度政府青睐?
作者 | Mohit编译 | 小欧出品 | 51CTO技术栈(微信号:blog51cto)今年 8 月,印度教育部宣布选择 Oracle 云基础设施 (OCI) 来改造免费教育技术平台 DIKSHA。小微企业信用保证基金信...【详细内容】
2023-11-17    51CTO  Tags:Oracle   点击:(183)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条