存档
Sybase ASE自V12.5.0.3引入了MDA表来监控Sybase数据库的性能,ASE15以来MDA的监控能力越来越强。本博客中有关于如何配置MDA表的文章:
MDA中的代理表monProcessSQLText包含当前所有会话正在执行的SQL语句。如果已经配置了MDA,可以通过查询该代理表monProcessSQLText来获得正在执行的SQL语句。
在没有配置MDA监控的环境中,可以使用更加通用的命令来查询当前会话正在执行的SQL语句。dbcc sqltext命令需要sybase_ts_role角色才能执行,过程sp_showplan需要sa_role角色才能执行。
下面提供一个存储过程来查询当前Sybase服务器内正在执行的所有SQL语句。思路是:获得当前使用锁的会话ID(spid),利用游标遍历得到每个spid的正在执行的SQL语句。
在CentOS5.5 x86_64上安装了Oracle11g,版本号为:11.2.0.1.0
但是,在其它客户端上使用sqlplus连接的时候需要等待很长时间才能连接上,有时候报超时的错误。
错误信息为:
*********************************************************************** Fatal NI connect error 12537, connecting to: (LOCAL=NO) VERSION INFORMATION: TNS for Linux: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production Time: 30-NOV-2011 14:28:10 Tracing not turned on. Tns error struct: ns main err code: 12537 TNS-12537: TNS:connection closed ns secondary err code: 12560 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 opiodr aborting process unknown ospid (29666) as a result of ORA-609 Wed Nov 30 14:36:24 2011
Oracle11g服务器数据库名为:lzf,全局名称为:lzf.dbainfo.net
Linux下使用date计算某个月份的天数:
Month=2 Year=2008 nextmonth=`date -d "1 month $Year-$Month-"01"" +%Y-%m-%d` date -d "-1 day $nextmonth" +%d #或者将-d "1 month $Year-$Month-"01"" 和 date -d "-1 day $nextmonth" 写在一行命令中 Month=2 Year=2008 date -d "1 month $Year-$Month-"01"" -d "-1 day" +%d
使用cal 计算某个月份的天数:
本文所示提取的Oracle环境变量用ORACLE_HOME作为代表!
在linux或者unix环境上,很容易得到Oracle数据库的环境变量信息,比如:查看ORACLE_HOME
[oracle@centos5 ~]$ echo $ORACLE_HOME /u01/oracle/product/11.2
在windows上可能稍微麻烦些了。如果windows系统上安装了Oracle服务器的话,正常情况下是有ORACLE_HOME这个环境变量的。
C:\>echo %oracle_home% e:\oracle\db_1
将环境变量oracle_home赋值给其它变量用:set abc="%oracle_home%"
如果Oracle服务器的环境变量配置不正确或者只安装了Oracle客户端程序的话,本文将给出提取ORACLE_HOME的方法。
提取注册表使用的命令为:reg query 或者 reg export,命令语法为:
REG QUERY KeyName [/v ValueName | /ve] [/s]
REG EXPORT KeyName FileName
查看命令的具体参数,使用:reg export /? 或者 reg query /?
1.安装所需要的包
所需的包有vnc-server(vnc服务器软件包),vnc(客户端包)。
另外,既然想用VNC,肯定是想要看图形界面,那就还要安装"GNOME Desktop Environment"(如果是想用GNOME,否则用KDE)
如下:
#yum install vnc-server(注意在root下安装) #yum install vnc #yum groupinstall "GNOME Desktop Environment"
注意安装前先用rpm -qa|grep "vnc-server"这种方式来查询一下是否已经安装好。一般如果你安装centos时选用的是默认的方式安装系统,那上面的步骤可以省略。
2.准备VNC用户资料,包括创建你想要的用户和密码(就是系统自己那种用户密码)。
如:
#useradd peter
#passwd peter
如果系统所需帐号已经建立,或是你只想用root来登录VNCServer,那此步骤也可以略过。
linux下显示dd命令的进度:
dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000
想要查看上面的dd命令的执行进度,可以使用下面几种方法:
比如:每5秒输出dd的进度
方法一:
watch -n 5 pkill -USR1 ^dd$
方法二:
watch -n 5 killall -USR1 dd
方法三:
while killall -USR1 dd; do sleep 5; done
方法四:
while (ps auxww |grep " dd " |grep -v grep |awk '{print $2}' |while read pid; do kill -USR1 $pid; done) ; do sleep 5; done
上述四种方法中使用三个命令:pkill、killall、kill向dd命令发送SIGUSR1信息,dd命令进程接收到信号之后就打印出自己当前的进度。
参考:贝塔中的DBA - 查看dd命令的执行进度
rhel5 与 rhel4 不同的地方是, rhel5 里没有 /etc/X11/gdm/ 这个目录,因此在用xmanager连接linux时应选择“new session--->XDCMP“。
修改相关的dgm配置文件:
1. /etc/gdm/custom.conf
将 [xdmcp] 部分的 Enable 设置为 1,即:
[xdmcp]
Enable=1
Post=177
将 [security] 部分的 DisallowTCP 设置为 false,即:
[security]
DisallowTCP=false
2. /usr/share/gdm/defaults.conf确保有以下几句配置
Enable=true
DisplaysPerHost=10
Port=177
AllowRemoteRoot=true
3. /etc/inittab里把默认级别改为5
id:5:initdefault:
x:5:respawn:/usr/sbin/gdm
4. /etc/securetty增加如下内容
pts/0
pts/1
pts/2
pts/3
pts/4
Sybase ASE12.5.3ESD#7的错误日志文件中频繁报下面的错误信息:
Error 1204, Severity 17, State 2 occurred for User 'sa'. Client IP address is 'XXX.XXX.XXX.XXX'. SQL Text: select xxxx from xxxxx where xxxxx
查询Sybase错误信息手册,Error 1204是由锁数量不够导致的。
Error 1204的错误信息内容应该为:
SQL Server has run out of LOCKS. Re-run your command when there are fewer active users, or contact a user with System Administrator (SA) role to reconfigure SQL Server with more LOCKS.
自ASE12.5.2后,数据库引擎向错误日志文件中记录Error1204时还记录一些额外的信息,比如:客户端IP地址,登录用户名以及执行的SQL语句。
我这次看到的错误日志文件中仅有一些额外信息,比如:for User 'sa'. Client IP address is 'XXX.XXX.XXX.XXX'. SQL Text: sql_clause,并没有显示SQL Server has run out of LOCKS.这一行信息。