您好,欢迎来到刀刀网。
搜索
您的当前位置:首页RAC日常检查

RAC日常检查

来源:刀刀网


出入境RAC日常检查

数据库名db_name:orcl

Db_unique_name:orcl

service_names:orcl

实例名 主机(1)IP:orcl1

实例名 主机(2)IP:orcl2

主机名 主机(1)IP:hporcl1

主机名 主机(2)IP:hporcl2

查看实例数据库状态:

$ ./srvctl status database -d orcl

Instance orcl1 is running on node hporcl1

Instance orcl2 is running on node hporcl2

查看数据库实例状态:

$ ./srvctl status instance -d orcl -i orcl1,orcl2

Instance orcl1 is running on node hporcl1

Instance orcl2 is running on node hporcl2

查看hporcl1(主机(1)IP)ASM实例状态

$ ./srvctl status asm -n hporcl1

ASM instance +ASM1 is running on node hporcl1.

查看hporcl2(主机(2)IP)ASM实例状态

$ ./srvctl status asm -n hporcl2

ASM instance +ASM2 is running on node hporcl2.

查看节点hporcl1(主机(1)IP)应用程序(VIP、GSD、态:

$ ./srvctl status nodeapps -n hporcl1

VIP is running on node: hporcl1

GSD is running on node: hporcl1

、ONS)的状Listener

Listener is running on node: hporcl1

ONS daemon is running on node: hporcl1

查看节点hporcl2(主机(2)IP)应用程序(VIP、GSD、Listener、ONS)的状态:

$ ./srvctl status nodeapps -n hporcl2

VIP is running on node: hporcl2

GSD is running on node: hporcl2

Listener is running on node: hporcl2

ONS daemon is running on node: hporcl2

用crsctl命令,检查crs相关服务的状态:

crsctl check crs

查看crs及所有的service的状态:

crs_stat –t

crs_stat -ls

列出配置的所有数据库:

srvctl config database

列出RAC数据库的配置:

srvctl config database -d orcl

显示节点(IP:主机(1)IP,主机名:hporcl1)应用程序的配置 —(VIP、GSD、ONS、):

srvctl config nodeapps -n hporcl1 -a -g -s –l

显示节点(IP:主机(2)IP,主机名:hporcl2)应用程序的配置 —(VIP、GSD、ONS、):

srvctl config nodeapps -n hporcl2 -a -g -s –l

ORACLE进程检查:

ps -ef|grep ora_

CRS进程检查:

ps -ef|grep oracm

查看监听程序状态:

lsnrctl status

listener日志检查(主机(1)IP):

/oracle/app/product/10.2/db_1/network/log/ listener.log

/oracle/app/product/10.2/db_1/network/log/ listener_hporcl1.log

listener日志检查(主机(2)IP):

/oracle/app/product/10.2/db_1/network/log/ listener.log

/oracle/app/product/10.2/db_1/network/log/ listener_hporcl2.log

检查SGA和PGA:

show sga

select name ,value from gv$sysstat where name like '%pga%';

select name ,value from v$sysstat where name like '%pga%';

检查参数:

show parameter

集群中所有正在运行的实例:

SELECT inst_id,

instance_number inst_no,

instance_name inst_name,

parallel,

status,

database_status db_status,

active_state state,

host_name host

FROM gv$instance

ORDER BY inst_id;

SELECT inst_id,

instance_name,

host_name,

VERSION,

TO_CHAR(startup_time, 'yyyy-mm-dd hh24:mi:ss') startup_time,

status,

archiver,

database_status

FROM gv$instance;

检查查询服务器的运行模式和数据库安装选项:

select * from v$option;

检查用户:

select username,

account_status,

default_tablespace,

temporary_tablespace,

created

from dba_users;

select a.username,

a.temporary_tablespace \"Temporary Tablespace\

b.contents

from dba_users a, dba_tablespaces b

where a.temporary_tablespace = b.tablespace_name

and b.contents <> 'TEMPORARY';

控制文件检查:

select * from v$controlfile;

无效对象检查:

SELECT owner, object_name, object_type, status, LAST_DDL_TIME

FROM dba_objects

WHERE status like 'INVALID';

表空间和数据文件检查:

select file_id, file_name, tablespace_name, autoextensible

from dba_data_files;

select count(*) from v$datafile;

select name from v$datafile

union

select member from v$logfile

union

select name from v$controlfile

union

select name from v$tempfile;

SELECT file#, ts#, NAME, status, BYTES / 1024 / 1024 size_mb FROM v$datafile UNION ALL SELECT

file#, ts#, NAME, status, BYTES / 1024 / 1024 size_mb FROM v$tempfile;

检查表空间使用情况:

SELECT upper(f.tablespace_name) \"tablespace_name\

d.Tot_grootte_Mb \"tablespace(M)\

d.Tot_grootte_Mb - f.total_bytes \"used(M)\

round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100, \"use%\

f.total_bytes \"free_space(M)\

round(f.total_bytes / d.Tot_grootte_Mb * 100, 2) \"free%\

f.max_bytes \"max_block(M)\"

