这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

许可证函数

此部分包含用于监控 Vertica 许可证状态和合规性的函数。

1 - AUDIT

返回在审核数据库大小时计算的数据库、架构或表的原始数据大小(以字节为单位)。除非指定容错为 0,置信水平为 100%,否则 AUDIT 将仅返回可能随多次迭代不断变化的近似结果。

AUDIT 使用与 Vertica 相同的数据采样方法估计 Vertica 表中的数据大小,以确定数据库是否符合许可的数据库大小限额。Vertica 不使用这些结果来确定数据库的大小是否符合 Vertica 许可证的数据限额。有关详细信息,请参阅审核数据库大小

对于基于 ORC 或 Parquet 格式存储在外部表中的数据,AUDIT 使用数据文件的总大小。永远不会估计此值,此值是从存储 ORC 或 Parquet 文件的文件系统(或者 Vertica 节点的本地文件系统、S3 或 HDFS)中读取的。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

AUDIT('[[[database.]schema.]scope ]'[, 'granularity'] [, error‑tolerance[, confidence‑level]] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

scope
指定审核范围:
  • 空字符串 ('') 将审核整个数据库。

  • 要审核的架构或表的名称。

要审核的架构或表。要审核数据库,请将此参数设置为空字符串。

granularity
审核报告其结果的级别,为以下字符串之一:
  • database

  • schema

  • table

粒度级别必须等于或小于 scope 的粒度。如果忽略此参数,粒度将设置为与 scope 相同的级别。因此,如果 online_sales 为架构,则以下语句相同:

AUDIT('online_sales', 'schema');
AUDIT('online_sales');

如果 AUDIT 将粒度设置为低于目标对象的级别,则会返回一条消息,推荐您使用系统表 USER_AUDITS。有关详细信息,请参阅下文的查询 V_CATALOG.USER_AUDITS

error‑tolerance
指定审核评估中允许的误差幅度百分比。以 0 与 100 之间的十进制数输入一个公差值。对于 5% 的误差幅度,默认值为 5。

此实参不会影响基于 ORC 或 Parquet 文件的外部表的审核。对这些表的审核始终返回底层数据文件的实际大小。

将此值设置为 0 将导致全面数据库审核,由于 AUDIT 会分析整个数据库,因此会占用大量资源。Vertica 不建议对生产数据库执行全面的数据库审核,这会显著影响性能。

confidence‑level
指定估计的统计置信水平百分比。以 0 与 100 之间的十进制数输入置信值。默认值为 99,表示置信水平为 99%。

此实参不会影响基于 ORC 或 Parquet 文件的外部表的审核。对这些表的审核始终返回底层数据文件的实际大小。

置信度值越高,执行的数据采样越多,函数使用的资源也会越多。将此值设置为 100 将导致全面数据库审核,由于该函数会分析所有数据库,因此会占用大量资源。Vertica 不建议对生产数据库执行全面的数据库审核,这会显著影响性能。

特权

超级用户,或以下权限:

  • 对目标表的 SELECT 权限

  • 对目标架构的 USAGE 权限

查询 V_CATALOG.USER_AUDITS

如果 AUDIT 将粒度设置为低于目标对象的级别,则会返回一条消息,推荐您使用系统表 USER_AUDITS。要获取指定粒度对象的审核数据,请查询该表。例如,以下查询试图审核 store 架构中的所有表:

=> SELECT AUDIT('store', 'table');
                           AUDIT
-----------------------------------------------------------
 See table sizes in v_catalog.user_audits for schema store
(1 row)

下一个查询将查询 USER_AUDITS 并获取这些表的最新审核结果:


=> SELECT object_name, AVG(size_bytes)::int size_bytes, MAX(audit_start_timestamp::date) audit_start
      FROM user_audits WHERE object_schema='store'
      GROUP BY rollup(object_name) HAVING GROUPING_ID(object_name) < 1 ORDER BY GROUPING_ID();
    object_name    | size_bytes | audit_start
-------------------+------------+-------------
 store_dimension   |      22067 | 2017-10-26
 store_orders_fact |   27201312 | 2017-10-26
 store_sales_fact  |  301260170 | 2017-10-26
(3 rows)

示例

请参阅审核数据库大小

2 - AUDIT_FLEX

返回 __raw__ 列的估计 ROS 大小,等同于审核对象中 Flex 数据的导出大小。您可以审核数据库中的所有 Flex 数据,或将审核范围缩小到特定的 Flex 表、投影或架构。Vertica 将审核结果存储在系统表 USER_AUDITS 中。

审核不包括以下内容:

  • Flex 键

  • 审核表中的其他列。

  • 临时 Flex 表

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

AUDIT_FLEX ('[scope]')

参数

scope
指定审核范围:
  • 空字符串 ('') 表示将审核数据库中的所有 Flex 表。

  • 架构、投影或 Flex 表的名称。

特权

超级用户,或以下权限:

  • 对目标表的 SELECT 权限

  • 对目标架构的 USAGE 权限

示例

审核当前数据库中的所有 Flex 表:

dbs=> select audit_flex('');
 audit_flex
------------
 8567679
(1 row)

审核架构 public 中的 Flex 表:


dbs=> select audit_flex('public');
audit_flex
------------
8567679
(1 row)

审核投影 bakery_b0 中的 Flex 数据:

dbs=> select audit_flex('bakery_b0');
 audit_flex
------------
 8566723
(1 row)

审核 Flex 表 bakery

dbs=> select audit_flex('bakery');
 audit_flex
------------
 8566723
(1 row)

为了报告 USER_AUDITS 中保存的所有审核的结果,下面显示系统表中的扩展显示部分,其中显示在名为 test 的架构以及整个数据库 dbs 上运行的审核:

dbs=> \x
Expanded display is on.

dbs=> select * from user_audits;
-[ RECORD 1 ]-------------------------+------------------------------
size_bytes                            | 0
user_id                               | 45035996273704962
user_name                             | release
object_id                             | 45035996273736664
object_type                           | SCHEMA
object_schema                         |
object_name                           | test
audit_start_timestamp                 | 2014-02-04 14:52:15.126592-05
audit_end_timestamp                   | 2014-02-04 14:52:15.139475-05
confidence_level_percent              | 99
error_tolerance_percent               | 5
used_sampling                         | f
confidence_interval_lower_bound_bytes | 0
confidence_interval_upper_bound_bytes | 0
sample_count                          | 0
cell_count                            | 0
-[ RECORD 2 ]-------------------------+------------------------------
size_bytes                            | 38051
user_id                               | 45035996273704962
user_name                             | release
object_id                             | 45035996273704974
object_type                           | DATABASE
object_schema                         |
object_name                           | dbs
audit_start_timestamp                 | 2014-02-05 13:44:41.11926-05
audit_end_timestamp                   | 2014-02-05 13:44:41.227035-05
confidence_level_percent              | 99
error_tolerance_percent               | 5
used_sampling                         | f
confidence_interval_lower_bound_bytes | 38051
confidence_interval_upper_bound_bytes | 38051
sample_count                          | 0
cell_count                            | 0
-[ RECORD 3 ]-------------------------+------------------------------
...

3 - AUDIT_LICENSE_SIZE

触发数据库大小的立即审核,以确定它是否符合 Vertica 许可证中的原始数据存储限额。

如果使用存储在 HDFS 中的 ORC 或 Parquet 数据,则仅当您以有权访问所有 HDFS 数据的用户身份运行此函数时,结果才准确。使用对所有此类数据具有读取权限的主体,或使用授予此访问权限的 Hadoop 委派令牌运行查询。有关使用委派令牌的详细信息,请参阅访问已进行 Kerberize 的 HDFS 数据

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

AUDIT_LICENSE_SIZE()

超级用户

示例

=> SELECT audit_license_size();
 audit_license_size
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization  : 0%
Audit Time   : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.

License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)

