为连接设置 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.ora
Looker 通过搭配使用 Oracle 钱包和 JDBC Thin Driver 18.3,连接到 Oracle ADWC。为此,您需要您的数据库的 Oracle ADWC 服务级别的透明网络基板 (TNS) 别名以及 Oracle 钱包文件的 PATH 路径。
如需获取数据库的 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 用户对您计划从 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 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='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;
SYS
前缀可能是SYSDBA
、ADMIN
或不必要,具体取决于您的 Oracle 数据库配置。
设置永久性派生表
如需启用永久性派生表,请向 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;
SYS
前缀可能是SYSDBA
、ADMIN
或不必要,具体取决于您的 Oracle 数据库配置。
创建与数据库的 Looker 连接
在 Looker 的管理部分中,选择连接,然后点击添加连接。
填写连接详情。大多数设置是大多数数据库方言通用的设置。如需了解相关信息,请参阅将 Looker 连接到数据库文档页面。以下设置适用于 Oracle ADWC:
- Dialect:Oracle ADWC。
- 使用 TNS:启用透明网络基站 (TNS) 连接。
- 主机:主机名或 TNS 别名。在此示例中,该名称为
dbname_medium
。 - 端口:保留默认值;Looker 会从
tnsnames.ora
文件中找到端口。 - 服务名称:留空;Looker 会从
tnsnames.ora
文件中找到服务名称。 - 用户名:数据库用户名;如果已启用 PDT,则为临时数据库。
- 密码:数据库用户密码。
- 启用 PDT:使用此切换开关可以启用永久性派生表。启用 PDT 后,Connection 窗口会显示其他 PDT 设置和 PDT Override 部分。
- 临时数据库:在 Oracle 中,用户是一个架构,因此应指定为数据库用户的名称。在此示例中,您应使用临时架构值
LOOKER
。 - 更多 JDBC 参数:Looker 服务器上 Oracle 钱包的 PATH。在此示例中,该字段为
/home/looker/looker/credentials
。- 在 Looker 托管的旧版部署中,此值将为
/home/lookerops/looker/credentials
。 - 在新一代代管服务中由 Looker 托管的部署上,此值将为
/app/credentials
。
- 在 Looker 托管的旧版部署中,此值将为
- SSL 和 SSL 验证:您可以忽略这些字段;Looker 始终将 SSL 与 Oracle ADWC 一起使用。
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。点击测试后,Looker 会构建一个如下 JDBC 字符串:
jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/home/looker/looker/credentials
要保存这些设置,请点击连接。
功能支持
为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
Oracle ADWC 从 Looker 23.8 开始支持以下功能:
功能 | 是否支持? |
---|---|
支持级别 | 集成 |
Looker (Google Cloud Core) | 否 |
对称聚合 | 是 |
派生表 | 是 |
永久性 SQL 派生表 | 是 |
永久性原生派生表 | 是 |
稳定版观看次数 | 否 |
查询终止 | 是 |
基于 SQL 的数据透视 | 是 |
时区 | 是 |
SSL | 是 |
小计 | 是 |
JDBC 附加参数 | 否 |
区分大小写 | 是 |
位置类型 | 是 |
列表类型 | 是 |
百分位 | 是 |
不同百分位 | 否 |
SQL Runner 显示进程 | 是 |
SQL Runner 描述表 | 是 |
SQL Runner 显示索引 | 否 |
SQL Runner 选择 10 | 是 |
SQL 运行程序计数 | 是 |
SQL 说明 | 否 |
OAuth 凭据 | 否 |
上下文评论 | 是 |
连接池 | 否 |
HLL 素描 | 否 |
总体认知度 | 是 |
PDT 增幅 | 否 |
毫秒 | 是 |
微秒 | 是 |
具体化视图 | 否 |
唯一计数 | 否 |