0

我的版本需要应用程序服务器长达 4 小时的停机时间,以防止用户在执行包括更改表结构在内的各种脚本时在 Oracle 12c 数据库中添加任何新数据。

可以在这样的场景中使用数据保护:

  1. 在暂存区复制当前的生产模式
  2. 用户在生产环境中继续他们的工作
  3. 在暂存数据库中运行各种脚本,包括对表结构的更改
  4. 在某个时候,使用数据保护将生产环境中更改的所有数据“推送”到暂存环境
  5. 至此,暂存环境变成了生产环境

这仅用于计划发布

4

1 回答 1

0

您可以为此使用 Data Guard 逻辑备用。

被警告

逻辑 Data Guard 备用设置比典型的物理备用要复杂得多,尤其是在谈到您想要进行的更改类型并在主备之间保持分离时。正因为如此,在开始管理逻辑备用之前,我至少会对管理物理备用感到非常自在。

1) 创建一个 Data Guard 物理备用。

2) 将物理备用转换为逻辑备用:

--STANDBY 
alter database recover managed standby database cancel;

--PRIMARY
execute dbms_logstdby.build;

--STANDBY
alter database recover to logical standby keep identity;
alter database open;
alter database start logical standby apply immediate;

3) 只跳过整个架构上的 DDL:

--STANDBY
EXECUTE DBMS_LOGSTDBY.SKIP(STMT => 'SCHEMA DDL', -
     schema_name => 'HR', -
     table_name => '%', -
     proc_name => null);

您也可以跳过特定对象的 DDL 或 DML,但我认为在您的情况下,模式级别会更合适。DBMS_LOGSTDBY 非常健壮,您可以从docs中阅读。

4) 当您需要只将更改推送到备用服务器而不影响主服务器时,您可以禁用该会话的保护模式:

--STANDBY
alter session disable guard;
--Make your changes
alter session enable guard;

5) 当您准备好上线时,执行 Data Guard 切换,您可以从docs中阅读。本文档专门针对使用 Data Guard 代理,强烈建议在管理 Data Guard 环境时使用。

于 2017-01-18T14:41:16.287 回答