Oracle

ネットワークトラフィックの暗号化

Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することをおすすめします。セキュアなデータベースアクセスを可能にするドキュメント ページに記載されているオプションのいずれかを検討してください。

SSL 暗号化の使用を検討している場合は、Oracle のドキュメントをご覧ください。

Looker ユーザーの作成

まず、指定された Looker ユーザーを作成します。

-- connect / as sysdba;
CREATE USER LOOKER IDENTIFIED BY <password>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

次に、新しい Looker ユーザーがセッションを作成できるようにします。

GRANT CREATE SESSION TO LOOKER;

最後に、Looker からアクセスする予定のデータテーブルに対する適切な SELECT 権限を Looker ユーザーに付与します。今後その他のテーブルにアクセスする必要がある場合は、これらの新しいテーブルにも SELECT を付与する必要があります。

GRANT SELECT ON -- <all tables that will be used by looker>;

Looker がすべてのテーブルを表示できるようにする

Looker がすべてのテーブルを表示できるようにする

Looker は、最初に Oracle で統計情報を収集しなければ、テーブル(特に空のテーブル)を識別できない場合があります。生成された LookML または SQL Runner に必要なテーブルが表示されない場合は、次のコマンドを実行してみてください。

EXEC DBMS_STATS.GATHER_DATABASE_STATS;

代替の方法については、Oracle のドキュメントをご覧ください。

メイン データベース オブジェクトの設定

Oracle DBA は、Oracle で次のオブジェクトと権限を設定する必要があります。次のコマンドは、V$SESSIONV$SQL の類義語として LOOKER_SESSIONLOOKER_SQL を作成します。

root ユーザーとして次のコマンドを実行して、この設定を完了します。次の例は、Looker ユーザー名が LOOKER であることを前提としています。

CREATE OR REPLACE VIEW LOOKER_SQL
AS
  SELECT
    sql.SQL_ID,
    sql.SQL_TEXT
  FROM
    V$SQL sql,
    v$session sess
  WHERE
    sess.SQL_ADDRESS = sql.ADDRESS AND
    sess.username='LOOKER';

CREATE OR REPLACE SYNONYM LOOKER.LOOKER_SQL FOR LOOKER_SQL;

GRANT SELECT ON LOOKER.LOOKER_SQL TO LOOKER;

-- Pay special attention to the following comments:
-- the following view will be different for clustered Oracle deployments
CREATE OR REPLACE VIEW LOOKER_SESSION
AS
  SELECT
    SID,
    USERNAME,
    TYPE,
    STATUS,
    SQL_ID,
    -- If using a single node Oracle deployment
    "SERIAL#",
    -- If using a clustered Oracle deployment, like Oracle Real Application Clusters
    (SERIAL# || ',' || INST_ID) AS "SERIAL#",
    AUDSID
  -- If using a single node Oracle deployment
  FROM V$SESSION
  -- If using a clustered Oracle deployment, like Oracle Real Application Clusters
  FROM GV$SESSION
  WHERE
    USERNAME='LOOKER';

CREATE OR REPLACE SYNONYM LOOKER.LOOKER_SESSION FOR LOOKER_SESSION;

GRANT SELECT ON LOOKER.LOOKER_SESSION TO LOOKER;

対称集計の設定

Oracle DBA は、LOOKER_HASH 関数を設定して対称集計を有効にする必要があります。LOOKER_HASH 関数は、Oracle の dbms_crypto.hash 関数の類義語です。DBA は関連する類義語と権限も作成する必要があります。次のコマンドは、Looker ユーザー名が LOOKER であることを前提としています。

CREATE OR REPLACE FUNCTION LOOKER_HASH(bytes raw, prec number)
  RETURN raw AS
  BEGIN
    return(dbms_crypto.HASH(bytes, prec));
  END;

CREATE OR REPLACE SYNONYM LOOKER.LOOKER_HASH FOR LOOKER_HASH;

GRANT EXECUTE ON LOOKER.LOOKER_HASH TO LOOKER;

GRANT EXECUTE ON SYS.LOOKER_HASH TO LOOKER;

Oracle データベースの構成により、SYS 接頭辞は SYSDBAADMIN、または不要になります。

永続的な派生テーブルの設定

永続的な派生テーブルを有効にするには、Looker ユーザーに UNLIMITED TABLESPACE 権限と CREATE TABLE 権限を付与します。次のコマンドは、Looker ユーザー名が LOOKER であることを前提としています。

GRANT UNLIMITED TABLESPACE TO LOOKER;
GRANT CREATE TABLE TO LOOKER;

クエリの強制終了の設定

次の手順に従って、標準の Oracle デプロイまたは Amazon RDS デプロイのいずれかに対してクエリの強制終了を構成します。

標準の Oracle デプロイ

標準の Oracle デプロイでクエリの強制終了を設定するには、Oracle DBA が LOOKER_KILL_QUERY プロシージャを ALTER SYSTEM KILL SESSION の同義語として作成する必要があります。これを行うには、次のコマンドを実行します。

CREATE OR REPLACE PROCEDURE LOOKER_KILL_QUERY(p_sid in varchar2,
                                              p_serial# in varchar2)
IS
  cursor_name pls_integer default dbms_sql.open_cursor;
  ignore pls_integer;

BEGIN
  SELECT
    COUNT(*) INTO ignore
  -- If using a single node Oracle deployment
  FROM V$SESSION
  -- If using a clustered Oracle deployment, like Oracle Real Application Clusters
  FROM GV$SESSION
  WHERE
    username = USER
    AND sid = p_sid
    -- If using a single node Oracle deployment
    AND serial# = p_serial#;
    -- If using a clustered Oracle deployment, like Oracle Real Application Clusters
    AND (SERIAL# || ',' || INST_ID) = p_serial#;

  IF (ignore = 1)
  THEN
    dbms_sql.parse(cursor_name,
                   'ALTER SYSTEM KILL SESSION '''
                   || p_sid || ',' || p_serial# || '''',
                   dbms_sql.native);
    ignore := dbms_sql.execute(cursor_name);
  ELSE
    raise_application_error(-20001,
                            'You do not own session ''' ||
                            p_sid || ',' || p_serial# ||
                            '''');
  END IF;
END;

DBA は、以下の関連する次のコマンドも実行する必要があります。

CREATE OR REPLACE SYNONYM LOOKER.LOOKER_KILL_QUERY FOR SYS.LOOKER_KILL_QUERY;
GRANT EXECUTE ON SYS.LOOKER_KILL_QUERY TO LOOKER;

Oracle データベースの構成により、SYS 接頭辞は SYSDBAADMIN、または不要になります。

Amazon RDS のデプロイ

Amazon RDS Oracle のデプロイでは、rdsadmin.rdsadmin_util.kill プロシージャを使用してクエリを強制終了します。この手順を使用するには、Looker データベース ユーザーに DBA ロールが割り当てられている必要があります。

DBA は昇格されたデータベース ロールであるため、このステップをスキップして、Looker でのクエリの強制終了を行わないこともできます。

Looker データベース ユーザーがクエリを強制終了できるようにするには、次のコマンドを実行します。

GRANT DBA TO LOOKER;

データベースへの Looker 接続の作成

Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

接続の詳細を入力します。設定の大部分は、ほとんどのデータベース言語に共通するものです。詳細については、Looker をデータベースに接続するのドキュメント ページをご覧ください。以下は、Oracle に固有の設定です。

  • 名前: 接続の名前を指定します。LookML プロジェクトでこの接続を参照する際に使用します。
  • 言語: Oracle。
  • TNS を使用する: 透過ネットワーク サブストレート(TNS)接続を有効にします。
  • ホスト: ホスト名または TNS エイリアス。
  • ポート: データベースのポート。
  • データベース: データベース名(TNS を使用しない場合)。
  • サービス名: サービス名(TNS を使用する場合)。
  • ユーザー名: データベースのユーザー名。または PDT が有効になっている場合は 一時データベース
  • パスワード: データベース ユーザーのパスワード。
  • PDT を有効にする: 有効にするには、この切り替えボタンを使用して永続的な派生テーブルを有効にします。PDT が有効になると、追加の PDT 設定と [PDT オーバーライド]が [接続] ウィンドウに表示されます。
  • 一時データベース: Oracle ではユーザーがスキーマであるため、データベース ユーザーの名前として指定する必要があります。この例では、一時的なスキーマ値 LOOKER を使用します。
  • PDT ビルダーの最大接続数: この接続で同時に可能な PDT ビルドの数を指定します。この値を大きく設定しすぎると、クエリ時間に悪影響を及ぼす可能性があります。詳細については、Looker をデータベースに接続のドキュメント ページをご覧ください。
  • その他の JDBC パラメータ: Oracle は追加の JDBC パラメータをサポートしていないため、空白のままにします。
  • データグループと PDT メンテナンス スケジュール: cron 式。Looker がいつデータグループと永続的な派生テーブルを確認するかを示します。この設定の詳細については、データグループと PDT のメンテナンス スケジュールのドキュメントをご覧ください。
  • SSL: SSL 接続を使用する場合にオンにします。
  • SSL を確認: この項目は無視してください。Oracle は、デフォルトの Java トラストストアを使用して SSL を検証します。
  • ノードあたりの最大接続数: この設定は、デフォルト値のままで問題ありません。この設定の詳細については、Looker をデータベースに接続するドキュメント ページのノードごとの最大接続数セクションをご覧ください。
  • 接続プールのタイムアウト: この設定は、最初はデフォルト値のままにしておくことができます。この設定の詳細については、Looker をデータベースに接続するのドキュメント ページの接続プールのタイムアウトのセクションをご覧ください。
  • SQL Runner Precache: SQL Runner でテーブルの情報を事前に読み込まず、テーブルを選択したときにのみテーブルの情報が読み込まれるようにするには、このオプションをオフにします。この設定の詳細については、Looker をデータベースに接続するのドキュメント ページの SQL Runner の事前キャッシュのセクションをご覧ください。
  • データベースのタイムゾーン: データベースで使用されるタイムゾーンを指定します。タイムゾーンの変換を行わない場合は、このフィールドを空白のままにします。詳しくは、タイムゾーンの設定の使用のドキュメント ページをご覧ください。

接続が成功したことを確認するには、[テスト] をクリックします。トラブルシューティング情報については、データベース接続のテストのドキュメント ページをご覧ください。

これらの設定を保存するには、[接続] をクリックします。Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

機能のサポート

一部の機能については、Looker でサポートするには、データベース言語が同じ機能に対応している必要があります。

Oracle は、Looker 24.12 の時点で、次の機能をサポートしています。

機能 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
はい
対称集計
はい
派生テーブル
はい
永続的な SQL 派生テーブル
はい
永続的なネイティブ派生テーブル
はい
安定したビュー
はい
クエリの強制終了
はい
SQL ベースのピボット
はい
タイムゾーン
はい
SSL
はい
Subtotals
はい
JDBC の追加パラメータ
いいえ
Case Sensitive
はい
ロケーション タイプ
はい
リストのタイプ
はい
パーセンタイル
はい
個別のパーセンタイル
いいえ
SQL Runner の表示プロセス
はい
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
はい
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
いいえ
Oauth 認証情報
いいえ
コンテキスト コメント
はい
接続プーリング
いいえ
HLL スケッチ
いいえ
集計認識
はい
増分PDT
いいえ
ミリ秒
はい
マイクロ秒
はい
マテリアライズド ビュー
いいえ
Approximate Count Distinct
いいえ