뉴렐릭 Distribution of OpenTelemetry(NRDOT) 수집기를 사용하여 데이터베이스 모니터링, 쿼리 분석 및 시스템 상태 메트릭을 통해 오라클 플러거블 데이터베이스(PDB) 성능에 대한 포괄적인 인사이트를 얻으십시오.
가이드 설치
대신 뉴렐릭 UI를 통해 설치하려면 one.newrelic.com > Integrations & Agents > Oracle (OpenTelemetry) (으)로 이동하십시오. 이 페이지에서는 CLI 설치 경로만 다룹니다.
팁
개별 플러거블 데이터베이스가 아닌 전체 컨테이너 데이터베이스를 모니터해야 하는 경우, CDB 계측을 참조하십시오.
전제 조건
시작하기 전에 다음 사항이 있는지 확인하세요.
- 유효한 뉴렐릭 클러스터
- 지원 아키텍처: AMD64 및 ARM64 기반의 Linux
- 뉴렐릭 OTLP 엔드포인트에 대한 네트워크 연결
- 오라클 데이터베이스
19c이상
미리보기에 등록하십시오
이 통합은 뉴렐릭 공개 프리뷰 프로그램의 일환으로 제공됩니다. Previews & Trials 페이지에서 옵트인하려면 조직 관리자에게 문의하십시오.
NRDOT Collector설치하세요
사용 중인 Linux 환경에 맞는 설치 배포 방법을 선택하십시오.
데이터베이스 사용자 구성
PDB 오라클 데이터베이스 인스턴스에 필요한 권한을 가진 모니터링 사용자를 생성하십시오.
- 사용자를 생성하거나 권한을 부여하기 전에 SYS로 다음 문을 실행하십시오:ALTER SESSION SET CONTAINER = "<YOUR_PDB>";
- 로컬 모니터링 사용자를 생성하려면 타겟 PDB 내에서 SYS로 다음 명령문을 실행하십시오:CREATE USER <USER_NAME> IDENTIFIED BY "<YOUR_PASSWORD>";GRANT CREATE SESSION TO <USER_NAME>;
멀티테넌트 데이터베이스에 대한 모니터링 권한을 부여합니다.
PDB 내에서 SYS 사용자로 이 명령을 실행하십시오. 이를 통해 모니터링 도구가 메트릭을 수집하고, 이벤트를 추적하며, 데이터베이스 인스턴스를 찾는 데 필요한 기본 액세스 권한을 얻습니다.
GRANT SELECT ON V_$INSTANCE TO <USER_NAME>;GRANT SELECT ON V_$DATABASE TO <USER_NAME>;GRANT SELECT ON V_$CONTAINERS TO <USER_NAME>;GRANT SELECT ON V_$DATAFILE TO <USER_NAME>;GRANT SELECT ON V_$SYSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SYSMETRIC TO <USER_NAME>;GRANT SELECT ON V_$SESSION TO <USER_NAME>;GRANT SELECT ON V_$RESOURCE_LIMIT TO <USER_NAME>;GRANT SELECT ON V_$OSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SGAINFO TO <USER_NAME>;GRANT SELECT ON V_$ROWCACHE TO <USER_NAME>;GRANT SELECT ON V_$PARAMETER TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACES TO <USER_NAME>;GRANT SELECT ON DBA_DATA_FILES TO <USER_NAME>;GRANT SELECT ON DBA_FREE_SPACE TO <USER_NAME>;GRANT SELECT ON DBA_RECYCLEBIN TO <USER_NAME>;GRANT SELECT ON V_$SQL TO <USER_NAME>;GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO <USER_NAME>;GRANT SELECT ON V_$LOCK TO <USER_NAME>;GRANT SELECT ON V_$SESSION_EVENT TO <USER_NAME>;GRANT SELECT ON DBA_PROCEDURES TO <USER_NAME>;GRANT SELECT ON DBA_OBJECTS TO <USER_NAME>;GRANT SELECT ON V_$PDBS TO <USER_NAME>;GRANT SELECT ON CDB_SERVICES TO <USER_NAME>;NRDOT Collector구성
PDB 관련 설정으로 NRDOT Collector를 설정하십시오.
설정 파일을 생성합니다. 파일 이름은
oracle-config.yaml이어야 합니다.bash$sudo nano /etc/nrdot-collector/oracle-config.yaml이전 단계에서 생성한
oracle-config.yaml파일에 아래 설정 내용을 추가하십시오:전체 설정
이 설정은 호스트 인프라 메트릭 없이 데이터베이스 모니터링에만 중점을 둡니다. 전체 기능 모니터링을 활성화하려면 설정 참조를 확인하십시오.
oracle-config.yaml1receivers:2nroracledb:3endpoint: oracle.example.com:15214username: newrelic5password: YOUR_PASSWORD6service: YOUR_PDB_SERVICE_NAME7collection_interval: 10s8events:9db.server.query_sample:10enabled: true11db.server.top_query:12enabled: true13db.server.session.wait_sample:14enabled: true1516top_query_collection:17max_query_sample_count: 100018top_query_count: 20019collection_interval: 60s20allowed_comment_keys:21- nr_service_guid2223query_sample_collection:24max_rows_per_query: 10025allowed_comment_keys:26- nr_service_guid2728session_wait_event_collection:29max_rows_per_query: 1003031# Metrics configuration - organized by category32metrics:33# === CPU & Performance Metrics ===34oracledb.cpu_time:35enabled: true36attributes:37- oracle.db.pdb38oracledb.database.cpu.utilization:39enabled: true40attributes:41- oracle.db.pdb42oracledb.host.cpu.utilization:43enabled: true44attributes:45- oracle.db.pdb4647# === Execution & Parse Metrics ===48oracledb.executions:49enabled: true50attributes:51- oracle.db.pdb52oracledb.execution.utilization:53enabled: true54attributes:55- oracledb.parse.type56- oracle.db.pdb57oracledb.parse_calls:58enabled: true59attributes:60- oracle.db.pdb61oracledb.parse.rate:62enabled: true63attributes:64- oracledb.parse.result65- oracle.db.pdb66oracledb.parse.utilization:67enabled: true68attributes:69- oracle.db.pdb70oracledb.hard_parses:71enabled: true72attributes:73- oracle.db.pdb7475# === I/O & Physical Read/Write Metrics ===76oracledb.logical_reads:77enabled: true78attributes:79- oracle.db.pdb80oracledb.physical_reads:81enabled: true82attributes:83- oracle.db.pdb84oracledb.physical_reads_direct:85enabled: true86attributes:87- oracle.db.pdb88oracledb.physical_writes:89enabled: true90attributes:91- oracle.db.pdb92oracledb.physical_writes_direct:93enabled: true94attributes:95- oracle.db.pdb96oracledb.physical_read_io_requests:97enabled: true98attributes:99- oracle.db.pdb100oracledb.physical_write_io_requests:101enabled: true102attributes:103- oracle.db.pdb104105# === New Physical I/O Metrics (detailed) ===106oracledb.physical_io.cache_writes:107enabled: true108attributes:109- oracle.db.pdb110oracledb.physical_io.requests:111enabled: true112attributes:113- disk.io.direction114- disk.io.block_size115- oracle.db.pdb116oracledb.physical_io.transferred:117enabled: true118attributes:119- disk.io.direction120- disk.io.type121- oracle.db.pdb122123# === Network I/O Metrics ===124oracledb.sqlnet.io.transferred:125enabled: true126attributes:127- network.io.direction128- destination.type129- oracle.db.pdb130131# === Buffer & Cache Metrics ===132oracledb.consistent_gets:133enabled: true134attributes:135- oracle.db.pdb136oracledb.db_block_gets:137enabled: true138attributes:139- oracle.db.pdb140oracledb.buffer_cache.utilization:141enabled: true142attributes:143- oracle.db.pdb144oracledb.library_cache.utilization:145enabled: true146attributes:147- oracle.db.pdb148oracledb.data_dictionary.hit_ratio:149enabled: true150oracledb.shared_pool.utilization:151enabled: true152attributes:153- oracle.db.pdb154155# === Memory Metrics ===156oracledb.pga_memory:157enabled: true158attributes:159- oracle.db.pdb160oracledb.sga.limit:161enabled: true162oracledb.sga.usage:163enabled: true164attributes:165- oracledb.sga.component.name166167# === Wait & Database Time Metrics ===168oracledb.database.wait.utilization:169enabled: true170attributes:171- oracle.db.pdb172173# === Lock & Deadlock Metrics ===174oracledb.dml_locks.limit:175enabled: true176oracledb.dml_locks.usage:177enabled: true178oracledb.enqueue_locks.limit:179enabled: true180oracledb.enqueue_locks.usage:181enabled: true182oracledb.enqueue_resources.limit:183enabled: true184oracledb.enqueue_resources.usage:185enabled: true186oracledb.enqueue_deadlocks:187enabled: true188attributes:189- oracle.db.pdb190oracledb.exchange_deadlocks:191enabled: true192attributes:193- oracle.db.pdb194195# === Process & Session Metrics ===196oracledb.processes.limit:197enabled: true198oracledb.processes.usage:199enabled: true200oracledb.sessions.limit:201enabled: true202oracledb.sessions.usage:203enabled: true204attributes:205- session_type206- session_status207- oracle.db.pdb208oracledb.logons:209enabled: true210attributes:211- oracle.db.pdb212213# === Transaction Metrics ===214oracledb.transactions.limit:215enabled: true216oracledb.transactions.usage:217enabled: true218oracledb.user_commits:219enabled: true220attributes:221- oracle.db.pdb222oracledb.user_rollbacks:223enabled: true224attributes:225- oracle.db.pdb226227# === Tablespace Metrics ===228oracledb.tablespace_size.limit:229enabled: true230attributes:231- tablespace_name232- oracle.db.pdb233oracledb.tablespace_size.usage:234enabled: true235attributes:236- tablespace_name237- oracle.db.pdb238239# === Storage Metrics ===240oracledb.storage.usage:241enabled: true242oracledb.storage.utilization:243enabled: true244oracledb.recycle_bin.limit:245enabled: true246247# === Parallel Operations Metrics ===248oracledb.queries_parallelized:249enabled: true250attributes:251- oracle.db.pdb252oracledb.ddl_statements_parallelized:253enabled: true254attributes:255- oracle.db.pdb256oracledb.dml_statements_parallelized:257enabled: true258attributes:259- oracle.db.pdb260oracledb.parallel_operations_not_downgraded:261enabled: true262attributes:263- oracle.db.pdb264oracledb.parallel_operations_downgraded_1_to_25_pct:265enabled: true266attributes:267- oracle.db.pdb268oracledb.parallel_operations_downgraded_25_to_50_pct:269enabled: true270attributes:271- oracle.db.pdb272oracledb.parallel_operations_downgraded_50_to_75_pct:273enabled: true274attributes:275- oracle.db.pdb276oracledb.parallel_operations_downgraded_75_to_99_pct:277enabled: true278attributes:279- oracle.db.pdb280oracledb.parallel_operations_downgraded_to_serial:281enabled: true282attributes:283- oracle.db.pdb284285# === Redo & Sort Metrics ===286oracledb.redo_allocation.utilization:287enabled: true288attributes:289- oracle.db.pdb290oracledb.sort.ratio:291enabled: true292attributes:293- oracledb.sort.type294- oracle.db.pdb295296# === Response Time Metrics ===297oracledb.sql_service.response.duration:298enabled: true299attributes:300- oracle.db.pdb301302# Resource attributes attached to all metrics/logs (all enabled by default)303resource_attributes:304host.name:305enabled: true306oracle.db.hosting_type:307enabled: true308oracle.db.open_mode:309enabled: true310oracle.db.pdb:311enabled: true312oracle.db.role:313enabled: true314oracle.db.version:315enabled: true316oracledb.instance.name:317enabled: true318service.instance.id:319enabled: true320processors:321batch:322resource/add_event_name:323attributes:324- key: host.address325value: YOUR_DB_HOST326action: upsert327exporters:328otlp/newrelic:329endpoint: https://otlp.nr-data.net:4318330headers:331api-key: YOUR_LICENSE_KEY332compression: gzip333retry_on_failure:334enabled: true335initial_interval: 5s336max_interval: 30s337max_elapsed_time: 300s338service:339pipelines:340metrics/oracledb:341receivers: [nroracledb]342processors: [resource/add_event_name, batch]343exporters: [otlp/newrelic]344logs/oracledb:345receivers: [nroracledb]346processors: [resource/add_event_name, batch]347exporters: [otlp/newrelic]이벤트 섹션에서 이러한 이벤트 유형을 활성화하여 해당 메트릭을 수집합니다:
이벤트
설명
db.server.query_sample현재 SQL, 대기 상태 및 차단 세부 정보를 캡처하는 세션별 활성 쿼리 샘플.
db.server.top_query실행 통계 및 쿼리 계획을 포함하여 CPU 또는 경과 시간 기준 상위 N개의 SQL 문.
db.server.session.wait_samplev$session_event의 세션별 누적 대기 횟수 및 기간.
각 이벤트 유형에 대한 수집 설정을 구성하십시오:
설정 섹션
매개변수
값
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60초
query_sample_collectionmax_rows_per_query도면 1
session_wait_event_collectionmax_rows_per_query도면 1
팁
뉴렐릭 OTLP 엔드포인트 설정 및 OpenTelemetry 모범 사례에 대한 자세한 내용은 OpenTelemetry OTLP 설명서를 참조하십시오.
NRDOT Collector 설정 업데이트
oracle-config.yaml 파일을 사용하도록 NRDOT Collector 설정을 업데이트하십시오:
$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/oracle-config.yaml"|' /etc/nrdot-collector/nrdot-collector.conf팁
당신은 또한 수:
- 여러 수집기 구성: 하나의 수집기에서 여러 오라클 데이터베이스 인스턴스를 모니터합니다.
- SQL 쿼리 수신기 구성: 오라클 데이터베이스에서 커스텀 지표를 수집합니다.
- 오라클 데이터베이스를 APM과 연결하십시오: 애플리케이션 성능을 데이터베이스 작업과 연관시킬 수 있습니다. 이를 통해 정확히 어떤 애플리케이션이 특정 데이터베이스 워크로드를 생성하고 있는지 확인할 수 있습니다.
- 시크릿 관리 설정: 데이터베이스 자격 증명과 같은 민감한 정보를 안전하게 관리하기 위함입니다. 이는 설정 파일에 민감한 데이터를 하드코딩하는 것을 방지하여 모니터링 설정의 보안을 강화하는 데 도움이 됩니다.
NRDOT Collector를 다시 시작하십시오
설정을 업데이트한 후 NRDOT Collector를 다시 시작하십시오:
$sudo systemctl restart nrdot-collector.service$sudo systemctl status nrdot-collector.service팁
새 설정이 적용되도록 설정을 변경한 후에는 항상 NRDOT Collector를 다시 시작하십시오.
데이터 찾기 및 사용
데이터가 수집되면 뉴렐릭의 UI를 통해 포괄적인 오라클 데이터베이스 모니터링에 액세스할 수 있습니다.
뉴렐릭에서 오라클 데이터베이스 엔티티를 찾으려면 다음을 수행하세요:
- https://one.newrelic.com > All Capabilities > Databases 으)로 이동합니다.
- 검색 기준을
instrumentation.provider = opentelemetry으로 설정합니다. - 엔티티 목록에서 오라클 데이터베이스를 선택합니다.