返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

审计日志
审计日志记录了数据库中与数据库操作相关的日志。
要开启审计日志功能,
您需要打开当前所连接集群的查询编辑器,并在其中执行如下SQL 语句:
Set global audit_log=true ;
Set global log_output='TABLE';
开启审计日志后,集群会记录您所连接的节点的审计日志。
双击“审计日志”节点,您可以打开“审计日志管理”窗口。
您可以通过“过滤”按钮审计您所关注的日志内容,如下图所示:
图5- 761 审计日志

GBaseDataStudio 管理工具手册
南大通用数据技术股份有限公司
- 351 -
使用“查询”功能,您可以查找当前页中,
“日志内容”列中的相关信息,
查找到的信息会高亮显示,如下图所示:
图5- 762 使用查询功能
使用“导出”功能,您可以将审计日志内容导出到本地的文本文件中。

ts_rewrite 函数族可以从tsquery 中搜索一个特定的目标子查询,并在该子查询每次出现
的地方都替换为另一个子查询。实际上这只是通过字串替换而得到的一个特定tsquery 版
本。
目标子查询和替换查询组合起来可以被认为是一个重写规则。
一组类似的重写规则可以
为搜索提供强大的帮助。
例如,
可以使用同义词扩大搜索范围
(例如,
new york, big apple, nyc,
gotham)或限制搜索范围在用户直接感兴趣的热点话题上。

ts_rewrite (query tsquery, target tsquery, substitute tsquery) returns
tsquery
ts_rewrite 的这种形式只适用于一个单一的重写规则:任何出现目标子查询的地方都被
无条件替换。例如:
gbase=#SELECT ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'c'::tsquery);
ts_rewrite
------------
'b' & 'c'

ts_rewrite (query tsquery, select text) returns tsquery
ts_rewrite 的这种形式接受一个起始查询和SQL 查询命令。这里的查询命令是文本字
串形式,必须产生两个tsquery 列。查询结果的每一行,第一个字段的值(目标子查询)都
会被第二个字段(替代子查询)替换。

当多个规则需要重写时,重写顺序非常重要;因此在实践中需要使用ORDER BY
将源查询按照某些字段进行排序。
例如:举一个现实生活中天文学上的例子。我们将使用表驱动的重写规则扩大

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
645
supernovae 的查询范围:
gbase=#CREATE TABLE tsearch.aliases (id int, t tsquery, s tsquery);
gbase=#INSERT INTO tsearch.aliases VALUES(1, to_tsquery('supernovae'),
to_tsquery('supernovae|sn'));
gbase=#SELECT ts_rewrite(to_tsquery('supernovae & crab'), 'SELECT t, s FROM
tsearch.aliases'); ts_rewrite
---------------------------------
'crab' & ( 'supernova' | 'sn' )
可以通过更新表修改重写规则:
gbase=#UPDATE tsearch.aliases
SET s = to_tsquery('supernovae|sn & !nebulae') WHERE t =
to_tsquery('supernovae');
gbase=#SELECT ts_rewrite(to_tsquery('supernovae & crab'), 'SELECT t, s FROM
tsearch.aliases'); ts_rewrite
---------------------------------------------
'crab' & ( 'supernova' | 'sn' & !'nebula' )
需要重写的规则越多,重写操作就越慢。
因为它要检查每一个可能匹配的规则。为了过
滤明显的非候选规则,可以使用tsquery 类型的操作符来实现。在下面的例子中,我们只选
择那些可能与原始查询匹配的规则:
gbase=#SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM tsearch.aliases WHERE
''a & b''::tsquery @> t');
ts_rewrite
------------
'b' & 'a' (1 row)
gbase=#DROP TABLE tsearch.aliases;

您可使用 dbschema 和 DB-Access 从数据库保存模式,然后在另一数据
库中重新创建该模式。dbschema 输出文件可包含创建整个数据库的语句。
保存数据库模式并重新创建数据库:
1.
使用 dbschema 将模式保存到输出文件(例如 db.sql)

dbschema -d db > db.sql
还可使用 -ss 选项生成特定于服务器的信息:
dbschema -d db -ss > db.sql
2.
从输出文件除去有关 dbschema 的头信息(如果有的话)

3.
在输出文件的开头添加 CREATE DATABASE 语句或使用 DB-Access
来创建新数据库。
4.
使用 DB-Access 在新数据库中重新创建模式:
dbaccess - db.sql
使用 db.sql 在不同的数据库服务器上创建数据库时,
请确认数据库空
间存在。
数据库 db 和 testdb 名称不同但具有相同的模式。

5 LOAD 和 UNLOAD 语句



您可以使用 SQL LOAD 和 UNLOAD 语句来移动数据。LOAD 语句速度
较快且较易于使用,但它只接受指定的数据格式。通常可将使用 UNLOAD 语
句准备好的数据用于 LOAD 语句。
您可以使用 DB-Access 中的 UNLOAD 语句从表中将选定的行卸载到文
本文件。
UNLOAD 语句允许您在卸载数据时对其进行操作,
但它要求将数据卸载到
磁盘上的文件而非磁带。如果卸载到磁盘文件,可能需要使用 UNIX™ 、Linux
™实用程序将这些文件装入到磁带上。
要装入表,请使用 LOAD 或 dbload。要操纵正在装入的数据文件或在装
入数据库时要对其进行访问,请使用 dbload 实用程序。灵活性是以花在创建
dbload 命令文件上的时间以及较慢的执行速度为代价的。尽可能使用 LOAD
语句,它比 dbload 要快。
如果数据库包含基于标签的访问控制 (LBAC) 对象,那么只能装入或卸载
您的安全标签控制其列安全标签或行安全标签的那些行。如果要装入或卸载整
个表,那么必须具有写入/读取所有标注的行和列的必要 LBAC 凭证。有关
LBAC 对象的更多信息,
请参阅 GBase 8s 安全性能指南 和
《GBase 8s SQL 指
南:语法》