1.数据库概况

--查询key信息

SELECT * FROM "V$LICENSE";

--获取数据库名

SELECT CUR_DATABASE();

--查询数据库实例名、端口号

SELECT * FROM "V$DM_INI" WHERE PARA_NAME IN ('INSTANCE_NAME','PORT_NUM');

--查询数据库版本号

SELECT * FROM V$VERSION;

--查询BUFFER SIZE大小

SELECT * FROM "V$DM_INI" WHERE PARA_NAME='BUFFER';

--获得系统建库时指定的页大小:

SELECT PAGE();

SELECT SF_GET_PAGE_SIZE ();

--查询表空间个数

select count(*) from "SYS"."V$TABLESPACE";

--查询数据文件个数

select path,total_size,free_size,round(cast((total_size-free_size) as float)/total_size,4) used_ratio from v$datafile;

--查询控制文件个数

SELECT * FROM "V$DM_INI" WHERE PARA_NAME='CTL_PATH';

--数据库连接数

通过sql:select count(*) from v$sessions 进行查看,根据目前连接情况,正常运行在400左右,一般不会超过1000.如果在运行压力大无法登录的情况下。可以通过操作系统 netstat –arp  |grep 12345 |wc –l 命令来判断

--查询日志文件个数

select client_path,group_id,file_id,path,(rlog_size/1024)/1024||'M',create_time

from "SYS"."V$RLOGFILE";

--查询系统日志(时间最近的)

--类似dm_CSW_201611.log正常

--归档方式

--本地方式归档日志有效性

ls(归档目录下)

du -s .(归档目录下)

--备份方式、策略及执行情况

--备份文件个数所占磁盘空间总大小

ll | wc -l

du -s . (备份目录)

--licence的并发用户量

select * from v$license;

--性能需求

SELECT * FROM "SYS"."V$SESSION_EVENT";

select * from sys.v$deadlock_history;

--如果发生死锁,临时处理方案是踢除产生死锁的会话:

call SP_CLOSE_SESSION('sess_id');-- sess_id来自v$deadlock_history

--CPU占用率

top

Top命令主要是查看服务器的CPU和内存使用情况:

A) RES是进程实际占用的内存大小,判断当前进程是否充分使用内存或内存分配过大,然后进行数据库内存相关参数的调整。

VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。

RES     进程使用的、未被换出的物理内存大小,单位kb

B) %CPU是进程的CPU使用百分比,一个核的%CPU最大值为100%,16核的%CPU最大值为1600%;CPU满负荷运行的理想情况为进程CPU使用占总CPU使用的60%-70%。

C) %us:用户级CPU使用情况;

%sy:系统CPU使用情况;

%ni:系统nice操作CPU使用情况,nice操作即进程内各线程的优先级切换操作;

dmserver进程主要是占用%us和%sy的使用情况,假如运行过程中dmserver的%ni使用情况很高,占总CPU使用的30%,可能是版本有问题,线程调度处理优先级占有大量资源。

D) MEM:TOTAL是机器的总内存大小.

--内存使用率

top(分别统计VIRT/ RES)

--IO

通过nmon工具进行查看,磁盘繁忙程度如果持续在50%以上,需要对数据库状态进行确认,看是否有大数据量操作sql语句,或者不正常的数据库访问。磁盘I/O过高会导致数据库系统运行收到影响

--I/O速率

hdparm -Tt 存储设备名

--网络速率

ethool 网卡名  (操作完毕后,输出信息中Speed:这一项就指示了网卡的速度)

lspci -vvv | grep Kernel

--查询所有数据文件所占磁盘空间

df -h

--系统dmserver 内存

通过操作系统free  –m 内存运行情况

 

 

查看表空间的名称及大小

select NAME tablepace_name, total_size*SF_GET_PAGE_SIZE()/1024/1024||'M' ts_size from V$TABLESPACE;   

查看表空间物理文件的名称及大小

select t.name tablespace_name,t.id file_id,d.path file_name,d.total_size*SF_GET_PAGE_SIZE()/1024/1024||'M' total_space

from v$tablespace t, v$datafile d where t.id=d.group_id;          

查看控制文件       

Select  para_value  from  V$dm_ini  where  PARA_NAME='CTL_PATH' ;   

查看日志文件

select path from V$RLOGFILE;

查看表空间的使用情况

select t.name tablespace_name,d.free_size*SF_GET_PAGE_SIZE()/1024/1024||'M' free_space

from v$tablespace t, v$datafile d where t.id=d.group_id ;

 

2. 硬件配置

 

--查看机器IP

ifconfig 网卡名

--查看操作系统及版本

cat /etc/issue

--查看内存大小

free -g

--查看CPU总核数

lscpu

--查看数据文件大小

du -h 文件名 文件名 文件名

 

3.通过log_commit分析查找sql语句

 

分步进行:

1. 进入sql日志存放目录 cd  /home/dmdba/dm/dmdbms/log

2. ls -lhtr log_commit* 将日志进行排序,另外单个日志操作系统记录时间为该日志最后写入时间,可根据改时间查找某个时间段的操作。

3. 利用正则表达式查找SQL耗时,查找1s以上为例

cat log_commit_20170508_090630.log|grep [1-9][0-9][0-9][0-9]’(ms)’

4. 查找结果记录成文本方式,sql.txt根据需要任意命名

cat log_commit_20170508_090630.log|grep [1-9][0-9][0-9][0-9]’(ms)’>>sql.txt

5. 查找对某些表操作耗时语句

cat log_commit_20170508_090630.log|grep [1-9][0-9][0-9][0-9]’(ms)’|grep T_*