FROM (SELECT tablespace_name,

2)

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 4 DESC;

SELECT df.tablespace_name,

COUNT(*) datafile_count,

ROUND(SUM(df.BYTES) / 1048576) size_mb,

ROUND(SUM(free.BYTES) / 1048576, 2) free_mb,

ROUND(SUM(df.BYTES) / 1048576 - SUM(free.BYTES) / 1048576, 2) used_mb,

ROUND(MAX(free.maxbytes) / 1048576, 2) maxfree,

100 - ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_used,

ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_free

FROM dba_data_files df,

(SELECT tablespace_name,

file_id,

SUM(BYTES) BYTES,

MAX(BYTES) maxbytes

FROM dba_free_space

GROUP BY tablespace_name, file_id) free

WHERE df.tablespace_name = free.tablespace_name(+)

AND df.file_id = free.file_id(+)

GROUP BY df.tablespace_name

ORDER BY df.tablespace_name;

检查表空间可用性:

select tablespace_name,status from dba_tablespaces;

临时表空间使用情况和性能检查:

SELECT tablespace_name,

extent_management,

block_size,

initial_extent,

next_extent,

min_extents,

max_extents,

pct_increase

FROM dba_tablespaces

WHERE CONTENTS = 'TEMPORARY';

SELECT username, default_tablespace, dba_users;

select tablespace_name,

initial_extent,

next_extent,

max_extents,

pct_increase,

extent_management,

status

from dba_tablespaces

order by extent_management;

temporary_tablespace FROM

select tablespace_name, EXTENT_MANAGEMENT,

SEGMENT_SPACE_MANAGEMENT

from dba_tablespaces;

表和索引分析信息:

SELECT 'table', COUNT(*)

FROM dba_tables

WHERE last_analyzed IS NOT NULL

GROUP BY 'table'

UNION ALL

SELECT 'index', COUNT(*)

FROM dba_indexes

WHERE last_analyzed IS NOT NULL

GROUP BY 'index';

未建索引的表:

SELECT /*+ rule */

owner,

segment_name,

segment_type,

tablespace_name,

TRUNC(BYTES / 1024 / 1024, 1) size_mb

FROM dba_segments t

WHERE NOT EXISTS (SELECT 'x'

FROM dba_indexes i

WHERE t.owner = i.table_owner

AND t.segment_name = i.table_name)

AND t.segment_type IN ('TABLE', 'TABLE PARTITION')

AND t.owner NOT IN ('SYS', 'SYSTEM')

ORDER BY 5 DESC;

sort_segment检查:

select tablespace_name,

extent_size db_blocks_per_extent,

total_extents,

used_extents,

free_extents

from v$sort_segment;

数据库总大小:

select round(sum(space)) all_space_M

from (select sum(bytes) / 1024 / 1024 space

from dba_data_files

union all

select nvl(sum(bytes) / 1024 / 1024, 0) space

from dba_temp_files

union all

select sum(bytes) / 1024 / 1024 space from v$log);

检测连接数情况:

select SW.Sid,

S.Username,

SW.Event,

SW.Wait_Time,

SW.State,

SW.Seconds_In_Wait SEC_IN_WAIT

from v$session S, v$session_wait SW

where S.Username is not null

and SW.Sid = S.Sid

and SW.event not like '%SQL*Net%'

order by SW.Wait_Time Desc;

select count(*) from v$session;

select sid, serial#, username, program, machine, status from v$session;

回滚段信息:

select segment_name, owner, tablespace_name, dba_rollback_segs.status

from dba_rollback_segs, v$Datafile

where file_id = file#;

select segment_name,

initial_extent,

next_extent,

min_extents,

owner,

dba_rollback_segs.status status,

optsize

from dba_rollback_segs, v$rollstat

where dba_rollback_segs.segment_id = v$rollstat.usn;

select substr(V$rollname.NAME, 1, 20) \"Rollback_Name\

substr(V$rollstat.EXTENTS, 1, 6) \"EXTENT\

v$rollstat.RSSIZE,

v$rollstat.WRITES,

substr(v$rollstat.XACTS, 1, 6) \"XACTS\

v$rollstat.GETS,

substr(v$rollstat.WAITS, 1, 6) \"WAITS\

v$rollstat.HWMSIZE,

v$rollstat.SHRINKS,

substr(v$rollstat.WRAPS, 1, 6) \"WRAPS\

substr(v$rollstat.EXTENDS, 1, 6) \"EXTEND\

v$rollstat.AVESHRINK,

v$rollstat.AVEACTIVE

from v$rollname, v$rollstat

where v$rollname.USN = v$rollstat.USN

order by v$rollname.USN;

select r.name Rollback_Name,

p.pid Oracle_PID,

p.spid OS_PID,

nvl(p.username, 'NO TRANSACTION') Transaction,

p.terminal Terminal

from v$lock l, v$process p, v$rollname r

where l.addr = p.addr(+)

and trunc(l.id1(+) / 65536) = r.usn

and l.type(+) = 'TX'

and l.lmode(+) = 6

order by r.name;

