2008年7月26日星期六

升级Oracle 9.2.0.4到9.2.0.8

1. shutdown database
2. runInstaller
3. startup database, check system tablespace has at least 10M free space.
4. change shared_pool_size, java_pool_size to 150M
5. shutdown database
6. STARTUP MIGRATE
SPOOL patch.log
@$ORACLE_HOME/rdbms/admin/catpatch.sql
SPOOL OFF
7. restart database
8. @$ORACLE_HOME/rdbms/admin/utlrp.sql

2008年7月20日星期日

xmanager连接redhat,rhel

因为是在vmware中安装的redhat已经rhel, 但是跑到vmware那小小的窗口里面去操作是在很烦,而且反应有点迟钝.
想到公司采用xmanage的方式连接, 感觉挺方便的, 我在公司用xmanager连几个OS的方式都是采用telnet.
于是也尝试在自己机器上将telnet配起来(虽然都说不太安全, 但反正是在自己局域网内, 无所谓了, 方便就行), 配置还是瞒简单的:
首先要打上telnet-server这个包, 别忘了预先打上xinetd. 如果是redhat6或7, 直接重启就可以了.
如果是RHEL3,RHEL4, 还需要先改下一个配置文件/etc/xinetd.d/telnet
将disable=yes改为no,然后重启就OK了(如果预先已经装好rpm,只是没有改配置, 那么改了配置重启xinetd服务就OK了).

VMWARE相关

上星期硬盘挂了,临时从网上买了块硬盘回来。两三百G的东西全不丢掉,不得以重新来过。
以前是直接装RHEL4,然后在上面用虚拟机安装各种OS,但是感觉一方面我需要花很多精力去搞定RHEL4下面我的硬件驱动, 另外LINUX下的虚拟机网络互联也比较难配置,所以这次采取了安装WINXP,然后安装虚拟机,灌制各种OS, 然后之间互联。
选中的是vmware,主要是因为看公司用这个,感觉挺方便的。
但是这几天用这个却除了一些问题:
1. 首先安装的是vmware5.0 workstation, 但是安装后,明明序列号有用,却说产品已经过期,冒失还是check到了有新版本,所以不能用老版本?懒得管,重新下新版本6.5,解决.
2. 第一次使用6.5,灌了几个OS,但老是感觉速度太慢了,但是明明资源充足。特别是安装完后,用telnet登录, 半天也不能出来输入用户名密码的提示。最终,该了prority,(注意有两个地方, 一个是VMWARE preference,另外是虚拟OS的advanced option,后者会覆盖前者) 好像有点作用。 但不知道起作用的到底是改这个还是重灌OS。
3. 安装RHEL3 U9,老是出不来x的安装界面, 提示说Fatal io error, 重来几次,改了各种设置都不OK,最终解决:选操作系统的时候, 选RHEL4,实际安装的时候当然还是安装RHEL3, 估计还是跟硬件有关。

2008年7月14日星期一

Linux下ORACLE字符集怪异现象

因为以前吃过苦头, 所以自以为对ORACLE的字符集相关问题比较熟悉. 没想到今天在Linux上依然碰到了问题.
原因是这样的, 我们这边的数据库字符集一般都是UTF8, 在windows下使用sql navigator插入中文一般需要将客户端字符集改为中文或者convert插入(只有部分中文能采取第二种方法), 而查看中文也是一样.
没想到今天在安装的测试环境RHEL4下面却碰到了问题, 当我在RHEL4中sqlplus查看我在windows种插入的中文的时候, 在环境变量字符集为UTF8的时候, 能够正常看到中文, 反而是环境变量为ZHS16GBK时看到的是乱码. 起初以为是疏忽了, 结果反复尝试几次都是如此, 想了许久也没明白.

回家看到自己机器上那中文菜单, 确实UTF8编码的RHEL4才想起来, 默认LINUX编码是UTF8, 而windows是GB2312, 所以在windows下面, 看中文需要, 将UTF8转为ZHS16GBK的编码, 操作系统才认识这是中文. 反而是在LINUX下, 操作系统本身就是UTF8编码, 所以不需要转换, 直接就能够认识数据库里面UTF8编码的中文.

