大家可能已经知道,在Oracle的DATAGUARD(这里指的是PHYSICAL STANDBY)环境中,Primary端会把生成的REDO传到Standby端,然后由Standby端的MRP进程应用该Redo,以达到同期效果。

首先,REDO_TRANSPORT_USER参数的意义如下:

http://docs.oracle.com/database/122/REFRN/REDO_TRANSPORT_USER.htm#REFRN10269

REDO_TRANSPORT_USER specifies the name of the user whose password verifier is used when a remote login password file is used for redo transport authentication.

This user must have the SYSDBA or SYSOPER privilege。。。

翻译过来就是,Standby端使用密码认证来保证REDO传输认证的话,利用指定的REDO_TRANSPORT_USER来进行认证。

手册上写着,REDO_TRANSPORT_USER用户需要有SYSDBA 或者 SYSOPER权限。

但是通过实际测试来看,只有SYSDBA是不行的,必须有SYSOPEN权限才行。

测试的时候使用的是12.2的DATAGUARD环境。

关于REDO_TRANSPORT_USER这个参数,也可以看看这个Mos 文档

 Troubleshooting ORA-16191 and ORA-1017/ORA-1031 in Data Guard Log Transport Services or Data Guard Broker (Doc ID 1368170.1)

=============
6. If you have setup the 'REDO_TRANSPORT_USER'-Initialization  Parameter to a certain User,
this User must be granted the  'SYSOPER'-Role and the Setting for this Parameter must be the same on  the Primary and all Standby Databases.
=============

简单的测试如下:

Test Case
------------------
▼Primary:ORCL
--create password file(12.2)
cd $ORACLE_HOME/dbs
orapwd file=orapworcl format=12.2 password=ora_1234 force=y

--create user
create user ORASYS identified by ora_1234;
create user ORAOPER identified by ora_1234;
grant CONNECT,SYSDBA to ORASYS;
grant CONNECT,SYSOPER to ORAOPER;

--check if the user created can connect to database.
sqlplus SYS/"ora_1234@orcl as SYSDBA"
sqlplus ORASYS/"ora_1234@orcl as SYSDBA"
sqlplus ORAOPER/"ora_1234@orcl as SYSOPER"

--check V$PWFILE_USERS
col USERNAME format a7
select USERNAME,SYSDBA,SYSOPER from V$PWFILE_USERS where USERNAME like 'ORA%';

USERNAM SYSDB SYSOP
------- ----- -----
ORASYS  TRUE  FALSE  <<<<<ORASYS user does not have SYSOPER Role
ORAOPER FALSE TRUE   <<<<<ORAOPER user have SYSOPER Role

■create dataguard

▼Standby:ORCLST
--check V$PWFILE_USERS
col USERNAME format a7
select USERNAME,SYSDBA,SYSOPER from V$PWFILE_USERS where USERNAME like 'ORA%';

USERNAM SYSDB SYSOP
------- ----- -----
ORASYS  TRUE  FALSE
ORAOPER FALSE TRUE

--check if the user created can connect to database
sqlplus SYS/"ora_1234@orclst as SYSDBA"
sqlplus ORASYS/"ora_1234@orclst as SYSDBA"
sqlplus ORAOPER/"ora_1234@orclst as SYSOPER"

--SYS(default) REDO transportation
▼Primary:ORCL
create table scott.test(id number);
insert into scott.test values(1);
commit;
alter system archive log current;

▼Standby:ORCLST
select count(*) from scott.test;
=> REDO transportation was fine.

--SYSDBA[ORASYS] REDO transportation
▼Primary:ORCL
alter system set REDO_TRANSPORT_USER=ORASYS scope=spfile;
shutdown immediate

▼Standby:ORCLST
alter system set REDO_TRANSPORT_USER=ORASYS;

▼Primary:ORCL
startup
insert into scott.test values(1);
commit;
alter system archive log current;

▼Standby:ORCLST
select count(*) from scott.test;
-- REDO transportation failed on ORA-16191
-- You can see ORA-16191 from alert log of Primary.

--SYSOPER[ORAOPER] REDO transportation
▼Primary:ORCL
alter system set REDO_TRANSPORT_USER=ORAOPER scope=spfile;
shutdown immediate

