1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

Oracle 数据库巡检命令手册

2022-11-27 | 数据库 | 1818ip | 549°c
A+ A-

前言

如果给你一个全新的Oracle单机数据库环境,作为DBA,您需要关注哪些点?本文仅讨论 Linux 主机~

注意:首先申明本文所述并非标准答案,只是个人的一些见解,欢迎👏🏻大家补充完善~

一、 主机层面

1、 主机版本和Oracle版本

「主机版本:」

cat/etc/system-release
cat/etc/redhat-release

「Oracle版本和补丁版本:」

sqlplus-version
opatchlspatches

2、 主机硬件资源

包括CPU负载,物理内存和磁盘使用。

「CPU负载和内存:」

top
free-m

⚠️ 需要注意主机的CPU负载和物理内存使用是否异常,Swap是否被过多使用。

「磁盘使用情况:」

lsblk
fdisk-l
df-Th

⚠️ 显而易见,需要关注磁盘使用情况,是否存在使用率过高。

3、 计划任务 crontab

一般计划任务会布置一些备份策略或者归档删除的策略,我们可以通过crontab来查看:

crontab-l

4、 检查 Hosts 文件和网络配置

cat/etc/hosts
ipaddr
nmcliconnectionshow

5、 检查系统参数文件

cat/etc/sysctl.conf

⚠️ 需注意是否有设置非常规参数。

6、 检查 rc.local 文件

rc.local文件用于配置开机自启动脚本,一般会设置关闭透明大页或者Oracle数据库开机自启。

cat/etc/rc.local

7、环境变量配置

查看环境变量配置,进一步熟悉环境。

cat~/.bash_profile
cat/home/oracle/.bash_profile

8、 检查系统服务

systemctlstatusfirewalld.service
getenforce
cat/proc/cmdline
cat/etc/sysconfig/network

二、数据库层面

1、查看数据库实例和监听

ps-ef|grepsmon
su-oracle
lsnrctlstatus

2、 数据库表空间使用

sqlplus/assysdba
colTABLESPACE_NAMEfora20
selecttbs_used_info.tablespace_name,
tbs_used_info.alloc_mb,
tbs_used_info.used_mb,
tbs_used_info.max_mb,
tbs_used_info.free_of_max_mb,
tbs_used_info.used_of_max||'%'used_of_max_pct
from(selecta.tablespace_name,
round(a.bytes_alloc/1024/1024)alloc_mb,
round((a.bytes_alloc-nvl(b.bytes_free,
0))/1024/1024)used_mb,
round((a.bytes_alloc-nvl(b.bytes_free,
0))*100/a.maxbytes)used_of_max,
round((a.maxbytes-a.bytes_alloc+nvl(b.bytes_free,
0))/1048576)free_of_max_mb,
round(a.maxbytes/1048576)max_mb
from(selectf.tablespace_name,
sum(f.bytes)bytes_alloc,
sum(decode(f.autoextensible,
'YES',
f.maxbytes,
'NO',
f.bytes))maxbytes
fromdba_data_filesf
groupbytablespace_name)a,
(selectf.tablespace_name,
sum(f.bytes)bytes_free
fromdba_free_spacef
groupbytablespace_name)b
wherea.tablespace_name=b.tablespace_name(+))tbs_used_info
orderbytbs_used_info.used_of_maxdesc;

3、检查RMAN备份情况

rmantarget/
listbackup;

sqlplus/assysdba
colstatusfora10
colinput_typefora20
colINPUT_BYTES_DISPLAYfora10
colOUTPUT_BYTES_DISPLAYfora10
colTIME_TAKEN_DISPLAYfora10

selectinput_type,
status,
to_char(start_time,
'yyyy-mm-ddhh24:mi:ss'),
to_char(end_time,
'yyyy-mm-ddhh24:mi:ss'),
input_bytes_display,
output_bytes_display,
time_taken_display,
COMPRESSION_RATIO
fromv$rman_backup_job_details
wherestart_time>date'2021-07-01'
orderby3desc;

4、 检查控制文件冗余

查看控制文件数量和位置,是否处于多份冗余状态。

sqlplus/assysdba
showparametercontrol_files
selectnamefromv$controlfile;

5、 检查参数文件

查看数据库参数文件,检查参数使用是否正常。

sqlplus/assysdba
showparameterspfile
createpfile='/home/oracle/pfile.ora'fromspfile;

strings/home/oracle/pfile.ora

6、 归档和闪回是否开启

sqlplus/assysdba
archiveloglist
selectopen_mode,log_mode,flashback_on,force_loggingfromv$database;

