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 comments below:
-- 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 が ALTER SYSTEM KILL SESSION の類義語として LOOKER_KILL_QUERY プロシージャを作成する必要があります。これを行うには、次のコマンドを実行します。

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.8 の時点で、次の機能をサポートしています。

特徴 サポート対象
サポート レベル
サポート対象
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
いいえ