返回首页

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

更新日期:2024年09月11日

事务隔离级别
事务隔离级别,它决定多个事务并发操作同一个对象时的处理方式。
在事务中第一个数据修改语句
(SELECT,
INSERT,
DELETE,
UPDATE,
FETCH,
COPY)
执行之后,事务隔离级别就不能再次设置。

READ COMMITTED:
读已提交隔离级别,
事务只能读到已提交的数据而不会读到未提
交的数据,这是缺省值。
实际上,SELECT 查询会查看到在查询开始运行的瞬间该数据库的一个快照。不过,
SELECT 能查看到其自身所在事务中先前更新的执行结果。
即使先前更新尚未提交。

注意,在同一个事务里两个相邻的SELECT 命令可能会查看到不同的快照,因为其它
事务会在第一个SELECT 执行期间提交。
因为在读已提交模式里,
每个新的命令都是从一个新的快照开始的,
而这个快照包含所
有到该时刻为止已提交的事务,
因此同一事务中后面的命令将看到任何已提交的其它事
务的效果。这里关心的问题是在单个命令里是否看到数据库里绝对一致的视图。
读已提交模式提供的部分事务隔离对于许多应用而言是足够的,并且这个模式速度快,
使用简单。不过,
对于做复杂查询和更新的应用,
可能需要保证数据库有比读已提交模
式更加严格的一致性视图。

REPEATABLE READ:事务可重复读隔离级别,事务只能读到事务开始之前已提交的
数据,不能读到未提交的数据以及事务执行期间其它并发事务提交的修改(但是,
查询
能查看到自身所在事务中先前更新的执行结果,即使先前更新尚未提交)
。这个级别和
读已提交是不一样的,
因为可重复读事务中的查询看到的是事务开始时的快照,
不是该
事务内部当前查询开始时的快照,就是说,单个事务内部的select 命令总是查看到同样

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
6
的数据,
查看不到自身事务开始之后其他并发事务修改后提交的数据。
使用该级别的应
用必须准备好重试事务,因为可能会发生串行化失败。

将 HDR 或 RS 集群复原回原始配置时,可能需要复原关键介质,以及重新启动和配置
集群中的服务器。
磁盘故障的结果取决于磁盘故障发生在主数据库服务器上还是辅助数据库服务器上、磁盘
上的块是否包含关键介质(根数据库空间、逻辑日志文件或物理日志)以及块是否已镜
像。
如果块已镜像,您可以执行恢复,如同您为使用镜像的标准数据库服务器所做的一样。
如果块未镜像,那么复原主数据库服务器的过程取决于发生故障的磁盘是否包含关键介
质:

如果磁盘中包含关键介质,那么主数据库服务器将发生故障。必须使用主数据库
空间备份(或如果辅助数据库服务器切换为标准方式并重定向了活动,那么使用
辅助数据库空间备份)执行完全复原。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 477 -

如果磁盘不包含关键介质,您可以用热复原来分别复原受影响的数据库空间。热
复原由两个部分组成:首先从备份对发生故障的数据库空间进行复原,随后对自
该数据库空间备份以来所有写入的逻辑日志记录进行逻辑复原。您必须在执行热
复原之前备份所有逻辑日志文件。
在块未镜像的情况下,如果磁盘包含关键介质,辅助数据库服务器将发生故障;但如果磁
盘不包含关键介质,辅助数据库服务器将保持联机状态。在这两种情况下,都必须在主数
据库服务器上使用数据库空间备份执行完全复原。在第二种情况下,您无法从辅助数据库
空间备份复原所选的数据库空间,因为此时它们可能是从主数据库服务器上的相应数据库
空间派生而来的。您必须执行完整的复原。
关键数据损坏后恢复集群
如果 HDR 或 RS 集群中的某个数据库服务器遇到损坏根数据库空间(包含逻辑日志文
件或物理日志的数据库空间)的故障,那么必须将发生故障的数据库服务器视为在磁盘上
没有任何数据,并且假定您是首次启动 HDR 或 RS 集群。 将正在运行的带有完整磁盘
的数据库服务器作为带有数据的数据库服务器来使用。
主服务器故障
对于以下步骤,假设配置中包含名为 srv_A 的主服务器和名为 srv_B 的 HDR 辅助服务
器。重新启动 RS 集群的步骤与此类似。
要在严重介质故障后重新启动 HDR,请执行以下操作:
1.
srv_B 上的 DRAUTO 配置参数会影响您下一步的操作
ₒ 如果此参数设置为 0,那么必须通过运行 onmode -d make primary 命令将服务器转
换为主服务器。
ₒ 如果此参数设置为 1 (RETAIN_TYPE),那么通过运行 onmode -d make primary 命
令将服务器转换为主服务器。
ₒ 如果设置为 2 (REVERSE_TYPE),那么一旦因旧的主服务器发生故障导致连接结
束,辅助数据库服务器将立即成为主数据库服务器。
2.
从上次数据库空间备份复原 srv_A(主数据库服务器)。
3.
使用 onmode -d 命令将 srv_A 设置为 HDR 辅助数据库服务器并启动 HDR。
onmode -d 命令可在 srv_B 上从逻辑日志文件启动逻辑恢复。如果由于已在 srv_B上备
份并释放了逻辑日志文件而无法完成逻辑恢复,那么 HDR 要到执行下一步时才会启
动。
4.
应用来自 srv_B 的逻辑日志文件(新的主数据库服务器),这些文件已备份到磁带。
HDR 对现在可运行;但是,将交换 srv_A 和 srv_B 的角色。要将 srv_A 和 srv_B 交
换回其原始角色,请遵循指示信息:在辅助服务器成为主服务器后恢复 HDR 集群。
表 1. 主数据库服务器上发生严重介质故障后恢复 HDR 的步骤

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 478 -
步骤
在主数据库服务器 (svr_A) 上
在辅助数据库服务器 (svr_B) 上
1.

onmode 命令
onmode -d make primary srv_A
2.
ontape 命令
ontape -p
ON-Bar 命令
onbar -r -p

3.
onmode 命令
onmode -d secondary srv_B

4.
ontape 命令
ontape -l
ON-Bar 命令
onbar -r -l

辅助服务器故障
如果辅助数据库服务器遇到严重介质故障,请遵循首次启动集群的步骤来恢复集群。
主服务器和辅助服务器故障
如果正在运行复制对中数据库服务器的两台计算机不幸同时遇到损坏根数据库空间(包含
逻辑日志文件或物理日志的数据库空间)的故障,那么必须重新启动集群。
要在两个数据库服务器上都发生严重介质故障后重新启动 HDR 或 RS 集群:
1.
从存储空间和逻辑日志备份复原主数据库服务器。
2. 复原主数据库服务器后,请将另一台发生故障的数据库服务器视为在磁盘上没有
任何数据,并且假定您是首次启动 HDR 或 RS 集群。
网络故障后重新启动 HDR 或 RS 集群

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 479 -
发生网络故障之后,HDR 或 RS 集群可能需要重新启动。在网络故障后,主数据库服务
器处于联机方式,辅助数据库服务器处于只读方式。复制在两个数据库服务器上都会关闭
(state = off)。
可能不需要重新启动集群,因为主数据库服务器会尝试每 10 秒重新连接一次,并且每 2
分钟显示一次有关无法连接的消息。
如果集群未自动重新启动,那么重新建立连接时,可以通过在辅助服务器上运行以下命令
来重新启动集群:

onmode -d secondary primary_name,以使该辅助服务器成为主服务器。
辅助服务器发生故障时重新启动 HDR 或 RS 集群
如果在辅助服务器发生故障后必须重新启动 HDR 或 RS 集群,那么除了启动该辅助服
务器外,还可能需要在该辅助服务器上执行逻辑日志复原。
这些步骤假设您自辅助数据库服务器发生故障后一直按需要备份主数据库服务器上的逻辑
日志文件。
表 1. 辅助数据库服务器上发生故障后的重新启动步骤
步骤
在主服务器上
在辅助服务器上
1.
主数据库服务器必须处于联机方式。 oninit
如果您在消息日志中接收到以下消息,请
继续步骤 2 :
DR: Start Failure recovery from tape
2.

ontape 命令
ontape -l
ON-Bar 命令
onbar -r -l
在辅助服务器成为主服务器后恢复 HDR 集群
如果在原始主服务器发生故障后,HDR 集群中的辅助服务器成为主服务器,那么可以使
用脚本来重新建立原始主服务器,然后将当前主服务器转换回辅助服务器。
假设主服务器 srv_pri 遇到了错误,以至于要故障转移至辅助服务器 srv_hdr_sec。此时,
主服务器是 srv_hdr_sec,并且集群中的所有其他辅助服务器现在都指向 srv_hdr_sec。
要将集群复原至 srv_pri 执行故障转移之前的状态,请遵循以下步骤:

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 480 -
1.
通过运行适当命令将 srv_pri 初始化为 HDR 辅助服务器:
UNIX™ 系统:
$GBASEDBTDIR/bin/hdrmksec.sh srv_hdr_sec
2.
通过运行以下命令将 srv_pri 更改为主服务器:
onmode -d make primary srv_pri
此命令将使 srv_pri 成为主服务器,并将集群中的其他任何辅助服务器重定向为指向
新的主服务器。 该命令也会关闭原有 HDR 主服务器 (srv_hdr_sec),这是因为高可
用性环境中只能存在一个主服务器。
3.
通过运行以下命令将 srv_hdr_sec 初始化为 HDR 辅助服务器:
在 UNIX 系统上:
$GBASEDBTDIR/bin/hdrmksec.sh srv_pri
主服务器发生故障时重新启动
在主服务器发生故障后重新启动 HDR 或 RS 集群的过程取决于是否辅助服务器是否成
为主服务器,以及该辅助服务器成为主服务器的方法。
辅助数据库服务器未更改为标准数据库服务器
如果主数据库服务器发生故障后必须重新启动 HDR 或 RS 集群,并且辅助数据库服务
器没有更改为标准数据库服务器,请使用 oninit 命令启动主数据库服务器。
辅助数据库服务器已手动更改为标准数据库服务器
如果主数据库服务器发生故障后必须重新启动 HDR 或 RS 集群,并且您已将辅助数据
库服务器手动更改为标准数据库服务器,请完成下表中的步骤。
表 1. 将辅助数据库服务器更改为标准服务器后的重新启动步骤
步骤
在主数据库服务器上
在辅助数据库服务器上
1.

onmode -s
该步骤将辅助数据库服务器
(现为标准服务器)变为静
默方式。所有连接至该数据
库服务器的客户机必须断开
连接。执行更新的应用程序
必须重定向到主服务器。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 481 -
步骤
在主数据库服务器上
在辅助数据库服务器上
2.

onmode -d
secondary prim_name
3.
oninit
如果所有写入辅助数据库服务器的逻辑日志记录
仍在辅助数据库服务器磁盘上,那么当您发
出 oninit 命令时主数据库服务器将从该磁盘
恢复这些记录。
如果您已备份并释放辅助数据库服务器上的逻辑
日志文件,那么这些文件中的记录不再在磁盘
上。 在这种情况下,会提示您从磁带恢复这些逻
辑日志文件(步骤 4)。
对于 ontape 用户:
如果您希望通过网络读取逻辑日志记录,请将逻
辑日志磁带设备设置为正在运行辅助数据库服务
器的计算机上的设备。

4.
如果提示您从磁带恢复逻辑日志记录,请执行此步
骤。
ontape 命令
ontape -l
ON-Bar 命令
onbar -r -l

辅助数据库服务器已自动更改为标准数据库服务器
如果主数据库服务器发生故障后必须重新启动 HDR 或 RS 集群,并且辅助数据库服务
器已自动更改为标准数据库服务器,请完成下表中所示的步骤。
表 2. 将辅助数据库服务器更改为标准服务器后的自动重新启动步骤

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 482 -
步骤
在主数据库服务器上
在辅助数据库服务器上
1.
% oninit
如果 DRAUTO = 1,那么此数据库服务器的类型
将设置为主数据库服务器。
如果 DRAUTO = 2,那么当此数据库服务器重新
启动时,其类型将设置为辅助数据库服务器。
如果所有写入辅助数据库服务器的逻辑日志记录
仍在辅助数据库服务器磁盘上,那么当您发
出 oninit 命令时主数据库服务器将从该磁盘
恢复这些记录。
如果您已备份和释放的逻辑日志文件位于辅助数
据库服务器上,那么这些文件中的记录将不再位
于磁盘之上。在这种情况下,会提示您从磁带恢
复这些逻辑日志文件(步骤 2)。
对于 ontape 用户:

将逻辑日志磁带设备设置为正在运行辅助数据
库服务器的计算机上的设备。
如果 DRAUTO = 1 ,那么
当您进行主备份时,辅助数
据库服务器将自动平稳关
闭。这可确保断开所有客户
机的连接。然后,类型切换
回辅助。执行更新的所有应
用程序必须重定向到主数据
库服务器。
如果 DRAUTO = 2,那么辅
助数据库服务器将自动转换
为主数据库服务器。在旧的
主数据库服务器重新启动并
与其他服务器连接,并确定
它现在是主数据库服务器之
后,它将成为辅助数据库服
务器。
2.
如果提示您从磁带恢复逻辑日志记录,请执行此
步骤。
ontape 命令
% ontape -l
ON-Bar 命令
onbar -r -l

在Views 节点上点击右键选择“创建视图”命令或者执行Visual Studio
的“数据”菜单的“新增”子菜单下的“视图”命令,则会显示视图定义模板
(图9-14)
,输入视图定义的SQL 语句后,使用“Ctrl
+
S”保存定义,或者点
击Visual
Studio 的“标准”工具条上的
按钮保存。视图保存后会在Views
节点下新增一个视图子节点,以视图名命名。

GBase 8a 程序员手册ADO.NET 篇


- 74 -

南大通用数据技术股份有限公司

图 9-14 视图定义模板