4 - AUDIT_LICENSE_TERM

触发立即审核,以确定 Vertica 许可证是否已过期。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

AUDIT_LICENSE_TERM()

超级用户

示例

=> SELECT audit_license_term();
 audit_license_term
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization  : 0%
Audit Time   : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.

License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)

5 - DISPLAY_LICENSE

返回 Vertica 许可证的期限。此函数显示的信息为:

  • 许可证的有效期开始日期和结束日期(如果许可证没有到期日,则显示“永久”(Perpetual))。

  • 许可证期限到期后,可继续使用 Vertica 的天数(宽限期)

  • 在许可证包含数据限额的情况下,数据库可以存储的数据量。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DISPLAY_LICENSE()

特权

示例

=> SELECT DISPLAY_LICENSE();
                  DISPLAY_LICENSE
---------------------------------------------------
 Vertica Systems, Inc.
2007-08-03
Perpetual
500GB

(1 row)

6 - GET_AUDIT_TIME

报告自动审核数据库大小的时间。如果您的 Vertica 许可证包含数据大小限额,Vertica 将执行此审核。有关此审核的详细信息,请参阅《管理员指南》中的管理许可证。要更改审核运行的时间,请使用 SET_AUDIT_TIME 函数。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

GET_AUDIT_TIME()

