返回首页

gbase数据、南大通用产品文档:GBase8sonbar RESTART 语法:重新启动失败的恢复

更新日期:2024年09月11日

如果在恢复期间数据库服务器、
介质、
存储管理器或 ON-Bar 发生故障,
可以从发生故障之
处重新启动该恢复。要重新启动失败的恢复,当恢复失败时,onconfig 文件中的
RESTARTABLE_RESTORE 配置参数必须设置为 ON。
重新启动恢复

表 1. onbar -RESTART 命令.
选项
描述
-RESTART
在数据库服务器、
存储管理器或 ON-Bar 发生故障后重
新启动恢复。
当恢复失败时,
RESTARTABLE_RESTORE 配置参数必须设置
为 ON。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 77 -
可以重新开始以下类型的恢复:

整个系统

时间点

存储空间

冷恢复的逻辑部分
如果在热逻辑恢复期间发生故障,请勿使
用 -RESTART 选项。
用途
当您启用可重新启动的恢复时,如果恢复的逻辑日志很多,逻辑恢复将会变慢。但是,如
果恢复失败后重新启动恢复,可以节省时间。恢复是否可重新启动不会影响物理恢复的速
度。
物理恢复在发生故障的存储空间和级别处重新启动。当恢复了存储空间的某些块而不是所
有块时,如果恢复失败,那么将恢复该存储空间的所有块。失败前如果存储空间和增量备
份已成功恢复,那么不会再次恢复它们。
如果 BAR_RETRY 配置参数设置为 2,
那么 ON-Bar 会自动再次尝试恢复任何失败的存储
空间和逻辑日志。如果恢复成功,那么不需要重新启动恢复。
如果 BAR_RETRY 配置参数设置为 0 或 1,那么 ON-Bar 不会再次尝试恢复任何失败的
存储空间和逻辑日志。如果数据库服务器还在运行,ON-Bar跳过失败的存储空间并尝试恢
复剩余的存储空间。要完成恢复,请运行 onbar -RESTART 命令。
下图显示如果物理恢复 dbspace2 期间恢复失败,可重新启动的恢复是如何工作的。
rootdbs 的 0 级、1 级和 2 级备份,dbspace1 和dbspace2 的 0 级备份和 1 级备份都已成
功恢复。
恢复 dbspace2 的 1 级备份时数据库服务器出现故障。
重新启动恢复时,
ON-Bar 将
恢复dbspace 1 的 2 级备份,dbspace2 的 1 级和 2 级备份以及逻辑日志。
图: 可重新启动的物理恢复

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 78 -


如果恢复在逻辑阶段期间失败,
然后您重新启动该恢复,
那么 ON-Bar 会验证存储空间是否
已恢复,跳过物理恢复并重新启动逻辑恢复。下图显示在恢复逻辑日志 LL-3 时冷恢复失
败的情况。当重新启动冷逻辑恢复时,从最近的恢复检查点开始重放日志。在本示例中,
最近的检查点在逻辑日志 LL-2 中。
如果在冷逻辑恢复期间发生故障,ON-Bar 将在发生故障之处重新启动该恢复。
重要: 如果在热逻辑恢复期间发生故障,请从头重新启动该恢复。如果数据库服务器仍在运
行,请 运行 onbar -r -l 命令来完成恢复。
图: 可重新启动的冷逻辑恢复


判定enclosed 的值是否为TRUE
满足下列判断条件时,enclosed 的值为TRUE:
1)
如果该字段是字符串类型,
且通过FIELDS ENCLOSED BY 设定非空包围符,
则ENCLOSED 的值为TRUE。
2)
如果该字段是非字符串类型,且通过FIELDS ENCLOSED BY 设定了非空包
围符,在如下两种模式中,ENCLOSED 的值为TRUE。
a)
指定空字段分隔符,且对非空包围符加上OPTIONALLY 关键字,例如:
FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '"'。
b)
非空包围符不加OPTIONALLY 关键字,例如:FIELDS ENCLOSED BY
'"'。


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 89 -
每当发生来自 GBase 8s JDBC Driver 或数据库服务器的错误时,就发出 SQLException。请
使用 SQLException 类的下列方法,来检索错误消息的文本、错误代码和 SQLSTATE 值:
getMessage()
返回错误
SQLException 的描述,从 java.util.Throwable 类继承此方法。
getErrorCode()
返回对应于 GBase 8s 数据库服务器或 GBase 8s JDBC Driver 错误代码的整数值
getSQLState()
返回描述 SQLSTATE 值的字符串
该字符串遵守 X/Open SQLSTATE 惯例。
所有 GBase 8s JDBC Driver 错误都有形如 -79XXX 的错误代码,诸如 -79708: Can't take null
input。
要获取 GBase 8s 数据库服务器错误的列表,请参阅 《GBase 8s 错误消息》。要获取 GBase
8s JDBC Driver 错误的列表,请参阅 错误消息。
来自 SimpleSelect.java 程序的下列示例展示如何使用 SQLException 类,来通过使用
try-catch 块捕获 GBase 8s JDBC Driver 或数据库服务器错误:
try
{
PreparedStatement pstmt = conn.prepareStatement("Select *
from x "
+ "where a = ?;");
pstmt.setInt(1, 11);
ResultSet r = pstmt.executeQuery();
while(r.next())
{
short i = r.getShort(1);
System.out.println("Select: column a = " + i);
}
r.close();
pstmt.close();
}
catch (SQLException e)
{
System.out.println("ERROR: Fetch statement failed: " +
e.getMessage());

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 90 -
}