Oracle Autonomous Data Warehouse on Cloud

加密网络流量

最佳做法是对 Looker 应用与数据库之间的网络流量进行加密。考虑使用启用安全的数据库访问文档页面上介绍的某个选项。

设置 Looker 主机以建立连接

所有 Oracle ADWC 连接都需要 SSL 和证书身份验证。为了让 Looker 连接到您的 Oracle ADWC 实例,您需要下载 Oracle 钱包文件并将其安装在 Looker 服务器上。如果您是客户自托管 Looker 用户,则需要拥有 Looker 服务器访问权限的系统管理员来执行此操作。如果您是 Looker 托管型用户,请与 Looker 支持团队联系。

如需在 Looker 服务器上安装 Oracle 钱包,请执行以下操作:

  1. Oracle 钱包下载到您的本地计算机。您会看到一个名为 Wallet_databasename.zip 的 ZIP 文件。

  2. 在 Looker 服务器上,创建一个用于存放钱包 ZIP 文件的目录:

    mkdir /home/looker/looker/credentials
    
  3. 将钱包 zip 文件从本地计算机复制到 Looker 服务器。此示例使用 scp 并将文件放置在 /home/looker/looker/credentials 中:

    scp Wallet_databasename.zip username@remotehost:/home/looker/looker/credentials
    
  4. 解压缩钱包 ZIP 文件。此示例使用命令 unzip

    cd /home/looker/looker/credentials
    unzip Wallet_databasename.zip
    
  5. 使用 ls 命令验证钱包的内容。您应该拥有以下文件:

     ls
    
     cwallet.sso  keystore.jks      sqlnet.ora    truststore.jks
     ewallet.p12  ojdbc.properties  tnsnames.ora
    

    Looker 使用 JDBC Thin 驱动程序 18.3 通过 Oracle Wallet 连接到 Oracle ADWC。为此,您需要数据库的 Oracle ADWC 服务等级的透明网络底层 (TNS) 别名,以及 Oracle 钱包文件的路径。

  6. 如需获取数据库的 TNS 别名,请运行以下命令:

    cat tnsnames.ora
    

    系统会显示三个 TNS 别名供您选择:dbname_highdbname_mediumdbname_low。这些别名对应于不同的服务级别。该文件包含协议、主机、端口、服务名称和 SSL 信息。在此示例中,我们将使用 dbname_medium

创建 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=&apos;LOOKER&apos;;

CREATE OR REPLACE SYNONYM LOOKER.LOOKER_SQL FOR LOOKER_SQL;

GRANT SELECT ON LOOKER.LOOKER_SQL TO LOOKER;

-- Pay special attention to the 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 ADWC deployment
    "SERIAL#",
    -- If using a clustered Oracle ADWC deployment
    (SERIAL# || ',' || INST_ID) AS "SERIAL#",
    AUDSID
  -- If using a single node Oracle ADWC deployment
  FROM V$SESSION
  -- If using a clustered Oracle ADWC deployment
  FROM GV$SESSION
  WHERE
    USERNAME=&apos;LOOKER&apos;;

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 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 ADWC deployment
  FROM V$SESSION
  -- If using a clustered Oracle ADWC deployment
  FROM GV$SESSION
  WHERE
    username = USER
    AND sid = p_sid
    -- If using a single node Oracle ADWC deployment
    AND serial# = p_serial#;
    -- If using a clustered Oracle ADWC deployment
    AND (SERIAL# || ',' || INST_ID) = p_serial#;

  IF (ignore = 1)
  THEN
    dbms_sql.parse(cursor_name,
                   &apos;ALTER SYSTEM KILL SESSION &apos;&apos;&apos;
                   || p_sid || &apos;,&apos; || p_serial# || &apos;&apos;&apos;&apos;,
                   dbms_sql.native);
    ignore := dbms_sql.execute(cursor_name);
  ELSE
    raise_application_error(-20001,
                            &apos;You do not own session &apos;&apos;&apos; ||
                            p_sid || &apos;,&apos; || p_serial# ||
                            &apos;&apos;&apos;&apos;);
  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;

根据您的 Oracle 数据库配置,SYS 前缀可能是 SYSDBAADMIN,也可能不需要。

创建 Looker 与数据库的连接

请按照以下步骤创建从 Looker 到数据库的连接:

  1. 在 Looker 的管理部分中,选择连接,然后点击添加连接
  2. 填写连接详情。这些设置中的大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到数据库文档页面。以下设置是 Oracle ADWC 特有的:

    • 方言Oracle ADWC
    • 使用 TNS:启用透明网络底层 (TNS) 连接。
    • 主机:主机名或 TNS 别名。本示例中为 dbname_medium
    • 端口:保留为默认值;Looker 将从 tnsnames.ora 文件中查找端口。
    • 服务名称:留空;Looker 将从 tnsnames.ora 文件中查找服务名称。
    • 用户名:数据库用户名;如果启用了 PDT,则为临时数据库
    • 密码:数据库用户密码。
    • 启用 PDT:使用此切换开关可启用永久性派生表。启用 PDT 后,“连接”窗口会显示其他 PDT 设置和 PDT 覆盖部分。
    • 临时数据库:在 Oracle 中,用户即架构,因此应将其指定为数据库用户的名称。在此示例中,您将使用临时架构值 LOOKER
    • 其他 JDBC 参数:Looker 服务器上 Oracle 钱包的 PATH。在此示例中,该值为 /home/looker/looker/credentials
    • 在 Looker 托管的旧版部署中,此值为 /home/lookerops/looker/credentials
    • 在下一代托管环境中的 Looker 托管部署中,此值为 /app/credentials
    • SSL 和 Verify SSL:您可以忽略这些字段;Looker 始终会将 SSL 与 Oracle ADWC 搭配使用。
  3. 如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。当您点击测试时,Looker 将构建如下所示的 JDBC 字符串:

    jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/home/looker/looker/credentials

  4. 如需保存这些设置,请点击连接

功能支持

如需让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。

截至 Looker 25.10,Oracle ADWC 支持以下功能:

功能 是否支持?
支持级别
集成
Looker (Google Cloud Core)
对称聚合
派生表
基于 SQL 的永久性派生表
永久性原生派生表
稳定视图
终止查询
基于 SQL 的透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
不同值百分位
SQL Runner“显示进程”
SQL Runner“描述表”
SQL Runner 显示索引
SQL Runner 选择 10
SQL Runner 计数
SQL Explain
OAuth 2.0 凭据
上下文注释
连接池
HLL 草图
汇总认知度
增量 PDT
毫秒
微秒
具体化视图
与前一时间段相比的指标
近似计数不同