巡检命令
top
# 查看cpu的空闲时间以及IO等待完成时间
free -h
# 查看avaliable的使用情况
df -h
# 查看磁盘空间占用情况
getenforce
# 使用getenforce命令可以在Linux下查看是否开启了SELinux
# 如果为disable则有风险
systemctl status firewalld
# 查看防火墙是否开启
crontab -l
# 查看有没有未知的定时任务
数据库巡检
select instance_name,host_name,startup_time,status,database_status from v$instance;
— 查看Oracl实例的状态
select group#,status,type,member from v$logfile;
— 检查Oracle在线日志状态
在Oracle数据库中,v$logfile是一个动态性能视图,它提供了关于在线重做日志文件的信息。这些日志文件是Oracle用于记录所有数据库更改(如插入、更新和删除操作)的物理文件。这些更改随后可用于恢复操作,例如实例恢复或介质恢复。 从v$logfile视图中检索以下列的信息:
- group#列表示日志组的编号。
-
CURRENT – 表示该日志文件是当前正在写入的日志文件。
-
ACTIVE – 表示该日志文件包含尚未被归档的更改。
-
INACTIVE – 表示该日志文件不再用于写入,但可能包含尚未被覆盖的更改。
-
UNUSED – 表示该日志文件尚未使用。
type – 这列描述了重做日志文件的类型。对于在线重做日志文件,它通常显示为ONLINE。
member – 这列显示了重做日志文件的完整路径和名称。每个日志组可以有多个成员,这意味着该组的日志数据被写入多个物理文件中。这提供了冗余和容错能力,因为如果一个物理文件损坏,其他文件仍然可用。
通过查询v$logfile视图,数据库管理员可以了解当前哪些日志文件正在使用,哪些处于空闲状态,以及这些日志文件的物理位置。这对于诊断问题、规划磁盘空间以及进行恢复操作都非常重要。
select tablespace_name,status from dba_tablespaces;
— 检查Oracle表空间的状态
select name,status from v$datafile;
— 检查Oracle所有数据文件状态
name – 这列显示了数据文件的完整路径和名称。它提供了数据文件的物理位置信息。
status – 这列描述了数据文件的状态。可能的状态值包括:
- AVAILABLE – 数据文件可用,并且可以被访问。
- RECOVER – 数据文件正在恢复中,可能由于介质故障或其他原因。
- OFFLINE – 数据文件当前不可用,可能由于管理员手动将其设置为离线状态,或者由于其他原因(如磁盘故障)。
- INVALID – 数据文件的状态无效或损坏。
- DELETED – 数据文件已被标记为删除,但其空间可能尚未被释放。
通过查询v$datafile视图,数据库管理员可以了解数据库中所有数据文件的状态和位置。这对于诊断问题、管理磁盘空间、备份和恢复操作以及监控数据库的健康状况都至关重要。例如,如果某个数据文件的状态为OFFLINE,那么可能需要进一步调查为什么它不可用,并考虑将其恢复为AVAILABLE状态。同样,如果数据文件的状态为INVALID或RECOVER,则可能需要进行恢复操作以确保数据的完整性和可用性。
select segment_name,status from dba_rollback_segs;
— 检查所有回滚段状态
SELECT Upper(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB – F.TOTAL_BYTES "已使用空间(M)",
To_char(Round(( D.TOT_GROOTTE_MB – F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
|| '%' "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1
— 检查表空间使用情况
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';
— 检查缓冲区命中率
select index_name, table_name, tablespace_name, status
From dba_indexes
Where owner = 'CTAIS2'
And status <> 'VALID';
— 检查失效的索引
SELECT owner, constraint_name, table_name, constraint_type, status
FROM dba_constraints
WHERE status = 'DISABLE'
and constraint_type = 'P';
— 检查不起作用的约束
下面的命令需要在sqlplus上执行
su – oracle
sqlplus /nolog
conn sys/ as sysdba;
show parameter process;
— 查看db_write_process数设定值
show parameter sessions;
— 查看session数设定值
select count(*) from v$session;
— 查看session数实际值
select sum(percent_space_used) from v$flash_recovery_area_usage;
— 查看归档日志占比
扩展表空间
查看表空间使用百分比
SELECT
b.file_id 文件ID号,
b.tablespace_name 表空间名,
b.bytes / 1024 / 1024 || 'M' 字节数,
(
b.bytes – sum(nvl(a.bytes, 0))
) / 1024 / 1024 || 'M' 已使用,
sum(nvl(a.bytes, 0)) / 1024 / 1024 || 'M' 剩余空间,
100 – sum(nvl(a.bytes, 0)) / (b.bytes) * 100 占用百分比
FROM
dba_free_space a,
dba_data_files b
WHERE
a.file_id = b.file_id
GROUP BY
b.tablespace_name,
b.file_id,
b.bytes
ORDER BY
b.file_id;
查看表空间路径
SELECT
tablespace_name,
file_id,
file_name,
round(bytes /(1024 * 1024), 0) total_space
FROM
dba_data_files
ORDER BY
tablespace_name;
扩展表空间
ALTER TABLESPACE USERS ADD DATAFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS04.DBF' SIZE 10000M;
ALTER DATABASE DATAFILE '+DATA/jhszws/datafile/phistablespace2017.ora' RESIZE 10G;
设置自动扩展
alter database datafile '/erp/TEST/db/data/cux_arch_03.dbf' autoextend on next 1000M maxsize 16000M;
评论前必须登录!
注册