oracle query – 관리 명령.

오라클 관리에 필요한 쿼리들.

# 오라클이 spfile(동적파라메터)을 사용하는지 pfile(정적파라메터)을 사용하는지 확인

show parameter pfile;

# oracle Background process 확인

select program, pid, spid from v$process;

#v$sysstat 통계 보기
# class 1 : instance 전반
# class 2 : redo log buffer 통계
# class 4 : log 관련 통계
# class 8 : database buffer cache 통계
# class 16 : OS 관련 통계
# class 32 : 병렬처리 관련 통계
# class 64 : table access 통계
# class 128 : debug용

select name, class, value from v$sysstat;

#로그온중인 사용자 정보 보기.

select sid, username, type, server from v$session;

# 10000byte(10KB)이상 PGA를 사용하는 세션 보기.

select username, name, value 
from v$statname n, v$session s, v$sesstat t
where s.sid = t.sid and n.STATISTIC# = t.statistic#
and s.type = 'USER' and username is not null
and n.name = 'session pga memory' 
and t.value > 10000;

#oracle Process 사용 현황보기

select spid, program, pga_used_mem, pga_alloc_mem
from v$process;

select name, description from v$bgprocess;

#dedicate server -> shared server 전환

alter system set dispatchers = '(protocol = tcp)';

#shared server, dispatcher 보기

select name, status, circuit from v$shared_server;
select name, status from v$dispatcher;

#sga 보기(SGA = Shared_pool + buffer_cache + redo log buffer+ java pool + large pool+etc.)

show sga;
select name, value, issys_modifiable from v$parameter
where name in ('shared_pool_size', 'db_cache_size', 'log_buffer');
select name, value, issys_modifiable from v$parameter
where name in ('large_pool_size', 'java_pool_size');
show parameter sga;

# SGA 크기 변경(instance 재실행 필요)

alter system set sga_max_size = 300M scope=spfile;

#shared_pool_size 변경

alter system set shared_pool_size=100M;

#db_cache_size 변경

alter system set db_cache_size=150M;

#cache_size 확인

select name, value, issys_modifiable from v$parameter
where name like '%cache_size';

#PGA 확인

show parameter pga;
show parameter sort_area_size;

#sort 횟수와 대상행수 조회

select * from v$sysstat
where name like '%sort%';

#Sort 영역 사용량 조회(디스크sort 가 전체의 5%초과할때 sort memory 부족함)

select m.value memory, d.value disk
from v$sysstat m, v$sysstat d
where m.name = 'sorts (memory)' and d.name = 'sorts (disk)';

# SGA 상태 확인

select * from v$sgastat order by pool desc, name;

# 제어화일 확인

select * from v$controlfile;

select * from v$controlfile_record_section;

# data 화일 확인

select * from v$datafile;
select * from dba_data_files;
select file#, name, status, bytes/1024/1024 MB from v$datafile;
select FILE_NAME, TABLESPACE_NAME, BYTES/1024/1024 MB, STATUS  from dba_data_files;

# temporary 화일 확인

select * from v$tempfile;
select * from dba_temp_files; 

select STATUS, BYTES/1024/1024 MB, NAME from v$tempfile;
select FILE_NAME, BYTES/1024/1024 MB, STATUS from dba_temp_files;

# Temporary 테이블 스페이스 현황 보기

select tablespace_name, sum(bytes)/1024/1024 MB
from dba_temp_files
group by tablespace_name;

# Temporary 테이블 스페이스 High Watermark 확인

select tablespace_name, sum(bytes_cached)/1024/1024 MB
from v$temp_extent_pool
group by tablespace_name;

# Temporary 테이블스페이스 사용량 조회

select ss.tablespace_name, sum(ss.used_blocks*ts.blocksize)/1024/1024 MB
from gv$sort_segment ss, sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name;

# REDO 로그 화일 확인

select * from v$logfile;

# 로그화일 상태 확인

select * from v$log;

# archive log 화일 확인

select * from v$archived_log;

show parameter archive;

# 화일 입출력 회수

select FILE#, PHYRDS, PHYWRTS, PHYBLKRD, PHYBLKWRT, READTIM, WRITETIM
from v$filestat;

select a.FILE#, b.FILE_NAME, a.PHYRDS, a.PHYWRTS, a.PHYBLKRD, a.PHYBLKWRT, a.READTIM, a.WRITETIM
from  v$filestat a, dba_data_files b
where a.file#=b.file_id;

select a.FILE#, b.NAME, a.PHYRDS, a.PHYWRTS, a.PHYBLKRD, a.PHYBLKWRT, a.READTIM, a.WRITETIM
from v$filestat a, v$datafile b
where a.file# = b.file#

