对网络流量进行加密
最佳做法是加密 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 可以查看所有表
确保查看者可以查看所有表
如果不先在 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 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;
SYS
前缀可能是SYSDBA
、ADMIN
或没有必要,具体取决于您的 Oracle 数据库配置。
设置永久性派生表
如需启用永久性派生表,请向 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;
SYS
前缀可能是SYSDBA
、ADMIN
或没有必要,具体取决于您的 Oracle 数据库配置。
Amazon RDS 部署
在 Amazon RDS Oracle 部署中,rdsadmin.rdsadmin_util.kill
过程用于终止查询。如需使用此过程,必须为 Looker 数据库用户分配 DBA
角色。
由于 DBA 是一种提升权限的数据库角色,您可以考虑跳过此步骤,放弃在 Looker 中终止查询。
如需向 Looker 数据库用户授予查询终止权限,请运行以下命令:
GRANT DBA TO LOOKER;
正在创建与数据库的 Looker 连接
在 Looker 的管理部分中,选择连接,然后点击添加连接。
填写连接详情。大多数设置对于大多数数据库方言都是通用的。如需了解详情,请参阅将 Looker 连接到数据库文档页面。以下设置特定于 Oracle:
- 名称:指定连接的名称。这是您在 LookML 项目中引用连接的方式。
- 方言:Oracle。
- 使用 TNS:启用透明网络底层 (TNS) 连接。
- Host:主机名或 TNS 别名。
- 端口:数据库端口。
- 数据库:数据库名称(如果不使用 TNS)。
- Service Name(服务名称):服务名称(如果使用 TNS)。
- 用户名:数据库用户名或临时数据库(如果启用了 PDT)。
- 密码:数据库用户密码。
- 启用 PDT:使用此切换开关可启用永久性派生表。启用 PDT 后,连接窗口会显示其他 PDT 设置和 PDT 替换项部分。
- 临时数据库:在 Oracle 中,用户是一种架构,因此应将其指定为数据库用户的名称。在此示例中,您将使用临时架构值
LOOKER
。 - PDT 构建器连接数上限:指定此连接上可能的并发 PDT 构建数量。将此值设置得过高可能会对查询时间产生负面影响。如需了解详情,请参阅将 Looker 连接到您的数据库文档页面。
- 其他 JDBC 参数:请将此字段留空,因为 Oracle 不支持其他 JDBC 参数。
- 数据组和 PDT 维护时间表:一个
cron
表达式,用于指示 Looker 何时应检查数据组和永久性派生表。如需详细了解此设置,请参阅数据组和 PDT 维护时间表文档。 - SSL:选中此选项可使用 SSL 连接。
- 验证 SSL:请忽略此字段。Oracle 将使用默认 Java 信任存储区来验证 SSL。
- 每个节点的连接数上限:此设置最初可以保留默认值。如需详细了解此设置,请参阅将 Looker 连接到数据库文档页面中的每个节点的最大连接数部分。
- 连接池超时:此设置最初可以保留默认值。如需详细了解此设置,请参阅将 Looker 连接到数据库文档页面的连接池超时部分。
- SQL Runner 预缓存:如需让 SQL Runner 不预加载表信息,并仅在选择表时加载表信息,请取消选中此选项。如需详细了解此设置,请参阅将 Looker 连接到数据库文档页面的 SQL Runner 预缓存部分。
- 数据库时区:指定数据库中使用的时区。如果您不想进行时区转换,请将此字段留空。如需了解详情,请参阅使用时区设置文档页面。
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。
要保存这些设置,请点击连接。 在 Looker 的管理部分中,选择连接,然后点击添加连接。
功能支持
要让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
从 Looker 24.16 开始,Oracle 支持以下功能:
特征 | 是否支持? |
---|---|
支持级别 | 支持 |
Looker (Google Cloud Core) | 是 |
对称汇总 | 是 |
派生表 | 是 |
永久性 SQL 派生表 | 是 |
永久性原生派生表 | 是 |
稳定视图 | 是 |
查询终止 | 是 |
基于 SQL 的数据透视 | 是 |
时区 | 是 |
SSL | 是 |
小计 | 是 |
JDBC 其他参数 | 否 |
区分大小写 | 是 |
位置类型 | 是 |
名单类型 | 是 |
百分位 | 是 |
不同百分位 | 否 |
SQL Runner 显示进程 | 是 |
SQL Runner 中的“Describe Table”命令 | 是 |
SQL Runner 显示索引 | 是 |
SQL Runner 选择 10 | 是 |
SQL 运行程序数量 | 是 |
SQL 说明 | 否 |
Oauth 凭据 | 否 |
上下文注释 | 是 |
连接池 | 否 |
HLL 草图 | 否 |
聚合感知 | 是 |
增量 PDT | 否 |
毫秒 | 是 |
微秒 | 是 |
具体化视图 | 否 |
近似计数不同 | 否 |