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 可以查看所有資料表

如果未先在 Oracle 中收集統計資料,Looker 可能無法識別資料表 (尤其是空白資料表)。如果生成的 LookML 或 SQL Runner 中未顯示所需資料表,請嘗試執行下列操作:

EXEC DBMS_STATS.GATHER_DATABASE_STATS;

如需其他方法,請參閱 Oracle 說明文件。

設定主要資料庫物件

Oracle DBA 必須在 Oracle 上設定下列物件和權限。下列指令會將 LOOKER_SESSIONLOOKER_SQL 建立為 V$SESSIONV$SQL 的同義字。

以根使用者身分執行下列指令,即可完成這項設定。這些範例假設 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 TABLESPACECREATE 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 別名。
  • 「Port」(通訊埠):資料庫通訊埠。
  • 資料庫:資料庫名稱 (如果未使用 TNS)。
  • 服務名稱:服務名稱 (如使用 TNS)。
  • 使用者名稱:資料庫使用者名稱,或啟用 PDT 時的暫存資料庫
  • 「Password」(密碼):資料庫使用者密碼。
  • 啟用 PDT:使用這個切換按鈕啟用永久衍生資料表。啟用 PDT 後,「連線」視窗會顯示其他 PDT 設定和「PDT 覆寫」部分。
  • 暫存資料庫:在 Oracle 中,使用者就是結構定義,因此應指定為資料庫使用者的名稱。在本範例中,您會使用暫時結構定義值 LOOKER
  • PDT 建構工具連線數量上限:指定此連線可並行建構 PDT 的數量。如果這個值設得太高,可能會對查詢時間造成負面影響。詳情請參閱「將 Looker 連線至資料庫」說明文件頁面。
  • 其他 JDBC 參數:由於 Oracle 不支援其他 JDBC 參數,請將此欄位留空。
  • 維護時間表cron 運算式,指出 Looker 應在何時檢查資料群組和永久衍生資料表。如要進一步瞭解這項設定,請參閱「維護時間表」說明文件。
  • SSL:勾選這個選項即可使用 SSL 連線。
  • 驗證 SSL:忽略此欄位。Oracle 會使用預設的 Java Truststore 驗證 SSL。
  • 每個節點的連線數上限:一開始可以保留預設值。如要進一步瞭解這項設定,請參閱「將 Looker 連線至資料庫」說明頁面的「每個節點的連線數上限」一節。
  • 連線集區逾時:一開始可以保留預設值。如要進一步瞭解這項設定,請參閱「將 Looker 連線至資料庫」說明頁面的「連線集區逾時」一節。
  • SQL Runner 預先快取:如要讓 SQL Runner 不要預先載入資料表資訊,只在選取資料表時載入資訊,請取消勾選這個選項。如要進一步瞭解這項設定,請參閱「將 Looker 連線至資料庫」說明頁面的「SQL Runner 預先快取」一節。
  • 資料庫時區:指定資料庫中使用的時區。如不想轉換時區,請將這個欄位留空。詳情請參閱「使用時區設定」說明文件頁面。

如要確認連線是否成功,請按一下「測試」。如需疑難排解資訊,請參閱「測試資料庫連線」說明文件頁面。

如要儲存這些設定,請按一下「連結」。 在 Looker 的「管理」部分中,選取「連線」,然後按一下「新增連線」

功能支援

如要讓 Looker 支援某些功能,資料庫方言也必須支援這些功能。

自 Looker 25.10 起,Oracle 支援下列功能:

功能 是否支援?
支援級別
支援
Looker (Google Cloud Core)
對稱式匯總函式
衍生資料表
永久 SQL 衍生資料表
永久原生衍生資料表
穩定版檢視畫面
終止查詢
以 SQL 為基礎的樞紐
時區
SSL
小計
JDBC 其他參數
區分大小寫
位置類型
名單類型
百分位數
不重複值的百分位數
SQL Runner 顯示程序
SQL Runner 說明資料表
SQL Runner 顯示索引
SQL Runner 選取 10
SQL Runner 計數
SQL 說明
OAuth 2.0 憑證
背景資訊註解
連線集區
HLL 草圖
匯總知名度
增量 PDT
毫秒
微秒
具體化檢視表
與前一段時期相比的指標
不重複值的概略計數