1.1SET DATASKIP 语句
在事务处理期间,使用 SET DATASKIP 语句来控制数据库服务器是否跳过不可用的 dbspace。
此语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法
元素 描述 限制 语法
dbspace 跳过的 dbspace 的名称 在执行时刻必须存在 标识符
用法
SET DATASKIP 允许您在运行时重置 Dataskip 特性,在处理事务的过程中,其控制数据库服务器是否跳过不可用的 dbspace(例如,由于介质失败)。
在 GBase 8s ESQL/C 中,如果跳过 dbspace,则将警告标志 sqlca.sqlwarn.sqlwarn6 设置为 W。另请参阅 GBase 8s ESQL/C 程序员手册。
在 GBase 8s 中,此语句仅适用于那些跨 dbspace 或分区分片的表。它既不适用于 blobspace 也不适用于 sbspac。
指定不包括 dbspace 的 SET DATASKIP ON,指导数据库服务器跳过在不可用的分片列表中的任何 dbspace。您可使用 onstat -d 或 -D 选项来确定 dbspace 是否关闭。
当您指定 SET DATASKIP ON dbspace 时,你正在指导数据库服务器跳过指定的 dbspace,如果它是不可用的话。
如果您指定 SET DATASKIP OFF,则禁用 Dataskip 特性。如果您指定 SET DATASKIP DEFAULT,则数据库服务器使用在 ONCONFIG 文件中 DATASKIP 配置参数中指定的设置。
示例
下例跳过当前会话的 dbsp1:
SET DATASKIP ON dbsp1;
下例将 DATASKIP 的值设置为在 onconfig 中指定的值:
SET DATASKIP DEFAULT;
下例关闭 DATASKIP 以便于使用所有 dbspace。
SET DATASKIP OFF;
当不可跳过 dbspace 时的情况
在某些条件下,数据库服务器不可跳过 dbspace。下列列表概述这些条件:
引用的约束检查
当您想要删除父行时,子行也必须可用于删除,且必须在可用的分片中存在。
当您想要插入新的子行时,必须在可用的分片中找到父行。
更新
当您执行一个将记录从一个分片移到另一分片的更新时,两个分片必须都是可用的。
插入
当您试图在基于表达式的分片策略中插入记录且该 dbspace 不可用时,返回错误。
当您试图在基于轮转法分片策略中插入记录时,且 dbspace 关闭,数据库服务器将这些行插入到任何可用的 dbspace 内。
当没有 dbspace 可用时,返回错误。
索引
当您执行影响索引的更新时,比如当您插入或删除行,或更新索引了的列,该索引必须是可用的。
当您试图创建索引时,您想要使用的 dbspace 必须是可用的。
序列键
使用第一个分片内部地存储当前的序列键。除了当第一个分片不再可用并需要新的序列键值时之外,这是对您不可见的,其可发生在 INSERT 语句期间。
1.2SET DEBUG FILE 语句
使用 SET DEBUG FILE 语句来标识接收 SPL 例程的运行时跟踪输出的文件。
此语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法
元素 描述 限制 语法
expression 返回 filename 的表达式 必须为有效的 filename 表达式
filename 包含 TRACE 语句的输出的文件的 pathname 请参阅 使用 WITH APPEND 选项 引用字符串.
filename_var 存储 filename 字符串的主变量 必须是字符类型 特定于语言
用法
此语句指定数据库服务器将来自 SPL 例程中 TRACE 语句的输出写到其中的那个文件。每次执行 TRACE 语句,都将跟踪信息添加到此输出文件。
使用 WITH APPEND 选项
您在 SET DEBUG FILE 语句中指定的输出文件可为新的文件或现有的文件。如果您指定现有的文件,当您发出 SET DEBUG FILE TO 语句时,删除它的当前的内容。TRACE 语句的第一次执行将跟踪输出发送到该文件的开头。
如果您包括 WITH APPEND 选项,则当您发出 SET DEBUG FILE 语句时,保留该文件的当前的内容。TRACE 语句的第一次执行将新的跟踪输出添加到该文件的末尾。
如果您在 SET DEBUG FILE TO 语句中指定新的文件,则不论您是否包括 WITH APPEND 选项都没什么不同。不论您是包括还是省略 WITH APPEND 选项,TRACE 语句的第一次执行都会将跟踪输出发送到新文件的开头。
关闭输出文件
要关闭 SET DEBUG FILE TO 语句打开了的文件,请发送另一带有另一 filename 的 SET DEBUG FILE TO 语句。然后,您可读或编辑第一个文件的内容。
重定向跟踪输出
您可使用 SPL 例程外部的 SET DEBUG FILE TO 语句来将 SPL 例程的跟踪输出定向到一文件。您还可在 SPL 例程内使用此语句来重定向它自己的输出。
输出文件的位置
如果您在本地数据库上执行带有简单的 filename 的 SET DEBUG FILE 语句,则输出文件位于您当前的目录中。如果您当前的数据库在远程数据库服务器上,则该输出文件位于远程数据库服务器上您的 home 目录中。如果您为调试文件提供完全的 pathname,则该文件置于远程数据库服务器上您指定的目录中。如果您在该目录中没有写权限,则会收到错误。
下列示例将 SET DEBUG FILE TO 语句的输出发送到名为 debug.out 的文件:
SET DEBUG FILE TO ‘debug’ || ‘.out’;