默认分类,运维管理
数据库管理、维护、故障处理等

GBase 8s数据库用户登陆验证大致过程

注:对非gbasedbt或者root用户
注:仅是大致过程

1,访问系统库sysuser的表sysintauthuser。
如果用户名不匹配username,则认为不是内部用户,转使用操作系统验证;如果匹配username,则继续2。
2,访问系统库sysuser的表sysusermap。
如果用户名不匹配username,刚使用默认用户(default user的properties);如果匹配username,则获取surrogate_id。继续3。
3,访问系统库sysuser的表syssurrogates。
如果surrogate_id不匹配,则报错退出; 如果匹配,则获取os_username。继续4。
4,与加载到内存中的allowed.surrogates对比。
如果不匹配,报警告,转使用操作系统验证;如果匹配,完成检验。

GBase 8s内部用户与操作系统用户验证关系

分为两个场景

先有操作系统用户

1,未创建同名的内部用户

用户验证使用操作系统检验。

2,使用默认方式创建同名内部用户

将自动与同名操作系统用户绑定代理映射,用户检验时先从内部校验,但找不到代理映射用户(online.log中会的警告),而后将使用操作系统检验。
注:这种情况下,修改allowed.surrogates增加同名代理映射用户,并重新加载到内存。此时,内部用户检验通过,将使用内部检验。

3,创建同名内部用户时指定有效的代理映射用户

用户检验使用内部检验

先有内部用户(代理映射正常)

1,未创建同名的操作系统用户

用户校验使用内部检验

2,创建同名的操作系统用户

用户校验使用内部检验

Django 4 操作GBase 8s数据库配置示例(Linux)

简介:

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

系统要求:
1,操作系统使用22.04.3 LTS
2,unixodbc及unixodbc-dev已经安装
3,GBase 8s CSDK 64bit(客户端连接工具)已经安装
4,Python版本是3.10.12(系统自带)
5,Django版本使用4.2.15
6,需要pyodbc
7,使用django_gbasedbtdb 1.11.5版本

阅读全文»

GBase 8s数据库随系统启动、自重启配置

近期的客户想实现数据库自重启功能(即故障后自动重启),该功能需要在自动启动的基础上进行改进。
关于systemd方式实现自启动的方法可参考之前的文档:https://gbasedbt.com/index.php/archives/161/
以下仍是通过systemd方式实现GBase 8s数据库的自启动、自重启与关闭。
注意:自启动、自重启仅适用于单机,而不要用于集群环境
适用于操作系统: RHEL7/CENTOS7, 以及基于RHEL7内核的系统。

systemd需要的两个配置文件目录为

1,service 文件所在位置 /usr/lib/systemd/system/
2,service 的环境配置文件位置 /etc/sysconfig/

阅读全文»

GBase 8s数据类型CLOB直接insert功能

GBase 8s的数据库CLOB是一种文本智能大对象类型,一般情况下可以使用fileclob函数进行插入数据,或者在程序中使用绑定变量的方式插入。
在GBase 8s的SQLMODE=Oracle模式中,实现了直接insert操作,但SQLMODE=GBase模式中没有实现
以下介绍自己实现在SQLMODE=GBase模式下实现直接insert clob的操作的方法
注意:数据库版本的不同,可能实现的方法略有不同
从扩展中创建dbms_lob_* 函数,使用到的:

阅读全文»

GBase 8s 数据库集群切换及恢复

GBase 8s 数据库切换分为自动切换、由CM控制的按FOC规则的切换、手工切换。

自动切换

全自动切换用于HAC集群中,由于集群只有两个节点,数据库相互之前进行状态检查,发现异常时,能按DRAUTO的配置方式进行自动切换。
在HAC集群中:
DRAUTO参数配置为2时

  • 1,当出现主节点故障时,备节点将自动提升为主节点。原主节点可通过直接启动的方式加入HAC集群,并自动成为HAC集群的备节点(限制条件:主节点的逻辑日志没有覆盖掉原主节点故障时的逻辑日志,即未出现逻辑日志绕圈)。
  • 2,当出现备节点与主节点网络超时,备节点也将自动升级为主节点。如果原主节点保持运行,当网络恢复时,会形成双主现象(即脑裂),主节点会要求原主节点关闭,由于脑裂已经形成,无法能过直接启动的方式恢复HAC集群,仅能通过重建HAC集群的方式进行恢复。

阅读全文»

Nginx下PHP连接到GBase 8s数据库 - PDO_GBASEDBT方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务
  • gcc/gcc-c++

数据库连接工具(CSDK)

  • GBase 8s CSDK(需含ESQLC组件)

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

Nginx下PHP连接到GBase 8s数据库 - PDO_ODBC方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • unixODBC及unixODBC-devel
  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务

数据库连接工具(CSDK)

  • GBase 8s CSDK

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

Nginx下php连接到GBase 8s数据库 - ODBC方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • unixODBC及unixODBC-devel
  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务

数据库连接工具(CSDK)

  • GBase 8s CSDK

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

GBase 8s 中的关键字(表达式)

GBase 8s中有一些特殊的关键字,比如rowid,rownum这样的,可以直接在查询语句中直接使用,表示特定的含义。
这种类型的关键字,在使用到表上时需要特别小心,否则可能得非预想要的结果。
如:

1
select * from tab1 where default_role like '%N%';

表面上的意思是:查询tab1中default_role字段中包含'N'字符的数据,select * from tab1返回的default_role字段中也有包含'N'的数据。但它却返回了空结果?!为什么呢?
原因就是DEFAULT_ROLE是内置关键字,直接写DEFAULT_ROLE是获取当前用户的默认角色,当前默认角色名并不包含'N',因此该语句应该改成

1
select * from tab1 where tab1.default_role like '%N%';

也就是说:使用表名/表别名限制定符.字段名称时,SQL才会正确解析为字段名称。这也只是规避方法,更合理的方式是:不使用保留的关键字做表名、字段和别名。
注:对于其关键字,也适合于使用 表名/表别名限制定符.字段名称 的方式。

阅读全文»