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_*