通过以下步骤提高创建多个远程数据库的效率。
创建统一数据库的副本,并从统一数据库启动远程用户的预订。例如:
启动预订,然后立即关闭统一数据库和 SQL Remote 消息代理(如果正在运行)。
必须在创建统一数据库副本的同时启动预订。在复制数据库和启动预订之间发生的任何操作都将丢失,而且可能在远程数据库上导致错误。在统一数据库上启动预订允许将消息封装并发送到预订者,即使预订者数据库尚不存在也会如此。请参见START SUBSCRIPTION 语句 [SQL Remote]和启动预订。
若要在单个事务中启动多个预订,请使用 REMOTE RESET 语句。请参见REMOTE RESET 语句 [SQL Remote]。
复制统一数据库。
缺省情况下,抽取实用程序 (dbxtract) 和 [抽取数据库向导] 都在隔离级别 3 上运行。此隔离级别可以确保抽取的数据库中的数据与数据库服务器上的数据保持一致;但是,它会阻止其他用户使用数据库。建议针对统一数据库的副本抽取远程数据库。
重新启动统一数据库,如果它正在运行,则重新启动该统一数据库上的 SQL Remote 消息代理。
从统一数据库的副本抽取远程数据库模式。因为该数据库是一个副本,所以没有锁定和并发问题;不过,对于大量的远程数据库,这一过程会花费一段时间。
抽取远程数据库模式时,请选择以下选项:
仅抽取远程数据库的模式。
缺省情况下,抽取实用程序 (dbxtract) 和 [抽取数据库向导] 一次抽取一个数据库,包括每个用户的模式和数据。但在大部分部署情况下,远程数据库使用相同的模式但使用不同的数据。使用抽取实用程序 (dbxtract) 或 [抽取数据库向导] 为每个用户同时抽取模式和数据会导致重复抽取同一模式。请参见 -n 选项抽取实用程序 (dbxtract)。
按主键对数据排序。
缺省情况下,每个表中的数据都按主键排序。如果数据是按主键进行排序的,则将数据装载至远程数据库将会更快。请参见 -u 选项抽取实用程序 (dbxtract)。
使用 reload.sql 文件创建空的远程数据库。复制此数据库文件以创建所需数量的远程数据库。请参见将远程数据库抽取到重装文件。
针对每个远程数据库,定义特定于每个远程用户的 SQL Remote 定义。请参见用户权限。
针对每个远程用户,从统一数据库中仅抽取其相应数据。请参见 -d 选项抽取实用程序 (dbxtract)。
将每个远程用户的数据都装载到相应的远程数据库中。
每个远程数据库在创建时,对于正在使用的统一数据库来说已经过期。
但是,当运行 SQL Remote 消息代理 (dbremote) 时,每个用户都可以接收并应用从该活动的统一数据库中发出的消息,这样就可使这些数据库处于最新状态。请参见了解 SQL Remote 消息代理 (dbremote)。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |