Supported OS Linux Windows Mac OS

インテグレーションバージョン4.1.1

Oracle ダッシュボード

概要

Oracle Database サーバーからメトリクスをリアルタイムに取得して、可用性とパフォーマンスを視覚化および監視できます。

セットアップ

インストール

前提条件

Oracle インテグレーションを使用するには、ネイティブクライアント Oracle Instant Client を使用するか (追加のインストール手順は必要ありません)、Oracle JDBC ドライバーをダウンロードします (Linux のみ)。JDBC による Oracle インテグレーションを使用するには、Oracle JDBC ドライバーをダウンロードしてください。JDBC 方式を使用しない場合、最小のサポートされるバージョン は Oracle 12c です。 ライセンスの制限により、JDBC ライブラリは Datadog Agent に含まれていませんが、Oracle から直接ダウンロードすることができます。

: v7.42.x から、Oracle インテグレーションは Python 3 のみをサポートします。

Oracle Instant Client
Linux
  1. Linux 用の Oracle Instant Client のインストール に従ってください。

  2. 以下を確認してください。

    • Instant Client Basic パッケージと SDK パッケージの両方がインストールされます。Oracle のダウンロードページ にあります。

      Instant Client ライブラリのインストール後に、ランタイムリンカがライブラリを見つけることができることを確認します。たとえば、ldconfig を使用します。

      # Put the library location in an ld configuration file.
      
      sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > \
          /etc/ld.so.conf.d/oracle-instantclient.conf"
      
      # Update the bindings.
      
      sudo ldconfig
      
    • 両方のパッケージは、特定のマシン上のすべてのユーザーが使用できる単一のディレクトリ (たとえば、/opt/oracle) に解凍されます。

      mkdir -p /opt/oracle/ && cd /opt/oracle/
      unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip
      unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip
      
Windows
  1. Oracle Windows インストールガイド に従って、Oracle Instant Client を構成します。

  2. 以下を確認してください。

    • Microsoft Visual Studio 2017 再頒布可能パッケージ または適切なバージョンが Oracle Instant Client にインストールされます。

    • Oracle のダウンロードページInstant Client Basic パッケージと SDK パッケージの両方がインストールされます。

    • 両方のパッケージは、特定のマシン上のすべてのユーザーが使用できる単一のディレクトリ (たとえば、C:\oracle) に抽出されます。

JDBC Driver

: この方法は Linux でのみ機能します。

Java 8 以降は、JDBC Driver を使用するときに Agent が使用するライブラリの 1 つである JPype のシステムに必要です。

インストールしたら、次の手順を実行します。

  1. JDBC Driver JAR ファイルをダウンロード します。
  2. ダウンロードしたファイルのパスを $CLASSPATH に追加するか、チェック構成ファイルの jdbc_driver_path の下に追加します (サンプル oracle.yaml を参照)。

Datadog ユーザーの作成

Oracle Database サーバーへの適切なアクセス権を持つ、読み取り専用の datadog ユーザーを作成します。SYSDBASYSOPER などの管理者ユーザーで Oracle Database に接続し、以下を実行します。

-- Oracle Script を有効にします。
ALTER SESSION SET "_ORACLE_SCRIPT"=true;

-- Datadog ユーザーを作成します。パスワードのプレースホルダーは、安全なパスワードに置き換えてください。
CREATE USER datadog IDENTIFIED BY <パスワード>;

-- Datadog ユーザーにアクセス権を付与します。
GRANT CONNECT TO datadog;
GRANT SELECT ON GV_$PROCESS TO datadog;
GRANT SELECT ON gv_$sysmetric TO datadog;
GRANT SELECT ON sys.dba_data_files TO datadog;
GRANT SELECT ON sys.dba_tablespaces TO datadog;
GRANT SELECT ON sys.dba_tablespace_usage_metrics TO datadog;

: Oracle 11g を使用している場合、次の行を実行する必要はありません。

ALTER SESSION SET "_ORACLE_SCRIPT"=true;
Oracle 12c または 19c

