GBase 8s GDCA知识点整理

1.安装与卸载

参考:

https://www.gbase.cn/community/post/1452

2.客户端工具dbaccess

一共有四种运行模式:菜单交互、指令交互、管道交互、Bash脚本。

环境变量 功能
DBFLTMASK 设置如何显示浮点数的小数位
DBEDIT 设置使用哪个文本编辑器
DBMONEY 设置如何显示金额数据
GL_DATE 设置如何显示日期格式
GL_DATETIME 设置如何显示日期时间格式
DBACCESS_SHOW_TIME 设置是否显示SQL的执行时间

3.运行模式与切换

离线 在线 单用户 静态
离线 oninit oninit -j oninit -s
在线 onmode -ky onmode -j onmode -s 或 onmode -u
单用户 onmode -ky onmode -m onmode -s 或 onmode -u
静态 onmode -ky onmode -m onmode -j

三种过渡状态:
初始化(Initialization)
快速恢复(Fast Recovery)
关闭(Shutting Down)

关闭数据库时如果窗口期不够,则onmode -u将事务回滚,再关闭


4.数据类型

两大类:内置数据类型 扩展数据类型
BIGINT 存储 8 个字节的整数值,从 -(263 -1) 到 263 -1
BIGSERIAL 存储 8 个字节的正整数(自动生成),范围是 1 到 263 -1
BYTE 存储任何种类的二进制数据,最长 231 个字节
CHAR(n) 存储字符串
CHARACTER(n) CHAR 的同义词
CHARACTER VARYING(m,r) 存储可变长度字符串(符合 ANSI)
DATE 存储日期
DATETIME 存储日期时间
DEC DECIMAL 的同义词
DECIMAL 存储精度可定义的浮点数
DECIMAL (p,s) 定点 存储已定义小数位和精度的定点数
DOUBLE PRECISION FLOAT 的同义词
FLOAT(n) 存储相应于 C 中的 DOUBLE 数据类型的双精度浮点数
INT INTEGER 的同义词
INT8 存储 8 个字节的整数值,从 -(263 -1) 到 263 -1
INTEGER 存储从 -2,147,483,647 到 +2,147,483,647 的整数
INTERVAL 以年和月为单位存储时间范围
INTERVAL 以连续的单位日、小时、分钟、秒和秒的若干分之几存储时间范围
MONEY(p,s) 存储货币值
NCHAR(n) 与 CHAR 相同
NUMERIC(p,s) DECIMAL(p,s) 的同义词
NVARCHAR(m,r) 与 VARCHAR 相同
REAL SMALLFLOAT 的同义词
SERIAL(n) 在 INT 的正数范围内存储整数 (自动生成)
SERIAL8(n) 在 INT8 的正数范围内存储整数 (自动生成)
SMALLFLOAT 存储对应于 C 语言的 float 数据类型的单精度浮点数
SMALLINT 存储从 -32,767 到 +32,767 的整数
TEXT 存储任何种类的文本数据,最长 231 个字节
VARCHAR(m,r) 存储可变长度字符串(最长 32,765 个字节)

5.基本语法

与其他DBMS基本相同,这里列举几个不太一样的。

新增列
alter table t_user add (f_nickname varchar(20));

重命名列
rename column t_user.f_nickname to f_showname;

删除列
alter table t_user drop (f_showname);

新建索引
create unique index idx_user on t_user (f_userid asc);

新建同义词
create synonym syn_user for t_user;

新增触发器
create or replace trigger trg_sale_delete delete on t_sale
referencing old as old_item
for each row
(
insert into t_log(f_message, f_operatedate) values(concat(‘delete:f_saleid->’, to_char(old_item.f_saleid)), today)
);

删除数据
delete from中的from可以省略

合并插入
merge into t_user1 a
using t_user2 b
on a.f_userid = b.f_userid
when matched then update set a.f_age = b.f_age
when not matched then insert (a.f_userid, a.f_username, a.f_age) values(b.f_userid, b.f_username, b.f_age);

全连接
full outer join


6.常用函数

标量函数

数学函数汇总

abs 返回绝对值
ceil 返回大于参数的数值(天花板取整)
floor 返回小于参数的数值(地板取整)
round 返回参数的四舍五入数值
mod 返回第一个参数的模
pow 计算数值的N次方
sqrt 计算平方根
root 计算数值的N次方根
exp 计算指数
ln 计算自然对数
logn 计算自然对数
log 10 计算以10为底的对数
sin 计算正弦值
cos 计算余弦值

字符串函数

CONCAT,字符串拼接,
TRIM,从字符串的开头或结尾移除指定字符,
LTRIM,从字符串的开头移除指定字符,
RTRIM,从字符串的结尾移除指定字符,
SUBSTR,截取字符串,
SUBSTRB,截取字符串,
SUBSTRING,截取字符串,
INSTR,返回字符串中指定子串的开始位置,
ASCII,返回字符串第一个字符的编码,
REPLACE,替换字符串中的部分内容,
UPPER,将字符串的字母转成大写,
LOWER,将字符串的字母转成小写,
LENGTH,返回字符串的长度,
OCTET_LENGTH,返回字符串的长度,
CHAR LENGTH,返回字符串的长度,
REGEXP REPLACE,使用正则表达式方式替换字符串中的内容,
REGEXP SUBSTR,使用正则表达式方式替换字符串中的内容,
REGEXT_INSTR,计算字符串中指定正则表达式定义的字符事所在位置

日期时间函数

SYSDATE/CURRENT/TODAY 返回当前日期
LAST_DAY 返回月底日期,需要设置环境变量。
YEAR/MONTH/DAY 年月日
WEEKDAY/QUARTER 星期几和季度
ADD_MONTH
TO_DATE 转换为日期
TO_CHAR 转换为字符串

聚合函数

COUNT
SUM
AVG
MAX/MIN
WM_CONCAT 类似group_concat

窗口函数

主要是over()关键字
ROW_NUMBER/ROWNUMBER
RANK/DENSE_RANK
FIRST_VALUE/LAST_VALUE
MAX/MIN
SUM/AVG
LAG/LEAD

其它函数

DBINFO
NVL2 类似ifnull
HEX 进制
GetHzFullPY 拼音


7.SPL入门

  • SPL例程由开始语句,语句块,结束语句组成。
  • SPL例程根据是否需要返回值,分为存储过程和函数。
  • 语句块由SQL和SPL语句组成。

创建对象

存储过程
create procedure proc_name(param1 data_type1, param2 data_type2, …)
spl_code;
end procedure;

函数
create function func_name(param1 data_type1, param2 data_type2, …)
returning data_type1 [as id1], data_type2 [as id2], …
spl_code;
return val1, val2, … [with resume];
end function;

变量

变量声明:
define var data_type;
define global var data_type default def_value;

变量赋值:
let var = value;
let var1, var2,… = val1, val2, …;
let var1, var2, … = function(args1, args2, …);
let var1, var2, … = (select col1, col2, … from table_name);

条件

case when:
case expr
when val_1 then
code_1
[when val_2 then
code_2 …]
else
code_n
end case;

if elif:
if condition_1 then
code_1
elif condition_2 then
code_2
elif condition_3 then
code_3

else
code_n
end if;

循环

循环中LOOP…END LOOP、WHILE…END WHILE块中必须有合理的退出循环的条件,否则会出现死循环。

GOTO
<<lbl_goto>>
spl_code;
if expr then
goto lbl_goto;
end if;

LOOP
loop
if expr then
exit;
end if;
end loop;

loop
exit when expr;
end loop;

FOR/FOREACH
for i in (start_val to end_val) loop
spl_code;
end loop;

for i in (start_val to end_val)
spl_code;
end for;

foreach select col1, col2,… into var1, var2,… from table_name
spl_code;
end foreach;

WHILE
while expr loop
spl_code;
end loop;

while expr
spl_code;
end while;

异常处理
on exception [in (…)] set sql_err_num[,isam_err_num]
spl_code;
end exception [with resume];


8.数据迁移

参考:

https://www.gbase.cn/community/post/1464

数据迁移问题

  • 行分隔符
  • 列分隔符
  • 日期时间格式
  • 汉字乱码
数据迁移方法 运行方式 数据格式 数据范围 数据用途
unload/load SQL 文本数据 单表 自用/第三方
dbexport/dbimport 命令行 文本数据 自用
dbload 命令行 文本数据 多表 自用
onunload/onload 命令行 二进制数据 库/表 自用
external table SQL 文本数据 单表(快) 自用/第三方

9.备份与恢复

ontape

概述

  • ontape支持L0,L1,L2三级备份与恢复。
  • ontape支持逻辑日志的备份与恢复。
  • ontape本身不支持基于时间点的恢复(PITR)。

备份命令
ontape -s -L 0 进行L0级备份
ontape -s -L 1 进行L1级备份
ontape -s -L 2 进行L2级备份
ontape -a 进行自动逻辑日志备份
ontape -c 启动连续逻辑日志备份
ontape -S 抢救逻辑日志

恢复命令
ontape -r 完成回复
ontape -p 进行物理恢复
ontape -l 进行逻辑恢复
ontape -C 连续逻辑日志恢复
ontape -X 停止连续逻辑日志恢复

环境参数
使用ontape进行数据库的备份与恢复时,需要设置ontape默认使用的存储设备。
可通过修改参数文件,或使用 onmode -wf 命令,设置GBase 8s的参数。
可通过 onstat -c 命令,查看GBase 8s的参数设置。

设置物理备份和逻辑备份的存储设备为新创建的目录
onmode -wf “TAPEDEV=/home/gbasedbt/backup”
onmode -wf “LTAPEDEV=/home/gbasedbt/backup”

操作
灾难发生后重启数据库,出现错误信息。
数据库报错,信息:Cannot open chunk ‘/opt/gbase/gbaseserver_dbs/datadbs1_1’.
执行逻辑日志的备份ontape -a后,目录中出现两个备份的逻辑日志(devsvr_120_Log0000000033和devsvr_120_Log0000000034)。
进行逻辑日志备份时,会产生逻辑日志切换。onstat -l查看,当前的逻辑日志文件变为12,唯一编号为35。
为丢失的数据库空间文件,创建一个同名的空文件,并设置好相应的权限。
关闭GBase 8s数据库实例onmode -ky,并进行完全恢复ontape -r。

onbar

ON-Bar 由各种组件组成,它需要与存储管理器一起使用,来备份和恢复数据。

ON-Bar组件

  • sysutils 数据库,其中包含ON-Bar目录表
  • onbar 和 onbar_d 命令行实用程序
  • 系统上存储管理器的 XBSA 共享库
  • 用于存储备份的存储介质
  • ON-Bar活动日志
  • ON-Bar紧急引导文件

GBase 8s 的ON-Bar支持第三方的存储管理器,进行数据库的备份与恢复。GBase 8s也内置了一个存储管理器PSM(Primary Storage Manager)。
对于备份会话,ON-Bar 从数据库服务器请求存储空间和逻辑日志的内容,并将它们传递到存储管理器。存储管理器将数据存储在存储介质上。
对于恢复会话,ON-Bar 从存储管理器请求已备份的数据,然后在数据库服务器上恢复该数据。

配置存储管理器OSM的共享库
ON-Bar 和存储管理器通过“备份服务应用程序编程接口 (XBSA)”通信,该接口支持将存储管理器作为数据库服务器的备份介质。
通过使用存储管理器的开放式系统接口,ON-Bar 可以与各种同样使用 XBSA 的存储管理器一起协同工作。
GBase 8s 内置了一个存储管理器PSM,该存储管理器的接口库位置为/opt/gbase/lib/libbsapsm.so

配置参数
使用ON-Bar时,需要做一些简单的配置,配置参数如下:

  • BAR_BSALIB_PATH 指定XBSA库位置
    onmode -wf BAR_BSALIB_PATH=/opt/gbase/lib/libbsapsm.so
  • LTAPEDEV 逻辑日志备份目录
    onmode -wf LTAPEDEV=/opt/gbase/backups
    说明:LTAPEDEV是ontape中的一个参数,在使用onbar时,该参数不能为/dev/null。我们可以临时为参数设置一个目录,实际备份时,逻辑日志并不保存在该目录中。
  • BAR_MAX_BACKUP 最大并行进程数

PSM配置
初始化Catalog
onpsm -C init

查看PSM设备情况
onpsm -D list

配置PSM设备
我们不使用默认的PSM设备,使用下面的方法,添加一个自己的设备,并将原来的设备删除。
mkdir -p /opt/gbase/dbspool
mkdir -p /opt/gbase/logpool
onpsm -D add /opt/gbase/dbspool -g DBSPOOL -p HIGHEST -t FILE
onpsm -D add /opt/gbase/logpool -g LOGPOOL -p HIGHEST -t FILE
onpsm -D del /opt/gbase/backups -d
onpsm -D list

备份操作

  • 查看实例的服务器编号 onstat -c | grep SERVERNUM ,为165
  • 执行L0备份 onbar -b -L 0
    L0备份了rootdbs,plogdbs,llogdbs,datadbs,ixbar,oncfg,onconfig,sqlhosts。另外还有一个目录/gbaseserver/165/10/gbaseserver.1,其中的165为实例的服务器编号,14为当前逻辑日志的唯一编号(uniqid)。
  • 进行L1备份 onbar -b -L 1
    进行两次L1备份后,备份文件变为42个。通过观察,ON-Bar备份时,PSM是通过组织文件系统的目录来管理备份文件的。PSM为L0,L1,L2创建3个目录,分别为0,1,2。每个备份文件名称为<instance_name>.<seq_num>。
    逻辑日志的备份,是按逻辑日志的唯一编号,创建对应的目录进行存储。
  • 进行L2备份 onbar -b -L 2
    备份完成后,当前的逻辑日志唯一编号为18
  • 查看备份列表 onpsm -O list
  • 查看数据的最新备份情况 onstat -g arc (归档)

完全恢复
在GBase 8s启动过程中,会因无法打开被删除的文件而报错。
Cannot open chunk ‘/opt/gbase/gbaseserver_dbs/datadbs1_1
根据报错中的信息,得到被删除的Chunk文件(datadbs1_1)。
然后创建被删除的文件,并设置权限。
然后完全恢复 onbar -r

PITR
基于时间点的不完全恢复
onbar -r -t ‘2021-07-30 17:06:45’


10.元数据查询

  • 查询数据库
    database sysmaster;
    select name, is_logging, is_case_insens from sysdatabases;
  • 查询数据库字符集
    database sysmaster;
    select * from sysdbslocale;
  • 查询表
    database <db_name>;
    select tabid, tabname, tabtype from systables where tabid >= 100 and tabtype = ‘T’;
  • 查询列
    database <db_name>;
    select colname from syscolumns where tabid = <tab_id>;
    select colname, coltype, coltypename from syscolumnsext where tabid = <tab_id> order by colno;
  • 查询视图
    database <db_name>;
    select tabname,tabtype from systables where tabid >= 100 and tabtype = ‘V’;
  • 查询表的索引
    database <db_name>;
    select tabid, idxname,tabid,idxtype from sysindexes where tabid = <tab_id>;
  • 查询触发器
    database <db_name>;
    select * from systriggers;
  • 存储过程
    database <db_name>;
    select procname, procid from sysprocedures where procname like ‘<key_word>%’;
  • 函数
    database <db_name>;
    select * from sysprocedures where procname like ‘<key_word>%’;
  • 同义词
    database <db_name>;
    select * from syssyntable where tabname is not null;
    select a.tabid, a.btabid, b.tabname as syn_name, c.tabname as tab_name
    from
    (select * from syssyntable where tabname is null) a
    inner join systables b
    on a.tabid = b.tabid
    inner join systables c
    on a.btabid = c.tabid;
  • 主键
    database <db_name>;
    select * from sysconstraints where constrtype = ‘P’;
  • 外键
    database <db_name>;
    select * from sysconstraints where constrtype = ‘R’;
  • 唯一索引
    database <db_name>;
    select * from sysconstraints where constrtype = ‘U’;
  • NULL
    database <db_name>;
    select * from sysconstraints where constrtype = ‘N’;
  • 默认值
    database <db_name>;
    select * from sysdefaults where tabid = <tab_id>;
  • Check
    database <db_name>;
    select * from sysconstraints where constrtype = ‘C’;
    select * from syschecks where type = ‘T’ and constrid = <constr_id>;
  • 查询数据库空间
    database sysmaster;
    select * from sysdbspaces;
  • 查看Chunk
    database sysmaster;
    select * from syschunks;
  • 查看VP
    database sysmaster;
    select * from sysvplst;
  • 查看物理日志
    database sysmaster;
    select * from sysplog;
  • 查看逻辑日志
    database sysmaster;
    select * from syslogs;
  • 查看会话
    database sysmaster;
    select * from syssessions;
  • 用户
    select * from sysusers;

11.管理员常用命令

oninit

  • oninit -i 初始化dbspace的磁盘空间
  • oninit 启动数据库到在线模式下
    oninit -vy 参数说明
    v:启动过程中,输出详细信息。
    y:使用非交互方式,即如果有需要选择的,全部按y处理。
  • oninit -j 启动数据库到单用户模式下
  • oninit -s 启动数据库到静态模式下

onmode

  • onmode -m 将数据库服务器从静态模式或单用户模式,切换为在线模式
  • onmode -k 使数据库服务器处于离线模式,并清除共享内存(关库)
  • onmode -s 以优雅的方式关闭数据库服务器,切换到静态模式
  • onmode -u 立即关闭数据库服务器,切换到静态模式
  • onmode -j 使数据库服务器进入单用户方式
  • onmode -l 切换逻辑日志文件
  • onmode -c 强制执行检查点
    onmode -c unblock
    onmode -c block
  • onmode -r 开始共享内存的常驻部分的强制驻留
  • onmode -n 结束共享内存的常驻部分的强制驻留
  • onmode -p 添加或删除虚拟管理器
    onmode -p +num <vp_class>
    onmode -p -num <vp_class>
    onstat -g glo 查看当前的VP信息
  • onmode -P 动态地启动、停止或重启监听线程
    onmode -P <start|stop|restart> <instance_name>
  • onmode -wf 更新 onconfig 文件中指定配置参数的值(内存和配置文件都改)
    说明:只有部分参数支持动态更改。
    如onmode -wf TAPEDEV=/home/gbasedbt/backup
  • onmode -wm 动态设置内存中指定配置参数的值
    如onmode -wm LISTEN_TIMEOUT=50
  • onmode -z 终止数据库服务器会话
    onmode -z <session_id>

onstat

onstat – 打印数据库当前运行模式
onstat -c 打印onconfig文件内容
onstat -m 打印系统在线日志最新信息
onstat -l 打印物理日志和逻辑日志使用状态
onstat -d 打印数据库空间和Chunk文件实用信息
onstat -D 打印数据库空间和Chunk文件读写信息
onstat -t 打印表空间信息
onstat -T 打印表空间信息
onstat -k 打印锁信息
onstat -p 打印系统运行状态统计
onstat -r 重复运行命令
onstat -r
onstat -u 打印用户线程
onstat -x 打印事务
onstat -g osi 打印操作系统的信息
onstat -g env 打印环境变量值
onstat -g cfg 打印配置参数的当前值
onstat -g cfg [full | diff | tunable | msg] [param_name]
onstat -g ckp 打印 checkpoint 历史记录和配置建议
onstat -g arc 打印归档状态
onstat -g ath 打印所有线程的信息
onstat -g act 打印活动线程
onstat -g bth 打印阻塞的和正在等待的线程
onstat -g buf 打印缓冲池的概要文件信息
onstat -g cpu 打印运行时间统计信息
onstat -g dis 打印数据库服务器信息
onstat -g dri 打印高可用性数据复制信息
onstat -g glo 打印全局多线程信息
onstat -g iof 显示异步IO统计信息
onstat -g iog 打印 AIO 全局信息
onstat -ioq 打印 I/O 队列信息
onstat -g iov 打印 AIO VP 统计信息
onstat -g mem 打印池内存统计信息
onstat -g ntu 打印网络用户统计信息
onstat -g ntt 打印网络用户时间
onstat -g opn 显示打开的分区(表和索引)
onstat -g sch 打印 VP 信息
onstat -g seg 打印共享内存段的统计信息
onstat -g ses [session_id] 打印与会话有关的信息
onstat -g smb [c | s] [e | h] [cad | fdd | lod] 打印 sbspace 信息
onstat -g sql <Session_ID> 打印与 SQL 有关的会话信息
onstat -g tpf <thread_id> 打印线程概要文件
onstat -g wai 打印等待队列线程队列
onstat -g wst 打印线程的等待统计信息

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/318069.html

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表回复

登录后才能评论