- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
데이터베이스 모니터링은 쿼리 샘플을 노출하여 다양한 워크로드를 프로파일링하고 문제를 진단함으로써 Oracle 데이터베이스에 대한 심층적인 가시성을 제공합니다.
Datadog Agent는 샘플을 수집하기 위해 데이터베이스 서버에 대한 읽기 전용 액세스 권한이 필요합니다.
레거시 Oracle 통합을 설치한 경우, 사용자가 이미 존재하므로 이 단계를 건너뛰세요. 그러나 후속 단계를 실행해야 합니다.
읽기 전용 로그인을 생성하여 서버에 연결하고 필요한 권한을 부여하세요.
CREATE USER c##datadog IDENTIFIED BY &password CONTAINER = ALL ;
ALTER USER c##datadog SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
sysdba
로 로그온하고, 다음 권한을 부여하세요:
grant create session to c##datadog ;
grant select on v_$session to c##datadog ;
grant select on v_$database to c##datadog ;
grant select on v_$containers to c##datadog;
grant select on v_$sqlstats to c##datadog ;
grant select on v_$instance to c##datadog ;
grant select on dba_feature_usage_statistics to c##datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to c##datadog ;
grant select on V_$PROCESS to c##datadog ;
grant select on V_$SESSION to c##datadog ;
grant select on V_$CON_SYSMETRIC to c##datadog ;
grant select on CDB_TABLESPACE_USAGE_METRICS to c##datadog ;
grant select on CDB_TABLESPACES to c##datadog ;
grant select on V_$SQLCOMMAND to c##datadog ;
grant select on V_$DATAFILE to c##datadog ;
grant select on V_$SYSMETRIC to c##datadog ;
grant select on V_$SGAINFO to c##datadog ;
grant select on V_$PDBS to c##datadog ;
grant select on CDB_SERVICES to c##datadog ;
grant select on V_$OSSTAT to c##datadog ;
grant select on V_$PARAMETER to c##datadog ;
grant select on V_$SQLSTATS to c##datadog ;
grant select on V_$CONTAINERS to c##datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to c##datadog ;
grant select on V_$SQL to c##datadog ;
grant select on V_$PGASTAT to c##datadog ;
PDB(플러그형 데이터베이스)에서 실행되는 커스텀 쿼리를 설정한 경우, C##DATADOG
사용자에게 set container
권한을 부여해야 합니다:
connect / as sysdba
alter session set container = your_pdb ;
grant set container to c##datadog ;
sysdba
로 로그온하고 sysdba
스키마에 새 view
를 생성한 다음 Agent 사용자에게 이에 대한 액세스 권한을 부여합니다:
CREATE OR REPLACE VIEW dd_session AS
SELECT
s.indx as sid,
s.ksuseser as serial#,
s.ksuudlna as username,
DECODE(BITAND(s.ksuseidl, 9), 1, 'ACTIVE', 0, DECODE(BITAND(s.ksuseflg, 4096), 0, 'INACTIVE', 'CACHED'), 'KILLED') as status,
s.ksuseunm as osuser,
s.ksusepid as process,
s.ksusemnm as machine,
s.ksusemnp as port,
s.ksusepnm as program,
DECODE(BITAND(s.ksuseflg, 19), 17, 'BACKGROUND', 1, 'USER', 2, 'RECURSIVE', '?') as type,
s.ksusesqi as sql_id,
sq.force_matching_signature as force_matching_signature,
s.ksusesph as sql_plan_hash_value,
s.ksusesesta as sql_exec_start,
s.ksusesql as sql_address,
CASE WHEN BITAND(s.ksusstmbv, POWER(2, 04)) = POWER(2, 04) THEN 'Y' ELSE 'N' END as in_parse,
CASE WHEN BITAND(s.ksusstmbv, POWER(2, 07)) = POWER(2, 07) THEN 'Y' ELSE 'N' END as in_hard_parse,
s.ksusepsi as prev_sql_id,
s.ksusepha as prev_sql_plan_hash_value,
s.ksusepesta as prev_sql_exec_start,
sq_prev.force_matching_signature as prev_force_matching_signature,
s.ksusepsq as prev_sql_address,
s.ksuseapp as module,
s.ksuseact as action,
s.ksusecli as client_info,
s.ksuseltm as logon_time,
s.ksuseclid as client_identifier,
s.ksusstmbv as op_flags,
decode(s.ksuseblocker,
4294967295, 'UNKNOWN', 4294967294, 'UNKNOWN', 4294967293, 'UNKNOWN', 4294967292, 'NO HOLDER', 4294967291, 'NOT IN WAIT',
'VALID'
) as blocking_session_status,
DECODE(s.ksuseblocker,
4294967295, TO_NUMBER(NULL), 4294967294, TO_NUMBER(NULL), 4294967293, TO_NUMBER(NULL),
4294967292, TO_NUMBER(NULL), 4294967291, TO_NUMBER(NULL), BITAND(s.ksuseblocker, 2147418112) / 65536
) as blocking_instance,
DECODE(s.ksuseblocker,
4294967295, TO_NUMBER(NULL), 4294967294, TO_NUMBER(NULL), 4294967293, TO_NUMBER(NULL),
4294967292, TO_NUMBER(NULL), 4294967291, TO_NUMBER(NULL), BITAND(s.ksuseblocker, 65535)
) as blocking_session,
DECODE(s.ksusefblocker,
4294967295, 'UNKNOWN', 4294967294, 'UNKNOWN', 4294967293, 'UNKNOWN', 4294967292, 'NO HOLDER', 4294967291, 'NOT IN WAIT', 'VALID'
) as final_blocking_session_status,
DECODE(s.ksusefblocker,
4294967295, TO_NUMBER(NULL), 4294967294, TO_NUMBER(NULL), 4294967293, TO_NUMBER(NULL), 4294967292, TO_NUMBER(NULL),
4294967291, TO_NUMBER(NULL), BITAND(s.ksusefblocker, 2147418112) / 65536
) as final_blocking_instance,
DECODE(s.ksusefblocker,
4294967295, TO_NUMBER(NULL), 4294967294, TO_NUMBER(NULL), 4294967293, TO_NUMBER(NULL), 4294967292, TO_NUMBER(NULL),
4294967291, TO_NUMBER(NULL), BITAND(s.ksusefblocker, 65535)
) as final_blocking_session,
DECODE(w.kslwtinwait,
1, 'WAITING', decode(bitand(w.kslwtflags, 256), 0, 'WAITED UNKNOWN TIME',
decode(round(w.kslwtstime / 10000), 0, 'WAITED SHORT TIME', 'WAITED KNOWN TIME'))
) as STATE,
e.kslednam as event,
e.ksledclass as wait_class,
w.kslwtstime as wait_time_micro,
c.name as pdb_name,
sq.sql_text as sql_text,
sq.sql_fulltext as sql_fulltext,
sq_prev.sql_fulltext as prev_sql_fulltext,
comm.command_name
FROM
x$ksuse s,
x$kslwt w,
x$ksled e,
v$sqlstats sq,
v$sqlstats sq_prev,
v$containers c,
v$sqlcommand comm
WHERE
BITAND(s.ksspaflg, 1) != 0
AND BITAND(s.ksuseflg, 1) != 0
AND s.inst_id = USERENV('Instance')
AND s.indx = w.kslwtsid
AND w.kslwtevt = e.indx
AND s.ksusesqi = sq.sql_id(+)
AND s.ksusesph = sq.plan_hash_value(+)
AND s.ksusepsi = sq_prev.sql_id(+)
AND s.ksusepha = sq_prev.plan_hash_value(+)
AND s.con_id = c.con_id(+)
AND s.ksuudoct = comm.command_type(+)
;
GRANT SELECT ON dd_session TO c##datadog ;
Oracle 텔레메트리 수집을 시작하려면 먼저 Datadog Agent를 설치하세요.
Oracle Agent 설정 파일 /etc/datadog-agent/conf.d/oracle-dbm.d/conf.yaml
을 생성합니다. 사용 가능한 모든 설정 옵션은 샘플 설정 파일을 참조하세요.
init_config:
instances:
- server: '<HOSTNAME_1>:<PORT>'
service_name: "<CDB_SERVICE_NAME>" # Oracle CDB 서비스 이름
username: 'c##datadog'
password: '<PASSWORD>'
dbm: true
tags: # 선택 사항
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
- server: '<HOSTNAME_2>:<PORT>'
service_name: "<CDB_SERVICE_NAME>" # Oracle CDB 서비스 이름
username: 'c##datadog'
password: '<PASSWORD>'
dbm: true
tags: # 선택 사항
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
Agent는 루트 멀티테넌트 컨테이너 데이터베이스(CDB)에만 연결합니다. Agent는 루트 CDB에 연결된 상태에서 PDB에 대한 정보를 쿼리합니다. 개별 PDB에 대한 연결을 만들지 마세요.
모든 Agent 설정이 완료되면, Datadog Agent를 다시 시작하세요.
Agent의 상태 하위 명령을 실행하고 Checks 섹션에서 oracle-dbm
을 찾으세요. 시작하려면 Datadog의 Dashboard 및 Databases 페이지로 이동하세요.
데이터베이스 모니터링은 Oracle 데이터베이스에 대한 커스텀 쿼리를 지원합니다. 사용 가능한 구성 옵션에 대해 자세히 알아보려면 conf.yaml.example을 참조하세요.
추가 유용한 문서, 링크 및 기사: