DBA 직원 들 이 파악 해 야 할 SQL 문장 들
SQL code
SELECT
TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE, MIN_EXTLEN, STATUS, CONTENTS, LOGGING, EXTENT_MANAGEMENT,
--
Columns not available in v8.0.x
ALLOCATION_TYPE,
--
Remove these columns if running
PLUGGED_IN,
--
against a v8.0.x database
SEGMENT_SPACE_MANAGEMENT
--
use only in v9.2.x or later
FROM
DBA_TABLESPACES
ORDER
BY
TABLESPACE_NAME;
② 일부 데이터 파일 이 자동 으로 확 장 된 표 공간 으로 설정 되 지 않 은 경우 표 공간 이 가득 차 면 데이터 베 이 스 는 공간 이 없어 서 멈 출 수 있 음 을 의미 합 니 다.감시 표 공간 은 가장 중요 한 것 은 잉여 공간의 크기 나 사용률 을 감시 하 는 것 이다.다음은 감시 표 의 공간 사용률 과 나머지 공간 크기 의 문구 이다.
SQL code
SELECT
D.TABLESPACE_NAME,
SPACE
"SUM_SPACE(M)", BLOCKS SUM_BLOCKS,
SPACE
-
NVL(FREE_SPACE,
0
) "USED_SPACE(M)",
ROUND
((
1
-
NVL(FREE_SPACE,
0
)
/
SPACE
)
*
100
,
2
) "USED_RATE(
%
)", FREE_SPACE "FREE_SPACE(M)"
FROM
(
SELECT
TABLESPACE_NAME,
ROUND
(
SUM
(BYTES)
/
(
1024
*
1024
),
2
)
SPACE
,
SUM
(BLOCKS) BLOCKS
FROM
DBA_DATA_FILES
GROUP
BY
TABLESPACE_NAME) D, (
SELECT
TABLESPACE_NAME,
ROUND
(
SUM
(BYTES)
/
(
1024
*
1024
),
2
) FREE_SPACE
FROM
DBA_FREE_SPACE
GROUP
BY
TABLESPACE_NAME) F
WHERE
D.TABLESPACE_NAME
=
F.TABLESPACE_NAME(
+
)
UNION
ALL
--
if have tempfile
SELECT
D.TABLESPACE_NAME,
SPACE
"SUM_SPACE(M)", BLOCKS SUM_BLOCKS, USED_SPACE "USED_SPACE(M)",
ROUND
(NVL(USED_SPACE,
0
)
/
SPACE
*
100
,
2
) "USED_RATE(
%
)", NVL(FREE_SPACE,
0
) "FREE_SPACE(M)"
FROM
(
SELECT
TABLESPACE_NAME,
ROUND
(
SUM
(BYTES)
/
(
1024
*
1024
),
2
)
SPACE
,
SUM
(BLOCKS) BLOCKS
FROM
DBA_TEMP_FILES
GROUP
BY
TABLESPACE_NAME) D, (
SELECT
TABLESPACE_NAME,
ROUND
(
SUM
(BYTES_USED)
/
(
1024
*
1024
),
2
) USED_SPACE,
ROUND
(
SUM
(BYTES_FREE)
/
(
1024
*
1024
),
2
) FREE_SPACE
FROM
V$TEMP_SPACE_HEADER
GROUP
BY
TABLESPACE_NAME) F
WHERE
D.TABLESPACE_NAME
=
F.TABLESPACE_NAME(
+
)
③ 감시 표 공간의 나머지 공간 을 제외 하고 가끔 우 리 는 이 표 공간 이 자동 으로 공간 을 확장 하 는 능력 이 있 는 지 알 아 볼 필요 가 있다. 비록 우 리 는 생산 시스템 에서 공간 을 미리 분배 하 는 것 을 권장 하지만.다음 문장 은 이 기능 을 완성 할 것 이다.
SQL code
SELECT
T.TABLESPACE_NAME, D.
FILE_NAME
, D.AUTOEXTENSIBLE, D.BYTES, D.MAXBYTES, D.STATUS
FROM
DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE
T. TABLESPACE_NAME
=
D. TABLESPACE_NAME
ORDER
BY
TABLESPACE_NAME,
FILE_NAME
④ 사전 관 리 를 사용 하 는 표 공간 도 적지 않다 고 믿 습 니 다. 사전 관리 표 공간 에서 각 표 의 다음 구간 의 크기 는 예측 할 수 없 기 때문에 사전 관리 표 공간 에서 의 다음 구간 의 분 배 는 성능 문 제 를 일 으 키 거나 확장 되 지 않 은 표 공간 으로 인해 시스템 이 중단 되 는 것 을 감시 해 야 합 니 다.다음 문 구 는 표 의 확장 을 검사 하면 표 공간의 확장 을 일 으 킬 것 이다.
SQL code
SELECT
A.OWNER, A.TABLE_NAME, A.NEXT_EXTENT, A.TABLESPACE_NAME
FROM
ALL_TABLES A, (
SELECT
TABLESPACE_NAME,
MAX
(BYTES) BIG_CHUNK
FROM
DBA_FREE_SPACE
GROUP
BY
TABLESPACE_NAME) F
WHERE
F.TABLESPACE_NAME
=
A.TABLESPACE_NAME
AND
A.NEXT_EXTENT
>
F.BIG_CHUNK
⑤ 세그먼트 의 점용 공간 과 구간 수 역시 주의해 야 할 문제 입 니 다. 한 세그먼트 의 점용 공간 이 너무 크 거나 너무 많은 구간 (사전 이 관리 하 는 표 공간 에서 심각 한 성능 영향 을 미 칠 수 있 음) 을 뛰 어 넘 으 면 세그먼트 가 재분배 할 수 있 는 구간 이 없 으 면 데이터 베 이 스 를 오류 로 유도 할 수 있 습 니 다.따라서 구간 의 크기 와 구간 모니터링 도 중요 한 작업 이다.
SQL code
SELECT
S.OWNER, S.SEGMENT_NAME, S.SEGMENT_TYPE, S.PARTITION_NAME,
ROUND
(BYTES
/
(
1024
*
1024
),
2
) "USED_SPACE(M)", EXTENTS USED_EXTENTS, S.MAX_EXTENTS, S.BLOCKS ALLOCATED_BLOCKS, S.BLOCKS USED_BOLCKS, S.PCT_INCREASE, S.NEXT_EXTENT
/
1024
"NEXT_EXTENT(K)"
FROM
DBA_SEGMENTS S
WHERE
S.OWNER
NOT
IN
(
'
SYS
'
,
'
SYSTEM
'
)
ORDER
BY
Used_Extents
DESC
⑥ 대상 의 공간 분배 와 공간 이용 상황 은 분석 표, rowid 조회 등 여러 가지 측면 에서 분석 하 는 것 을 제외 하고 Oacle 은 공간 을 조회 하 는 패키지 dbms 를 제공 합 니 다.space, 우리 가 조금 만 포장 하면 아주 좋 은 물건 이 될 것 입 니 다.
SQL code
CREATE
OR
REPLACE
PROCEDURE
show_space(p_segname
IN
VARCHAR2
, p_owner
IN
VARCHAR2
DEFAULT
USER
, p_type
IN
VARCHAR2
DEFAULT
'
TABLE
'
, p_partition
IN
VARCHAR2
DEFAULT
NULL
)
--
This procedure uses AUTHID CURRENT USER so it can query DBA_*
--
views using privileges from a ROLE and so it can be installed
--
once per database, instead of once per user who wanted to use it.
AUTHID
CURRENT_USER
as
l_free_blks
number
; l_total_blocks
number
; l_total_bytes
number
; l_unused_blocks
number
; l_unused_bytes
number
; l_LastUsedExtFileId
number
; l_LastUsedExtBlockId
number
; l_LAST_USED_BLOCK
number
; l_segment_space_mgmt
varchar2
(
255
); l_unformatted_blocks
number
; l_unformatted_bytes
number
; l_fs1_blocks
number
; l_fs1_bytes
number
; l_fs2_blocks
number
; l_fs2_bytes
number
; l_fs3_blocks
number
; l_fs3_bytes
number
; l_fs4_blocks
number
; l_fs4_bytes
number
; l_full_blocks
number
; l_full_bytes
number
;
--
Inline procedure to print out numbers nicely formatted
--
with a simple label.
PROCEDURE
p(p_label
in
varchar2
, p_num
in
number
)
IS
BEGIN
dbms_output.put_line(rpad(p_label,
40
,
'
.
'
)
||
to_char(p_num,
'
999,999,999,999
'
));
END
;
BEGIN
--
This query is executed dynamically in order to allow this procedure
--
to be created by a user who has access to DBA_SEGMENTS/TABLESPACES
--
via a role as is customary.
--
NOTE: at runtime, the invoker MUST have access to these two
--
views!
--
This query determines if the object is an ASSM object or not.
BEGIN
EXECUTE
IMMEDIATE
'
select ts.segment_space_management FROM dba_segments seg, dba_tablespaces ts WHERE seg.segment_name = :p_segname AND (:p_partition is null or seg.partition_name = :p_partition) AND seg.owner = :p_owner AND seg.tablespace_name = ts.tablespace_name
'
INTO
l_segment_space_mgmt USING p_segname, p_partition, p_partition, p_owner; EXCEPTION
WHEN
too_many_rows
THEN
dbms_output.put_line(
'
This must be a partitioned table, use p_partition =>
'
);
RETURN
;
END
;
--
If the object is in an ASSM tablespace, we must use this API
--
call to get space information; else we use the FREE_BLOCKS
--
API for the user managed segments.
IF
l_segment_space_mgmt
=
'
AUTO
'
THEN
dbms_space.space_usage(p_owner, p_segname, p_type, l_unformatted_blocks, l_unformatted_bytes, l_fs1_blocks, l_fs1_bytes, l_fs2_blocks, l_fs2_bytes, l_fs3_blocks, l_fs3_bytes, l_fs4_blocks, l_fs4_bytes, l_full_blocks, l_full_bytes, p_partition); p(
'
Unformatted Blocks
'
, l_unformatted_blocks); p(
'
FS1 Blocks (0-25)
'
, l_fs1_blocks); p(
'
FS2 Blocks (25-50)
'
, l_fs2_blocks); p(
'
FS3 Blocks (50-75)
'
, l_fs3_blocks); p(
'
FS4 Blocks (75-100)
'
, l_fs4_blocks); p(
'
Full Blocks
'
, l_full_blocks);
ELSE
dbms_space.free_blocks(segment_owner
=>
p_owner, segment_name
=>
p_segname, segment_type
=>
p_type, freelist_group_id
=>
0
, free_blks
=>
l_free_blks); p(
'
Free Blocks
'
, l_free_blks);
END
IF
;
--
And then the unused space API call to get the rest of the
--
information.
dbms_space.unused_space(segment_owner
=>
p_owner, segment_name
=>
p_segname, segment_type
=>
p_type, partition_name
=>
p_partition, total_blocks
=>
l_total_blocks, total_bytes
=>
l_total_bytes, unused_blocks
=>
l_unused_blocks, unused_bytes
=>
l_unused_bytes, LAST_USED_EXTENT_FILE_ID
=>
l_LastUsedExtFileId, LAST_USED_EXTENT_BLOCK_ID
=>
l_LastUsedExtBlockId, LAST_USED_BLOCK
=>
l_LAST_USED_BLOCK); p(
'
Total Blocks
'
, l_total_blocks); p(
'
Total Bytes
'
, l_total_bytes); p(
'
Total MBytes
'
, trunc(l_total_bytes
/
1024
/
1024
)); p(
'
Unused Blocks
'
, l_unused_blocks); p(
'
Unused Bytes
'
, l_unused_bytes); p(
'
Last Used Ext FileId
'
, l_LastUsedExtFileId); p(
'
Last Used Ext BlockId
'
, l_LastUsedExtBlockId); p(
'
Last Used Block
'
, l_LAST_USED_BLOCK);
END
;
실행 결 과 는 다음 과 같 습 니 다.
SQL code
SQL
>
exec
show_space2(
'
test_stevie
'
); Free Blocks.............................
3
Total Blocks............................
32
Total Bytes.............................
262
,
144
Total MBytes............................
0
Unused Blocks...........................
0
Unused Bytes............................
0
Last Used Ext FileId....................
27
Last Used Ext BlockId...................
41
,
617
Last Used Block.........................
8
PL
/
SQL
procedure
successfully completed
⑦ , V$parameter ,ORACLE , 。
SQL code
SELECT
NAME, VALUE, decode(isdefault,
'
TRUE
'
,
'
Y
'
,
'
N
'
)
as
"
Default
", decode(ISEM,
'
TRUE
'
,
'
Y
'
,
'
N
'
)
as
SesMod, decode(ISYM,
'
IMMEDIATE
'
,
'
I
'
,
'
DEFERRED
'
,
'
D
'
,
'
FALSE
'
,
'
N
'
)
as
SysMod, decode(IMOD,
'
MODIFIED
'
,
'
U
'
,
'
SYS_MODIFIED
'
,
'
S
'
,
'
N
'
)
as
Modified, decode(IADJ,
'
TRUE
'
,
'
Y
'
,
'
N
'
)
as
Adjusted, description
FROM
(
--
GV$SYSTEM_PARAMETER
SELECT
x.inst_id
as
instance, x.indx
+
1
, ksppinm
as
NAME, ksppity, ksppstvl
as
VALUE, ksppstdf
as
isdefault, decode(bitand(ksppiflg
/
256
,
1
),
1
,
'
TRUE
'
,
'
FALSE
'
)
as
ISEM, decode(bitand(ksppiflg
/
65536
,
3
),
1
,
'
IMMEDIATE
'
,
2
,
'
DEFERRED
'
,
'
FALSE
'
)
as
ISYM, decode(bitand(ksppstvf,
7
),
1
,
'
MODIFIED
'
,
'
FALSE
'
)
as
IMOD, decode(bitand(ksppstvf,
2
),
2
,
'
TRUE
'
,
'
FALSE
'
)
as
IADJ, ksppdesc
as
DESCRIPTION
FROM
x$ksppi x, x$ksppsv y
WHERE
x.indx
=
y.indx
AND
substr(ksppinm,
1
,
1
)
=
'
_
'
AND
x.inst_id
=
USERENV(
'
Instance
'
))
ORDER
BY
NAME
⑨ 데이터베이스 의 색인 이 잦 은 Delete 작업 이 있 으 면 색인 에 많은 조각 이 생 길 수 있 으 므 로 색인 블록 을 합 쳐 파편 을 줄 이 고 조회 속 도 를 높 일 수 있 도록 모든 색인 을 다시 REBUILD 해 야 합 니 다.
SQL code
SQL
>
set
heading
off
SQL
>
set
feedback
off
SQL
>
spool d:/
index
.sql SQL
>
SELECT
'
alter index
'
||
index_name
||
'
rebuild
'
||
'
tablespace INDEXES storage(initial 256K next 256K pctincrease 0);
'
FROM
all_indexes
WHERE
(tablespace_name
!=
'
INDEXES
'
OR
next_extent
!=
(
256
*
1024
))
AND
owner
=
USER
SQL
>
spool
off
이때, 우 리 는 spool 에서 나 온 파일 을 열 면 바로 실행 할 수 있 습 니 다.
⑨ 표 의 메 인 키 는 필요 하 다. 메 인 키 가 없 는 시 계 는 디자인 규범 에 부합 되 지 않 기 때문에 우 리 는 표 에 메 인 키 가 있 는 지 모니터링 해 야 한다.
SQL code
SELECT
table_name
FROM
all_tables
WHERE
owner
=
USER
MINUS
SELECT
table_name
FROM
all_constraints
WHERE
owner
=
USER
AND
constraint_type
=
'
P
'
2.
① , , , , data buffer 。
, 。
SQL code
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
'
② 라 이브 러 리 버퍼 는 SQL 문장의 리 셋 률 을 설명 합 니 다. 물론 하나의 SQL 문 구 는 실 행 될 수록 좋 습 니 다. 리 셋 률 이 높 으 면 공유 탱크 의 크기 를 늘 리 거나 Bind 변 수 를 향상 시 키 는 것 을 고려 합 니 다.다음 문 구 는 Sql 문장의 과부하 율 을 조회 하 였 으 며, 낮 을 수록 좋다.
SQL code
SELECT
SUM
(pins) total_pins,
SUM
(reloads) total_reloads,
SUM
(reloads)
/
SUM
(pins)
*
100
libcache_reload_ratio
FROM
v$librarycache
③ 사용자 잠 금, 데이터 뱅 크 의 잠 금 은 자원 을 소모 할 때 가 있 습 니 다. 특히 잠 금 대기 가 발생 할 때 우 리 는 기다 리 는 자 물 쇠 를 찾 아야 합 니 다. 가능 하 다 면 이 프로 세 스 를 죽여 야 합 니 다. 이 문 구 는 데이터베이스 에 있 는 모든 DML 문 구 를 찾 을 수 있 고 모든 DML 문 구 는 사실 두 개의 자물쇠 가 생 겼 으 며 하 나 는 시계 자물쇠 이 고 하 나 는 줄 자물쇠 임 을 발견 할 수 있다. alter system kill session 'sid, serial \ #' 를 통 해 세 션 을 죽 일 수 있 습 니 다.
SQL code
SELECT
/*
+ rule
*/
s.username, decode(l.type,
'
TM
'
,
'
TABLE LOCK
'
,
'
TX
'
,
'
ROW LOCK
'
,
NULL
) LOCK_LEVEL, o.owner, o.
object_name
, o.object_type, s.sid, s.serial#, s.terminal, s.machine, s.program, s.osuser
FROM
v$session s, v$lock l, dba_objects o
WHERE
l.sid
=
s.sid
AND
l.id1
=
o.
object_id
(
+
)
AND
s.username
is
NOT
NULL
④ 잠 금 과 기다 림, 잠 금 대기 가 발생 하면 누가 시 계 를 잠 그 고 누 구 를 기다 리 게 하 는 지 더 알 고 싶 을 수 있 습 니 다. 아래 의 문 구 는 누가 시 계 를 잠 갔 는 지, 누가 기다 리 고 있 는 지 알 수 있다.
SQL code
SELECT
/*
+ rule
*/
lpad(
'
'
, decode(l.xidusn,
0
,
3
,
0
))
||
l.oracle_username
User_name
, sysdate, o.owner, o.
object_name
, o.object_type, s.sid, s.serial#
FROM
v$locked_object l, dba_objects o, v$session s
WHERE
l.
object_id
=
o.
object_id
AND
l.session_id
=
s.sid
ORDER
BY
o.
object_id
, xidusn
DESC
상기 조회 결 과 는 트 리 구조 로 하위 노드 가 있 으 면 대기 가 있 음 을 나타 낸다.자물쇠 가 어떤 스크롤 백 을 사 용 했 는 지 알 고 싶다 면 V $rollname 과 연결 할 수 있 습 니 다. 그 중에서 xidusn 은 스크롤 백 의 USN 입 니 다.⑤ 트 랜 잭 션 이나 잠 금 이 발생 하면 어떤 스크롤 백 이 사용 되 고 있 는 지 알 고 싶 습 니까?사실 사무 표를 통 해 우 리 는 사무 와 스크롤 백 간 의 관 계 를 상세 하 게 조회 할 수 있다.또한 세 션 시트 와 관련 이 있다 면 어떤 세 션 이 이 일 을 시 작 했 는 지 알 수 있 습 니 다.
SQL code
SELECT
s.USERNAME, s.SID, s.SERIAL#, t.UBAFIL "UBA filenum", t.UBABLK "UBA Block
number
", t.USED_UBLK "
Number
os undo Blocks Used", t.START_TIME, t.STATUS, t.START_SCNB, t.XIDUSN RollID, r.NAME RollName
FROM
v$session s, v$
transaction
t, v$rollname r
WHERE
s.SADDR
=
t.SES_ADDR
AND
t.XIDUSN
=
r.usn
⑥ 현재 어떤 사용자 가 임시 구간 을 이용 하고 있 는 지 알 고 싶 습 니까?이 문 구 는 어떤 사용자 가 임시 구간 을 이용 하고 있 는 지 알려 줄 것 이다.
SQL code
SELECT
b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#, a.username, a.osuser, a.status, c.sql_text
FROM
v$session a, v$sort_usage b, v$sql c
WHERE
a.saddr
=
b.session_addr
AND
a.sql_address
=
c.address(
+
)
ORDER
BY
b.tablespace, b.segfile#, b.segblk#, b.blocks;
⑦ 세 션 을 이용 하여 추적 하거나 세 션 의 추적 파일 을 보 려 면 OS 의 프로 세 스 나 스 레 드 번 호 를 조회 하 는 것 이 매우 중요 합 니 다. 파일 의 이름 에는 이 정보 가 포함 되 어 있 기 때문에 아래 의 문 구 는 프로 세 스 나 스 레 드 번 호 를 조회 하여 해당 하 는 파일 을 찾 을 수 있 습 니 다.
SQL code
SELECT
p1.value
||
'
/
'
||
p2.value
||
'
_ora_
'
||
p.spid filename
FROM
v$process p, v$session s, v$parameter p1, v$parameter p2
WHERE
p1.name
=
'
user_dump_dest
'
AND
p2.name
=
'
db_name
'
AND
p.addr
=
s.paddr
AND
s.audsid
=
USERENV(
'
SESSIONID
'
);
⑨ ORACLE 9i 에 서 는 색인 사용 을 모니터링 할 수 있 으 며, 사 용 된 색인 이 없 으 면 완전히 삭제 할 수 있 으 며, DML 작업 시 동작 을 줄 일 수 있 습 니 다. 다음은 색인 모니터링 을 시작 하고 색인 모니터링 을 중단 하 는 스 크 립 트 입 니 다.
SQL code
SQL
>
set
heading
off
SQL
>
set
echo
off
SQL
>
set
feedback
off
SQL
>
set
pages
10000
SQL
>
spool start_index_monitor.sql SQL
>
SELECT
'
alter index
'
||
owner
||
'
.
'
||
index_name
||
'
monitoring usage;
'
SQL
>
FROM
dba_indexes SQL
>
WHERE
owner
=
USER
; SQL
>
spool
off
set
heading
on
SQL
>
set
echo
on
SQL
>
set
feedback
on
--
--------------------------
SQL
>
set
heading
off
SQL
>
set
echo
off
SQL
>
set
feedback
off
SQL
>
set
pages
10000
SQL
>
spool stop_index_monitor.sql SQL
>
SELECT
'
alter index
'
||
owner
||
'
.
'
||
index_name
||
'
nomonitoring usage;
'
SQL
>
FROM
dba_indexes SQL
>
WHERE
owner
=
USER
; SQL
>
spool
off
SQL
>
set
heading
on
SQL
>
set
echo
on
SQL
>
set
feedback
on
더 많은 사용 자 를 감시 할 필요 가 있다 면, owner = User 를 다른 것 으로 바 꿀 수 있 습 니 다. 모니터링 결 과 는 보기 v $objectusage 에서 조회 합 니 다.
3.
① id。
SQL code
select
spid
from
v$process
where
addr
in
(
select
paddr
from
v$session
where
sid
=
$sid)
② 프로 세 스 id 에 따라 인 스 턴 스 를 봅 니 다.
SQL code
select
sid
from
v$session
where
paddr
in
(
select
addr
from
v$process
where
spid
=
$pid)
③ 현재 session 에 있 는 sql 문 을 봅 니 다.
SQL code
select
SQL_TEXT
from
V$SQLTEXT
where
HASH_VALUE
=
(
select
SQL_HASH_VALUE
from
v$session
where
sid
=
&
sid)
order
by
PIECE
④ v $session 보기wait。
SQL code
select
*
from
v$session_wait
where
event
not
like
'
rdbms%
'
and
event
not
like
'
SQL*N%
'
and
event
not
like
'
%timer
'
;
⑤ Dictionary 캐 시 적중률
SQL code
/*
It should be about 15%, otherwise add share_pool_size
*/
SELECT
sum
(getmisses)
/
sum
(gets)
FROM
v$rowcache;
⑥ 파일 번호 와 데이터 블록 을 이용 하여 DB 의 각 대상 을 봅 니 다.
SQL code
select
owner,segment_name,segment_type
from
dba_extents
where
file_id
=
[
$fno and &dno between block_id and block_id + blocks - 1
]
⑦ 핫 블록 을 찾 습 니 다.
SQL code
select
/*
+ ordered
*/
e.owner
||
'
.
'
||
e.segment_name segment_name, e.extent_id extent#, x.dbablk
-
e.block_id
+
1
block#, x.tch, l.child#
from
sys.v$latch_children l, sys.x$bh x, sys.dba_extents e
where
l.name
=
'
cache buffers chains
'
and
l.sleeps
>
&
sleep_count
and
x.hladdr
=
l.addr
and
e.
file_id
=
x.
file
#
and
x.dbablk
between
e.block_id
and
e.block_id
+
e.blocks
-
1
;
⑨ 파일 마다 대기 이 벤트 를 찾아낸다.
SQL code
select
df.name, kf.
count
from
v$datafile df, x$kcbfwait kf
where
(kf.indx
+
1
)
=
df.
file
#;
⑨ 대기 이 벤트 를 일 으 키 는 SQL 문 구 를 찾 습 니 다.
SQL code
select
sql_text, c.event
from
v$sqlarea a, v$session b, v$session_wait c
where
a.address
=
b.sql_address
and
b.sid
=
c.sid;
⑩ pfile 에서 시작 하 는 지 spfile 에서 시작 하 는 지 판단 합 니 다.
SQL code
SQL
>
select
decode(
count
(
*
),
1
,
'
spfile
'
,
'
pfile
'
)
as
DECODE
2
from
v$spparameter
3
where
rownum
=
1
4
and
isspecified
=
'
TRUE
'
; DECODE
--
----
spfile SQL
>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.