# TABLE 조작 횟수

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

# Tablespace Extent(DICTIONARY 인지 LOCAL인지)

select TABLESPACE_NAME, EXTENT_MANAGEMENT from dba_tablespaces;

# Tablespace EXTENT 방법 (LOCAL 결과 SYSTEM 이면 자동)

select tablespace_name, allocation_type, initial_extent
from dba_tablespaces
where extent_management='LOCAL';

select TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT, PCT_INCREASE, MAX_EXTENTS
from dba_tablespaces
where EXTENT_MANAGEMENT = 'DICTIONARY';

# tablespace, segment 조회

select tablespace_name, segment_name, owner
from dba_segments
where tablespace_name in ('userts', 'sampts');

# system tablespace 사용량 조회

select username, tablespace_name, bytes, max_bytes
from dba_ts_quotas;

# user tablespace 조회

select username, default_tablespace, file_name
from dba_users, dba_data_files
where default_tablespace = tablespace_name;

# temporary 화일의 auto extend 확인

select file_name, tablespace_name, autoextensible, bytes
from dba_temp_files;

# data file의 최대 용량

select FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE, BYTES
from dba_data_files;

# 어떤테이블에 어떤 인덱스가 정의되어 있는지 확인.

select TABLE_NAME, INDEX_NAME, INDEX_TYPE, UNIQUENESS
from dba_indexes
where owner in ('SCOTT', 'HR');

# 인덱스가 오름차순인지 내림차순인지 확인.

select index_name, table_name, descend
from dba_ind_columns
where index_owner in ('SCOTT', 'HR');

# 어느 테이블에 synonym 오즈젝트가 작성되어 있는지 확인.

select table_name, synonym_name
from dba_synonyms
where owner in ('SCOTT', 'HR');

# 어느 테이블에 어떤 뷰가 작성되어 있는지 확인.

select VIEW_NAME, TEXT
from dba_views;

# PERFSTAT 유저의 테이블 제쟉확인.

select OWNER, CONSTRAINT_NAME, TABLE_NAME
from dba_constraints
where owner in ('PERFSTAT');

# 수동으로 REDO 로그 화일 전환
# 사용중인 로그화일 확인(CURRENT)

select GROUP#, SEQUENCE#, STATUS
from v$log;

alter system switch logfile;

# 테이블 스페이스의 확장
# 화일 크기 증가시키는 경우

alter database datafile '.dbf' resize 150M;

# 화일개수를 증가시키는 경우

alter tablespace tablespace-name add datafile ' .dbf' size 10M;

# 자신이 작성한 테이블 확인

select * from cat;

# primery key가 없는 테이블 확인

select table_name from user_tables where not exists(
select 1 from user_constraints
where user_constraints.table_name = user_tables.table_name
and user_constraints.constraint_type = 'P');

# 사용자 snowfox의 테이블 ‘TEST’ 분석과 결과 보기(table이름은 대문자로)

analyze table snowfox.TEST compute statistics;

select table_name, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, last_analyzed
from dba_tables
where table_name='TEST';

# 테이블스페이스 사용량 보기(MB단위)

select a.tablespace_name,
               round(a.bytes_alloc / 1024 / 1024, 2) current_size,
               round(nvl(b.bytes_free, 0) / 1024 / 1024, 2) free_size,
               round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024, 2) used_size,
               round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2) free_rate,
               100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2) used_rate,
               round(maxbytes/1048576,2) max_size
        from   ( select f.tablespace_name,
                        sum(f.bytes) bytes_alloc,
                        sum(decode(f.autoextensible, 'yes',f.maxbytes,'no', f.bytes)) maxbytes
                 from dba_data_files f
                 group by tablespace_name) a,
               ( select f.tablespace_name,
                        sum(f.bytes)  bytes_free
                 from dba_free_space f
                 group by tablespace_name) b
        where a.tablespace_name = b.tablespace_name (+)
        union
        select tablespace_name,
               round(sum(bytes_used + bytes_free) / 1048576, 2),
               round(sum(bytes_free) / 1048576,2),
               round(sum(bytes_used) / 1048576,2),
               round((sum(bytes_free) / sum(bytes_used + bytes_free)) * 100,2) free_rate,
               100 - round((sum(bytes_free) / sum(bytes_used + bytes_free)) * 100,2) used_rate,
               round(max(bytes_used + bytes_free) / 1048576, 2)
        from   sys.v_$temp_space_header
        group by tablespace_name
        order by 1;

답글 남기기

Your email address will not be published.