发送和应用 SQL Remote 消息,并且维护消息跟踪系统以确保消息正确收发。
{ dbremote | ssremote } [ options ] [ directory ]
| 选项 | 说明 |
|---|---|
| @data | 从指定的环境变量或配置文件中读取选项 |
| –a | 不应用收到的事务 |
| –b | 在批处理模式下运行 |
| –c "keyword=value; ..." | 提供数据库连接参数 |
| –cq "keyword=value; ..." | 为稳定队列提供数据库连接参数(仅限于 Adaptive Server Enterprise) |
| –dl | 在屏幕上显示日志消息 |
| –ek key | 指定加密密钥 |
| –ep | 提示输入加密密钥 |
| –e locale-string | 地区设置(仅限于 Adaptive Server Enterprise) |
| –fq | 发送消息时完全扫描稳定队列(仅限于 Adaptive Server Enterprise) |
| –g n | 组合由少于 n 个操作组成的事务 |
| –I | 从事务日志将事务扫描到稳定队列中(仅限于 Adaptive Server Enterprise) |
| –k | 完成时关闭窗口 |
| –l length | 最大消息长度 |
| –m size | 建立消息使用的最大内存量 |
| -ml directory | 指定脱机镜像日志的位置 |
| –o file | 将消息输出到文件 |
| –os size | 用于记录输出消息的最大文件大小 |
| –ot file | 截断文件并记录输出消息 |
| –p | 不清除消息 |
| –q | 在最小化的窗口中运行 |
| –r | 接收消息 |
| –rd minutes | 进来的消息的轮询频率 |
| -ro filename | 将远程输出记录到文件 |
| –rp number | 在认为消息丢失之前接收的轮询数目 |
| -rt filename | 将远程输出截断并记录到文件 |
| –ru time | 收到重新发送的请求后等待重新扫描日志的时间 |
| –s | 发送消息 |
| –sd time | 发送轮询周期 |
| –t | 复制所有触发器(仅限于 Adaptive Server Anywhere) |
| –u | 仅处理已备份的事务 |
| –ud | 在 UNIX 平台上作为后台进程运行。 |
| –v | 详细操作 |
| –w n | 应用进来的消息的工作线程数(非 NetWare 或 Windows CE) |
| –x [ size ] | 重命名并重新启动事务日志(仅限于 Adaptive Server Anywhere) |
| directory | 保留旧事务日志的目录(仅限于 Adaptive Server Anywhere) |
消息代理发送和应用用于 SQL Remote 复制的消息,并且维护消息跟踪系统以确保消息正确收发。
消息代理可执行文件的名称如下:
dbremote 用于 Adaptive Server Anywhere 的消息代理。
ssremote 用于 Adaptive Server Enterprise 的消息代理。
不再支持的功能在 SQL Anywhere Studio 的下一主要版本中,不再提供 SQL Remote for Adaptive Server Enterprise。MobiLink 为 Adaptive Server Enterprise 和 Adaptive Server Anywhere 数据库之间的数据同步提供更灵活、更具有伸缩性的解决方案。 |
您还可以通过调用 DBTools 库,从您自己的应用程序运行消息代理。有关详细信息,请参见您的 SQL Remote 安装目录的 h 子目录中的文件 dbrmt.h。
对于 Adaptive Server Anywhere,消息代理命令中的用户 ID 必须具有 REMOTE DBA 或 DBA 权限。对于 Adaptive Server Enterprise,用户 ID 必须具有复制角色。
可选的 directory 参数指定用来保存旧事务日志的目录,以便在开始当前日志前消息代理对事件具有访问权限。
消息代理使用许多到数据库的连接。有关列表,请参见消息代理使用的连接。
有关 REMOTE DBA 权限的信息,请参见消息代理和复制安全性。
@data 使用此选项从指定的环境变量或配置文件中读入选项。如果存在具有相同名称的环境变量和配置文件,则使用环境变量。
环境变量可以包含任何选项集。例如,下面两条语句的第一句设置环境变量,该变量为数据库服务器保留一组选项,数据库服务器以 4 Mb 的高速缓存大小起始,只接收消息,并且连接到名为 myserver 的服务器上的 field 的数据库。set 语句应全部在一行上输入:
set envvar=-m 4096 -r -c "eng=myserver;dbn=field;uid=sa;pwd=sysadmin" ssremote @envvar
该配置文件可以包含换行符,并且可以包含任何选项集。例如,以下命令文件为某一消息代理保留一组选项,该消息代理起始于 4 Mb 的高速缓存大小,只发送消息,并且连接到名为 myserver 的服务器上的 field 数据库:
-m 4096 -s -c "eng=myserver;dbn=field;uid=sa;pwd=sysadmin"
如果此配置文件保存为 c:\config.txt,则可将其用于命令,如下所示:
ssremote @c:\config.txt
或者
dbremote @c:\config.txt
–a 处理收到的消息(收件箱中的那些消息),但不将这些消息应用于数据库。此选项与 -v(用于详细输出)和 -p(不清除消息)一起使用,可以帮助找出与进来的消息有关的问题。如果不使用 -p,此选项在不应用消息的情况下将清除收件箱,这在重新开始预订的情况下可能十分有用。
–b 在批处理模式下进行。在此模式下,消息代理处理进来的消息,扫描事务日志一次并处理寄出的消息,然后结束。
–c "parameter=value; ..." 指定连接参数。对于 Adaptive Server Anywhere,如果未指定此选项,则使用环境变量 SQLCONNECT。
例如,以下语句在名为 c:Program Files\Sybase\SQL Anywhere 9\asademo.db 的数据库文件上运行 dbremote,并且使用用户 ID DBA 和口令 SQL 进行连接:
dbremote -c "uid=DBA;pwd=SQL;dbf=c:\Program Files\Sybase\SQL Anywhere 9\asademo.db"
消息代理必须由具有 REMOTE DBA 权限或 DBA 权限的用户运行。
有关 REMOTE DBA 权限的信息,请参见消息代理和复制安全性。
用于 Adaptive Server Anywhere 的消息代理支持所有的 Adaptive Server Anywhere 连接参数。Adaptive Server Enterprise 的消息代理支持以下连接参数:
| 参数 | 说明 |
|---|---|
| UID | 登录 ID |
| PWD | 口令 |
| DBN | (可选)数据库名称。如果未提供此参数,则连接缺省为登录 ID 的缺省数据库。 |
| ENG | Adaptive Server Enterprise 名称。 |
–cq "parameter=value; ..." 为稳定队列指定连接参数。该选项仅适用于 Adaptive Server Enterprise。如果未提供,则这些值缺省为 -c 值。
–dl 在消息代理窗口中或命令提示符处显示消息;如果指定,还在日志文件中显示消息。
指定加密密钥 (–ek) 此选项用于直接在命令提示符处为高度加密的数据库指定加密密钥。如果您有一个高度加密的数据库,则必须提供加密密钥,才能使用数据库或事务日志,包括脱机事务日志。对于高度加密数据库,您必须指定 -ek 或 -ep,但不要同时指定这两者。如果您没有为高度加密数据库指定密钥,则该命令将失败。
提示输入加密密钥 (–ep) 该选项允许您指定要提示输入加密密钥。该选项将导致显示一个对话框,可以在该对话框中输入加密密钥。这样,加密密钥从不以明文显示,提供了额外的安全保证。对于高度加密数据库,您必须指定 -ek 或 -ep,但不要同时指定这两者。如果您没有为高度加密数据库指定密钥,则该命令将失败。
–e locale-string 该选项仅适用于 Adaptive Server Enterprise。指定 Adaptive Server Enterprise 地区信息。该地区字符串具有以下格式:
"language_name,charset_name[,sort_order]"
缺省情况下,消息代理使用缺省地区,该缺省地区是在文件 sybase\locales\locales.dat 中定义的。
如果未提供 language_name 和 charset_name,则消息代理从 Adaptive Server Enterprise 获得它们。如果没有提供 sort_order,则消息代理使用二进制排序顺序(按字节值排序)。
–fq 此选项仅用于 Adaptive Server Enterprise。它允许在发送消息时对稳定队列进行完整扫描,并且从 sr_remoteuser 表中的最旧的 confirm_sent 值开始。
该功能旨在临时用来清除较大的稳定队列。例如,如果单个用户很长时间没有确认收到消息,则稳定队列可能会非常大。但是,通过运行 -fq,您可以从更多最新用户删除已确认的条目,即使这些条目比缺省情况下删除其条目的中止值还要新。
–g n 指示消息代理将包含少于 n 个操作的事务与后面的事务组合在一起。缺省值是 20 个操作。增加 n 的值可以通过执行较少的提交,加快进来的消息的处理速度。但是,增大事务也会导致死锁和阻塞。
–I 从事务日志将事务扫描到稳定队列中。该选项只可用于 Adaptive Server Enterprise。在分别运行扫描事务日志以及发送和接收消息的独立副本时,使用该选项。
如果 -r、-I 或 -s 均未指定,则消息代理执行所有三个阶段。如果指定了,将仅执行指定的阶段。
有关详细信息,请参见运行多个消息代理。
–k 和 -o 参数一起使用时,完成时关闭窗口。
–l length 以字节为单位指定要发送的每一消息的最大长度。较长的事务被拆分成多个消息。缺省值是 50000 字节,最小长度是 10000。
| 注意 在安装中,最大消息长度必须在所有站点都是相同的。 |
对于具有有限内存分配的平台,该值必须小于操作系统的最大内存分配。
–m size 指定消息代理为生成消息和将进来的消息存入高速缓存所使用的最大内存量。允许大小可被指定为 n(以字节为单位)、nK 或 nM。缺省值为 2048K (2M)。
在所有远程数据库都只接收所复制的操作的唯一子集时,同时为每一远程数据库建立单独的消息。为接收相同操作的一组远程用户只生成一个消息。在所使用的内存超出 -m 值时,消息在到最大尺寸(由 -l 选项指定)前发送。
在消息到达后,这些消息在应用前将由消息代理存储在内存中。将消息存入高速缓存中可以防止重新从消息系统读取顺序不对的消息,以免在大型系统中降低性能。当超出了使用 -m 选项指定的内存使用率时,将按最近最少使用的方式刷新消息。
-ml 此选项使 dbremote 能够在出现以下两种情形中的任意一种时删除旧的镜像日志文件:
脱机镜像日志与镜像事务日志不在同一目录中
dbremote 不在远程数据库服务器所在的计算机上运行
在典型设置中,活动镜像日志与重命名的镜像事务日志位于同一目录中,而 dbremote 运行在远程数据库所在的计算机上,因此无需此选项,旧镜像日志文件将自动删除。仅当 DELETE_OLD_LOGS 数据库选项被设置为 ON 或 DELAY 时,此目录中的事务日志受影响。
–o 将输出附加到日志文件。缺省情况是将输出发送到屏幕上。
–os 指定用于记录输出消息的最大文件大小。允许的大小可以指定为 n(字节)、nK (KB) 或 nM (MB)。缺省情况下没有限制,并且最小限制是 10000 字节。
在 SQL Remote 将输出消息记录到文件前,它首先检查当前文件大小。如果日志消息将导致文件大小超出了指定的大小,则 SQL Remote 会将输出文件重命名为 yymmddxx.dbr(对于 dbremote)和 yymmddxx.ss(对于 ssremote),其中 xx 是从 AA 到 ZZ 的顺序字符,yymmdd 表示当前的年月日。
如果消息代理长期在连续模式下运行,则您可以通过该选项手工删除旧日志文件并释放磁盘空间。
–ot 截断日志文件,然后将输出消息附加到该文件上。缺省情况是将输出发送到屏幕上。
–p 处理消息,并且不清除它们。
–q 仅对于窗口化的操作系统,以最小化的窗口启动消息代理。
–r 接收消息。如果 -r、-I 或 -s 均未指定,则消息代理执行所有三个阶段。如果指定了,将仅执行指定的阶段。
如果用 -r 进行调用,则消息代理将在连续模式下运行。要使消息代理在收到消息后关闭,请同时使用 -b 选项和 -r 选项。
–rd time 缺省情况下,消息代理每分钟轮询进来的消息。此选项(rd 表示 receive delay,即接收延迟)允许配置轮询频率,这在轮询十分占用资源时会很有用。
您可以在数字后使用 s 后缀来指示秒数,如果要频繁进行轮询,这会十分有用。例如:
dbremote -rd 30s
每 30 秒轮询一次。
有关轮询的详细信息,请参见调优进来的消息轮询。
–ro 此选项用在统一站点。当远程数据库被配置为向统一数据库发送输出日志信息时,该选项将这些信息写入一个文件中。此选项可以帮助管理员解决远程站点中的问题。
有关详细信息,请参见解决远程站点中的问题。
–rp 在以连续模式运行时,消息代理按指定的时间间隔轮询消息。在轮询指定次数后(缺省情况下是一次),如果遗失了消息,则消息代理假设该消息已丢失并请求重新发送该消息。在较慢的消息系统上,这可能会导致许多不必要的重新发送请求。您可以使用此选项设置发布重新发送请求前轮询的数目,从而减少重新发送请求的数目。
有关配置此选项的详细信息,请参见调优进来的消息轮询。
–rt 此选项用在统一站点。除了文件在启动时被截断以外,它与 -ro 选项作用相同。
–ru 控制 resend urgency(重新发送紧急情况)这是检测到重新发送请求和消息代理开始实现该请求之间的时间。使用此选项可以帮助消息代理在重新扫描日志前收集来自多个用户的重新发送请求。时间单位可以是以下任一单位:{s = 秒;m = 分钟;h = 小时;d = 天}
–s 发送消息。如果 -r、-I 或 -s 均未指定,则消息代理执行所有三个阶段。如果指定了,将仅执行指定的阶段。
–sd time 控制 send delay(发送延迟),这是轮询更多要发送的事务日志数据之间要等待的时间。
–t 复制所有触发器动作。如果您确实要使用此选项,则必须确保符合以下要求:触发器动作不在远程数据库执行两次,在远程站点由触发器触发一次,并且从统一数据库由复制的动作的显式应用执行一次。
要确保不执行两次触发器动作,可以使用 IF CURRENT REMOTE USER IS NULL ...END IF 语句,其中省略号的部分是触发器的正文。此选项只用于 Adaptive Server Anywhere。
–u 只处理已备份的事务。该选项防止消息代理处理最后一次备份之后的事务。通过使用此选项,可以不发送寄出的事务和进来的事务的确认,直到对它们进行了备份。
在 Adaptive Server Anywhere 中,这意味着只处理来自重命名日志的事务。在 Adaptive Server Enterprise 中,这意味只处理上一次执行 dump database 或 dump transaction 语句之前提交的事务。
–ud 在 UNIX 平台上,您可以通过提供 -ud 选项,将消息代理作为后台进程运行。
如果您将消息代理作为后台进程运行,则还必须提供 -o 或 -ot 选项,以记录输出信息。
如果您将消息代理作为后台进程运行并正在使用 FTP 或 SMTP 消息链接,则必须将消息链接参数存储到数据库中,因为消息代理在作为后台进程运行时不会提示用户有关这些选项的情况。
有关消息链接参数的信息,请参见设置消息类型控制参数。
–v 详细输出。此选项将消息中包含的 SQL 语句显示到屏幕上;此外,如果使用了 -o 或 -ot 选项,则还将这些 SQL 语句显示到日志文件中。
–w n 用来应用进来的消息的工作线程的数目。缺省值为零,这意味着所有消息都由(并且仅由)主线程应用。如果该值为 1,将具有一个从消息系统接收消息的线程和一个将消息应用于数据库的线程。
-w 选项使通过硬件升级增加进来的消息的吞吐量成为可能。通过将统一数据库放置到可以执行许多并发操作的设备上(分条的逻辑驱动器的 RAID 阵列),可以提高进来的消息的吞吐量。通过在具有多个处理器的计算机上运行消息代理,也可以提高进来的消息的吞吐量。
-w 选项在不能执行许多并发操作的硬件上将不会显著改进性能。
来自单个远程数据库的进来的消息将不会应用在多个线程上。来自单个远程数据库的消息将始终以正确的顺序连续应用。
–x 在已为寄出的消息扫描事务日志后重命名并重新启动该事务日志。在某些情况下,将数据复制到统一数据库可以取代备份远程数据库,或者取代在数据库服务器关闭后重命名事务日志。此选项只用于 Adaptive Server Anywhere。
如果提供可选的 size 限定符,则只有事务日志大于指定的大小后才重命名该事务日志。允许大小可被指定为 n(以字节为单位)、nK 或 nM。缺省值为 0。
SQL Remote 使用若干注册表设置来控制消息链接行为的各方面。
消息链接控制参数存储在以下位置:
Windows 存储在注册表的以下位置中:
\\HKEY_CURRENT_USER
\Software
\Sybase
\SQL RemoteNetWare 您应该在 sys:\system 目录中创建名为 dbremote.ini 的文件,以保存 FILE 系统目录设置。
有关注册表设置的列表,请参见使用消息类型中涉及各消息系统的一节。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。