gbase8s误删恢复archecker命令

6 archecker 表级别恢复实用程序

6.1 archecker 表级别恢复实用程序 可以使用 archecker 实用程序执行时间点表级别恢复,这种恢复将从归档和逻辑日志中抽 取表或表的一部分。 archecker 实用程序通过指定要从中抽取数据的源表、放置数据的目标表和链接两个表的 INSERT 语句来恢复表。 有关使用 archecker 实用程序验证备份的信息,请参阅gbackuprestore -v 语法:验证备份。

6.1.1 archecker 实用程序概述 当需要恢复数据库的一部分、一张表、表的一部分或一组表时,archecker 实用程序很有用。 在需要跨服务器版本或平台移动表的情形下,它也很有用。 在以下情况中使用 archecker:

 恢复数据 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 191 可以使用 archecker 实用程序恢复先前已使用 gbackuprestore 或 gtape 备份的特 定表或一组表。这些表可以被恢复到特定的时间点。 这一点很有用,例如,它可 用于恢复被意外删除的表。 不能从远程设备恢复数据。 在执行表级别恢复时不能使用共享内存连接。

 复制数据 archecker 实用程序也可被用作一种复制数据的方法。 例如,可以把表从生产系统 移动到另一个系统。 archecker 实用程序比其他复制数据的机制更高效。 由于 archecker 以文本形式抽 取数据,它可以在不同平台或服务器版本之间复制数据。

 迁移数据 也可以将 archecker 实用程序用作迁移工具,以将表移动到其他 GBase 8s 服务器。 archecker 实用程序旨在恢复特定表或表集合。其他情况需要使用不同的实用程序。例如, 在以下数据恢复方案中使用 gbackuprestore 或 gtape:

 整个系统恢复

 从磁盘故障中恢复 要配置 archecker 实用程序的行为,请使用 archecker 配置文件。 要定义 archecker 恢复 的数据的模式,请使用 archecker 模式命令文件。这些文件在以下部分中描述。 archecker 配置文件 archecker 实用程序使用配置文件来设置某些参数。 将 AC_CONFIG 环境变量设置为 archecker 配置文件的完整路径名。缺省情况下, AC_CONFIG 环境变量设置为 $GBS_HOME/etc/ac_config.std。如果将 AC_CONFIG 设置 为用户定义的文件,必须指定包括文件名在内的完整路径。 有关该文件中使用的配置参数的信息,请参阅archecker 实用程序配置参数和环境变量。 模式命令文件 archecker 实用程序使用模式命令文件指定以下各项:

 源表
 目标表
 表的模式
 数据库 
 外部表
 表恢复到的时间点
 其他选项
该文件使用一种类似 SQL 的语言提供 archecker 用于执行数据恢复的信息。 有关支持的 语句和语法的完整信息,请参阅 archecker 模式引用。 有两种设置模式命令文件的方法:
 在 archecker 配置文件中设置 AC_SCHEMA 配置参数。 有关更多信息,请参阅 AC_SCHEMA 配置参数。
 使用 -f cmdname 命令行选项。有关更多信息,请参阅 archecker 实用程序命令的 语法。 如果同时指定了两种方法,-f 命令行选项优先。 表级别恢复和语言环境 对于表级别恢复,如果要恢复的表(归档中的表)的语言环境代码集不同于缺省语言环境 的代码集 (en_US.8859-1),那么必须设置 DB_LOCALE 环境变量来使其代码集与要恢复 的归档表的语言环境相同。 在表级别恢复过程中将不执行任何代码集转换,数据库或要恢复的表的语言环境代码集必 须与此数据库或数据将恢复到的表的语言环境代码集相匹配。此外,相同 DB_LOCALE 信 息将用于通过相同表级别恢复命令模式文件进行恢复的所有表。
 

