Oracle

您可以設定 Looker,分析儲存在 Oracle 資料庫中的資料。Looker 的 Oracle 整合功能提供安全連線、支援永久衍生資料表 (PDT),並可終止查詢。整合後,您就能直接在 Looker 平台中使用 Oracle 資料,滿足分析和營運需求。

<0x0A

加密網路流量

最佳做法是加密 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 的同義字。

請以 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 函數的同義詞。資料庫管理員也必須建立相關的同義詞和權限。以下指令假定 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;

設定持久性派生表

若要啟用 持久衍生表,請授予 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;

資料庫管理員還需要執行以下相關命令:

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

Amazon RDS 部署

在 Amazon RDS Oracle 部署中,使用 rdsadmin.rdsadmin_util.kill 程序來終止查詢。要使用此過程,Looker 資料庫使用者必須被指派 DBA 角色。

若要賦予 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 參數。
  • 維護計劃: 一個 cron 表達式,指示 Looker 何時應該檢查 資料組 和持久派生表。有關此設定的更多信息,請參閱 維護計劃 文件。
  • SSL: 選取以使用 SSL 連線。
  • 驗證 SSL: 忽略此欄位。Oracle 將使用預設的 Java Truststore 來驗證 SSL。
  • 每個節點的最大連線數: 此設定最初可以保留預設值。閱讀更多關於此設定的資訊。每個節點的最大連接數該部分將 Looker 連接到您的資料庫文檔頁面。
  • 連線池逾時: 此設定最初可以保留預設值。有關此設定的更多信息,請參閱 將 Looker 連接到資料庫 文檔頁面的 連接池逾時 部分。
  • SQL Runner 預先快取: 若要使 SQL Runner 不預先載入表格信息,並且僅在選取表格時載入表格訊息,請取消選取此選項。有關此設定的更多信息,請參閱 將 Looker 連接到資料庫 文件頁面的 SQL Runner 預先快取 部分。
  • 資料庫時區: 指定資料庫中使用的時區。如果您不需要進行時區轉換,請將此欄位留空。參見使用時區設定更多資訊請參閱文件頁面。

如要確認連線是否成功,請按一下「連線設定」頁面底部的「狀態詳細資料」區段中的「測試連線」按鈕。

如果 Looker 顯示「可以連線」,請按「連線」建立連線。

資料庫連線隨即會新增至 Looker「連線管理頁面的清單。

功能支援

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

從 Looker 26.16 版本開始,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
毫秒
微秒
具體化檢視表
與前一段時期相比的指標
不重複值的概略計數
資料庫內分析模型
自訂日曆