返回首页

gbase数据、南大通用产品文档:GBase8sCREATE SYNONYM 语句

更新日期:2024年09月11日

使用 CREATE SYNONYM 语句为现有表、视图或序列对象声明并注册备用名。
该语句是 SQL ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
sequence 本地序列的名称
必须在当前数据库中存在 标识符

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 346
元素
描述
限制
语法
table,
view
正为其创建 synonym 的
表或视图的名称
必须注册于当前数据库
中,或者注册于限定符内
指定的数据库中
数据库对象

synonym
在此处为 table 、view
或 sequence 的名称声
明的同义词
在表对象名称中必须唯一
的;另请参阅 Usage 说

数据库对象

用法
用户对同义词以及该同义词引用的数据库对象具有相同的特权。syssynonyms 、
syssyntable 和 systables 系统目录表保存关于同义词的信息。
不能在同一数据库中为同义词创建同义词。
同义词的标识符必须在相同数据库中的表、临时表、外部表、视图和序列对象的
名称中是唯一。(反之,请参阅带有相同名称的同义词 章节。)
如果您包含了可选 IF NOT EXISTS 关键字,则当指定名称的同义词已经在当前
数据库中注册时,或指定的名称是当前数据库中表、视图、或序列对象的名称
时,数据库不采取操作(而非向应用程序发送异常)。
一旦创建了同义词,则它会一直持续到所有者执行 DROP SYNONYM 语句。
(此持久性将同义词与您能在 SELECT 语句的 FROM 子句中声明的别名区别开
来;别名仅在 SELECT 语句的执行期间位于作用域内。)
如果同义词引用相同数据库中的表、视图或序列,则该同义词在所引用的表、视
图或序列被删除时自动删除。有关其它信息,请参阅 外部数据库对象的同义词。
外部数据库对象的同义词
可以为您的会话当前连接的数据库服务器上任意数据库中的任意表或视图创建同
义词。
此示例为当前数据库外的表在当前数据库服务器的 payables 数据库中声明同义
词。
CREATE SYNONYM mysum FOR payables:jean.summary;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 347
您也可以为 CREATE EXTERNAL TABLE 注册在当前数据库中的外部表创建同
义词。(外部表要注册在创建它的数据库的系统目录中,而非存储它的任意数据
库。)
您也可以为存在于某个数据库服务器的数据库中的表或视图创建同义词,该数据
库服务器不是您的当前数据库服务器。当创建同义词时,这两个数据库服务器必
须都处于联机状态。在网络中,远程数据库服务器验证该同义词引用的表或视图
在创建同义词时是否存在。下一示例为由远程数据库服务器支持的表创建同义
词:
CREATE SYNONYM mysum FOR payables@phoenix:jean.summary;
现在,标识符 mysum 引用表 jean.summary ,该表位于 phoenix 数据库服务器
上的 payables 数据库中。如果从 payables 数据库删除了 summary 表,则
mysum 同义词保持不动。随后尝试使用 mysum 会返回错误:Table not
found 。
然而, GBase 8s 并不支持这些外部对象的同义词:

类型表(包括作为表层次结构一部分的任何表)

包含任意扩展数据库类型的表或视图

本地数据库外的序列对象
PUBLIC 和 PRIVATE 同义词
如果使用 PUBLIC 关键字(或不使用任何关键字),则所有可以访问数据库的人
都可以使用您的同义词。如果数据库不兼容 ANSI ,则用户不必知道公共同义词
的所有者名称。位于不兼容 ANSI GBase 8s 数据库服务器内创建的数据库中的任
意同义词都是公共同义词。
在兼容 ANSI 的数据库中,所有的同义词都是专用的。如果使用 PUBLIC 或
PRIVATE 关键字,则数据库服务器发出语法错误。
如果使用 PRIVATE 关键字在不兼容 ANSI 的数据库中声明同义词,则非限定的
同义词可由其所有者使用。其他用户必须用所有者的名称限定同义词。
带有相同名称的同义词
在兼容 ANSI 的数据库中,owner.synonym 组合在所有同义词、表、视图以及序
列中必须是唯一的。在引用不是您自己的同义词时必须指定 owner ,如下所示:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 348
CREATE SYNONYM emp FOR accting.employee
在不兼容 ANSI 的数据库中,两个公共同义词不能有相同的标识符,而同义词的
标识符也必须在相同数据库中的表、视图和序列的名称中是唯一的。
专用同义词的 owner.synonym 组合必须在数据库内所有同义词中是唯一的。即,
同一数据库中可以存在多个带有相同名称的同义词,但是这些同义词中的每一个
都必须归不同用户所有。同一用户不能同时创建名称相同的专用和公共同义词。
例如,以下代码生成一个错误:
CREATE SYNONYM our_custs FOR customer;
CREATE PRIVATE SYNONYM our_custs FOR cust_calls;-- ERROR!!!
只有在两个同义词所有者不同的情况下,才能用与公共同义词相同的名称声明专
用同义词。如果拥有一个专用同义词且存在带有相同名称的公共同义词,则数据
库服务器未限定的名称解析诶专用同义词。(在这种情况下,您必须指定
owner.synonym 以引用公共同义词)如果在专用同义词和另一用户的公共同义词
都有相同的标识符时,将 DROP SYNONYM 与未限定的同义词标识符一起使
用,则仅删除专用同义词。如果重复相同的 DROP SYNONYM 语句,则数据库
服务器删除公共同义词。
链接同义词
如果为不是当前数据库中的表或视图创建同义词,且已删除了此表或视图,则同
义词保留在注册的目录中。可以用已删除的表或视图的名称作为同义词为删除的
表或视图创建新的同义词,但是该同义词值指向当前数据库(而非另一个数据
库)中的的表或视图。
以此方式,可将表或视图移至新的位置并链接仍然有效的原始的同义词。以此方
法最多可以链接 16 个同义词。
链接同义词以引用已重新定位的表对象对表或视图是可能的,但是对指向序列对
象的同义词无效,因为 CREATE SYNONYM 只能为已注册在当前数据库中的序
列定义同义词。
以下步骤为 customer 表将两个同义词链接在一起,该表将最终驻留在 zoo 数据
库服务器上。这里的省略号( . . . )表示 CREATE TABLE 语句不完整:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 349
1. 在称为 training 的数据库服务器上的 stores_demo 数据库中,发出以下语
句:
CREATE TABLE customer (lname CHAR(15)...);
2. 在称为 accntg 的数据库服务器上,发出以下语句:
CREATE SYNONYM cust FOR stores_demo@training:customer;
3. 在称为 zoo 的数据库服务器上,发出以下语句:
CREATE TABLE customer (lname CHAR(15)...);
4. 在称为 training 的数据库服务器上,发出以下语句:
DROP TABLE customer;
CREATE SYNONYM customer FOR stores_demo@zoo:customer;
accntg 数据库服务器上的同义词 cust 现在指向 zoo 数据库服务器上的
customer 表。
以下示例显示将两个同义词连接在一起并链接同义词指向的表的示例:
1. 在称为 training 的数据库服务器上,发出以下语句:
CREATE TABLE customer (lname CHAR(15)...);
2. 在称为 accntg 的数据库服务器上,发出以下语句:
CREATE SYNONYM cust FOR stores_demo@training:customer;
3. 在称为 training 的数据库服务器上,发出以下语句:
DROP TABLE customer;
CREATE TABLE customer (lastname CHAR(20)...);
accntg 数据库服务器上的同义词 cust 现在指向 training 数据库服务器上的
customer 表。

要定义完整的 CREATE TRIGGER 语句,将触发器名称子句、触发事件子句和触发操作子
句组合起来。
下面的 CREATE TRIGGER 语句是将前例中的语句的各个组成部分组合在一
起的结果。每次更新 items 表的 quantity 列时,此触发器将执行 SPL 例程 upd_items_p1。
CREATE TRIGGER upqty
UPDATE OF quantity ON items
BEFORE(EXECUTE PROCEDURE upd_items_p1);
如果在数据库服务器处理 CREATE TRIGGER 语句时,
触发器定义中的数据库对象
(例如,
本例中的 SPL 例程 upd_items_p1 )不存在,那么返回错误。

archecker 实用程序为从归档中恢复数据提供了一个命令行界面。要使用 archecker,您必
须指定一个配置文件和一个模式命令文件。


元素
描述
-b
提供使用 ON-Bar 创建的备份的直接 XBSA 访问。
-d
删除先前的 archecker 恢复文件,但 archecker 消息日志
除外。有关更多信息,请参阅删除恢复文件的时间。
-D
删除先前的 archecker 恢复文件,但 archecker 消息日志
除外,然后退出。
-D 选项可以和 -X 选项一起使用,以删除先前的恢复文件以
及 sysutils 数据库中的任何表级别恢复工作表。 有关更多信
息,请参阅删除恢复文件的时间。
-f cmdfile
指定 archecker 使用由 cmdfile 指定的命令文件。 该选项
将覆盖 AC_SCHEMA 配置参数的值。 有关更多信息,请参阅模式
命令文件。
-i
手动初始化系统。
-lphys,stage,apply
指定逻辑恢复的级别:
phys
启动系统的逻辑恢复,但在物理恢复完成后停止。备份的逻辑日
志必须可用。

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

元素
描述
stage
物理恢复完成后,从存储管理器抽取逻辑日志并将其登台到对应
的表中,再启动 stager。
apply
启动 applier。applier 提取存储在登台表中的事务,将其转换
为 SQL,并重放操作。
如果未列出 -l 选项,那么缺省的逻辑恢复级别为 -
lphys,stage,apply。您可以指定逻辑恢复级别的任意组合,以逗
号分隔。 -l 和级别之间不允许有空格。
有关更多信息,请参阅手动控制逻辑恢复。
-s
将状态消息打印到屏幕。
-t
指定 ontape 作为备份实用程序。
-v
指定详细方式。
-X
指定表级别恢复。
-V
显示 GBase 8s 版本信息。
-version
显示有关 GBase 8s 的构建操作系统、构建版本号和构建日期
的附加版本信息。
当您使用 ON-Bar 时,可以使用 ON-Bar 命令来访问 archecker 信息,以验证备份。 有关
此命令的语法的信息,请参阅 onbar -v 语法:验证备份。

手动控制逻辑恢复
您可以使用 -l 命令行选项手动控制 stager 和 applier。
以下示例显示了如何执行逻辑恢复。 在所有示例中,模式命令文件名都是 cmdfile。
下面是一个典型的用法示例:
archecker -bvs -f cmdfile
该命令等同于以下命令:

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

archecker -bvs -f cmdfile -lphys,stage,apply
物理恢复完成后,archecker 实用程序启动 stager。stager 启动后,applier 自动启动。
在以下示例中,-lphys 选项执行单纯的物理恢复:
archecker -bvs -f cmdfile -lphys
在以下示例中,-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 级归档中。 在逻辑恢复期间不能创建或添加该表或分段。 逻辑恢复期间创
建的表或添加的分段将被忽略。

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

因为拆离的分段不再是原始表的一部分,applier 从该点起不会处理拆离的分段的日志记录
或该分段的任何其他日志记录。archecker 消息日志文件中的消息将指示出现了拆离。
在本示例中,该表跨越三个数据库空间分段。 相应的模式命令文件名为 cmdfile1、
cmdfile2 和 cmdfile3。以下命令删除先前的恢复,然后在每个数据库空间上并行地执行物
理恢复。

archecker -DX

archecker -bvs -f cmdfile1 -lphys

archecker -bvs -f cmdfile2 -lphys

archecker -bvs -f cmdfile3 -lphys
不能并行地执行逻辑恢复。

使用大对象恢复表
ON-Bar 支持对智能大对象和二进制大对象进行表级别恢复。

智能大对象
表级别恢复还支持仅针对物理恢复的智能大对象(从 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 表级别恢复运行中的所有文件和表。

ontape 示例:archecker -tdvs -fschema_command_file

onbar 示例:archecker -bdvs -fschema_command_file

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