RHEL4下ORACLE9i DBCA不能创建数据库

前几天在家以及公司的机器上都装了oralce9i, 操作系统是RHEL4, 就是很纳闷, 正常安装的oracle, 安装过程没有出现任何错误, 为什么安装以后运行DBCA不能创建数据库....
老是点到最后一步, Finish然后就直接关掉了, 并且出现如下message:
/disk2/oracle/ora9204/bin/dbca: line 124: 5550 Segmentation fault $JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS

找到的solution是, 找到dbca的124行, 添加上-native
$JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS

其实从判断条件可以看出, 我们也可以这样做, 在/etc下新建一个rac_on的文件, 然后运行DBCA.

ORACLE9i创建数据库过程

此文无任何技术含量, 也非做研究, 仅为记录, 加深印象.

下面是在ORACLE 9i中创建一个数据库的过程:

创建相关目录

mkdir /opt/oracle/admin/EDP/bdump

mkdir /opt/oracle/admin/EDP/cdump

mkdir /opt/oracle/admin/EDP/create

mkdir /opt/oracle/admin/EDP/pfile

mkdir /opt/oracle/admin/EDP/udump

mkdir /opt/oracle/ora8i/9.2.0/dbs

mkdir /opt/oracle/oradata/EDP

设置环境变量

setenv ORACLE_SID EDP

可以设置自动启动数据库

echo Add this entry in the oratab: EDP:/opt/oracle/ora8i/9.2.0:Y

创建密码文件

/opt/oracle/ora8i/9.2.0/bin/orapwd file=/opt/oracle/ora8i/9.2.0/dbs/orapwEDP password=change_on_install

使用init.ora启动实例到nomount状态

startup nomount pfile="/opt/oracle/admin/EDP/scripts/init.ora";

创建数据库

CREATE DATABASE EDP

MAXINSTANCES 1

MAXLOGHISTORY 1

MAXLOGFILES 5

MAXLOGMEMBERS 3

MAXDATAFILES 100

DATAFILE '/opt/oracle/oradata/EDP/system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/opt/oracle/oradata/EDP/temp01.dbf' SIZE 40M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

UNDO TABLESPACE "UNDOTBS1" DATAFILE '/opt/oracle/oradata/EDP/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

CHARACTER SET UTF8

NATIONAL CHARACTER SET UTF8

LOGFILE GROUP 1 ('/opt/oracle/oradata/EDP/redo01.log') SIZE 102400K,

GROUP 2 ('/opt/oracle/oradata/EDP/redo02.log') SIZE 102400K,

GROUP 3 ('/opt/oracle/oradata/EDP/redo03.log') SIZE 102400K;

创建一些可选的tablespace

CREATE TABLESPACE "CWMLITE" LOGGING DATAFILE '/opt/oracle/oradata/EDP/cwmlite01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "DRSYS" LOGGING DATAFILE '/opt/oracle/oradata/EDP/drsys01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "EXAMPLE" LOGGING DATAFILE '/opt/oracle/oradata/EDP/example01.dbf' SIZE 120M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "INDX" LOGGING DATAFILE '/opt/oracle/oradata/EDP/indx01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "ODM" LOGGING DATAFILE '/opt/oracle/oradata/EDP/odm01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "TOOLS" LOGGING DATAFILE '/opt/oracle/oradata/EDP/tools01.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 320K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/EDP/users01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE TABLESPACE "XDB" LOGGING DATAFILE '/opt/oracle/oradata/EDP/xdb01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

创建数据字典

@/opt/oracle/ora8i/9.2.0/rdbms/admin/catalog.sql; 数据字典

@/opt/oracle/ora8i/9.2.0/rdbms/admin/catexp7.sql; exp兼容

@/opt/oracle/ora8i/9.2.0/rdbms/admin/catblock.sql; lock相关

@/opt/oracle/ora8i/9.2.0/rdbms/admin/catproc.sql; procedural相关

@/opt/oracle/ora8i/9.2.0/rdbms/admin/catoctk.sql; Cryptographic ToolKit

