目录
(a)show variables like 'log_bin';
3.获取缓存命中率(BufferCacheHitRatio)
一.Linux巡检
总括 | |
| top | 动态地查看系统中各个进程的资源占用状况。 |
| uptime | 查看系统运行时间、负载情况。 |
| df -h | 查看文件系统空间使用情况。 |
| free -m | 查看内存使用情况。 (以MB为单位显示内存使用情况。) |
| free -h | 查看内存使用情况。 以人类可读的格式(如KB、MB、GB)显示内存使用情况。 |
| netstat -ant | 查看当前网络连接情况。 |
| du -sh *|sort -rh | 查看应用服务器下面的日志大小情况。 (要cd到logs或需要检查的文件对应目录中) |
1.top
(a)top
作用:动态地查看系统中各个进程的资源占用状况。
在服务器中输入top即可启动该命令。启动后,会显示一个动态更新的表格。
注意:top命令显示的是动态更新的信息,因此它可能会占用一定的CPU资源,可能会影响到系统的性能。

| top表格各列字段及含义 | |
| PID | 进程ID |
| USER | 进程所有者 |
| PR | 进程优先级 |
| NI | nice值(优先级调整值) |
| VIRT | 进程使用的虚拟内存总量,单位kb |
| RES | 进程使用的、未被换出的物理内存大小,单位kb |
| SHR | 共享内存大小,单位kb |
| S | 进程状态(如R表示正在运行,S表示休眠等) |
| %CPU | 上次更新到现在的CPU时间占用百分比 |
| %MEM | 进程使用的物理内存百分比 |
| TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
| COMMAND | 启动进程的命令名/命令行 |
主要观察服务器的CPU使用状况,过高的时候代表系统可能无法正常运行。
(b) top -o %CPU
按CPU使用率排序

(c)top -o %MEM
按内存使用率排序

(d)交互命令
| 在top命令运行时,可以按以下键进行交互 | |
| P | 按CPU使用率排序(等同于:top -o %CPU) |
| M | 按内存使用量排序(等同于:top -o %MEM) |
| N | 以PID顺序排序 |
| T | 按时间/累计时间排序 |
| k | 终止一个进程(需要输入进程ID) |
| r | 改变进程优先级(需要输入进程ID和优先级) |
| q | 退出top |
| f(F) | 进入字段管理界面,用于选择显示的字段 |
| o(O) | 改变字段的排序顺序(升序/降序) |
| h(?) | 显示帮助信息 |
| 1 | 显示每个核心的cpu使用情况 |
示例:在top命令运行时,按1如下图可以看到每个核心的cpu使用情况。

2.uptime
作用:查看系统运行时间、负载情况。

| 17:25:15 | up 505 days, 5:30 | 1 user | load average: 0.17, 0.41, 0.46 |
| 当前系统时间 | 系统已开机运行了多长时间 即:已运行505天5小时30分钟 | 当前登录用户数:1 即:活动用户 | 过去 1分钟、5分钟、 15 分钟内可用的系统负载的平均值 |
3.df -h
作用:查看文件系统空间使用情况。

这个大小跟前一个月的空间进行比对,大概就能知道一个月增长了多少空间。但是一般超过80%以上就要开始关注了,空间一旦不足,会影响系统使用。
4.1.free -m
作用:查看内存使用情况。(以MB为单位显示内存使用情况。)

如果发现空闲内存很小,可以通过: ps aux --sort=-%mem 这个命令,将占用内存高的部分给打印出来。
4.2.free -h
作用:查看内存使用情况。以人类可读的格式(如KB、MB、GB)显示内存使用情况。

5.netstat -ant
作用:查看当前网络连接情况。

这几个端口可以看到处于监听状态,正常运行。
6.du -sh *|sort -rh
作用:查看应用服务器下面的日志大小情况。(要cd到logs或需要检查的文件对应目录中)

可以由大到小排序,如果发现哪一天的日志大小远超平均大小,这个时候要注意了,查看下这个日志上的报错信息,看下是哪里出问题了。
注:快速查询所有日志:find / -name "*.log"
二.MySQL数据库巡检
数据库监听端口:netstat -ano|grep 3306

1.数据库版本
select version();

2.数据库运行时长
SHOW STATUS LIKE "Uptime";

3.数据文件路径
SHOW VARIABLES LIKE 'datadir';

4.数据库大小(MB)
SELECT
table_schema AS `Database`,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM
information_schema.TABLES
GROUP BY
table_schema;
注:`Database`与 `Size (MB)`原先使用的是单引号,但是实际使用有发生报错,改为了反引号

5.数据库最大(并发)连接数
show variables like '%max_connections%';

6.数据库最大已连接次数、最长连接时间
show status like 'max_used_connections%';

7.当前连接数
show status like '%Threads_connected%';

8.数据库实际连接情况
select client_ip,count(client_ip) as client_num from (select substring_index(host,':' ,1) as client_ip from information_schema.processlist ) as connect_info group by client_ip order by client_num desc;

9.锁等待检查
show engine innodb status;

查看最近死锁的日志,Status里有数据的话可以copy出来,去分析有lock的死锁语句
10.检查是否开启log-bin日志
(a)show variables like 'log_bin';

看到 Value = ON 时,这表示MySQL的二进制日志(binlog)功能已经被启用,但是并没有直接显示二进制日志文件的路径。ON 仅仅是一个标志,表示binlog是活跃的。要找到实际的binlog文件路径和文件名,可能需要查看MySQL的配置文件(如 my.cnf 或 my.ini),因为在那里通常会指定binlog的基本路径和前缀。
(b)当前正在使用的binlog文件的完整路径和名称
SHOW BINARY LOGS;

三.SQLServer数据库巡检
1.日志大小及空间占用率使用情况
常用:DBCC SQLPERF(LOGSPACE);
较标准:DBCC SQLPERF(LOGSPACE, <database_name>)

2.表空间及数据文件使用情况
SELECT
name AS [File Name],
size/128 AS [Size in MB],
FILEPROPERTY(name, 'SpaceUsed')/128 AS [Space Used in MB],
(size - FILEPROPERTY(name, 'SpaceUsed'))/128 AS [Available Space in MB]
FROM
sys.database_files;

数据文件:3818MB
3.获取缓存命中率(BufferCacheHitRatio)
SELECT (a.cntr_value * 1.0 / b.cntr_value) * 100.0 [BufferCacheHitRatio]
FROM (SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name = 'Buffer cache hit ratio'
AND object_name = CASE WHEN @@SERVICENAME = 'MSSQLSERVER'
THEN 'SQLServer:Buffer Manager'
ELSE 'MSSQL$' + rtrim(@@SERVICENAME) +
':Buffer Manager' END ) a
CROSS JOIN
(SELECT * from sys.dm_os_performance_counters
WHERE counter_name = 'Buffer cache hit ratio base'
and object_name = CASE WHEN @@SERVICENAME = 'MSSQLSERVER'
THEN 'SQLServer:Buffer Manager'
ELSE 'MSSQL$' + rtrim(@@SERVICENAME) +
':Buffer Manager' END ) b;

缓存命中率100%,缓存大小合适。
4.找出执行最慢的SQL语句
SELECT TOP 20
total_worker_time / 1000 AS [总消耗CPU 时间(ms)],
execution_count [运行次数],
qs.total_worker_time / qs.execution_count / 1000 AS [平均消耗CPU 时间(ms)],
last_execution_time AS [最后一次执行时间],
max_worker_time / 1000 AS [最大执行时间(ms)],
SUBSTRING(qt.text, qs.statement_start_offset / 2 + 1,
(CASE WHEN qs.statement_end_offset = -1 THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2 + 1
) AS [使用CPU的语法],
qt.text [完整语法],
dbname = DB_NAME(qt.dbid),
OBJECT_NAME(qt.objectid, qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH (NOLOCK) CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count > 1 ORDER BY total_worker_time DESC;

注意:这个查询可能会返回非常大的SQL文本,特别是当qt.text包含完整的存储过程或函数时。如果您只对消耗CPU时间的那部分SQL感兴趣,可以只关注[使用CPU的语法]列。
四.Oracle数据库巡检
1.oracle进程数
(a)最大进程数
SELECT value AS max_processes
FROM v$parameter
WHERE name = 'processes';

(b)实际进程数
SELECT COUNT(*) AS process_count FROM v$process;

2.游标数
(a)游标数参数
SELECT name, value
FROM v$parameter
WHERE name = 'open_cursors';

(b)数据库实例中所有未关闭的、活跃的游标总数
SELECT COUNT(*) AS "当前游标数"
FROM V$OPEN_CURSOR;

(c)数据库游标使用情况
SELECT
a.value AS open_cursors,
b.value AS max_open_cursors,
a.value/b.value*100 AS usage_ratio
FROM v$sysstat a, v$parameter b
WHERE a.name = 'opened cursors current'
AND b.name = 'open_cursors';

3.密码有效期
(a)查看密码有效期
select * from dba_profiles s where s.profile='DEFAULT' AND resource_name like 'PASSWORD%';

select * from dba_users

(b)修改密码有效期设置
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
注:修改之后不需要重启动数据库,会立即生效。
4.缓存命中率
查看缓冲区命中率(如果命中率低于90%则需加大数据库参数db_cache_size)
SELECT a.VALUE + b.VALUE logical_reads,
c.VALUE phys_reads,
round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio
FROM v$sysstat a, v$sysstat b, v$sysstat c
WHERE a.NAME = 'db block gets'
AND b.NAME = 'consistent gets'
AND c.NAME = 'physical reads';

5.性能最差的SQL
SELECT * FROM ( SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text
FROM v$sqlarea
ORDER BY disk_reads DESC)
WHERE ROWNUM<100;

6.查询表空间概况
select a.tablespace_name, a.bytes total, c.bytes free, ((a.bytes - c.bytes) * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " from sys.sm$ts_avail a, sys.sm$ts_free c where a.tablespace_name = c.tablespace_name order by tablespace_name;

7.查询数据文件概况
select file_name, round(bytes / (1024*1024), 0) total_space, round(MAXBYTES / (1024*1024), 0) max_space, AUTOEXTENSIBLE, INCREMENT_BY, status, online_status from dba_data_files order by tablespace_name;

8.查看大表
注意:找出log对应的表,特别是sip的LONG_TEXT,即便数据删除后,空间也不会释放
SELECT B.TABLE_NAME, B.COLUMN_NAME, A.SEGMENT_NAME, a.SEGMENT_TYPE, a.segment_subtype, ROUND(SUM(A.BYTES / 1024 / 1024 / 1024), 2) G FROM DBA_SEGMENTS A LEFT JOIN DBA_LOBS B ON A.OWNER = B.OWNER AND A.SEGMENT_NAME = B.SEGMENT_NAME --WHERE B.SEGMENT_NAME = 'SYS_LOB0000026212C00002$$' HAVING ROUND(SUM(A.BYTES / 1024 / 1024 / 1024), 2) >1 GROUP BY B.TABLE_NAME, B.COLUMN_NAME, A.SEGMENT_NAME,a.SEGMENT_TYPE,a.segment_subtype;

9.Oracle备份及恢复
·数据泵expdp、impdp
(a)建目录
create or replace directory ORALCE_DB_BACKUP as '/home/oracle/backup';
(b)备份表
expdp user/password@172.16.32.104:1521/orcl directory=EXPDIR tables=LONG_TEXT dumpfile=longtext0715.dmp logfile=explongtext0715.log
(c)恢复表
impdp user/password@172.16.32.104:1521/orcl directory=EXPDIR tables=LONG_TEXT dumpfile=longtext0715.dmp logfile=implongtext0715.log
PS:以上均以作者君使用到的项目、产品为示例,仅做参考。可根据自身情况,修改语句中的视图、表与字段,进行相关查询。



6377

被折叠的 条评论
为什么被折叠?



