Looker 对 Oracle ADWC 提供集成级支持。本页介绍了如何将 Looker 连接到 Oracle ADWC。
加密网络流量
对 Looker 应用与数据库之间的网络流量进行加密是一种最佳实践。可以考虑启用安全的数据库访问文档页面上介绍的某个选项。
设置 Looker 主机以建立连接
所有 Oracle ADWC 连接都需要 SSL 和证书身份验证。为了让 Looker 连接到您的 Oracle ADWC 实例,您需要下载 Oracle 钱包文件并将其安装在 Looker 服务器上。如果您是客户托管的 Looker 用户,则需要让有权访问 Looker 服务器的系统管理员来执行此操作。如果您是 Looker 托管的用户,请与 Looker 支持团队联系。
如需在 Looker 服务器上安装 Oracle 钱包,请执行以下操作:
将 Oracle 钱包下载到您的本地计算机。您将获得一个名为
Wallet_databasename.zip的 ZIP 文件。在 Looker 服务器上,创建一个用于存放钱包 ZIP 文件的目录:
mkdir /home/looker/looker/credentials将钱包 zip 文件从本地计算机复制到 Looker 服务器。此示例使用
scp并将文件放置在/home/looker/looker/credentials中:scp Wallet_databasename.zip username@remotehost:/home/looker/looker/credentials解压缩钱包 ZIP 文件。此示例使用命令
unzip:cd /home/looker/looker/credentials unzip Wallet_databasename.zip使用
ls命令验证钱包的内容。您应该拥有以下文件:ls cwallet.sso keystore.jks sqlnet.ora truststore.jks ewallet.p12 ojdbc.properties tnsnames.oraLooker 使用 JDBC Thin 驱动程序 18.3 通过 Oracle Wallet 连接到 Oracle ADWC。为此,您需要数据库的 Oracle ADWC 服务等级的透明网络底层 (TNS) 别名以及 Oracle 钱包文件的路径。
如需获取数据库的 TNS 别名,请运行以下命令:
cat tnsnames.ora系统会显示三个 TNS 别名供您选择:
dbname_high、dbname_medium和dbname_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_SESSION 和 LOOKER_SQL 创建为 V$SESSION 和 V$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 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='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前缀可能是SYSDBA、ADMIN,也可能不需要。
设置永久性派生表
如需启用持久性派生表,请向 Looker 用户授予 UNLIMITED TABLESPACE 和 CREATE 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,
'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前缀可能是SYSDBA、ADMIN,也可能不需要。
创建 Looker 与数据库的连接
请按照以下步骤创建从 Looker 到数据库的连接:
- 在 Looker 的管理部分中,选择连接,然后点击添加连接。
填写连接详情。这些设置中的大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到您的数据库文档页面。以下设置是 Oracle ADWC 特有的:
- 方言:Oracle ADWC。
- 使用 TNS:启用透明网络底层 (TNS) 连接。
- 主机:主机名或 TNS 别名。在此示例中,为
dbname_medium。 - 端口:保留默认设置;Looker 将从
tnsnames.ora文件中查找端口。 - 服务名称:留空;Looker 将从
tnsnames.ora文件中查找服务名称。 - 用户名:数据库用户名;如果启用了 PDT,则为临时数据库。
- 密码:数据库用户密码。
- 启用 PDT:使用此切换开关可启用永久性派生表。启用 PDT 后,连接窗口会显示其他 PDT 设置和 PDT 覆盖部分。
- 临时数据库:在 Oracle 中,用户即架构,因此应将其指定为数据库用户的名称。在此示例中,您应使用临时架构值
LOOKER。 - 其他 JDBC 参数:留空,因为 Oracle 不支持其他 JDBC 参数。
- SSL 和验证 SSL:您可以忽略这些字段;Looker 始终会使用 SSL 连接 Oracle ADWC。
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。点击测试后,Looker 将构建如下所示的 JDBC 字符串:
jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/home/looker/looker/credentials如需保存这些设置,请点击连接。
功能支持
为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
截至 Looker 26.10,Oracle ADWC 支持以下功能:
| 功能 | 是否支持? |
|---|---|
| Looker (Google Cloud Core) | |
| 对称聚合 | |
| 派生表 | |
| 基于 SQL 的永久性派生表 | |
| 原生永久性派生表 | |
| 稳定视图 | |
| 终止查询 | |
| 基于 SQL 的透视 | |
| 时区 | |
| SSL | |
| 小计 | |
| 其他 JDBC 参数 | |
| 区分大小写 | |
| 位置类型 | |
| 列表类型 | |
| 百分位 | |
| 不同值百分位 | |
| SQL Runner “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 与前一时间段相比的指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |