返回首页

gbase数据、南大通用产品文档:GBase8sSQL 语句和数据库服务器活动的日志记录

更新日期:2024年09月11日

在数据库服务器中可能有以下三类记录活动:
• 始终记录的活动
• 使用事务日志记录为数据库记录的活动
• 未记录的活动

始终记录的活动
有些数据库操作始终生成逻辑日志记录(即使您关闭事务日志记录或使用非日志记录
表)。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 266 -
以下操作始终为永久表而记录:
• 某些 SQL 语句,其中包括 SQL 数据定义语句。
• 存储空间备份
• 检查点
• 对数据库服务器配置的管理更改(如添加块或数据库空间)
• 为表分配新扩展数据块
• 对数据库的日志记录状态的更改
• 智能大对象操作:
o
创建
o
删除
o
分配与取消分配扩展数据块
o
截断
o
组合与分割块可用列表页
o
更改 LO 头和 LO 引用计数
• 智能大对象空间元数据
• BLOB 空间
下表列出了生成操作的语句,即使关闭了事务日志记录也会记录这些操作。
• ALTER ACCESS_METHOD
• ALTER FRAGMENT
• ALTER FUNCTION
• ALTER INDEX
• ALTER PROCEDURE
• ALTER ROUTINE
• ALTER SECURITY LABEL COMPONENT
• ALTER SEQUENCE
• ALTER TABLE
• ALTER TRUSTED CONTEXT
• ALTER USER
• CLOSE DATABASE
• CREATE ACCESS_METHOD
• CREATE AGGREGATE
• CREATE CAST
• CREATE DATABASE
• CREATE DISTINCT TYPE
• CREATE EXTERNAL TABLE
• CREATE FUNCTION
• CREATE FUNCTION FROM
• CREATE INDEX
• CREATE OPAQUE TYPE
• CREATE OPCLASS
• CREATE PROCEDURE
• CREATE PROCEDURE FROM

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 267 -
• CREATE ROLE
• CREATE ROUTINE FROM
• CREATE ROW TYPE
• CREATE SCHEMA
• CREATE SECURITY LABEL
• CREATE SECURITY LABEL COMPONENT
• CREATE SECURITY POLICY
• CREATE SEQUENCE
• CREATE SYNONYM
• CREATE TABLE
• CREATE TEMP TABLE
• CREATE TRIGGER
• CREATE TRUSTED CONTEXT
• CREATE USER
• CREATE VIEW
• CREATE XADATASOURCE
• CREATE XADATASOURCE TYPE
• DROP ACCESS_METHOD
• DROP AGGREGATE
• DROP CAST
• DROP DATABASE
• DROP FUNCTION
• DROP INDEX
• DROP OPCLASS
• DROP PROCEDURE
• DROP ROLE
• DROP ROUTINE
• DROP ROW TYPE
• DROP SECURITY
• DROP SEQUENCE
• DROP SYNONYM
• DROP TABLE
• DROP TRIGGER
• DROP TRUSTED CONTEXT
• DROP TYPE
• DROP USER
• DROP VIEW
• DROP XADATASOURCE
• DROP XADATASOURCE TYPE
• GRANT
• GRANT FRAGMENT
• RENAME COLUMN
• RENAME DATABASE

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 268 -
• RENAME INDEX
• RENAME SECURITY
• RENAME SEQUENCE
• RENAME TABLE
• RENAME TRUSTED CONTEXT
• RENAME USER
• REVOKE
• REVOKE FRAGMENT
• TRUNCATE
• UPDATE STATISTICS
• SAVE EXTERNAL DIRECTIVES
• SET CONSTRAINTS
• SET Database Object Mode
• SET INDEXES
• SET TRIGGERS
• START VIOLATIONS TABLE
• STOP VIOLATIONS
• ALTER ACCESS_METHOD
• ALTER FRAGMENT
• ALTER FUNCTION
• ALTER INDEX
• ALTER PROCEDURE
• ALTER ROUTINE
• ALTER SECURITY LABEL COMPONENT
• ALTER SEQUENCE
• ALTER TABLE
• ALTER TRUSTED CONTEXT
• ALTER USER
• CLOSE DATABASE
• CREATE ACCESS_METHOD
• CREATE AGGREGATE
• CREATE CAST
• CREATE DATABASE
• CREATE DISTINCT TYPE
• CREATE EXTERNAL TABLE
• CREATE FUNCTION
• CREATE FUNCTION FROM
• CREATE INDEX
• CREATE OPAQUE TYPE
• CREATE OPCLASS
• CREATE PROCEDURE
• CREATE PROCEDURE FROM
• CREATE ROLE

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 269 -
• CREATE ROUTINE FROM
• CREATE ROW TYPE
• CREATE SCHEMA
• CREATE SECURITY LABEL
• CREATE SECURITY LABEL COMPONENT
• CREATE SECURITY POLICY
• CREATE SEQUENCE
• CREATE SYNONYM
• CREATE TABLE
• CREATE TEMP TABLE
• CREATE TRIGGER
• CREATE TRUSTED CONTEXT
• CREATE USER
• CREATE VIEW
• CREATE XADATASOURCE
• CREATE XADATASOURCE TYPE
• DROP ACCESS_METHOD
• DROP AGGREGATE
• DROP CAST
• DROP DATABASE
• DROP FUNCTION
• DROP INDEX
• DROP OPCLASS
• DROP PROCEDURE
• DROP ROLE
• DROP ROUTINE
• DROP ROW TYPE
• DROP SECURITY
• DROP SEQUENCE
• DROP SYNONYM
• DROP TABLE
• DROP TRIGGER
• DROP TRUSTED CONTEXT
• DROP TYPE
• DROP USER
• DROP VIEW
• DROP XADATASOURCE
• DROP XADATASOURCE TYPE
• GRANT
• GRANT FRAGMENT
• RENAME COLUMN
• RENAME DATABASE
• RENAME INDEX

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 270 -
• RENAME SECURITY
• RENAME SEQUENCE
• RENAME TABLE
• RENAME TRUSTED CONTEXT
• RENAME USER
• REVOKE
• REVOKE FRAGMENT
• TRUNCATE
• UPDATE STATISTICS
• SAVE EXTERNAL DIRECTIVES
• SET CONSTRAINTS
• SET Database Object Mode
• SET INDEXES
• SET TRIGGERS
• START VIOLATIONS TABLE
• STOP VIOLATIONS TABLE

使用事务日志记录为数据库记录的活动
如果数据库使用事务日志记录,那么以下 SQL 语句将生成一个或多个日志记录。如果这
些语句回滚,那么回滚也会生成日志记录。
• DELETE
• FLUSH
• INSERT
• LOAD
• MERGE
• PUT
• SELECT INTO TEMP
• UNLOAD
• UPDATE
以下 SQL 语句在特殊情况下才生成日志。
表 1. 在特殊情况下生成日志的 SQL 语句。
SQL 语句
语句生成的日志记录
BEGIN WORK
除非数据库使用事务日志记录,否则返回错误。如果事务进行
一些其他日志记录工作,那么产生一条日志记录。
COMMIT WORK
除非数据库使用事务日志记录,否则返回错误。如果事务进行
一些其他日志记录工作,那么产生一条日志记录。
ROLLBACK
WORK
除非数据库使用事务日志记录,否则返回错误。如果事务进行
一些其他日志记录工作,那么产生一条日志记录。
EXECUTE
此语句是否生成日志记录取决于正在运行的命令。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 271 -
SQL 语句
语句生成的日志记录
EXECUTE
FUNCTION
此语句是否生成日志记录取决于正在执行的函数。
EXECUTE
IMMEDIATE
此语句是否生成日志记录取决于正在运行的命令。
EXECUTE
PROCEDURE
此语句是否生成日志记录取决于正在执行的过程。

