从 SQL Anywhere 统一数据库中抽取远程数据库。用户必须具有 SYS_REPLICATION_ADMIN_ROLE 系统角色。
dbxtract [ options ] [ directory ] subscriber
选项 | 说明 | ||
---|---|---|---|
@data |
从配置文件读入选项。请参见@data 数据库服务器选项。 此选项用于从指定的环境变量或配置文件中读入选项。如果存在具有相同名称的环境变量和配置文件,则使用环境变量。请参见配置文件。 要保护口令或配置文件中的其它信息,可以使用文件隐藏实用程序对配置文件的内容进行模糊处理。请参见文件隐藏实用程序 (dbfhide)。 |
||
-ac "keyword=value; ..." |
连接到在连接字符串中指定的数据库以进行重装。 您可以使用此选项,将数据库卸载操作与将结果重装入现有数据库的操作合并执行。 例如,以下命令(所有内容应在一行中输入)将预订者 field_user 的数据副本装载到名为 c:\field.db 的现有数据库文件中(用户 DBA 必须具有 SERVER OPERATOR 系统特权)。
如果使用此选项,则不会在磁盘上创建数据的副本,因而无需在命令中指定卸载目录。这可以使数据更安全,但对性能会造成一定的影响。 |
||
-al filename | 如果使用 -an 选项,则指定新数据库的事务日志文件名。 | ||
-an database |
创建与所抽取的数据库具有相同设置的数据库文件并自动重装它。 您可以使用此选项,将卸载数据库、创建新数据库和装载数据这三个操作组合起来。 例如,以下命令(所有内容应在一行中输入)将创建一个名为 c:\field.db 的新数据库文件,并将 c:\cons.db 的 field_user 预订者的模式和数据复制到其中。用户 DBA 必须具有 SERVER OPERATOR 系统特权。
如果使用此选项,则不会在磁盘上创建数据的副本,因而无需在命令中指定卸载目录。这可以使数据更安全,但对性能会造成一定的影响。 |
||
-ap size [ k ] | 设置新数据库的页面大小。如果使用了 -an,则忽略此选项。数据库的页面大小(以字节为单位)可以是 2048、4096、8192、16384 或 32768,缺省值为原数据库的页面大小。使用 k 将单位指定为千字节(例如,-ap 4k)。如果数据库服务器上已有数据库在运行,则服务器的页面大小(使用 -gp 选项设置)必须大到足以处理新的页面大小。 请参见-gp 数据库服务器选项。 | ||
-b | 不启动预订。如果指定了此选项,则必须使用 START SUBSCRIPTION 语句显式启动位于统一数据库的预订(用于远程数据库)和位于远程数据库的预订(用于统一数据库),以便开始复制。 请参见START SUBSCRIPTION 语句 [SQL Remote]。 | ||
-c "keyword=value; ..." |
使用字符串指定数据库连接参数。 用户 ID 应具有 SYS_RUN_REPLICATION_ROLE 系统角色,以确保用户对数据库中的所有表具有特权。 例如,以下语句(所有内容应在一行中键入)以用户 ID DBA 和口令 sql 进行连接,从正在 sample_server 数据库服务器上运行的示例数据库中为远程用户 ID joe_remote 抽取数据库。用户 DBA 必须具有 SERVER OPERATOR 系统特权。这些数据被卸载到 c:\extract 目录中。
如果未指定连接参数,则使用来自 SQLCONNECT 环境变量的连接参数(如果已设置)。 |
||
-d | 仅抽取数据。如果指定了此选项,则不卸载模式定义且不在远程数据库中创建发布和预订。此选项适用于:已存在具有正确模式的远程数据库且该数据库只需用数据来填充。 | ||
-ea alg |
指定新数据库的加密算法。此选项允许您选择使用何种高度加密算法来加密您的新数据库。您可以选择 AES(缺省值)或 FIPS 认证的算法 AES_FIPS。AES_FIPS 使用独立的库并且与 AES 不兼容。 为获得更高的安全性,可指定 AES 或 AES256 以分别实现 128 位或 256 位高度加密。指定 AES_FIPS 或 AES256_FIPS 以分别实现 128 位或 256 位 FIPS 认证的加密。对于高度加密,还必须指定 -ek 或 -ep 选项。 有关高度加密的详细信息,请参见简单加密与高度加密。 要创建未加密的数据库,请指定 -ea none 或者不包含 -ea 选项(并且不要指定 -e、-et、-ep 或 -et)。 如果未指定 -ea 选项,则缺省行为如下:
算法名称是不区分大小写的。 |
||
-ek key |
指定新数据库的加密密钥。使用此选项,您可以通过直接在命令中指定加密密钥,来创建高度加密的数据库。用于加密数据库的算法是 AES 还是 AES_FIPS,由 -ea 选项指定。如果您指定了 -ek 选项而没有指定 -ea,则使用 AES 算法。 小心对于高度加密的数据库,请务必将密钥的副本保存在安全的位置。如果丢失了加密密钥,则无法访问数据,即使有技术支持部门的协助也是如此。此时必须放弃该数据库并创建一个新的数据库。 |
||
-ep |
提示输入新数据库的加密密钥。此选项指定您希望通过在窗口中键入加密密钥来创建高度加密的数据库。这样,加密密钥决不会以明文显示,从而提供了额外的安全保证。 加密密钥必须输入两次,以确认密钥的输入是正确的。如果密钥不匹配,则初始化失败。请参见简单加密与高度加密。 |
||
-er |
在卸载过程中,从加密表中删除加密。 从启用了表加密的数据库进行抽取时,必须指定 -er 或 -et 来指示新数据库是否启用表加密,否则在尝试向该新数据库装载数据时会发生错误。 以下命令(所有内容均在一行输入)将拥有加密表的数据库 (cons.db) 抽取到未启用表加密的新数据库 (field.db) 中,从而解除了所有加密表的加密。用户 DBA 必须具有 SERVER OPERATOR 系统特权。
|
||
-et |
在新数据库中启用数据库表加密(还必须指定 -an 或 -ar)。如果指定 -et 选项但未指定 -ea 选项,将会使用 AES 算法。如果指定 -et 选项,就必须也指定 -ep 或 -ek。可以将新数据库的表加密设置更改为与所卸载的数据库不同的设置。 在重建已启用表加密的数据库时,必须指定 -er 或 -et 来指明新数据库是否启用表加密,否则在尝试向该新数据库装载数据时可能会出错。 以下示例(所有内容均在一行输入)将使用简单加密算法进行表加密的数据库 (cons.db) 卸载到启用表加密的新数据库 (field.db) 中,并采用 AES_FIPS 加密算法,密钥为 34jh。用户 DBA 必须具有 SERVER OPERATOR 系统特权。
|
||
-f |
抽取完全限定的发布。通常不需要为远程数据库抽取完全限定的发布定义,因为通常会将所有行复制回统一数据库。 但是,对于多层设置,或者对于在其中远程数据库所具有的行不位于统一数据库中的设置,您可能需要完全限定的发布。 |
||
-g |
|
||
-ii |
执行内部卸载和内部重装。通过使用此选项,可以强制重装脚本使用内部 UNLOAD 和 LOAD TABLE 语句(而非 Interactive SQL OUTPUT 和 INPUT 语句)来分别卸载和装载数据。这一操作组合是缺省行为。 外部操作采用相对于 dbxtract 的当前工作目录的数据文件路径,而内部语句则采用相对于数据库服务器的路径。 |
||
-ix |
执行内部卸载和外部重装。通过使用此选项,可强制重装脚本使用内部 UNLOAD 语句卸载数据,并使用 Interactive SQL INPUT 语句将数据装载到新数据库中。 外部操作采用相对于 dbxtract 的当前工作目录的数据文件路径,而内部语句则采用相对于数据库服务器的路径。 |
||
-l level | 以指定隔离级别执行所有抽取操作。缺省设置为隔离级别 0。如果从活动数据库服务器抽取数据库,请选择以隔离级别 3 运行该抽取操作,以确保抽取的数据库中的数据与数据库服务器上的数据保持一致。提高隔离级别可能导致抽取实用程序 (dbxtract) 使用大量锁定,并且可能限制其他用户使用数据库。 请参见抽取实用程序 (dbxtract)。 | ||
-n |
仅抽取模式定义。使用此定义,将不卸载任何数据。重装文件只包含用来建立数据库模式的 SQL 语句。您可以使用 SYNCHRONIZE SUBSCRIPTION 语句通过消息系统装载数据。请参见SYNCHRONIZE SUBSCRIPTION 语句 [SQL Remote]。 发布、预订(PUBLISH 和 SUBSCRIBE)特权都是模式的一部分。本例中,用户 DBA 必须具有 SERVER OPERATOR 系统特权。
|
||
-nl |
抽取结构(与 -n 选项的行为相同),但结果 reload.sql 文件中还包含每个表的 LOAD TABLE 或 INPUT 语句。使用此选项时不会抽取任何用户数据。如果指定 -nl,还必须包括一个数据目录,以便可以生成 LOAD/INPUT 语句,即使没有文件写入该目录中。此选项使您可以在不卸载数据的情况下生成重装脚本。可以通过指定
-d 来抽取数据。如果数据库中的某个表包含不应卸载的数据,可以使用 |
||
-o filename | 将消息输出到指定日志文件。 | ||
-p character | 指定转义字符。通过此选项可以使用其它字符替代缺省的转义字符 (\)。 | ||
-q |
安静地运行:不显示消息,也不显示窗口。如果指定此选项,就必须也指定 -y,否则操作将失败。 此选项只用于命令行实用程序。 |
||
-r file |
指定生成的重装 Interactive SQL 脚本文件的名称。 重装脚本文件的缺省名称为当前目录中的 reload.sql。可使用此选项指定不同的文件名。 |
||
-u | 在卸载操作期间不排序数据。缺省情况下,每个表中的数据都按主键排序。使用 -u 选项可以加快卸载,但会降低向远程数据库装载数据的速度。 | ||
-v | 显示详细消息。所卸载的表的名称、卸载行数,以及所使用的 SELECT 语句。 | ||
-xf | 排除外键。如果远程数据库包含统一数据库模式的子集,并且在远程数据库中不存在某些外键引用,则可以使用此项。 | ||
-xh | 排除过程挂接。 | ||
-xi |
执行外部卸载和内部重装。卸载数据库的缺省行为是使用 UNLOAD 语句,这是由数据库服务器执行的。如果选择外部卸载,则 dbxtract 会改为使用 OUTPUT 语句。在客户端上执行 OUTPUT 语句。 外部操作采用相对于 dbxtract 的当前工作目录的数据文件路径,而内部语句则采用相对于数据库服务器的路径。 |
||
-xp | 不从数据库抽取存储过程。 | ||
-xt | 不从数据库抽取触发器。 | ||
-xv | 不从数据库抽取视图。 | ||
-xx |
执行外部卸载和外部装载。使用 OUTPUT 语句卸载数据,使用 INPUT 语句将数据装入新的数据库中。 缺省的卸载行为是使用 UNLOAD 语句,缺省的装载行为是使用 LOAD TABLE 语句。内部 UNLOAD 和 LOAD TABLE 语句的执行速度要快于 OUTPUT 和 INPUT。 外部操作采用相对于 dbxtract 的当前工作目录的数据文件路径,而内部语句则采用相对于数据库服务器的路径。 |
||
y | 替换现有的 SQL 脚本文件而无需确认。 | ||
directory | 指定写入文件的目录。指定 -an 或 -ac 时不需要此选项。 | ||
subscriber | 指定正在为其抽取数据库的预订者。 |
缺省情况下,抽取实用程序 (dbxtract) 在隔离级别 0 运行。如果从活动数据库服务器抽取数据库,请选择在隔离级别 3 运行该抽取操作,以确保抽取的数据库中的数据与数据库服务器上的数据保持一致。在隔离级别 3 运行可能会由于需要大量锁定而延长数据库服务器上其它进程的周转时间。建议您在服务器不繁忙时运行抽取实用程序 (dbxtract),或者对数据库的副本运行该抽取实用程序。
抽取实用程序 (dbxtract) 会创建一个 SQL 脚本文件和一组关联的数据文件。该脚本文件可在新初始化的数据库上运行,以创建数据库对象及装载远程数据库的数据。
缺省情况下,SQL 脚本文件被命名为 reload.sql。
如果远程用户为一个组,则抽取属于该组的所有用户 ID。这允许远程数据库上存在具有不同用户 ID 的多个用户,并且不需要自定义抽取进程。
在将抽取实用程序 (dbxtract) 或 [抽取数据库向导] 用于版本 10.0.0 或更高版本的数据库时,所使用的 dbxtract 的版本必须与用于访问该数据库的数据库服务器的版本相符。如果将较旧版本的 dbxtract 和相对较新版本的数据库服务器一起使用,会报告出现错误,反之亦然。
抽取实用程序 (dbxtract) 和 [抽取数据库向导] 不会卸载在数据库创建期间为 dbo 用户 ID 所创建的对象。在数据被卸载后将失去对这些对象进行的更改(例如,重新定义系统过程)。而在数据库初始化后由 dbo 用户 ID 所创建的所有对象都会被抽取实用程序 (dbxtract) 卸载,因此这些对象会保留下来。
自动抽取远程数据库:
以具有 SYS_RUN_REPLICATION_ROLE 系统角色的用户身份连接到统一数据库。
运行 dbxtract,并指定 -ac 选项以抽取到现有数据库,或指定 -an 选项以抽取到新的数据库。您必须具有 SERVER OPERATOR 系统特权。
如果您指定 -an 选项,则必须在运行抽取实用程序 (dbxtract) 之前创建一个空数据库。例如,以下命令可以创建一个名为 mydata.db 的空数据库。
dbinit -dba DBA,sql c:\remote\mydata.db |
运行以下命令以从位于 c:\consolidateddata.db 中的统一数据库抽取新的远程数据库。新数据库可用于名为 field_user 的远程用户,并且是在 c:\remote\mydata.db 中创建的。用户 DBA 必须具有 SERVER OPERATOR 系统特权:
dbxtract -c "UID=DBA;PWD=sql;DBF=c:\consolidateddata.db" -an c:\remote\mydata.db field_user |
将创建具有相应模式、远程用户、发布、预订和触发器的新远程数据库 mydata.db。缺省情况下,会将统一数据库中的数据抽取到远程数据库,并启动预订。但是,抽取实用程序 (dbxtract) 不会启动 SQL Remote 消息代理,所以没有消息被交换。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |