接下来让我探索下人大金仓的秘密:
查看数据库版本号:
#show server_version;
server_version
-------------------
V008R003C002B0061
(1 row)
#
可以看到这是人大金仓的 V008R003C002B0061版本。
查看一些系统表,是不是发现一些秘密,怎么跟POSTGRESQL如此的像?只不过是将PG的敏感字样替换成了SYS系统字样:
#\dt SYS_TYPE
List of relations
Schema | Name | Type | Owner
-------------+----------+-------+--------
SYS_CATALOG | SYS_TYPE | table | SYSTEM
(1 row)
# \d SYS_TYPE
Table "SYS_CATALOG.SYS_TYPE"
Column | Type | Modifiers
----------------+---------------+-----------
TYPNAME | NAME | not null
TYPNAMESPACE | OID | not null
TYPOWNER | OID | not null
TYPLEN | SMALLINT | not null
TYPBYVAL | BOOLEAN | not null
TYPTYPE | "CHAR" | not null
TYPCATEGORY | "CHAR" | not null
TYPISPREFERRED | BOOLEAN | not null
TYPISDEFINED | BOOLEAN | not null
TYPDELIM | "CHAR" | not null
TYPRELID | OID | not null
TYPELEM | OID | not null
TYPARRAY | OID | not null
TYPINPUT | REGPROC | not null
TYPOUTPUT | REGPROC | not null
TYPRECEIVE | REGPROC | not null
TYPSEND | REGPROC | not null
TYPMODIN | REGPROC | not null
TYPMODOUT | REGPROC | not null
TYPANALYZE | REGPROC | not null
TYPALIGN | "CHAR" | not null
TYPSTORAGE | "CHAR" | not null
TYPNOTNULL | BOOLEAN | not null
TYPBASETYPE | OID | not null
TYPTYPMOD | INTEGER | not null
TYPNDIMS | INTEGER | not null
TYPCOLLATION | OID | not null
TYPDEFAULTBIN | SYS_NODE_TREE |
TYPDEFAULT | TEXT |
TYPACL | ACLITEM[] |
Indexes:
"SYS_TYPE_OID_INDEX" UNIQUE, BTREE (OID)
"SYS_TYPE_TYPNAME_NSP_INDEX" UNIQUE, BTREE (TYPNAME, TYPNAMESPACE)
我们查看日志信息:
[root@amreica sys_log]# ls -al
总用量 20
drwx------ 2 kingbase kingbase 4096 2月 6 00:00 .
drwx------ 21 kingbase kingbase 4096 2月 5 15:57 ..
-rw------- 1 kingbase kingbase 1439 2月 5 15:57 kingbase-2020-08-05_155752.log
-rw------- 1 kingbase kingbase 283 2月 6 11:22 kingbase-2020-08-06_000000.log
-rw------- 1 kingbase kingbase 1471 2月 5 15:57 startup.log
[root@amreica sys_log]#
[root@amreica sys_log]#
[root@amreica Logs]# ls -al
总用量 528
drwxrwxr-x 2 kingbase kingbase 4096 2月 3 16:31 .
drwxr-x--x 22 kingbase kingbase 4096 2月 3 16:31 ..
-rwxr-xr-x 1 kingbase kingbase 531267 2月 3 16:31 KingbaseES_V8.log
[root@amreica Logs]#
但是这时候发现并没有在线的二进制日志,这时候需要人大金仓开启下列数据库参数,在kingbase.conf配置文件里,有个log_statement,参数分为四档,分别是none, ddl, mod, all用来控制哪些 SQL 语句被记录,ddl记录所有数据定义语句,例如CREATE、ALTER和DROP语句。mod记录所有ddl语句,外加数据修改语句例如INSERT,UPDATE、DELETE、TRUNCATE,和COPY FROM。如果PREPARE、EXECUTE和EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。对于使用扩展查询协议的客户端,当收到一个执行消息时会产生日志并且会包括绑定参数的值(任何内嵌的单引号会被双写)。
关闭数据库:
[kingbase@amreica ~]$ sys_ctl stop -D home/kingbase/opt/data
等待服务器进程关闭 .... 完成
服务器进程已经关闭
[kingbase@amreica ~]$
启动数据库:
kingbase -D home/kingbase/opt/data >logfile 2>&1 &
日志信息:
位置: PostmasterMain, postmaster.c:623
致命错误: XX000: License file should have write access mode in floating mode, or use license generating date as base date.
位置: PostmasterMain, postmaster.c:623
致命错误: XX000: License file should have write access mode in floating mode, or use license generating date as base date.
位置: PostmasterMain, postmaster.c:623
致命错误: XX000: license file error, product version number does not match
位置: PostmasterMain, postmaster.c:627
致命错误: XX000: License file should have write access mode in floating mode, or use license generating date as base date.
位置: PostmasterMain, postmaster.c:623
致命错误: XX000: License file should have write access mode in floating mode, or use license generating date as base date.
位置: PostmasterMain, postmaster.c:623
2020-08-05 15:57:52 CST 日志: 日志输出重定向到日志收集进程
2020-08-05 15:57:52 CST 提示: 后续的日志输出将出现在目录 "sys_log"中.
[kingbase@amreica sys_log]$
参数开启会发现人大金仓的数据库日志记录到:
/home/kingbase/opt/data/sys_xlog
[kingbase@amreica sys_xlog]$ ls -al
总用量 16396
drwx------ 3 kingbase kingbase 4096 2月 3 16:31 .
drwx------ 21 kingbase kingbase 4096 2月 6 14:02 ..
-rw------- 1 kingbase kingbase 16777216 2月 6 14:07 000000010000000000000001
drwx------ 2 kingbase kingbase 4096 2月 3 16:31 archive_status
[kingbase@amreica sys_xlog]$
查看正常日志路径:
TEST=# show log_directory;
log_directory
---------------------------
/home/kingbase/opt/data/tt
(1 row)
TEST=#
强制开启表的全列日志:
test=# alter table TT REPLICA IDENTITY FULL;
ALTER TABLE
test=# insert into TT values (11);
INSERT 0 1
test=#
切换在线日志:
# select sys_switch_xlog();
sys_switch_xlog
-----------------
0/2000000
(1 row)
#
可以看到他这个把原有pg系统的表名都改为:
# select TABLE_NAME from user_tables;
TABLE_NAME
--------------------------
CHECK_PARAM
CHECK_TYPE
DEPEND
dual
HM_RUN_T
LOCAL_NODE
LOCAL_SYNC_STATUS
NODE
NODE_INTERFACE
QUEUE
REPLICATION_SET
REPLICATION_SET_SEQ
REPLICATION_SET_SLOT
REPLICATION_SET_TABLE
SEQUENCE_STATE
sql_features
sql_implementation_info
sql_languages
sql_packages
sql_parts
sql_sizing
sql_sizing_profiles
SUBSCRIPTION
SYS_AGGREGATE
SYS_AM
SYS_AMOP
SYS_AMPROC
SYS_ATTRDEF
SYS_ATTRIBUTE
SYS_AUDIT_BLOCKLOG
sysaudit_ids_log
sysaudit_ids_rules
sysaudit_rule
sysaudit_setting
SYS_AUDIT_USERLOG
SYS_AUTHID
SYS_AUTH_MEMBERS
SYS_CAST
SYS_CLASS
SYS_COLLATION
SYS_CONSTRAINT
SYS_CONVERSION
SYS_DATABASE
sys开头的系统表名了
结论:




