云端 Oracle 自主数据仓库

为连接设置 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
  1. 将电子钱包 ZIP 文件从本地计算机复制到 Looker 服务器。此示例使用 scp,并将该文件放在 /home/looker/looker/credentials 中:
  scp Wallet_databasename.zip username@remotehost:/home/looker/looker/credentials
  1. 解压缩电子钱包 ZIP 文件。此示例使用命令 unzip
  cd /home/looker/looker/credentials
  unzip Wallet_databasename.zip
  1. 使用 ls 命令验证电子钱包的内容。以下是您应该拥有的文件:

     ls
    
     cwallet.sso  keystore.jks      sqlnet.ora    truststore.jks
     ewallet.p12  ojdbc.properties  tnsnames.ora
     ```
    Looker connects to Oracle ADWC using Oracle Wallets with the [JDBC Thin Driver 18.3](https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/connect-jdbc-thin-wallet.html#GUID-20656D84-4D79-4EE9-B55F-333053948966). For this, you will need the Transparent Network Substrate (TNS) Alias of the Oracle ADWC Service level for your database and the PATH to your Oracle wallet files.
    
  2. 如需获取数据库的 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 用户提供对您计划从 Looker 访问的数据表的相应 SELECT 权限。如果将来需要访问其他表,您还需要对这些新表授予 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 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 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;

SYS 前缀可能是 SYSDBAADMIN 或不必要,具体取决于您的 Oracle 数据库配置。

设置永久性派生表

如需启用永久性派生表,请向 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;

该 DBA 还需要运行以下相关命令:

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

SYS 前缀可能是 SYSDBAADMIN 或不必要,具体取决于您的 Oracle 数据库配置。

添加连接

在 Looker 的管理部分,选择连接,然后点击添加连接

填写连接详情。其中大多数设置是大多数数据库方言的共通性,并在将 Looker 连接到数据库文档页面上进行了介绍。以下设置仅适用于 Oracle ADWC 或上方所示的连接设置页面示例:

  • Dialect:Oracle ADWC。
  • 使用 TNS:启用透明网络底层 (TNS) 连接。
  • 主机:主机名或 TNS 别名。在此示例中为 dbname_medium
  • 端口:保留默认值;Looker 会从 tnsnames.ora 文件中找到端口。
  • 服务名称:留空;Looker 会从 tnsnames.ora 文件中找到服务名称。
  • 用户名:数据库用户名;如果启用了 PDT,则为临时数据库
  • Password:数据库用户密码。
  • Persistent Derived Tables:选中此复选框可启用持久派生表。此时系统会显示其他 PDT 字段和 PDT 替换列。
  • 临时数据库:在 Oracle 中,用户是架构,因此应指定为数据库用户的名称。在此示例中,我们将使用临时架构值 LOOKER
  • 其他参数:指向 Looker 服务器上的 Oracle 钱包的 PATH。在此示例中为 /home/looker/looker/credentials
    • 在 Looker 托管的旧版部署上,此值为 /home/lookerops/looker/credentials
    • 在新一代托管的资源中,如果由 Looker 托管部署,此值将为 /app/credentials
  • SSL 和验证 SSL 证书:您可以忽略这些字段;Looker 将始终将 SSL 与 Oracle ADWC 结合使用。

点击测试这些设置后,Looker 会构建一个 JDBC 字符串,如下所示:

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

功能支持

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

在最新版本的 Looker 中,Cloud 上的 Oracle 自主数据仓库支持以下 Looker 功能:

后续步骤

完成数据库配置后,从 Looker 连接到数据库