使用ExaPlus创建哪些SQL查询以在左侧生成菜单(模式,表和视图,..连接)?

问题描述 投票:0回答:1

我正在考虑根据第15(3)条GDPR提供的关于使用Exasol和ExaPlus的信息。我没有SELECT ANY DICTIONARY系统特权来自己解决这个问题。

使用ExaPlus创建哪些SQL查询以生成左侧的菜单esp。:

(1)用户,

(2)架构(表格和视图,......),

(3)连接,

(4)角色?

这些查询是否保存在系统表中,如EXA_DBA_AUDIT_SQLEXA_DBA_AUDIT_SESSIONS?您可以假设启用了Auditing标志。

USER_NAMEEXA_DBA_AUDIT_SESSIONS的条目是什么?

如何确定某些内容是由ExaPlus执行还是由用户自己完成?

ExaPlus中的用户本地历史记录与同一用户的Exasol系统表中的条目之间是否存在差异?

管理员如何禁用EXA_DBA_AUDIT_SQL技术ExaPlus菜单构建查询中的审核?

audit exasolution
1个回答
0
投票

当用户单击数据库浏览器以检查模式,表,视图等时,DB Visualizer,DBeaver或Exaplus等图形数据库客户端会向Exasol数据库发送查询。这些是对系统表(如EXA_ALL_TABLES,EXA_ALL_COLUMNS等)的查询。其他客户端中的自动完成功能也会发送此类查询。

当您查看系统表EXA_DBA_SESSIONS(或EXA_ALL_SESSIONS)时,您会看到每个Exaplus窗口打开两个会话:例如,一个使用CLIENT ='EXAplus 6.0.8',另一个使用CLIENT ='[Meta] EXAplus 6.0.8'。浏览数据库的请求在后一个“Meta”会话中发送。首先,不要在审计表等中混合Meta查询和您自己的查询,并且在当前查询运行时不要阻止模式浏览器。

您可以使用以下查询来查找在Exaplus元会话中发送到数据库的语句:

SELECT q.sql_text 
FROM EXA_DBA_AUDIT_SESSIONS s JOIN EXA_DBA_AUDIT_SQL q ON s.SESSION_ID=q.SESSION_ID 
WHERE s.client LIKE '[Meta] EXAplus %';

对于SQL客户端DB Visualizer的会话,您无法在用户会话和元会话之间轻松区分。对于客户端DBeaver,它与Exaplus类似。您可以在EXA_ALL_SESSIONS,EXA_DBA_SESSIONS_LAST_DAY和EXA_DBA_AUDIT_SESSIONS的CLIENT列中找到类似“DBeaver-Meta 6.0.1.201903251040”的值。

Exaplus和其他客户有本地查询历史记录。这些保存在客户端计算机上。另一方面,EXA_DBA_AUDIT_SQL由数据库管理。发送到数据库的每个查询都写在那里。但只有在Exaoperation中的数据库设置中启用了审核。

无法有选择地启用审计。全部或全部查询都写入系统表中。

您可以定期(例如,每晚一次)插入不属于另一个表中的元会话的审计表的所有条目。然后使用TRUNCATE AUDIT LOGS清空审计表。

但通常情况下,这都不是必需的,因为用户查询和元查询都应该被记录 - 或者都不记录。

以下是Exaplus在单击模式,表,用户,角色和连接时发送到Exasol数据库的一些查询:

select COLUMN_NAME, COLUMN_TYPE, COLUMN_IS_DISTRIBUTION_KEY, COLUMN_DEFAULT, COLUMN_IS_NULLABLE, COLUMN_IDENTITY, COLUMN_COMMENT from SYS.EXA_ALL_COLUMNS where COLUMN_SCHEMA='RF' and COLUMN_TABLE='TEST' order by COLUMN_ORDINAL_POSITION;
SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION from SYS.EXA_DBA_SYS_PRIVS;
select OBJECT_NAME, OBJECT_TYPE, OBJECT_ID, CREATED,LAST_COMMIT, OWNER, OBJECT_COMMENT, OBJECT_IS_VIRTUAL from SYS.EXA_ALL_OBJECTS where ((OBJECT_TYPE = 'TABLE') or (OBJECT_TYPE = 'VIEW')) and (ROOT_ID = 35510272);
select "OBJECT_NAME", "OBJECT_TYPE", "SCHEMA_NAME", "OBJECT_COMMENT"from SYS.EXA_SYSCAT;
SELECT GRANTEE, GRANTED_ROLE, ADMIN_OPTION from SYS.EXA_DBA_ROLE_PRIVS;
select OBJECT_NAME, OBJECT_TYPE, OBJECT_ID, CREATED,LAST_COMMIT, OWNER, OBJECT_COMMENT, OBJECT_IS_VIRTUAL from SYS.EXA_ALL_OBJECTS where ((OBJECT_TYPE = 'TABLE') or (OBJECT_TYPE = 'VIEW')) and (ROOT_ID = 35510272);
SELECT GRANTEE, GRANTED_CONNECTION, ADMIN_OPTION from SYS.EXA_DBA_CONNECTION_PRIVS;
SELECT C.CONSTRAINT_TYPE C_TYPE, C.CONSTRAINT_NAME C_NAME, ORDINAL_POSITION, COLUMN_NAME, REFERENCED_SCHEMA, REFERENCED_TABLE, REFERENCED_COLUMN, CONSTRAINT_ENABLED FROM SYS.EXA_ALL_CONSTRAINT_COLUMNS CC join SYS.EXA_ALL_CONSTRAINTS C  on C.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA and C.CONSTRAINT_TABLE = CC.CONSTRAINT_TABLE and C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME WHERE C.CONSTRAINT_SCHEMA like 'RF' and C.CONSTRAINT_TABLE like 'TEST' and CC.CONSTRAINT_SCHEMA like 'RF' and CC.CONSTRAINT_TABLE like 'TEST' ORDER BY C.CONSTRAINT_NAME,ORDINAL_POSITION
select OBJECT_NAME, OBJECT_TYPE, OBJECT_ID, ROOT_ID, CREATED, LAST_COMMIT, OWNER, OBJECT_COMMENT  from SYS.EXA_DBA_OBJECTS where ((ROOT_ID = 35510272) and ((OBJECT_TYPE = 'FUNCTION') or (OBJECT_TYPE = 'PROCEDURE') or (OBJECT_TYPE = 'SCRIPT')));
© www.soinside.com 2019 - 2024. All rights reserved.