▼Standby:ORCLST
alter system set REDO_TRANSPORT_USER=ORAOPER;

▼Primary:ORCL
startup

▼Standby:ORCLST
select count(*) from scott.test;
=> REDO transportation was fine.

▼Primary:ORCL
insert into scott.test values(1);
commit;
alter system archive log current;

▼Standby:ORCLST
select count(*) from scott.test;
=> REDO transportation was fine.

[Oracle][DATAGUARD]关于REDO_TRANSPORT_USER参数的更多相关文章

  1. Oracle Dataguard之switchover

    Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间角色转换,主库降为备库,备库升级为主库.而failover则是指主库出现问题时 ...

  2. Oracle Dataguard之Real-Time Apply

    Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Pro ...

  3. Oracle Dataguard之物理standby的基本配置

    尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...

  4. Oracle DataGuard 物理Standby 搭建(上)

    物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...

  5. Oracle DataGuard搭建(一)

    第一次搭建oracle dataguard.学oracle很长时间,却没有完整的搭过dg,说起来让人笑.总得有第一次,而且第一次总是很痛苦的. 数据库版本: Oracle Database 11g E ...

  6. Oracle DataGuard数据备份方案详解

    Oracle DataGuard是一种数据库级别的HA方案,最主要功能是冗灾.数据保护.故障恢复等. 在生产数据库的"事务一致性"时,使用生产库的物理全备份(或物理COPY)创建备 ...

  7. Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]

    Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4] Primary: 11.2.0.1 单机,Site A. Standby: 11.2.0.1 单机,Site ...

  8. 9. Oracle DataGuard的介绍

    一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...

  9. oracle DataGuard 主从 踩过坑的

    一.主机描述 dbprimary: 192.168.1.57 主机名称db1    dbstandby: 192.168.1.58 主机名成db2    SID: orcl 二.配置tns,配置好的文 ...

随机推荐

  1. allure --version 异常io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameter

    执行allure --version时,有时会出现如下异常: io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpecte ...

  2. Android中自定义广播的实现

    今天尝试了自定义的广播,说是自定义的广播其实质就是自己编写一个类继承broadcastreceiver类,然后再onreceiver方法中实现某些功能,在这个过程中我们可以自定义我们要发出的广播,可以 ...

  3. HDU 2665 Kth number(主席树静态区间第K大)题解

    题意:问你区间第k大是谁 思路:主席树就是可持久化线段树,他是由多个历史版本的权值线段树(不是普通线段树)组成的. 具体可以看q学姐的B站视频 代码: #include<cmath> #i ...

  4. 创建您的 ActiveReports Web端在线报表设计器

    概述 ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气.实用,你是不是也想自己动手创建一个? 现在我们就来教您,如何创建一个简单的 ActiveReports Web端在 ...

  5. [转载]去除文件中的^M

    用/bin/cat -v /etc/profile看到很多^M,是因为Windows下的换行符的原因. 现在在linux下面删了就行,我用的第一种方法. 第一种方法 (先yum install -y ...

  6. unittest同时支持参数化和生成html报告

    最近在用python3.6+unittest+requests做自动化接口测试.发现一个问题,unittest中使用第3方插件parameterized进行参数化,再生成html报告时,运行就会失败. ...

  7. yii 动态增加路由规则

    使用 UrlManager类的addRules方法. 如 $url->addRules([ 'zzz/<id:\d+>' => '/test/hi', ]); 这个规则必须在开 ...

  8. js之作用域链到闭包

    一.作用域 全局作用域和函数作用域(局部作用域). 一个变量的作用域就是源代码中定义这个变量的区域. 二.作用域链和闭包 全局变量只有一个(window,globel),全局环境下每一个函数都会形成一 ...

  9. vue-router 中踏过的坑

    1.做完页面滚动,然后再加上路由,发现路由一直跳转不了,经历千辛万苦才发现是BScroll没有配置click:true,当看过文档时心里一万只草泥马奔腾而过,我预感到成长道路上还有多少坑在等着我. 2 ...

  10. 删除链表的倒数第N个节点(java实现)

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...