如何使用gdb工具对Oracle系统状态(systemstate)做trace

当Oracle系统hang住 ,无法使用一切方法登录时 (包括 sqlplus -prelim / as sysdba),我们可以使用gdb调试工具来对 Oracle做系统 dump ,通过 系统 dump信息 判断 具体hang的原因 。 若直接 将 进程 kill 掉,则将失去现场 无法帮助今后避免 这样的hang情况。

要使用gdb 外部工具, 就需要知道目前实例中后台进程的进程号。

我们一般通过 以下命令列出 Oracle 进程:ps -ef|grep <SID>

[oracle@rh2 ~]$ ps -ef|grep oraclewebmoney
oracle   16996 16995  0 21:55 ?        00:00:00 oraclewebmoney (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

然后启动gdb ,指定Oracle软件中二进制文件 oracle的位置和 进程id

[oracle@rh2 udump]$ gdb $ORACLE_HOME/bin/oracle  16996
GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB.  Type “show warranty” for details.
This GDB was configured as “x86_64-redhat-linux-gnu”…
(no debugging symbols found)
Using host libthread_db library “/lib64/tls/libthread_db.so.1″.

Attaching to program: /u01/oracle/product/10.2.0/db_1/bin/oracle, process 14594
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so…(no debugging symbols found)…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocr10.so…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocr10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so…done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libjox10.so…

在gdb 提示行中 输入 print ksudss(10),即

(gdb) print ksudss(10)

之后将在udump目录中产生相关<SID>_ora_<pid>的trace文件,我们通过分析trace可以发现hang的主要原因。

trace文件示例如下:

System name:    Linux
Node name:      rh2
Release:        2.6.9-78.ELsmp
Version:        #1 SMP Wed Jul 9 15:46:26 EDT 2008
Machine:        x86_64
Instance name: webmoney
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 16996, image: oracle@rh2 (TNS V1-V3)

*** 2009-09-07 21:57:14.100
*** SERVICE NAME:(SYS$USERS) 2009-09-07 21:57:14.100
*** SESSION ID:(528.2041) 2009-09-07 21:57:14.100
===================================================
SYSTEM STATE
————
System global information:
processes: base 0x91637c30, size 500, cleanup 0x9167a2e0
allocation: free sessions 0x91779840, free calls (nil)
control alloc errors: 0 (process), 0 (session), 0 (call)
PMON latch cleanup depth: 0
seconds since PMON’s last scan for dead processes: 45
system statistics:

[gview file=”http://askmaclean.com/wp-content/uploads/resource/gdb.pdf”]

oracle express介绍

Oracle express 不是一种新型火车也不是一种新型的邮递服务。Oracle express是个多维的数据库和应用程序环境,这个应用程序环境是用来构建OLAP应用程序的。Express的组件(或者OLAP选项)是维(多维部分中的一部分)和变量。维是在Express数据库中分解出的逻辑单元。维是数据库的核心单元,它更像数据仓库表格的数维或者逻辑表达式的限制子句。product=TevaSandals,gender=male或者date_of_birth介于某个日期范围都是这样的字句示例。

变量是在Express数据库中包含数据的对象。这些变量不比用维描述的值(类似数据仓库的值,它的典型值是数字)的数组更重要。把这个数组的概念扩展一下,就可以把它看做表。把销售的变量看做维,可能就是Product ,Sales_District和Sales_dt_time。3个成为维的变量经常被称作数据立方体。

对Express数据库来说,具有多个变量,每个变量又是多维的情况并不常见(类似事件的一些维数通常是多个变量,而某些维对于变量是唯一的)。

Express数据库中的数据以这种多维方式存储,而不是典型的数据库结构,甚至以关系对象结构存储,因为这样会使用户处理回答他们业务问题的信息更快。因为业务经常需要以这种方式切片和切块数据,这就是他是OLAP数据库的原因。这种方式与那些在一般数据库中支持的方式是不同的。

Express有两个为支持无限制用户数而设计的功能。Express服务器为更大的应用程序而设计,它是个多维的数据储存器。Express服务器经常与已存在的数据仓库一起使用,或者作为一个功能全面的数据仓库的前身。根据需要,Express Server可替代数据仓库。Personal Express 是单用户的Express Server ,它由对数据做OLAP分析的个人使用,这样就不需要花费更大的代价和时间去执行一个功能全面的组织数据仓库。

还有很多这样的工具,他们作为Express服务器数据库产品的附加工具。Express Analyzer 是用来生成报告和分析Express服务器的工具。Express Objects 是支持开发Express数据库应用程序的OO工具。也可使用Express Web Publisher发布目录到Web上供别人查看。Express Spreadsheet是为Microsoft Excel和Express Sever数据库之间的接口提供的插件。

apache中多域名使用同一个ip的方法

服务器仅有一个ip ,却需要服务多个域名(实际是多个网站的服务),例如你希望使用同一个台web服务器上同时运行www.example.com与www.example.net。

可在httpd.conf配置文件中(可能位于/etc/httpd/conf或/usr/local/apache/conf目录下),添加以下条目:

Server configuration

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org

# Other directives here

</VirtualHost>

apache会就用户访问的域名对应配置中的ServerName选择合适的web目录输出html代码。以上设置中第一项即ServerName www.example.com成为默认选项。若用户访问所指定的域名不符合所有条目时采用默认项,即指向www.example.com。

apache官方的文档: http://httpd.apache.org/docs/2.2/vhosts/examples.html

沪ICP备14014813号

沪公网安备 31010802001379号