Sybase数据库中tempdb已满问题的分析方法

本文介绍了一套针对Sybase数据库tempdb空间满问题的诊断流程。首先通过who命令找出占用tempdb空间的连接,再使用sqltext命令查看这些连接执行的SQL语句,从而定位问题原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 用dbuser登陆数据库
如果当前用户是root,则执行以下命令切换到dbuser。
# su - dbuser

2. 配置分析环境
配置分析环境,需要执行以下命令:
$ . ./SYBASE.sh
$ dataserver -X

在提示输入口令时,输入quine(固定的口令),然后回车
Enter password:

在以下">"提示符处输入"cat /opt/sybase/ASE-15_0",命令执行后会显示数据库实例信息。
> cat /opt/sybase/ASE-15_0

根据显示的数据库实例信息,执行以下命令(注意,attach后输入的实例名根据实际显示为准,本文的举例假设为SYB)
> attach SYB

如果加载成功,则会显示如下信息:
Attaching to server SYB, using shared memory id: 83886112
SYB:active> 

随后就可以在"SYB:active>"提示符后执行命令,获取需要的定位信息。

3. 分析问题

以下重点说明对于分析tempdb空间满有帮助的几个命令和输出信息。

1) who
该命令可以不带参数执行,显示当前数据库中所有在运行的数据库连接信息。也可以带上具体的spid号,显示指定spid的数据库连接的信息。
重点关注各个数据库连接的spid,以及占用tempdb的页数(ptempdb_pages)。

举例说明:
SYB:active> who

以下这段显示的是spid为2的数据库连接的信息,可以看出这条连接使用的tempdb空间为0(ptempdb_pages: 0),这条连接是数据库内部系统进程(P_SYSTEMPROC)。


********  Active PSS Structures  ********
spid: 2, kpid: 327685, pss: 0x10047ba6fc0, proc: 0x1004cdb9850
pmemusage: 0, ptempdb_pages: 0
  Command: 0 DEADLOCK TUNE
  Status: (0x00000200 (P_SYSTEMPROC))
*****************************************
... ...

以下这段显示的是spid为13的数据库连接的信息,可以看出这条连接使用的tempdb空间为26455页(ptempdb_pages: 26455)。如果数据库的页面大小为8K,则这条连接占用了26455*8K=207M的tempdb空间。这条连接是应用库的进程(P_USERPROC)。

*****************************************
spid: 13, kpid: 1070138198, pss: 0x10047ca23e8, proc: 0x1004cedf058
pmemusage: 17, ptempdb_pages: 26455
  User: sa, Command: 326 UPDATE STATISTICS
  Status: (0x20000000 (P_LOGSUSPEND), 0x00010000 (P_USERPROC))
*****************************************

2) sqltext
显示spid对应的连接执行的具体sql语句信息。

输出举例,以下语句显示spid为13的连接正在执行更新性能结果表统计信息的操作。


SYB:active> sqltext 13
*************** SPID: 13 ******************
SQL Text:  update statistics tbl_Result_1157628012_2(ObjectNo)

3) locks
显示所有被held或者等待的锁信息。

4. 分析tempdb满的步骤
1)先执行命令who,然后分析所有输出中ptempdb_pages不为0的连接,记录这些连接的spid和ptempdb_pages(该连接占用的tempdb的容量)。

2)根据上一步收集到的spid,执行sqltext <spid>,调查这些连接正在执行的sql信息。

通过以上步骤,我们就可以获知哪些任务在占用tempdb的空间,并且具体占用多少?



原文转自:http://bbs.chinaunix.net/thread-3629199-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值