zhuqibs
作者zhuqibs·2020-04-30 19:39
软件开发工程师·Adidas

Oracle 灾备 -- 关于logical standy上的DDL/DML修改

字数 1049阅读 646评论 0赞 2

在logical standby环境下,备库基本上是一个独立的库,如果要在备库,以非sys用户对备库的数据进行DML修改,就会报错 ora-16224

au10qapap0tels2:ARS2AP:/opt/app/oracle/admin> oerr ora 16224
16224, 00000, "Database Guard is enabled"
// *Cause: Operation could not be performed because database guard is enabled
// *Action: Verify operation is correct and disable database guard
我们需要在备库做一些操作,以避免报错。

检查备库状态,我们发现是处于standby状态:

SQL> select guard_status from v$database;

GUARD_S

STANDBY

SQL>
改其状态为none:

SQL> alter database guard none;

Database altered.

SQL>
SQL> select guard_status from v$database;

GUARD_S

NONE

SQL>
让应用开发的同事进行DDL修改,如索引创建。

修改回standby状态:

alter database guard standby;
在standby或all状态下,所有非sys用户,都无法对logical standby的数据进行修改,关于alter database guard [standby|all|none] 几个参数的解释如下:

ALTER DATABASE GUARD ALL - prevents users making any changes - DEFAULT
ALTER DATABASE GUARD STANDBY - prevents users making changes to data maintained by data guard sql apply,即对DBMS_LOGSTDBY.SKIP 跳过的表可进行DML操作,而其他需要SQL APPLY的对象都不能进行变更操作。
ALTER DATABASE GUARD NONE - normal security

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广