未记录的活动
以下 SQL 语句无论数据库日志记录方式如何,均不生成日志记录。
• ALLOCATE COLLECTION
• ALLOCATE DESCRIPTOR
• ALLOCATE ROW
• CLOSE
• CONNECT
• DATABASE
• DEALLOCATE COLLECTION
• DEALLOCATE DESCRIPTOR
• DEALLOCATE ROW
• DECLARE
• DESCRIBE
• DISCONNECT
• FETCH
• FREE
• GET DESCRIPTOR
• GET DIAGNOSTICS
• INFO
• LOCK TABLE
• OPEN
• OUTPUT
• PREPARE
• RELEASE SAVEPOINT
• SAVEPOINT
• SELECT
• SET AUTOFREE
• SET COLLATION
• SET CONNECTION
• SET DATASKIP
• SET DEBUG FILE
• SET DEFERRED_PREPARE
• SET DESCRIPTOR

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 272 -
• SET ENCRYPTION PASSWORD
• SET ISOLATION
• SET LOCK MODE
• SET LOG
• SET OPTIMIZATION
• SET PDQPRIORITY
• SET ROLE
• SET SESSION AUTHORIZATION
• SET STATEMENT CACHE
• SET TRANSACTION
• SET Transaction Mode
• SET USER PASSWORD
• UNLOCK TABLE
• WHENEVER
• SET ENVIRONMENT
• SET EXPLAIN
对于临时数据库空间中的临时表,不记录任何内容,甚至始终记录的活动中所列的 SQL
语句也不记录。如果您在 DBSPACETEMP 中包含了临时(非日志记录)数据库空间,那
么数据库服务器会将非日志记录表先放在这些临时数据库空间中。有关更多信息,请参阅
临时表。

数据中含有NULL 值的处理
如果待导出数据中某字段的内容为NULL 值,
则该字段导出的NULL 文本为
“当
前转义符+ N”。
默认情况下的转义符为“\”,因此字段导出的NULL 文本为“\N”。
示例
示例1:转义符默认为“\”,则“NULL”值导出的结果为“\N”。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs VALUES(NULL,NULL);
INSERT INTO gs VALUES(1, 'GBase');
导出SQL 语句:
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/null_1.txt';
Query OK, 2 rows affected
查看导出文件:
$ cat null_1.txt
\N
\N
1
GBase
示例2:如果在导出语句中指定了字段包围符,则对NULL 值不起作用。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs VALUES(NULL,NULL);
INSERT INTO gs VALUES(1, 'GBase');
导出SQL 语句:
gbase>
SELECT * FROM gs INTO OUTFILE '/home/gbase/null_2.txt'
FIELDS ENCLOSED BY '"';
Query OK, 2 rows affected
查看导出文件:
$ cat null_2.txt
\N
\N
"1"
"GBase"

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1253
示例3:设置转义符为“|”,则“NULL”值导出的结果为“|N”。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs VALUES(NULL,NULL);
INSERT INTO gs VALUES(1, 'GBase');
导出SQL 语句:
gbase>
SELECT * FROM gs INTO OUTFILE '/home/gbase/null_3.txt'
FIELDS ESCAPED BY '|';
Query OK, 2 rows affected
查看导出文件:
$ cat null_3.txt
|N
|N
1
GBase

获取帮助
使用SQLdiag 工具前,您可以通过以下指令获取帮助。
gs_dbmind component sqldiag --help
显示如下帮助信息:
usage:
[-h] [-f CSV_FILE] [--predicted-file PREDICTED_FILE]
[--model {template,dnn}] --model-path MODEL_PATH
[--config-file CONFIG_FILE]
{train,predict,finetune}
SQLdiag integrated by openGauss.
positional arguments:
{train,predict,finetune}
The training mode is to perform feature extraction and
model training based on historical SQL statements. The
prediction mode is to predict the execution time of a
new SQL statement through the trained model.
optional arguments:
-h, --help
show this help message and exit
-f CSV_FILE, --csv-file CSV_FILE
The data set for training or prediction. The file
format is CSV. If it is two columns, the format is
(SQL statement, duration time). If it is three

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
398
columns, the format is (timestamp of SQL statement
execution time, SQL statement, duration time).
--predicted-file PREDICTED_FILE
The file path to save the predicted result.
--model {template,dnn}
Choose the model model to use.
--model-path MODEL_PATH
The storage path of the model file, used to read or
save the model file.
--config-file CONFIG_FILE