如何创建和应用初始快照

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建和应用初始快照相关的知识,希望对你有一定的参考价值。

  通过启动快照代理作业(异步)为快照发布或事务发布生成初始快照
  使用 ServerConnection 类创建与发布服务器的连接。
  创建 TransPublication 类的实例。 设置发布的 Name 和 DatabaseName 属性,并将 ConnectionContext 属性设置为步骤 1 中创建的连接。
  调用 LoadProperties 方法以加载该对象的其余属性。 如果此方法返回 false,则说明步骤 2 中的发布属性定义不正确,或者此发布不存在。
  如果 SnapshotAgentExists 的值为 false,请调用 CreateSnapshotAgent 为此发布创建快照代理作业。
  调用 StartSnapshotGenerationAgentJob 方法以启动为此发布生成快照的代理作业。
  (可选)SnapshotAvailable 的值为 true 时,订阅服务器具有快照。
参考技术A 10g以前称为快照(SNAPSHOT),之后就运用于AWR了。
AWR默认每隔60分钟采集一次,最小时间间隔10分钟,默认保存周期8天
Oracle按照10个并行会话来估计存储8天的数据将需要200M~300M的磁盘空间,应保证Sysaux表空间有这么多可用空间,否则将会删除最旧的快照。采集频率越大,保留时间越长,用户会话越多,采集的数据量就越大,所需要空间就越大。可在OEM中管理
SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>30,retention =>3*24*60);
(interval=>0即可关闭AWR信息收集)本回答被提问者采纳

SQL SERVER Transactional Replication中添加新表如何不初始化整个快照

原文:SQL SERVER Transactional Replication中添加新表如何不初始化整个快照

在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的。但是在已有的复制(发布订阅)当中增加新表/文章,往往需要将整个快照重新初始化,这样做虽然简单,但是往往在实际应用中会出现一些问题,例如,发布订阅的表比较多,数据量比较大,那么重新初始化快照往往需要很长一段时间,影响系统正常运行。另外就是这样做会增大服务器的负荷,影响网络带宽.

 

    那么是否可以在新增表/文章后,不用初始化整个快照,而只是初始化新增的表呢? 当然可以,下面以一个小案例来讲述一下如何操作:

 

在数据库TTT上建立了名为RPL_TTT的发布,要发布的对象为WipNoToReed和WipNoToStarch这两张表,在另外一个服务器的数据库Test上订阅了该发布。现在由于需求变跟,需要增加一张表WipNoToLoosen

技术分享图片

 

我们可以按照下面三个步骤来操作,如下所示:

 

1:使用sp_helppublication查看该发布的相关信息,如下所示,你会看到默认情况下,‘immediate_sync‘ 和 ‘allow_anonymous‘这两个属性都是启用的。我们首先需要禁用这两个属性。

       

        allow_anonymous      表示是否允许对发布使用匿名订阅。

       immediate_sync       表示是否在每次快照代理运行时创建或重新创建同步文件。

use TTT;
go
 
sp_helppublication;
 
 
use TTT;
go
 
exec sp_helppublication  ‘RPL_TTT‘;

技术分享图片

 

技术分享图片

 

 
--Run on your publisher database
use TTT;
go
 
EXEC sp_changepublication
@publication = ‘RPL_TTT‘,
@property = ‘allow_anonymous‘ ,
@value = ‘false‘
GO
EXEC sp_changepublication
@publication = ‘RPL_TTT‘,
@property = ‘immediate_sync‘ ,
@value = ‘false‘
GO 

 

2:在本地发布当中找到"RPL_TTT",然后在"项目"当中增加表WipNoToLoosen,当然你也可以使用 sp_addarticle命令添加。如下所示:

技术分享图片

 

技术分享图片

 

3:在发布"RPL_TTT"上,右键单击“查看快照代理状态”,在弹出的窗口上选择“启动”,你会发现快照只会初始化一个表而不是整个三个表。

技术分享图片

命令执行完成后,你会发现该表的subscription_status变为了2,如下所示

技术分享图片

至于完成后,‘immediate_sync‘ 和 ‘allow_anonymous‘这两个属性如果你要启动的话,也是非常简单容易的。不启用也问题不大。

以上是关于如何创建和应用初始快照的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server提高事务复制效率优化订阅初始化优化

虚拟机怎么使用快照还原虚拟机

如何解释 visualvm cpu 示例和从中创建的快照之间的不一致?

合并复制如何初始化发布和订阅

Debezium 初始数据快照和相关实体顺序

如何创建具有快照隔离级别的 Flyway 模式历史记录?