文章目录
一、服务器检查
1、查看系统配置
-
查看主机名:
uname -n
-
查看运行的硬件平台类型:
uname -im
-
查看cpu类型:
uname -p
-
查看内存信息:
free -h
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIlzzJ1z-1668838635190)(C:\Users\zhangjunwei\AppData\Roaming\Typora\typora-user-images\image-20221101144258166.png)]
-
查看操作系统版本:
lsb_release -d
-
查看操作系统内核信息:
uname -sr
-
查看服务器信息:
/usr/sbin/dmidecode |grep "Product Name"
-
开机时间以及僵尸进程
total : 进程总数
running : 正在运行的进程数
sleeping : 睡眠的进程数
stopped : 停止的进程数
zombie : 僵尸进程数
us : 用户空间占用CPU百分比
sy : 内核空间占用CPU百分比
ni : 用户进程空间内改变过优先级的进程占用CPU百分比
id : 空闲CPU百分比
wa : 等待输入输出的CPU时间百分比
hi : 硬中断(Hardware IRQ)占用CPU的百分比
si : 软中断(Software Interrupts)占用CPU的百分比
st : 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。备注:主要看有无僵尸线程数,以及相关经常占内存是否正常
2、内容参数
-
共享内存情况:
cat /etc/sysctl.conf |grep -v "#" |grep -v "^$"
-
oracle用户限制:
[root@wtdb2 ~]# su - oracle [oracle@wtdb2 ~]$ ulimit -a
3、磁盘空间
-
磁盘空间情况:
df -h 正常:rate<80% 关注:80%<rate<90% 警告:90%>rate
-
io情况
iostat -x l 5
-
%iowait:CPU用于等待I/O操作占用CPU总时间的百分比
%idle:CPU 空闲时间占比await:平均每次 IO 请求的等待时间(包括等待时间和处理时间,毫秒为单位)
svctm:平均每次 IO 请求的处理时间(毫秒为单位)
%util:每秒用于 IO 操作的时间占比 -
若 %iowait 的值过高,表示磁盘存在 I/O 瓶颈 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量 若 %idle 的值持续低于 1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是CPU await 的值越接近 svctm 越好 %util 不宜过高
-
4、数据库配置
- 查看RDBMS版本:
select * from v$version;
- 查看安装选项:
select * from v$option;
- 查看已被使用的产品选项:
select comp_id, comp_name, version,status from dba_registry;
- 数据库参数:
show parameter spfile;
select NAME,VALUE,ISDEFAULT as "Default",ISSYS_MODIFIABLE as "Dynamic" from v$system_parameter order by name;
//数据库非默认参数
select name , value from v$parameter where isdefault='FALSE';
5、内存管理配置
- 查看sga
show sga
show parameter sga
- 查看pga:
show parameter pga
-
查看内存
free -h
total:表示系统的总内存
used:表示应用程序已经使用的内存
free:表示当前还没有被使用的内存
shared:表示共享链接库使用的内存
buff/cache:表示系统的page,cache和buffer使用到的内存
available:表示应用程序还可以申请到的内存关注对象: available 内存占比不宜过低 free 内存应留有余量,因为这是系统不释放 buff/cache 直接可以调用的内存
6、文件和日志
-
查看和跟踪文件
-
检查alert.log
show parameter dump
-
检查控制文件
记录数据库的物理机构及同步信息,建议同时存在2份以上的控制文件,并保存在不同的磁盘上。
SQL> show parameter control_files; SQL>select status,name,is_recovery_dest_file,(block_size*file_size_blks)/1024/1024 "Mbytes" from v$controlfile;
-
检查审计文件
SQL> show parameter audit_file_dest
-
redo log文件
建议配置多redo日志组(2个以上的日志组),对redo日志进行镜像保存,配置2个及其以上的redo日志镜像。
connect as sysdba SQL> select group#,thread#,bytes,members,archived,status from v$log; SQL> select * from v$logfile order by 1; SQL> select l.group#, lf.member as Logfile,l.status,l.bytes/1024/1024 as "Size/MB" from v$log l,v$logfile lf where l.group#=lf.group# order by group#;
-
archived log 文件
如果空间允许,建议归档日志保存2份及其以上镜像。
connect as sysdba SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /u02/arch Oldest online log sequence 31135 Next log sequence to archive 31139 Current log sequence 31139 select * from v$archive_dest; select * from v$archive; select * from v$archived_log;
-
数据文件
a、查看数据文件(所有数据文件总和)大小
SQL> select count(*) "count",sum(bytes)/1024/1024 "Mbyters" from v$datafile; count Mbyters
b、查看数据文件位置及大小
SQL> select tablespace_name,file_id,bytes,autoextensible,status,file_name from dba_data_files; TABLESPACE_NAME FILE_ID BYTES AUT STATUS FILE_NAME
c、查看数据文件是否自动扩展,默认系统表空间的是自动扩展的。
SQL> select file_id, tablespace_name, bytes, maxbytes, maxblocks, increment_by, file_name from dba_data_files where autoextensible = 'YES'; FILE_ID TABLESPACE_NAME BYTES MAXBYTES MAXBLOCKS INCREMENT_BY FILE_NAME
SQL> select count(*) "count",sum(bytes)/1024/1024 "Mbyters" from v$datafile;
7、表空间
- 查看表空间使用情况,可查询dba_tablespace; dba_free_space; dba_data_files;
select * from (
Select a.tablespace_name,
round(a.bytes/1024/1024,3) total_bytes,
round(b.bytes/1024/1024,3) free_bytes,
round(a.bytes/1024/1024 - b.bytes/1024/1024,3) use_bytes,
round((1 - b.bytes/a.bytes)*100,3) || '%' use
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
round(c.bytes/1024/1024,3) total_bytes,
round( (c.bytes-d.bytes_used)/1024/1024,3) free_bytes,
round(d.bytes_used/1024/1024,3) use_bytes,
round(d.bytes_used*100/c.bytes,3) || '%' use
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name;
- 表空间可用性检查(online or offline)
SQL> select tablespace_name,status from dba_tablespaces;
- 查看表空间管理类型(数据字典管理or本地管理,9i之后默认的管理方式为本地管理方式
SQL> select tablespace_name, extent_management from dba_tablespaces;
-
查看临时表空间
-
a、检查当前永久表空间和临时表空间
SQL> select tablespace_name, contents from dba_tablespaces;
-
b、检查是否存在永久表空间类型的临时表空间(10G之后应该不会有这种情况)
SQL> select u.username, t.tablespace_name from dba_users u, dba_tablespaces t where u.temporary_tablespace = t.tablespace_name and t.contents <> 'TEMPORARY';
-
c、检查临时表空间大小
SQL> select tablespace_name, sum(bytes)/1024/1024 mb from dba_temp_files group by tablespace_name;
-
d、查看临时表空间使用的高水位线(同一时间最大的使用量)
SQL> select tablespace_name, sum(bytes_cached)/1024/1024 mb from v$temp_extent_pool group by tablespace_name;
-
8、数据库对象
-
检查无效的数据库对象
SQL> SELECT owner,object_type,object_name,status,LAST_DDL_TIME FROM dba_objects WHERE status like 'INVALID';
-
查看在系统表空间(system,sysaux)内的非系统用户(sys,system)对象。
SQL> select owner, segment_name, segment_type from dba_segments where tablespace_name = 'SYSTEM' and owner not in ('SYS','SYSTEM');
-
检查数据库连接
SQL> SELECT * FROM DBA_DB_LINKS;
-
检查索引
索引需要维护。对于表的删除或者添加操作都会间接地对index进行相应的操作。过时的index结构会产生碎片,此时index需要被重新建立。
belevel是B-tree索引形式的一部分,与oracle为搜索某些记录而减少index搜索的次数相关联。在一些情况下,BLEVEL需要单独的磁盘命中。
如果blevel>4,那么建议重建index
SQL> select * from dba_indexes where blevel>4; -
数据行数最大前十的表
select t.table_name,t.tablespace_name,t.num_rows/10000 "rows(万行)" from user_tables t order by t.num_rows desc
-
查询执行最慢的sql
select * from(select sa.SQL_TEXT, sa.EXECUTIONS, round(sa.ELAPSED_TIME/1000000,2) "总执行时间", round(sa.ELAPSED_TIME/1000000/sa.ELAPSED_TIME,2) "平均执行时间", sa.COMMAND_TYPE, sa.PARSING_USER_ID "用户id", u.USERNAME "用户名", sa.HASH_VALUE from v$sqlarea sa left join all_users u on sa.PARSING_USER_ID=u.USER_ID where sa.EXECUTIONS>0 and u.username='填写用户名' order by (sa.ELAPSED_TIME/sa.EXECUTIONS) desc ) where rownum<=50--查询的数据数目
-
查询次数最多的sql
select s.sql_text, s.EXECUTIONS, s.PARSING_USER_ID, rank() over(order by executions desc ) exec_rank from v$sql s left join all_users u on u.USER_ID =s.PARSING_user_ID
9、安全管理
database / administrator
检查sys/system 不要使用默认密码
检查被授予DBA权限的用户,收回不必要的select grantee,granted_role from dba_role_privs where granted_role='DBA'
检查被授予SYSDBA权限的用户
select * from v$pwfile_users;
10、监听器设置
-
位于服务器端的监听程序时单独的进程。它从客户端接收连接请求,并管理这些对服务端的请求。
cd $ORACLE_HOME/network/admin more listener.ora
-
SQLNET.ORA设置,包含了客户端和服务器对SQL*NET配置的设置信息。
cd $ORACLE_HOME/network/admin more sqlnet.log
-
TNSNAMES.ORA
包含了与连接描述符相匹配的网络服务名。连接描述符包括监听程序的地址以及connect_data
cd $ORACLE_HOME/network/admin more tnsnames.ora
11、数据库备份和恢复情况
-
检查备份恢复策略
建议:根据不同的数据库失败情况制定相应的恢复策略
全库恢复
表空间恢复
数据文件恢复
表恢复
制定的恢复策略进行恢复测试。 -
检查数据库备份是否正常
crontab -l
服务器对SQL*NET配置的设置信息。
cd $ORACLE_HOME/network/admin
more sqlnet.log
-
TNSNAMES.ORA
包含了与连接描述符相匹配的网络服务名。连接描述符包括监听程序的地址以及connect_data
cd $ORACLE_HOME/network/admin more tnsnames.ora
11、数据库备份和恢复情况
-
检查备份恢复策略
建议:根据不同的数据库失败情况制定相应的恢复策略
全库恢复
表空间恢复
数据文件恢复
表恢复
制定的恢复策略进行恢复测试。 -
检查数据库备份是否正常
crontab -l
[外链图片转存中…(img-iJj0OKho-1668838635192)]