管理者としてルートデータベースにログインして、datadog ユーザーを作成し、アクセス許可を付与します。

alter session set container = cdb$root;
CREATE USER c##datadog IDENTIFIED BY password CONTAINER=ALL;
GRANT CREATE SESSION TO c##datadog CONTAINER=ALL;
Grant select any dictionary to c##datadog container=all;
GRANT SELECT ON GV_$PROCESS TO c##datadog CONTAINER=ALL;
GRANT SELECT ON gv_$sysmetric TO c##datadog CONTAINER=ALL;

コンフィギュレーション

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには:

  1. Agent のコンフィギュレーションディレクトリ のルートにある conf.d/ フォルダーの oracle.d/conf.yaml ファイルを編集します。serverport を更新し、監視するマスターを設定します。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル oracle.d/conf.yaml を参照してください。

    init_config:
    
    instances:
       ## @param server - string - required
       ## The IP address or hostname of the Oracle Database Server.
       #
       - server: localhost:1521
    
         ## @param service_name - string - required
         ## The Oracle Database service name. To view the services available on your server,
         ## run the following query: `SELECT value FROM v$parameter WHERE name='service_names'`
         #
         service_name: <SERVICE_NAME>
    
         ## @param username - string - required
         ## The username for the Datadog user account.
         #
         username: <USERNAME>
    
         ## @param password - string - required
         ## The password for the Datadog user account.
         #
         password: <PASSWORD>
    
  2. Agent を再起動します

カスタムクエリのみ

インスタンスのデフォルトのメトリクスチェックをスキップし、既存のメトリクス収集ユーザーでのみカスタムクエリを実行するには、値が true のタグ only_custom_queries を挿入します。これにより、Oracle インテグレーションの構成済みインスタンスがシステム、プロセス、およびテーブルスペースメトリクスの実行をスキップし、Datadog ユーザー作成 セクションで説明されているアクセス許可なしでカスタムクエリを実行できます。この構成エントリが省略された場合、指定したユーザーには、カスタムクエリを実行するためのテーブルアクセス許可が必要です。

init_config:

instances:
  ## @param server - string - required
  ## The IP address or hostname of the Oracle Database Server.
  #
  - server: localhost:1521

    ## @param service_name - string - required
    ## The Oracle Database service name. To view the services available on your server,
    ## run the following query:
    ## `SELECT value FROM v$parameter WHERE name='service_names'`
    #
    service_name: "<SERVICE_NAME>"

    ## @param user - string - required
    ## The username for the user account.
    #
    user: <USER>

    ## @param password - string - required
    ## The password for the user account.
    #
    password: "<PASSWORD>"

    ## @param only_custom_queries - string - optional
    ## Set this parameter to any value if you want to only run custom
    ## queries for this instance.
    #
    only_custom_queries: true

TCPS による Oracle への接続

  1. TCPS (TCP with SSL) を使って Oracle に接続するには、protocol 構成オプションのコメントを解除して、TCPS を選択します。server オプションを更新して、監視する TCPS サーバーを設定します。

    init_config:
    
    instances:
      ## @param server - string - required
      ## The IP address or hostname of the Oracle Database Server.
      #
      - server: localhost:1522
    
        ## @param service_name - string - required
        ## The Oracle Database service name. To view the services available on your server,
        ## run the following query:
        ## `SELECT value FROM v$parameter WHERE name='service_names'`
        #
        service_name: "<SERVICE_NAME>"
    
        ## @param user - string - required
        ## The username for the user account.
        #
        user: <USER>
    
        ## @param password - string - required
        ## The password for the user account.
        #
        password: "<PASSWORD>"
    
        ## @param protocol - string - optional - default: TCP
        ## The protocol to connect to the Oracle Database Server. Valid protocols include TCP and TCPS.
        ##
        ## When connecting to Oracle Database via JDBC, `jdbc_truststore` and `jdbc_truststore_type` are required.
        ## More information can be found from Oracle Database's whitepaper:
        ##
        ## https://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf
        #
        protocol: TCPS
    
  2. Oracle Database で TCPS 接続を許可するために、sqlnet.oralistener.oratnsnames.ora を更新します。

JDBC を使用しない Oracle 経由の TCPS

JDBC を使用していない場合、Datadog Agent がデータベースに接続できることを確認します。構成オプションに入力された情報を使って、sqlplus コマンドラインツールを使用します。

sqlplus <USER>/<PASSWORD>@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=<HOST>)(PORT=<PORT>))(SERVICE_NAME=<SERVICE_NAME>)))

Oracle Instant Client による接続を使用する際は、アプリケーションによって使用されるクライアントライブラリの network/admin ディレクトリに 3 つのファイルを移動します。

  • tnsnames.ora: アプリケーションの接続文字列で使用されるネットサービス名をデータベースサービスにマッピングします。
  • sqlnet.ora: Oracle Network の設定を構成します。
  • cwallet.sso: SSL または TLS 接続を有効にします。このファイルの安全性を確保するようにしてください。
JDBC による TCPS

JDBC を使用して Oracle Database に接続している場合は、jdbc_truststore_pathjdbc_truststore_type、および Truststore にパスワードがある場合は jdbc_truststore_password (オプション) も指定する必要があります。

: SSO のトラストストアはパスワードを必要としません。

    # `instances:` セクションで
    ...

    ## @param jdbc_truststore_path - 文字列 - オプション
    ## JDBC トラストストアのファイルパス。
    #
    jdbc_truststore_path: /path/to/truststore

    ## @param jdbc_truststore_type - 文字列 - オプション
    ## JDBC トラストストアのファイルタイプ。サポートされているトラストストアのタイプには、JKS、SSO、および PKCS12 があります。
    #
    jdbc_truststore_type: SSO

    ## @param jdbc_truststore_password - 文字列 - オプション
    ## JDBC で接続する際のトラストストアのパスワード。
    #
    # jdbc_truststore_password: <JDBC_TRUSTSTORE_PASSWORD>

TCPS on JDBC による Oracle Database への接続の詳細については、公式の Oracle ホワイトペーパー を参照してください。

コンテナ化

コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレート のガイドを参照して、次のパラメーターを適用してください。

パラメーター
<インテグレーション名>oracle
<初期コンフィギュレーション>空白または {}
<インスタンスコンフィギュレーション>{"server": "%%host%%:1521", "service_name":"<SERVICE_NAME>", "username":"datadog", "password":"<PASSWORD>"}

検証

Agent の status サブコマンドを実行 し、Checks セクションで oracle を探します。

カスタムクエリ

カスタムクエリの指定もサポートされています。各クエリには、次の 2 つのパラメーターを含める必要があります。

パラメーター説明
query実行する SQL です。簡単なステートメントにすることも、複数行のスクリプトにすることもできます。結果のすべての行が評価されます。
columns列を表すリストです。左から右の順に並べられます。次の 2 つの必須データがあります。
a. type - 送信方法 (gaugecount など)。
b. name - メトリクス名のサフィックス。これは、完全なメトリクス名を形成するために使用されるサフィックスです。typetag の場合、この列は、このクエリによって収集されるすべてのメトリクスに適用されるタグと見なされます。

オプションで、tags パラメーターを使用して、収集される各メトリクスにタグのリストを適用できます。

以下のメトリクスは

self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value'])
self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value'])

以下の構成例から作成されます。

- query: | # 複数行のスクリプトが必要な場合は、パイプを使用します。
    SELECT columns
    FROM tester.test_table
    WHERE conditions
  columns:
    # スキップする列にはこれを入れます。
    - {}
    - name: metric1
      type: gauge
    - name: tag1
      type: tag
    - name: metric2
      type: count
  tags:
    - tester:oracle

使用可能なすべてのコンフィギュレーションオプションの詳細については、oracle.d/conf.yaml のサンプル を参照してください。