回滚段的争用情况:

select name, waits, gets, waits / gets \"Ratio\"

from v$rollstat a, v$rollname b

where a.usn = b.usn;

rollback信息:

select substr(sys.dba_rollback_segs.SEGMENT_ID, 1, 5) \"ID#\

substr(sys.dba_segments.OWNER, 1, 8) \"Owner\

substr(sys.dba_segments.TABLESPACE_NAME, 1, 17) \"Tablespace Name\

substr(sys.dba_segments.SEGMENT_NAME, 1, 12) \"Rollback Name\

substr(sys.dba_rollback_segs.INITIAL_EXTENT, 1, 10) \"INI_Extent\

substr(sys.dba_rollback_segs.NEXT_EXTENT, 1, 10) \"Next Exts\

substr(sys.dba_segments.MIN_EXTENTS, 1, 5) \"MinEx\

substr(sys.dba_segments.MAX_EXTENTS, 1, 5) \"MaxEx\

substr(sys.dba_segments.PCT_INCREASE, 1, 5) \"%Incr\

substr(sys.dba_segments.BYTES, 1, 15) \"Size (Bytes)\

substr(sys.dba_segments.EXTENTS, 1, 6) \"Extent#\

substr(sys.dba_rollback_segs.STATUS, 1, 10) \"Status\"

from sys.dba_segments, sys.dba_rollback_segs

where sys.dba_segments.segment_name sys.dba_rollback_segs.segment_name

and sys.dba_segments.segment_type = 'ROLLBACK'

=

order by sys.dba_rollback_segs.segment_id;

Redo log信息检查:

Redo Log 文件状态:

select f.member \"member\

f.group# \"group\

l.bytes / 1024 / 1024 \"size\

l.status

from v$logfile f, v$log l

where f.group# = l.group#

order by f.group#, f.member;

LogGroup信息:

SELECT group#, sequence#, bytes, members, status from v$log;

关于log_buffer:

select name, value

from v$sysstat

where name in ('redo entries', 'redo buffer allocation

retries');

IO情况检查:

select df.name file_name,

fs.phyrds reads,

fs.phywrts writes,

(fs.readtim / decode(fs.phyrds, 0, -1, fs.phyrds)) readtime,

(fs.writetim / decode(fs.phywrts, 0, -1, fs.phywrts)) writetime

from v$datafile df, v$filestat fs

where df.file# = fs.file#

order by df.name;

Shared Pool Size 命中率:

select round((sum(gets) - sum(reloads)) / sum(gets) * 100, 1) \"libiary cache hit ratio %\"

from v$librarycache

where namespace in ('SQL AREA', 'TABLE/PROCEDURE', 'BODY', 'TRIGGER');

数据字典命中率:

select round((1 - sum(getmisses) / sum(gets)) * 100, 1) \"data dictionary hit ratio %\"

from v$rowcache;

锁竞争:

select substr(ln.name, 1, 25) Name,

l.gets,

l.misses,

100 * (l.misses / l.gets) \"% Ratio (STAY UNDER 1%)\"

from v$latch l, v$latchname ln

where ln.name in ('cache buffers lru chain')

and ln.latch# = l.latch#;

排序命中率:

select a.value \"Sort(Disk)\value \"Sort(Memory)\

round(100*(a.value/decode((a.value+b.value), 0,1,(a.value+b.value))),2) \"% Ratio (STAY UNDER

5%)\"

from v$sysstat a, v$sysstat b

where a.name = 'sorts (disk)'

and b.name = 'sorts (memory)';

数据缓冲区命中率:

select round((1 - (phy.value / (cur.value + con.value))) * 100, 1) || '%' ratio

from v$sysstat phy, v$sysstat cur, v$sysstat con

where phy.name = 'physical reads'

and cur.name = 'db block gets'

and con.name = 'consistent gets';

Miss LRU Hit命中率:

select name, (sleeps / gets) \"Miss LRU Hit%\"

from v$latch

where name = 'cache buffers lru chain';

检查内存排序性能:

select a.name, to_char(value)

from v$statname a, v$sysstat

where a.statistic# = v$sysstat.statistic#

and a.name in ('sorts (disk)', 'sorts (memory)', 'sorts (rows)');

redo log buffer retry ratio:

select to_char(r.value / e.value) \"redo log buffer retry ratio\"

from v$sysstat r, v$sysstat e

where r.name = 'redo buffer allocation retries'

and e.name = 'redo entries';

wait等待检查:

select count(*) total_in_wait from v$session_wait

where event='log buffer space';

select event, total_waits, time_waited, average_wait

from v$system_event

where event like '%undo%';

select sid, seq#, event, WAIT_TIME, SECONDS_IN_WAIT

from v$session_wait

where event not like 'SQL%'

and event not like 'rdbms%';

查询lock锁:

SELECT lpad(' ', DECODE(request, 0, 0, 1)) || sid sess,

id1,

id2,

lmode,

request,

type

FROM V$LOCK

WHERE id1 IN (SELECT id1 FROM V$LOCK WHERE lmode = 0)

ORDER BY id1, request;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务