7、 检查在线日志和切换频率

「查看在线日志大小:」

setline222
colmemberfora100
selectf.group#,f.member,l.sequence#,l.bytes/1024/1024,l.archived,l.status,l.first_time
fromv$logfilef,v$logl
wheref.group#=l.group#
orderbyf.group#,f.member;

「查看在线日志切换频率:」

coldayfora30
SELECT
SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH:MI:SS'),1,5)DAY,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'00',1,0))H00,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'01',1,0))H01,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'02',1,0))H02,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'03',1,0))H03,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'04',1,0))H04,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'05',1,0))H05,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'06',1,0))H06,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'07',1,0))H07,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'08',1,0))H08,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'09',1,0))H09,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'10',1,0))H10,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'11',1,0))H11,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'12',1,0))H12,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'13',1,0))H13,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'14',1,0))H14,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'15',1,0))H15,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'16',1,0))H16,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'17',1,0))H17,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'18',1,0))H18,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'19',1,0))H19,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'20',1,0))H20,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'21',1,0))H21,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'22',1,0))H22,
SUM(DECODE(SUBSTR(TO_CHAR(first_time,'MM/DD/RRHH24:MI:SS'),10,2),'23',1,0))H23,
COUNT(*)TOTAL
FROM
v$log_historyawhereSYSDATE-first_time<35
GROUPBYSUBSTR(TO_CHAR(first_time,'MM/DD/RRHH:MI:SS'),1,5)orderby1;

8、 查看数据库字符集

select*fromnls_database_parameters;

9、 检查无效对象

SELECTowner,object_name,object_type,status
FROMdba_objects
WHEREstatus<>'VALID'
ORDERBYowner,object_name;

10、 检查分区表对象

setline222
colhigh_valuefora100
selectt2.TABLE_OWNER,t1.table_name,t1.max_partition_name,t2.high_value
from(selecttable_name,max(partition_name)asmax_partition_name
fromdba_tab_partitions
groupbytable_name)t1,
(selectTABLE_OWNER,table_name,partition_name,high_value
fromdba_tab_partitions
wheretablespace_namenotin('SYSAUX','SYSTEM'))t2
wheret1.table_name=t2.table_name
andt1.max_partition_name=t2.partition_name
orderby1,2;

需要注意分区的最大扩展分区,是否需要扩展,建议提前进行扩展,避免拆分。

三、报告层面

通过 Oracle 自带的 awr、ash、awrsqrpt等等报告可以清晰了解当前数据库的情况。

1、awr 报告

AWR 包含了数据库运行情况的详细信息收集,常用于分析收集性能问题。

sqlplus/assysdba@?/rdbms/admin/awrrpt.sql

通过以上命令可以生成 AWR 报告,过程中需要填写 生成报告类型,抓取时间段!

2.ash 报告

ash 能抓取到比 AWR 报告更细节的信息,可以精确到分钟,也较为常用。

sqlplus/assysdba@?/rdbms/admin/ashrpt.sql

如上为生成方式,可选时间段,默认为获取当前时间到15分钟前的报告。

3、 awrsqrpt 报告

用于分析单条 SQL 出现性能问题时的报告,需要知道 SQL_ID。

sqlplus/assysdba@?/rdbms/admin/awrsqrpt.sql

需要填写时间段和sql_id来获取相关sql的报告。

4、 sqltrpt 报告

通常与 awrsqrpt 报告一起使用,可获取 Oracle 提供的关于 SQL 的优化建议,一般来说推荐创建索引和profile较多,适合新手来优化sql使用。

sqlplus/assysdba@?/rdbms/admin/sqltrpt.sql

只需要 SQL_ID 即可。

5、 addmrpt 报告

addmrpt 是 oracle 通过对 awr 报告进行自动诊断生成的报告。

sqlplus/assysdba@?/rdbms/admin/addmrpt.sql

仅作参考作用,真实帮助的意义并不大。过程需要输入时间段。

6、健康检查报告

此类健康检查报告,一般为个人编写脚本执行产生的报告,检查结果根据个人自行定义,通常会包含以上所需信息。当然 Oracle 官方也提供了完整数据库的报告生成方式,这里不做过多介绍,需要的朋友可以联系我获取。

写在最后

通过以上这些检查,相信对你新接触的这个数据库系统已经有了一个大概的了解,接来下,只需要再慢慢的深入分析,然后制订出一套符合实际情况的运维规范来。

本文来源:1818IP

本文地址:https://www.1818ip.com/post/12022.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。