データベースロックの識別に役立つクエリコンフィギュレーションを作成します。

  1. カスタムクエリを含めるには、conf.d\oracle.d\conf.yaml を変更します。custom_queries ブロックのコメントを解除し、必要なクエリと列を追加して、Agent を再起動します。
  init_config:
  instances:
      - server: localhost:1521
        service_name: orcl11g.us.oracle.com
        user: datadog
        password: xxxxxxx
        jdbc_driver_path: /u01/app/oracle/product/11.2/dbhome_1/jdbc/lib/ojdbc6.jar
        tags:
          - db:oracle
        custom_queries:
          - query: |
              select blocking_session, username, osuser, sid, serial# as serial, wait_class, seconds_in_wait
              from v_$session
              where blocking_session is not NULL order by blocking_session              
            columns:
              - name: blocking_session
                type: gauge
              - name: username
                type: tag
              - name: osuser
                type: tag
              - name: sid
                type: tag
              - name: serial
                type: tag
              - name: wait_class
                type: tag
              - name: seconds_in_wait
                type: tag
  1. v_$session にアクセスするには、DATADOG にアクセス許可を付与し、アクセス許可をテストします。
SQL> grant select on sys.v_$session to datadog;

##アクセスを検証するために DD ユーザーと接続します。


SQL> show user
USER is "DATADOG"


##ビューを表示するための同義語の作成
SQL> create synonym datadog.v_$session for sys.v_$session;


Synonym created.


SQL> select blocking_session,username,osuser, sid, serial#, wait_class, seconds_in_wait from v_$session
where blocking_session is not NULL order by blocking_session;
  1. 構成が完了すると、oracle.custom_query.locks メトリクスに基づいてモニター を作成できます。

収集データ

メトリクス

oracle.buffer_cachehit_ratio
(gauge)
Ratio of buffer cache hits
Shown as percent
oracle.cursor_cachehit_ratio
(gauge)
Ratio of cursor cache hits
Shown as percent
oracle.library_cachehit_ratio
(gauge)
Ratio of library cache hits
Shown as percent
oracle.shared_pool_free
(gauge)
shared pool free memory %
Shown as percent
oracle.physical_reads
(gauge)
physical reads per sec
Shown as read
oracle.physical_writes
(gauge)
physical writes per sec
Shown as write
oracle.enqueue_timeouts
(gauge)
enqueue timeouts per sec
Shown as timeout
oracle.gc_cr_block_received
(gauge)
GC CR block received
Shown as block
oracle.cache_blocks_corrupt
(gauge)
corrupt cache blocks
Shown as block
oracle.cache_blocks_lost
(gauge)
lost cache blocks
Shown as block
oracle.logons
(gauge)
number of logon attempts
oracle.active_sessions
(gauge)
number of active sessions
oracle.long_table_scans
(gauge)
number of long table scans per sec
Shown as scan
oracle.service_response_time
(gauge)
service response time
Shown as second
oracle.user_rollbacks
(gauge)
number of user rollbacks
Shown as operation
oracle.sorts_per_user_call
(gauge)
sorts per user call
oracle.rows_per_sort
(gauge)
rows per sort
Shown as row
oracle.disk_sorts
(gauge)
disk sorts per second
Shown as operation
oracle.memory_sorts_ratio
(gauge)
memory sorts ratio
Shown as percent
oracle.database_wait_time_ratio
(gauge)
memory sorts per second
Shown as percent
oracle.session_limit_usage
(gauge)
session limit usage
Shown as percent
oracle.session_count
(gauge)
session count
oracle.process.pga_used_memory
(gauge)
PGA memory used by process
Shown as byte
oracle.process.pga_allocated_memory
(gauge)
PGA memory allocated by process
Shown as byte
oracle.process.pga_freeable_memory
(gauge)
PGA memory freeable by process
Shown as byte
oracle.process.pga_maximum_memory
(gauge)
PGA maximum memory ever allocated by process
Shown as byte
oracle.temp_space_used
(gauge)
temp space used
Shown as byte
oracle.tablespace.used
(gauge)
tablespace used
Shown as byte
oracle.tablespace.size
(gauge)
tablespace size
Shown as byte
oracle.tablespace.in_use
(gauge)
tablespace in-use
Shown as percent
oracle.tablespace.offline
(gauge)
tablespace offline

