您可以配置 Looker 来分析存储在 Oracle 数据库中的数据。Looker 的 Oracle 集成提供安全连接,支持持久派生表 (PDT),并有助于查询终止。通过此集成,您可以直接在 Looker 平台中使用 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 用户访问 Looker 中要访问的数据表的适当 SELECT 权限。如果您将来想要访问其他表,您也需要对这些新表授予 SELECT 权限。
GRANT SELECT ON -- <all tables that will be used by looker>;
确保 Looker 可以看到所有表格
Looker 可能无法识别表(尤其是空表),除非先在 Oracle 中收集统计信息。如果您需要的表未出现在生成的 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 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 TABLESPACE 和 CREATE 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 “Show Processes” | |
| SQL Runner “Describe Table” | |
| SQL Runner “Show Indexes” | |
| SQL Runner “Select 10” | |
| SQL Runner “Count” | |
| SQL “Explain” | |
| OAuth 2.0 凭证 | |
| 上下文注释 | |
| 连接池 | |
| HLL 草图 | |
| 汇总感知 | |
| 增量 PDT | |
| 毫秒 | |
| 微秒 | |
| 具体化视图 | |
| 环比指标 | |
| 近似计数不同 | |
| 数据库内分析模型 | |
| 自定义日历 |