@/opt/oracle/ora8i/9.2.0/rdbms/admin/owminst.plb; oracle work manager

connect SYSTEM/manager

@/opt/oracle/ora8i/9.2.0/sqlplus/admin/pupbld.sql; PRODUCT_USER_PROFILE

connect SYSTEM/manager

set echo on

spool /opt/oracle/ora8i/9.2.0/assistants/dbca/logs/sqlPlusHelp.log

@/opt/oracle/ora8i/9.2.0/sqlplus/admin/help/hlpbld.sql helpus.sql;

创建一些可选组件

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/JServer.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/ordinst.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/interMedia.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/context.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/xdb_protocol.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/spatial.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/ultraSearch.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/odm.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/cwmlite.sql

/opt/oracle/ora8i/9.2.0/bin/sqlplus /nolog @/opt/oracle/admin/EDP/scripts/demoSchemas.sql

编译invalid对象

@/opt/oracle/ora8i/9.2.0/rdbms/admin/utlrp.sql;

关闭数据库, 重新连接

创建spfile文件

create spfile='/opt/oracle/ora8i/9.2.0/dbs/spfileEDP.ora' FROM pfile='/opt/oracle/admin/EDP/scripts/init.ora';

启动数据库

在ORACLE中监控HTTPS网站

无法查看这则摘要。请 点击此处查看博文。

2008年7月7日星期一

在RHEL4上面安装oracle9.2.0.4

[yves@yves oracle8i]$ uname -a
Linux yves.ldi 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:27:17 EDT 2006 i686 athlon i386 GNU/Linux

机器上原本安装有10g的数据库, 以及ORACLE ERP R12, 所以内核配置没有问题, 软件安装也基本齐全, 用户组已经建好.

1.添加用户
/usr/sbin/useradd -g oinstall -G dba oracle
2.修改/etc/security/limits.conf
添加:
ora8i soft nproc 2047
ora8i hard nproc 16384
ora8i soft nofile 1024
ora8i hard nofile 65536
3.修改/etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
4.从meta link上下载patch:4198954, 安装其中包含的两个rpm包. 参见metalink:169706.1
5.修改/home/ora8i/.bashrc
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
如果这一项不做修改,会报如下错误:
symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so)
Unable to initialize threads: cannot find class java/lang/Thread
Could not create Java VM
6.在环境变量中设置ORACLE_BASE环境变量, 如果此处不设置, 会报错说DBCA不能安装, 对相应目录没有写权限, 经测试, 其实它会将根目录当做ORACLE_BASE, 当然,如果安装用户对根目录有写权限, 也没有问题.
另外一种solution: (我第一次安装的时候采用, 测试通过)在根目录下创建文件夹oradata, 使安装用户对此文件夹有写权限.
7.运行Disk1下runInstaller进行安装.

2008年7月3日星期四

PL/SQL Developer的导入功能


今天有RD发过来一个PDE后缀的文件, 说是客户发过来的, 要求导入.
以前客户都是直接发DMP文件, 然后使用imp导入的, 好像是RD抱怨说表名大小写敏感, 所以他们换了种方式.
我以前也没看过这种文件, 网上查了下, 是PL/SQL Developer导出的文件,
正好机器上有装这个软件, 所以就试了下, 果然导入成功.

PL/SQL Developer --> Tools --> Import Tables
会有3个tab页, 第一个应该是正常的dmp文件, 而第二个用来处理SQL脚本, 第三个就是用来处理这种pde文件了,
不过里面那些选项倒是还搞不清楚什么意思.

2008年7月2日星期三

TOP命令on HP Unix

HP UnixTOP命令的例子:

参数:

-s time 设置屏幕刷新的延时,单位为秒,默认值5

-d count 设置屏幕刷新的次数,刷新显示完count次后退出

-q 如果经过nice授权,使用-q可以使top运行的更快一些

-u 用显示User ID代替username,提高命令运行速度

-h 当系统由多个CPU时,个别CPU的状态信息被隐藏,只显示平均状态值

-n number 设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效

-f filename 输出重定向到给定的文件名,默认为16个进程信息

System: benqora3 Mon Jun 30 20:38:40 2008 系统名和当前日期

Load averages: 0.87, 1.06, 1.02 1分钟、5分钟和15分钟内运行的负载平均数, 即单位时间内运行队列中的平均进程数, 一般不大于3OK, 如果大于5则问题比较大

1240 processes: 1161 sleeping, 78 running, 1 zombie

系统当前进程总数, zombie指僵尸进程(当父进程产生子进程,子进程运行完毕并等待父进程响应,但是父进程却没有对结束的子进程做出响应,那么这些子进程就会变成僵尸进程)

Cpu states:

CPU LOAD USER NICE SYS IDLE BLOCK SWAIT INTR SSYS

0 0.90 34.3% 0.0% 9.0% 56.7% 0.0% 0.0% 0.0% 0.0%

1 0.69 26.1% 0.0% 10.0% 63.9% 0.0% 0.0% 0.0% 0.0%

2 0.75 74.1% 0.0% 5.4% 20.6% 0.0% 0.0% 0.0% 0.0%

3 0.85 44.9% 0.0% 6.8% 48.3% 0.0% 0.0% 0.0% 0.0%

4 0.74 31.5% 0.0% 11.2% 57.3% 0.0% 0.0% 0.0% 0.0%

5 0.89 74.9% 0.0% 24.8% 0.4% 0.0% 0.0% 0.0% 0.0%

6 0.92 38.1% 0.0% 6.8% 55.1% 0.0% 0.0% 0.0% 0.0%

7 0.92 33.5% 0.0% 10.2% 56.3% 0.0% 0.0% 0.0% 0.0%

8 0.99 29.9% 0.0% 10.6% 59.5% 0.0% 0.0% 0.0% 0.0%

9 1.05 28.5% 0.0% 10.8% 60.7% 0.0% 0.0% 0.0% 0.0%

--- ---- ----- ----- ----- ----- ----- ----- ----- -----

avg 0.87 41.6% 0.0% 10.6% 47.8% 0.0% 0.0% 0.0% 0.0%

从左至右分别为: CPU序号, loading, 用户占用cpu百分比, nice命令改变优先级的任务占用的CPU时间百分比, 系统占用cpu百分比, 闲置cpu百分比, 后面几个不知道啥意思

下面一行是平均值

Memory: 12994712K (5390056K) real, 28114548K (11711360K) virtual, 2841400K free Page# 1/78

关于内存使用情况的统计, 包括实际(real)内存的使用值(活动值),虚拟(virtual)内存的使用值(活动值),剩余的内存。

CPU TTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND

5 ? 12779 bqpdb 241 20 1373M 64888K run 374:20 95.32 95.16 oracleBQP

7 ? 21792 bqpap 241 20 139M 105M run 1250:45 44.55 44.47 FNDLIBR

6 ? 29643 bqpdb 223 20 1332M 19936K run 0:11 39.82 27.21 oracleBQP

0 ? 29687 bqpdb 235 20 1319M 11952K run 0:08 46.86 25.81 oracleBQP

5 ? 18985 bqpap 168 20 73952K 45344K sleep 156:42 25.24 25.20 FNDLIBR

1 ? 29091 bqpdb 154 20 1311M 4300K sleep 0:59 19.44 19.36 oracleBQP

0 ? 29654 bqedb 229 20 1162M 3792K run 0:07 30.40 19.22 oracleBQE

2 ? 19976 bqadb 227 20 1206M 40508K run 3:05 19.00 18.96 ora_p005_BQA

8 ? 19980 bqadb 227 20 1207M 42364K run 3:08 18.32 18.29 ora_p006_BQA

1 ? 19982 bqadb 221 20 1205M 39292K run 3:05 18.26 18.23 ora_p007_BQA

9 ? 19974 bqadb 222 20 1205M 39356K run 3:09 17.40 17.37 ora_p004_BQA

3 ? 29749 bqpdb 241 20 1315M 9648K run 0:03 92.43 16.75 oracleBQP

6 ? 29511 bqadb 149 20 1164M 5652K sleep 0:08 17.38 15.46 oracleBQA

0 ? 26592 bqpdb 149 20 1323M 14576K sleep 1:33 14.75 14.72 oracleBQP

9 ? 29696 bqedb 154 20 1166M 6728K sleep 0:03 25.85 13.64 oracleBQE

3 ? 28491 bqpdb 154 20 1373M 15864K sleep 15:39 13.19 13.17 oracleBQP

从左至右分别为: 处理器号, 终端名, 进程号, 用户名, 任务优先级, NICE(越低优先级越高), 任务的代码加上数据再加上栈空间的大小, 任务使用的物理内存的总数量, 任务的状态, 自任务开始时使用的总CPU时间,单位为秒,如153:43,对应是153 43毫秒, 进程的CPU利用率加权百分比,CPU原始利用率百分比自上一次屏幕刷新以来任务占用CPU 时间的份额(用来排序), 这两个都不太理解, 启动进程的命令名

SQL Mail

今天有PM提出了想要在SQL Server JOB跑失败的时候发邮件通知相关人员.

1. SQL Server服务用Domain账号运行

2. "Enterprise Manager""support service"的属性中设定mail profile名称, 我机器是outlook (已安装outlook, 并且已经设置好outlook帐号)

3. 然后在"SQL Server Agent"属性的Mail Profile中选outlook

4. 最后可以在jobNotification中填mail地址, 然后测试

2008年7月1日星期二

转: windows性能管理解析

查看IIS LOG:
C:\WINDOWS\system32\Logfiles\W3SVC1

查看IIS连接数:
控制面板 --> 管理工具 --> Performance --> 添加计数器

Windows性能管理解析

说到Windows环境下的性能管理,许多人首先想到的可能就是无处不在的Performance Monitor工具。早在Windows NT时代,Performance Monitor就是获取性能信息的主要工具,当然,任务管理器和Windows管理规范(Windows Management Instrumentation)也属于常用工具之列,它们不仅能够提供性能数据,而且还能提供其他与性能有关的管理信息。本文介绍了一些充分发挥这些经 典工具潜能的技巧,同时介绍了 Windows XP新增的工具,探讨如何运用它们来评估系统的性能情况。
  一、什么是性能管理?

  对于许多管理员来说,Windows的性能管理不外乎打开控制面板→管理工具中的"性能"程序,即Performance Monitor程序,然后检查一下CPU利用率、磁盘忙闲状况、内存压力,而且通常只有在出现性能问题时才会去检查,例如服务器响应突然变慢,或者用户不 能访问服务器。这种性能管理方式完全属于事后补救的方式,只起到了救火队员的作用,由于缺乏详尽、明确的事前评估、规划,算不上优秀的策略。要实现有效的 性能管理,一定要在出现问题之前掌握系统的性能情况。

  只有事先采取有效的性能管理策略,才能全面掌握系统的性能特征,在此基础上,就可以估计何时可能出现性能问题以及问题的具体表现。预先收集的性 能数据还可以用来规划未来的运算能力需求,例如,假设有一个IIS Web服务器,当并发用户数量是200时CPU的利用率是60%,据此可以推断系统负载何时达到极限,以及达到负载极限时能够支持的并发用户数量。另外, 根据网站的增长情况,还可以估计出何时需要增添硬件设备。

  系统的整体性能由许多因素决定,例如CPU利用率,CPU队列长度(即,有多少任务正在等待CPU的服务),磁盘忙闲程度(即,磁盘驱动器有多少时间用于响应请求),可用的物理内存,网络接口的利用情况,等等,表一概括了最常用的性能计数器。

表一:重要的性能计数器

性能对象 计数器 提供的信息
Memory Available Bytes Available Bytes显示出当前空闲的物理内存总量。当这个数值变小时,Windows开始频繁地调用磁盘页面文件。如果这个数值很小,例如小于5 MB,系统会将大部分时间消耗在操作页面文件上。
Memory % Committed Bytes in Use % Committed Bytes In Use 是 Memory: Committed Bytes 与Memory: Commit Limit之间的比值。(Committed memory指如果需要写入磁盘时已在分页文件中保留空间的处于使用中的物理内存。Commit Limit是由分页文件的大小而决定的。如果扩大了分页文件,该比例就会减小)。这个计数器只显示当前百分比;而不是一个平均值。
Memory Page Faults/sec Page Faults/sec是指处理器处理错误页的综合速率。用错误页数/秒来计算。当处理器请求一个不在其工作集(在物理内存中的空间)内的代码或数据时出现 的页错误。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其它地方找到的错误页)。许多处理器可以在有大量软错误的情况下继续操作。 但是,硬错误可以导致明显的拖延。这个计数器显示用上两个实例中观察到的值之间的差除以实例间隔的持续时间所得的值。
Network Interface Bytes Total/sec Bytes Total/sec是发送和接收字节的速率,包括帧字符在内。
Network Interface Packets/sec Packets/sec为发送和接收数据包的速率。
Physical Disk % Busy Time % Busy Time指磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
Physical Disk Avg. Disk Queue Length Avg. Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
Physical Disk Current Disk Queue Length Current Disk Queue Length指在收集操作数据时在磁盘上未完成的请求的数目。它包括在快照内存时正在为其提供服务中的请求。这是一个即时长度而非一定间隔时间的平均值。 多主轴磁盘设备可以一次有多个请求操作,但是其它同时发生的请求为等候服务。这个计数器可能会反映一个暂时的高或低的列队长度,但是如果在磁盘驱动器存在 持续负载,可能值会总是很高。请求等待时间与这个列队的长度减去磁盘上的主轴成正比。这个差值应小于2才能保持良好的性能。
Processor % Processor Time % Processor Time指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个范例间隔中衡量处理器用于执行闲置处理线程 的时间,并且用100%减去该值得出。(每个处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周期)。可将其视为范例间隔用于做有用工作的百分 比。
Processor % User Time % User Time指用于用户模式的非闲置处理器时间的百分比(用户模式是为应用程序、环境分系统和整数分系统设计的有限处理模式。另一个模式为特权模式,它是为操 作系统组件设计的并且允许直接访问硬件和所有内存。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。这个计数值将平均忙时作为实例时间的一部 分显示。
Server Work Queues Queue Length Queue Length指CPU当前的服务器作业队列长度。队列长度长时间超过四可能表示处理器堵塞。此值为即时计数,不是一段时间的平均值。
System Processor Queue Length Processor Queue Length是指处理队列中的线程数。即使在有多个处理器的计算机上处理器时间也会有一个单队列。不象磁盘计数器,这个计数器仅计数就绪的线程,而不计数 运行中的线程。如果处理器队列中总是有两个以上的线程通常表示处理器堵塞。这个计数器仅显示上一次观察的值;而不是一个平均值。
TCP Segments Retransmitted/sec Segments Retransmitted/sec指程序段重新传输的速率,即传输的程序段中包含一个或多个以前传输过的字节。

二、定制性能监视器

  在Windows 2K/XP中,Performance Monitor仍是最常用的性能管理工具。当然,新版的工具不少地方已经改进,增添了不少功能。在Win 2K中,性能监视器以一个管理控制台(MMC)单元的形式实现。启动Win 2K/XP的性能监视器,可以看到类似图一的界面。

图一

  在Win XP中,性能监视器默认装入三个计数器:Pages/sec,Avg. Disk Queue Length,% Processor Time。这三个计数器无法直接删除,但一直留着又降低了监视器启动速度。如果要让监视器启动时不装入任何计数器,首先要清除\%systemroot% \system32目录下perfmon.msc文件的只读属性:进入命令窗口,转到system32目录,执行命令attrib r perfmon.msc。然后重新启动计数器,选中一个计数器,点击工具栏上黑色的"X"按钮即可删除一个计数器。选择菜单"文件"→"保存",将更改后 的管理控制台保存到磁盘。如果要将管理控制台执行标记成只读,只需在命令行上执行attrib +r perfmon.msc即可。

  在NT 4.0中,性能监视器包含一个实时图表,另外还有记录日志和报警功能,但在Win 2K和XP的中,这些功能分开了。在Win 2K/XP中,实时性能图表变成了"系统监视器",系统监视器之下是日志和警报工具。系统监视器可以看作一个纯粹的实时性能数据察看工具,只能看,不能保 存,点击工具栏上的"+"按钮可以添加新的性能计数器。性能日志和警报工具则具有操作历史数据的功能。

  如果要创建一个只有系统监视器、不带性能日志和警报工具的管理控制台,可按如下步骤操作:执行"MMC"命令,打开一个空白的MMC窗口,选择 菜单"文件"→"添加/删除管理单元",点击"添加",选择"ActiveX控件",再点击"添加",在向导中选择System Monitor Control,确认即可。

三、性能日志和警报工具

  系统监视器只能简单地查看实时性能数据,如果需要长期的、持久化的性能数据,必须使用性能日志和警报工具。性能日志工具能够在一个日志文件中集 中记录来自本地或远程的多个系统的性能数据,这些日志数据可以用系统监视器查看或用其他工具处理。扩展控制台中的"性能日志和警报"节点,可以看到它的三 个分支:计数器日志,跟踪日志,警报。警报工具的功能很简单,就是当某个计数器的性能数据达到指定的值时,执行一定的动作,例如发送Email或用Net Send命令发送消息。下面我们主要讨论的是日志工具。

  为了说明如何使用计数器日志,我们要新建一个日志会话。右击"计数器日志"节点,选择"新建日志设置",指定日志设置的名称,点击"确定",出现图二的对话框,在这里设定要在日志中记录的计数器。

图二

  日志文件的默认保存路径是C:\perflogs目录,可以在对话框的"日志文件"页修改,但首先要设置待记录的对象和计数器才能转到"日志文 件"页。点击"添加对象"按钮,将某个监视对象的所有计数器加入日志记录,或者点击"添加计数器"按钮加入单个计数器。无论选择哪种加入选项,监视目标 (对象或计数器)都可以是本地的,也可以是远程机器的。

  如果要长期收集性能数据,最好调整一下采样间隔时间――特别地,如果要监视的计数器很多,而且来自不同的机器,如果采样间隔时间设置得太小,日志文件很快会变得很大。从每隔15分钟采样一次开始,试运行一段时间,看看日志文件变得多大了,然后再作相应的调整。

  如果要连接远程机器,可以在"运行方式"输入框提供登录远程机器的用户名字。

  收集性能监视数据需要一定的权限,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib注册子键控制着对性能监视数据的访问,性能监视数据正是通过该注册子键流到系统监视器之类的工具。用 右键点击该注册子键,选择菜单"权限",如图三,调整这里的权限分配也就调整了有权访问性能数据的用户。

图三

设置好要监视的对象和计数器之后,可以在"日志文件"页调整日志文件的格式,在"计划"页设置启动、停止日志的时间。如果设置成手工启动,启动方式是在MMC窗口中右击日志会话并选择"启动"。

  在"日志文件"页中,如图四,性能计数器日志除了默认的二进制.blg格式之外,还可以保存为其他多种格式,例如逗号分隔的文本文件(即CSV 文件),甚至还可以保存到SQL Server表――这是Windows Server 2003和XP才有的功能。如果选择了SQL Server,还要指定一个SQL Server数据源和保存数据的表,虽然麻烦一点,不过如果要收集大量的性能数据并进行分析,SQL Server还是一种不错的选择。

图四

  启动日志之后,可以看到日志目录中生成了一个65 KB的日志文件。每次关闭和重新启动日志,都会生成一个新的日志文件,文件名字中的序号依次增加。Win XP和2K支持一项非常实用的功能,即使在性能监视器工具不运行的时候,也能继续将性能数据写入日志。如果是NT 4.0,则需要安装NT 4.0 Resource Kit的DataLog服务才能使用这个无人值守日志记录功能。Win 2K和XP本身就有Performance Logs and Alerts服务,该服务在日志会话启动时自动启动,日志会话结束时自动停止。

  Win 2K/XP性能日志的另一个改进之处是保存日志会话功能。在NT 4.0中,如果要为某个日志会话重新使用一组选定的性能对象和计数器,必须为每一台想要监视的服务器重新创建工作台文件,如果要将一组日志配置分别在多台 服务器上本地运行,必须重复执行繁琐的配置操作。但在Win 2K/XP中,所有配置文件(包括日志和警报)都以HTML文件的形式保存,很容易修改和重用。要保存一个日志会话配置,只要在MMC窗口中右击会话,然 后选择菜单"将设置另存为"即可。

  四、命令行工具

  XP提供了一个叫做Logman的新工具,它不仅能够在命令行上启动和停止日志会话,而且能够从命令行创建新的日志会话。

  例如,下面的第一Logman命令新建了一个iislogging会话,日志文件保存在默认c:\perflogs\ IISLogging.blg,日志中加入了本地服务器上inetinfo.exe进程的Process\% Processor Time计数器,收集性能数据的时间间隔是15分钟。第二个命令启动了iislogging日志会话。运行这些命令之后,如果启动MMC性能监视工具,可 以看到计数器日志中已经列出了刚才创建的日志会话。

logman create counter iislogging -c "\Process(inetinfo)\% Processor Time" -si 15:00logman start iislogging


用Logman的-s选项可以启动远程机器上的日志,使用形式类如"-s \\ServerName"。使用该选项时,Logman启动的日志将在远程服务器上运行,而不是执行Logman命令的本地机器。

  五、WMIC

  WMIC即Windows管理规范的命令行工具,在命令上执行执行wmic,即可启动WMIC环境。第一次执行wmic命令时,WMIC首先把 自己安装到WMI名称空间。虽然微软推出WMIC的意图是简化WMI的使用,不过WMIC的命令行语法还是显得比较复杂。WMIC依靠别名来描述经常要访 问的 WMI类,例如,WMIC的别名pagefile相当于WMI查询Select * from Win32_PageFileUsage,如果在wmic提示符下输入pagefile命令,WMIC将显示出当前的页面文件使用情况。

  遗憾的是,WMIC没有为基于WMI的性能监视数据提供别名,所以要查询性能监视器数据,必须直接调用相应的WMI类。例如,如果要查看服务器 当前的物理内存使用情况,可以在WMIC命令行上执行path win32_perfformatteddata_perfos_memory,该命令要求WMIC返回WMI类 win32_perfformatteddata_perfos_memory的数据,输出结果包含了指定WMI内存对象的每一个属性。如果只想查看 Available Bytes属性,可以将命令改为path win32_perfformatteddata_perfos_memory get AvailableBytes。

  另外,WMIC命令还可以从Windows命令行直接执行,例如,要查看Available Bytes,可以执行wmic path win32_perfformatteddata_perfos_memory get AvailableBytes命令,如果要返回多个属性值,只要依次列出各个属性,属性之间用逗号分隔,例如"AvailableBytes, AvailableMBytes,CacheBytes"。

  那么,如何获得各种性能监视器计数器的WMI类名称呢?最好的办法是使用WMI Tools。WMI Tools是微软提供的一个免费工具,可以从http://www.microsoft.com/downloads/details.aspx? displaylang=en&familyid=6430F853-1120-48DB-8CC5-F2ABDC3ED314下载,如图五所 示,它能够清楚地显示出各个类的名称、属性、方法。

图五

  总而言之,在多层应用环境中,如果要查找性能瓶颈的具体位置,性能监视数据无疑是极其宝贵的依据,只要充分运用Win 2K/XP提供的性能工具,我们可以构造出功能丰富的性能管理系统。

Timezone mismatch错误

以前装的一个Oracle 10g测试环境, 忘了改了什么设置, 最近在执行emctl start dbconsole的时候, 老是报以下错误:

Timezone mismatch: The agentTZRegion value (PRC) in

/home/tim/oracle/product/10.2.0/db_tim/localhost.localdomain_tim/sysman/config/emd.properties

does not match the current environment TZ setting(Etc/GMT+12).

The dbconsole cannot run with this mismatch.

solution: 找到错误种所说的文件, 将文件中最后一行agentTZRegions的设置去掉, 就OK了.

其实通过错误提示, 应该也可以通过执行emctl resetTZ agent来修复.