イベント

Oracle Database チェックには、イベントは含まれません。

サービスのチェック

oracle.can_connect
Returns OK if the integration can connect to the oracle database, CRITICAL otherwise
Statuses: ok, critical

oracle.can_query
Returns OK if the integration can run all the queries, CRITICAL otherwise
Statuses: ok, critical

トラブルシューティング

一般的な問題

Oracle Native Client

  • DPY-6000: cannot connect to database のエラーが発生した場合
    Failed to connect to Oracle DB, error: DPY-6000: cannot connect to database. Listener refused connection. (Similar to ORA-12660)
    
  • Native Network Encryption または Checksumming が有効になっていないことを確認してください。有効になっている場合は、use_instant_client: true を設定して Instant Client 方式を使用する必要があります。

Oracle Instant Client のセットアップについて、詳しくは Oracle インテグレーションに関するドキュメント を参照してください。

Oracle Instant Client

  • Oracle Instant Client ファイルと SDK ファイルの両方が同じディレクトリにあることを確認します。 ディレクトリの構造は次のようになります。
    |___ BASIC_LITE_LICENSE
    |___ BASIC_LITE_README
    |___ adrci
    |___ genezi
    |___ libclntsh.so -> libclntsh.so.19.1
    |___ libclntsh.so.10.1 -> libclntsh.so.19.1
    |___ libclntsh.so.11.1 -> libclntsh.so.19.1
    |___ libclntsh.so.12.1 -> libclntsh.so.19.1
    |___ libclntsh.so.18.1 -> libclntsh.so.19.1
    |___ libclntsh.so.19.1
    |___ libclntshcore.so.19.1
    |___ libipc1.so
    |___ libmql1.so
    |___ libnnz19.so
    |___ libocci.so -> libocci.so.19.1
    |___ libocci.so.10.1 -> libocci.so.19.1
    |___ libocci.so.11.1 -> libocci.so.19.1
    |___ libocci.so.12.1 -> libocci.so.19.1
    |___ libocci.so.18.1 -> libocci.so.19.1
    |___ libocci.so.19.1
    |___ libociicus.so
    |___ libocijdbc19.so
    |___ liboramysql19.so
    |___ listener.ora
    |___ network
    |   `___ admin
    |       |___ README
    |       |___ cwallet.sso
    |       |___ sqlnet.ora
    |       `___ tnsnames.ora
    |___ ojdbc8.jar
    |___ ucp.jar
    |___ uidrvci
    `___ xstreams.jar
    

JDBC Driver (Linux のみ)

  • JVMNotFoundException が発生した場合:

    JVMNotFoundException("No JVM shared library file ({jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.})"
    
    • JAVA_HOME 環境変数が設定され、正しいディレクトリを指していることを確認してください。
    • 環境変数を /etc/environment に追加します:
      JAVA_HOME=/path/to/java
      
    • 次に、Agent を再起動します。
  • このエラー Unsupported major.minor version 52.0 が発生した場合は、古いバージョンの Java が実行されています。 お使いの Java システムをアップデートするか、新しいバージョンをインストールし、上記の手順に従って JAVA_HOME 変数を 新しいインストールに割り当てるかのにいずれかを行う必要があります。

  • Agent から次のコマンドを実行して、環境変数が正しく設定されていることを確認します。 表示された出力が正しい値と一致することを確認してください。

      sudo -u dd-agent -- /opt/datadog-agent/embedded/bin/python -c "import os; print(\"JAVA_HOME:{}\".format(os.environ.get(\"JAVA_HOME\")))"
    

ご不明な点は、Datadog のサポートチーム までお問合せください。