6.1.2 使用 archecker 进行数据恢复 使用 archecker 实用程序可执行两种类型的恢复操作。 archecker 实用程序执行的两种恢复类型如下:

 基于 0 级归档的物理恢复。

 先执行物理恢复,然后执行逻辑恢复,逻辑恢复使用 0 级归档和逻辑日志以将数 据恢复到特定时间点。 archecker 在读取命令文件时,确定是只执行物理恢复,还是在物理恢复后执行逻辑恢复。 缺省情况下,archecker 执行物理和逻辑恢复。如果使用了 WITH NO LOG 子句,archecker 将不执行逻辑恢复。 archecker 在单纯的物理恢复中使用的过程和资源不同于在物理及逻辑恢复中所使用的。 以下各部分概述了这些过程。 物理恢复 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 193 当 archecker 实用程序执行物理恢复时,该实用程序将从 0 级归档抽取数据。 执行物理恢复时,archecker 执行以下任务:

 在数据恢复之前,禁用所有约束(包括引用此目标表的外部约束)、索引和触发器。 如果表没有约束、索引或触发器,那么恢复性能更佳。
 读取模式命令文件,以确定以下各项: ₒ 源表 ₒ 目标表 ₒ 所有表的模式 ₒ 表位于的数据库空间的名称 ₒ 从中抽取数据的特定归档
 扫描归档,寻找属于被恢复的表的页面

 处理数据页的每一行,以确定该行是完整的还是部分的。 如果该行目前是部分的,那么 archecker 将确定该行剩余部分是否已分阶段,如未 分阶段,那么将其分阶段以便于后续处理。  对于单纯的物理恢复,对该行应用过滤器并拒绝不需要的行。

 将该行插入目标表。 要使用原始模式恢复表,必须指定源模式。要使用不同模式恢复表,目标模式中的表名称 必须与源模式中的表名称不同。使用不同模式恢复之后,可以使用 rename table 语句重命 名表。 逻辑恢复 物理恢复后,逻辑恢复可以进一步将表恢复到用户指定的时间点。 为此,archecker 实用 程序读取已备份的逻辑日志,将它们转换成 SQL 语句,然后重放这些语句以恢复数据。 在执行逻辑恢复之前,确保所要恢复的事务都包含在已备份的逻辑日志中。 archecker 实 用程序不能从当前日志中重放事务。 不能对外部表执行逻辑恢复。 如果逻辑恢复期间一个表被更改、删除或截断,那么恢复因该表终止。 终止发生在执行更 改的点上。 archecker 消息日志文件中的消息将记录发生了更改操作。 archecker 实用程序无法在逻辑恢复非记录数据库中的压缩表期间处理压缩字典。如果逻辑 恢复发现为表创建了新的压缩字典,那么恢复将为该表停止。 执行逻辑恢复时,archecker 使用两个同时运行的进程: stager 汇编逻辑日志并将其保存在表中。 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 194 applier 将日志记录转换为 SQL 语句并执行这些语句。 stager 为收集相关的逻辑日志记录,stager 将执行以下步骤: 1. 仅扫描已备份的逻辑日志 stager 读取逻辑日志备份文件并汇编成完整的日志记录。 2. 测试逻辑日志记录 任何不适用于被恢复的表的日志记录将被拒绝。 3. 将逻辑日志信息插入表中 如果没有拒绝逻辑日志记录,那么会将它插入到一个阶段表中。 applier applier 从 stager 创建的控制表中读取数据。它开始处理必需的事务,并更新控制表以显示 该事务正在处理。 接下来,它按顺序对每条日志记录逐行进行操作,直到事务落实。 所有对控制表的更新在同一个事务中以日志记录修改的形式出现。 这使得所有的工作可以 作为一个独立单元完成或撤销,始终保持了完整性。 如果发生了错误,就会回滚事务,该 错误将记录到该事务的控制表条目中。 如果数据正在恢复而数据库管理员决定包含逻辑恢复,那么两个附加的工作列和一个索引 将被添加到目标表中。 这些列包含了原始行标识及原始部件号。 这些列提供了在原始的 源归档中识别该行位置的唯一键。要控制索引的存储,可使用 SET WORKSPACE 命令(请 参阅 SET 语句)。 否则会将索引和表存储在同一个空间。 applier 结束且恢复完成之后,这些列以及对它们创建的任何索引都将从目标表中删除。 6.1.3 archecker 实用程序命令的语法 archecker 实用程序为从归档中恢复数据提供了一个命令行界面。要使用 archecker,您必须 指定一个配置文件和一个模式命令文件。195 元素 描述 -b 提供使用 gbackuprestore 创建的备份的直接 XBSA 访问。 -d 删除先前的 archecker 恢复文件,但 archecker 消息日志除 外。有关更多信息,请参阅删除恢复文件的时间。 -D 删除先前的 archecker 恢复文件,但 archecker 消息日志除 外,然后退出。 -D 选项可以和 -X 选项一起使用,以删除先前的恢复文件以 及 sysutils 数据库中的任何表级别恢复工作表。 有关更多信 息,请参阅删除恢复文件的时间。 -f cmdfile 指定 archecker 使用由 cmdfile 指定的命令文件。 该选项 将覆盖 AC_SCHEMA 配置参数的值。 有关更多信息,请参阅模式命 令文件。 -i 手动初始化系统。 -lphys,stage,apply 指定逻辑恢复的级别: phys 启动系统的逻辑恢复,但在物理恢复完成后停止。备份的逻辑日志 必须可用。 stage 物理恢复完成后,从存储管理器抽取逻辑日志并将其登台到对应的 表中,再启动 stager。 apply GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 196 元素 描述 启动 applier。applier 提取存储在登台表中的事务,将其转换为 SQL,并重放操作。 如果未列出 -l 选项,那么缺省的逻辑恢复级别 为 -lphys,stage,apply。您可以指定逻辑恢复级别的任意组合, 以逗号分隔。 -l 和级别之间不允许有空格。 有关更多信息,请参阅手动控制逻辑恢复。 -s 将状态消息打印到屏幕。 -t 指定 gtape 作为备份实用程序。 -v 指定详细方式。 -X 指定表级别恢复。 -V 显示 GBase 8s 版本信息。 -version 显示有关 GBase 8s 的构建操作系统、构建版本号和构建日期的 附加版本信息。 当您使用 gbackuprestore 时,可以使用 gbackuprestore 命令来访问 archecker 信息,以验证备 份。 有关此命令的语法的信息,请参阅 gbackuprestore -v 语法:验证备份。 手动控制逻辑恢复 您可以使用 -l 命令行选项手动控制 stager 和 applier。 以下示例显示了如何执行逻辑恢复。 在所有示例中,模式命令文件名都是 cmdfile。 下面是一个典型的用法示例: archecker -bvs -f cmdfile 该命令等同于以下命令: archecker -bvs -f cmdfile -lphys,stage,apply 物理恢复完成后,archecker 实用程序启动 stager。stager 启动后,applier 自动启动。 在以下示例中,-lphys 选项执行单纯的物理恢复: archecker -bvs -f cmdfile -lphys GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 197 在以下示例中,-lstage 选项启动 archecker stager。stager 从存储管理器中抽取逻辑日志记录, 并将适用的记录保存到表中。 archecker -bvs -f cmdfile -lstage stager 只应在物理恢复完成后才启动。 在以下示例中,-lapply 选项启动了 archecker applier。它在 acu_control 表中寻找要恢复的事 务。 applier 应该在 stager 启动后才启动。 archecker -bvs -f cmdfile -lapply 使用多个存储管理器执行恢复 如果您使用多个存储管理器,您可以通过在每个节点上配置 archecker,用 archecker 执行 表级别恢复。 要执行涉及多个存储管理器的表级别恢复:
1. 在每个节点上创建一个 archecker 配置文件。
2. 在每个节点上创建一个模式命令文件。
3. 通过在单个节点上执行 archecker -DX 命令来除去旧的恢复。
4. 通过在每个节点上执行 archecker -bX -lphys 命令来启动物理恢复。 限制: 不要使用 -d 选项。 5. 物理恢复完成后,通过在包含逻辑日志记录的每个节点上执行 archecker -bX -lstage 命令来启动逻辑恢复。 限制: 不要使用 -d 选项。
6. 启动所有 stager 之后,通过在单个节点上执行 archecker -bX -lapply 命令来完成恢 复。 执行并行恢复 如果在分开的数据库空间中驻留了一张分段表,您可以通过为每个数据库空间使用不同的 模式命令文件执行多个 archecker 命令来并行地执行物理的表级别恢复。 在 0 级归档期间,不能有任何会更改表的模式的打开事务。正在恢复的表或表的分段必须 存在于 0 级归档中。 在逻辑恢复期间不能创建或添加该表或分段。 逻辑恢复期间创建的 表或添加的分段将被忽略。 因为拆离的分段不再是原始表的一部分,applier 从该点起不会处理拆离的分段的日志记录 或该分段的任何其他日志记录。archecker 消息日志文件中的消息将指示出现了拆离。 在本示例中,该表跨越三个数据库空间分段。 相应的模式命令文件名为 cmdfile1、cmdfile2 和 cmdfile3。以下命令删除先前的恢复,然后在每个数据库空间上并行地执行物理恢复。

 archecker -DX

 archecker -bvs -f cmdfile1 -lphys

 archecker -bvs -f cmdfile2 -lphys

 archecker -bvs -f cmdfile3 -lphys 不能并行地执行逻辑恢复。 使用大对象恢复表 gbackuprestore 支持对智能大对象和二进制大对象进行表级别恢复。

 智能大对象 表级别恢复还支持仅针对物理恢复的智能大对象(从 0 级归档恢复)。 必须用 CREATE TABLE 语句的 PUT 子名来指定要恢复智能大对象列的存储位 置。恢复的智能大对象用 create-time 标志 LO_NOLOG 和 LO_NOKEEP_LASTACCESS_TIME 创建。如果在智能大对象列的对象表中指定这 些标志,那么它们将覆盖 LOG 和 KEEP ACCESS TIME 列属性。  二进制大对象 表级别恢复支持恢复表空间二进制大对象,但不支持 Blob 空间二进制大对象。如 果尝试恢复 Blob 空间二进制大对象,那么该值设置为 NULL 并发出警告。 删除恢复文件的时间 如果重复运行相同的 archecker 表级别恢复,那么必须清除先前运行中的 archecker 表级别恢复工作文件和表。这些工作表是指 sysutils 数据库中在 archecker 表 级别恢复期间创建的 acu_ 表。在 archecker 表级别恢复完成之后,将保留这些 archecker 表级别恢复工作文件和表,以供诊断问题之需。 通过显式运行命令 archecker -DX 或在运行下一条 archecker 表级别恢复命令时使用 -d 选项,可以除去这些工作文件和表。-d 选项表示在新的恢复开始之前除去前一次 archecker 表级别恢复运行中的所有文件和表。

 gtape 示例:archecker -tdvs -fschema_command_file

 gbackuprestore 示例:archecker -bdvs -fschema_command_file 6.1.4 archecker 模式引用 本节中的主题描述了 archecker 模式命令文件使用的类似 SQL 的语句。该文件提供 archecker 实用程序用于执行数据恢复的信息。 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 199 使用模式命令文件可指定源表和目标表,并定义表模式。 有关指定 archecker 使用哪个命令文件的信息,请参阅模式命令文件。 以下是 archecker 支持的语句:

 CREATE TABLE

 DATABASE

 INSERT INTO

 RESTORE

 SET 重要:

archecker 实用程序文件中允许出现标准 SQL 注释,在处理中将忽略这些注释。 以下主题中描述了这些语句的语法。 CREATE TABLE 语句 CREATE TABLE 语句描述了源表和目标表的模式。如果目标表是外部的,那么使用 CREATE EXTERNAL TABLE 语句部分中描述的 CREATE EXTERNAL TABLE 语句。 语法 archecker 模式命令文件中使用的 CREATE TABLE 的语法与对应 GBase 8s SQL 语句相 同。有关此语法的描述,请参阅《GBase 8s SQL 指南:语法》。 用途 您必须在 archecker 模式命令文件中包含源表的模式。 该模式必须和创建归档时源表的模 式相同。 源表的模式未由 archecker 验证。如未提供准确的模式,会发生不可预测的结果。 源表不可以是同义词或视图。源表的模式仅需列列表和存储选项。 将忽略诸如扩展数据块 大小和锁定方式等其他属性。 对于 gbackuprestore 归档,archecker 使用源表的存储空间 列表来创建要从存储管理器中检索的对象列表。如果源表是分段的,必须列出所有包含源 表数据的数据库空间。archecker 实用程序只从模式命令文件中列出的数据库空间中抽取数 据。 如果源表包含约束、索引或触发器,那么在恢复期间将会自动禁用这些约束、索引或触发 器。 还会禁用参考目标表的外部约束。 恢复完成后,约束、索引和触发器将被启用。 为 了顺利地执行恢复,在执行恢复前除去约束、索引和触发器。 您必须还在命令文件中包含目标表的模式。 如果执行恢复时目标表不存在,将使用所提供 的模式创建它。 如果目标表存在,其模式必须和命令文件中指定的模式匹配。随后将数据附加到现有的表。 示例 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 200 源表和目标表的模式不一定要相同。 以下示例显示了如何能够在执行数据抽取之后对源数 据重新分区: CREATE TABLE source (col1 integer, ...) IN dbspace1;

CREATE TABLE target (col1 integer, ...) FRAGMENT BY EXPRESSION MOD(col1, 3) = 0 in dbspace3, MOD(col1, 3) = 1 in dbspace4, MOD(col1, 3) = 2 in dbspace5;

INSERT INTO target SELECT * FROM source;

CREATE EXTERNAL TABLE 语句 CREATE EXTERNAL TABLE 语句描述了外部目标表的模式。 语法 archecker 模式文件的 CREATE EXTERNAL TABLE 语句的语法和 SQL CREATE EXTERNAL TABLE 语句不同。 元素 描述 column 列名。必须符合 SQL 标识语法规则。 有关更多信息,请参阅《GBase 8s SQL 指南:语法》。 data_type 列的内置数据类型。有关数据类型的更多信息,请参阅《GBase 8s SQL 指 南:参考》。 filename 放置数据的文件名或管道设备名。 管道设备必须在启 动 archecker 实用程序之前就已存在。 名称 存储外部数据的表的名称。 在当前数据库中的表、视图和同义词的名称 中必须是唯一的。必须符合 SQL 数据库对象命名规则。有关更多信息, 请参阅《GBase 8s SQL 指南:语法》。 GBase 8s 备份与恢复指南 南大通用数据技术股份有限公司 201 用途 当使用 CREATE EXTERNAL TABLE 语句向外部表发送数据时,数据只从 0 级归档中抽 取。 逻辑日志不在外部表上前滚。 您可以为外部文件指定以下两种格式之一: DELIMITED:ASCII 定界文件。这是缺省的格式。 GBASEDBT:内部二进制表示法。为优化性能,不应该将过滤器应用于外部表。 如果过滤 器存在,将出现警告以指示会将其忽略。 有关使用 CREATE EXTERNAL TABLE 语句的示例,请参阅恢复到外部表。 DATABASE 语句 在 archecker 实用程序中,DATABASE 语句用于设置当前的数据库。 语法 元素 描述 dbname 当前数据库的名称。 用途 可以使用多条 DATABASE 语句。所有该语句后引用的表的名称都和当前的数据库关联。 如果源表的日志记录方式是 ANSI 而表的模式中使用了缺省的十进制列,那么必须声明数 据库的日志记录方式。 如果未声明源数据库的日志记录方式,不会返回错误,但可能出现意外的结果和数据。 示例 在以下示例中,源表和目标表都驻留在同一个数据库 dbs 中。 DATABASE dbs; CREATE TABLE source (...);
CREATE TABLE target (...);
INSERT INTO target SELECT * from source;
您可以使用多重数据库语句将表从一个数据库抽取到另一个数据库。
DATABASE dbs1; CREATE TABLE source (...) IN dbspace1;
DATABASE dbs2; CREATE TABLE target (...) IN dbspace2;
INSERT INTO dbs2:target SELECT * FROM dbs1:source;
INSERT 语句 INSERT 语句告知 archecker 实用程序要抽取的表以及用于放置抽取数据的位置。 语法 元素 描述 过滤器 (filter) INSERT 语句支持以下过滤器:
 =, !=, <>  >, >=, 100;
restore to current with no log;
恢复到外部表 本示例中的模式命令文件从 dbspace1 的最近备份中抽取名为 test1:tlr 的表,并将数据放到 名为 /tmp/tlr.unl 的文件中。
database test1;
create table tlr (a_serial serial, b_integer integer ) in dbspace1; create external table tlr_dest (a_serial serial, b_integer integer )using ("/tmp/tlr.unl", delimited );
insert into tlr_dest select * from tlr;
restore to current with no log;
恢复多个表 本示例中的模式命令文件从 dbspace1 的最近备份中抽取表 test1:tlr 和 test1:tlr_2,并且将 数据放到 test1:tlr_1_dest 和 test1:tlr_2_dest。 这是恢复多个表的有效方法,因为它只需要 扫描一次归档和逻辑日志文件。
database test1;

create table tlr_1 ( columns ) in dbspace1;
create table tlr_1_dest ( columns );
create table tlr_2 ( columns ) in dbspace1;
create table tlr_2_dest ( columns );
insert into tlr_1_dest select * from tlr_1;
insert into tlr_2_dest select * from tlr_2;
执行分布式的恢复 本示例中的模式命令文件从 dbspace1 的最近备份中抽取表 test:tlr_1,并将数据放到数据库 服务器 rem_srv 上的表 rem_dbs:tlr_1 中。
database rem_dbs create table tlr_1 ( columns );
database test1; create table tlr_1 ( columns ) in dbspace1; insert into rem_dbs@rem_srv.tlr_1 select * from tlr_1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小草儿799

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值