特权

示例

=> SELECT get_audit_time();
get_audit_time
-----------------------------------------------------
 The audit is scheduled to run at 11:59 PM each day.
(1 row)

7 - GET_COMPLIANCE_STATUS

显示您的数据库是否符合 Vertica 许可证协议要求。此信息包括 Vertica 最近对数据库大小的审核结果(如果您的许可证条款中具有数据限额)、许可证期限(如果您的许可证具有结束日期)和节点数(如果您的许可证具有节点限制)。

GET_COMPLIANCE_STATUS 按 TB 衡量数据限额(其中 1 TB 等于 10244 字节)。

GET_COMPLIANCE_STATUS 显示的信息包括:

  • 数据库的估计大小(有关大小估计的说明,请参阅审核数据库大小)。

  • Vertica 许可证所允许的原始数据大小。

  • 您的数据库目前使用的限额百分比。

  • 节点数和许可证限制。

  • 上次审核的日期和时间。

  • 您的数据库是否符合许可证协议的数据限额条款。

  • 许可证的结束日期。

  • 许可证到期之前的天数。

如果审核显示您的许可证不符合数据限额要求,应该删除数据以使数据库大小低于许可的数量,或升级您的许可证。如果您的许可证已到期,应该立即联系 Vertica 以续订许可证。有关更多详细信息,请参阅管理许可证

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

GET_COMPLIANCE_STATUS()

特权

示例

=> SELECT GET_COMPLIANCE_STATUS();
 get_compliance_status
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization  : 0%
Audit Time   : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.

License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)

以下示例显示了 Vertica for SQL on Apache Hadoop 群集的输出。

=> SELECT GET_COMPLIANCE_STATUS();
 get_compliance_status
--------------------
Node count : 4
License Node limit : 5
No size-compliance concerns for an Unlimited license

No expiration date for a Perpetual license
(1 row)

8 - SET_AUDIT_TIME

设置 Vertica 执行自动数据库大小审核的时间,以确定数据库大小是否符合 Vertica 许可证中的原始数据限额。如果当前计划在数据库活动高峰期进行审核,请使用此函数。这通常不是问题,因为自动审核对数据库性能几乎没有影响。

审核是由上一次审核计划的,因此更改审核时间不会影响下一次计划的审核。例如,如果您计划在晚上 11:59 进行下一次审核,然后您使用 SET_AUDIT_TIME 将审核计划更改为凌晨 3 点,则之前计划的晚上 11:59 的审核仍会运行。该审核完成后,它将计划在凌晨 3 点进行下一次审核。

即使使用 SET_AUDIT_TIME 更改审核时间,然后通过发出语句 SELECT AUDIT_LICENSE_SIZE 触发自动审核,Vertica 也会始终执行下一次计划的审核。只有在下一次计划的审核完成之后,Vertica 才会在您使用 SET_AUDIT_TIME 设置的新时间开始审核。此后,Vertica 在新时间进行审核。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SET_AUDIT_TIME(time)
time
包含 'HH:MM AM/PM' 格式的时间的字符串(例如,'1:00 AM'),表示审核每天的运行时间。

超级用户

示例

=> SELECT SET_AUDIT_TIME('3:00 AM');
                            SET_AUDIT_TIME
-----------------------------------------------------------------------
 The scheduled audit time will be set to 3:00 AM after the next audit.
(1 row)