前提条件

  1. db_unique_name 在主备服务器不能相同。
  2. hosts文件中定义各自的主机名

127.0.0.1           localhost
192.168.81.21       gopos
192.168.81.22       goposstb

主服务器信息

OEL/RHEL 6.6
Server name: gopos
IP: 192.168.81.21
Oracle 11.2.0.4 software with oracle instance
Oracle SID/Global_name: gopos
Oracle db_unique_name: gopos

备服务器信息

OEL/RHEL 6.6
Server name: goposstb
IP: 192.168.81.22
Oracle 11.2.0.4 software only
Oracle SID/Global_name: gopos
Oracle db_unique_name: goposstb

主服务器配制

启用/禁用FRA

SQL> show parameter recovery_file_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +GOWMS_DATA
db_recovery_file_dest_size           big integer 4182M

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '+GOPOS_ARCH' SCOPE=BOTH SID='*';

System altered.

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 100G SCOPE=BOTH SID='*';
SQL> show parameter recovery_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +GOPOS_ARCH
db_recovery_file_dest_size           big integer 100G

# disable DB_RECOVERY
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='' SCOPE=BOTH SID='*';

启用归档

SQL> alter system set log_archive_dest_1='LOCATION=+GOPOS_ARCH' scope = both;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> alter system switch logfile;

确认归档配制
SQL> archive log list;

启用logging

SQL> ALTER DATABASE FORCE LOGGING;

Database altered.

SQL> SELECT FORCE_LOGGING  FROM v$database;

FOR
---
YES

检查初始化参数

SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      gopos

SQL> show parameter db_unique_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      gopos

配制LOG_ARCHIVE_CONFIG参数

SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(gopos,goposstb)';

确认LOG_ARCHIVE_CONFIG配制
SQL> show parameter LOG_ARCHIVE_CONFIG

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                   string      DG_CONFIG=(gopos,goposstb)

设置对端LOG ARCHIVE

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=goposstb NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=goposstb';

确认以上配制
SQL> show parameter LOG_ARCHIVE_DEST_2
SQL> show parameter LOG_ARCHIVE_DEST_2

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      SERVICE=goposstb NOAFFIRM ASYN
                                                 C VALID_FOR=(ONLINE_LOGFILES,P
                                                 RIMARY_ROLE) DB_UNIQUE_NAME=go
                                                 wmsstb
                                                                                                                                                   log_archive_dest_20                  string
log_archive_dest_21                  string
log_archive_dest_22                  string
log_archive_dest_23                  string
log_archive_dest_24                  string
log_archive_dest_25                  string
log_archive_dest_26                  string
                                                                                                                                                   NAME                                 TYPE        VALUE
------------------------------ -----------------------------
log_archive_dest_27                  string
log_archive_dest_28                  string
log_archive_dest_29                  string


启用LOG_ARCHIVE_DEST_2
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

确认状态
SQL> show parameter LOG_ARCHIVE_DEST_STATE_2;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      ENABLE
log_archive_dest_state_20            string      enable
log_archive_dest_state_21            string      enable
log_archive_dest_state_22            string      enable
log_archive_dest_state_23            string      enable
log_archive_dest_state_24            string      enable
log_archive_dest_state_25            string      enable
log_archive_dest_state_26            string      enable
log_archive_dest_state_27            string      enable
log_archive_dest_state_28            string      enable
log_archive_dest_state_29            string      enable

设置LOG ARCHIVE

ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

show parameter log_archive_format;
show parameter log_archive_max_processes;
show parameter remote_login_passwordfile;

SQL> show parameter log_archive_max_processes;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes            integer     30
SQL> show parameter remote_login_passwordfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE

设置fal_server

ALTER SYSTEM SET FAL_SERVER=goposstb;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='goposstb','gopos' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='goposstb','gopos'  SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

show parameter fal_server;
show parameter standby_file_management;

SQL> show parameter fal_server;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_server                           string      GOPOSSTB
SQL> show parameter standby_file_management;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      AUTO

配制listener.ora & tnsnames.ora

SQL> select value from v$parameter where name='service_names'
   2  ;

   VALUE
   --------------------------------------------------------------------------------
   gopos.local

tnsnames.ora

GOPOSSTB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = goposstb)(PORT = 1521))
    )
    (CONNECT_DATA =
       (SERVICE_NAME = goposstb.local)
    (UR=A)
  )
)

GOWMS =
  (DESCRIPTION =
    (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = gopos)(PORT = 1521))
    )
     (CONNECT_DATA =
         (SERVICE_NAME = gopos.local)
     (UR=A)
  )
)

listener.ora

#1

/u01/app/11.2.0/grid/network/admin/listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = gopos)
(ORACLE_HOME = /u01/app/11.2.0/grid)
(SID_NAME = gopos)
)
)

#2

SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
    (GLOBAL_DBNAME = GOWMS)
  (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
  (SID_NAME = GOWMS)
) )
  LISTENER =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = GOWMS)(PORT = 1521))
   )
ADR_BASE_LISTENER = /u01/app/oracle

确认主备都能ping通

tnsping GOWMS
tnsping GOPOSSTB

备份主数据库

$ rman target /

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/mnt/sdb1/rman/full_%u_%s_%p';
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

# 默认将备份到Flash Recovery Area.

为备数据库创建控制文件和PFILE

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/goposstb.ctl';
CREATE PFILE='/tmp/initgoposstb.ora' FROM SPFILE;

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/goposstb.ctl';

Database altered.

SQL> CREATE PFILE='/tmp/initgoposstb.ora' FROM SPFILE;

File created.

修改PFILE /tmp/initgoposstb.ora

*.audit_file_dest='/u01/app/oracle/admin/goposstb/adump'
*.control_files='+GOWMS_DATA/gopos/controlfile/current.276.917608579','+GOWMS_DATA/gopos/controlfile/current.277.917608579'
*.db_file_name_convert='gopos','goposstb'
*.db_unique_name='goposstb'
*.fal_server='gopos'
*.log_archive_dest_2='SERVICE=gopos ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gopos'
*.log_file_name_convert='gopos','goposstb'

首先登录备数据库创建以下目录

#mkdir -p /mnt/sdb1/oracleData/gopos
#mkdir -p /u01/app/oracle/fast_recovery_area/gopos
#mkdir -p /mnt/sdb1/oracleData/gopos/adump

mkdir -pv /u01/app/oracle/admin/goposstb/adump

复制两个文件至备数据库

scp /tmp/initgoposstb.ora oracle@goposstb:/u01/app/oracle/product/11.2.0/db_1/dbs/
scp /tmp/goposstb.ctl oracle@goposstb:/mnt/sdb1/oracleData/gopos/control01.ctl
scp /tmp/goposstb.ctl oracle@goposstb:/mnt/sdb1/oracleData/rman/control02.ctl

复制password file和备份文件

cd /u01/app/oracle/product/11.2.0/db_1/dbs/
scp orapwgopos oracle@goposstb:/u01/app/oracle/product/11.2.0/db_1/dbs/

cd /mnt/sdb1/rman/
scp -r gopos oracle@goposstb:/mnt/sdb1/rman/

备数据库服务器操作

注:可选?!首先更改db_unique_name为对应的名称。

alter system set db_unique_name='goposstb' SCOPE=SPFILE;
select db_unique_name from v$database;
# OR:
show parameter unique;

确认listener启动正常

lsnrctl status

从备份中恢复数据库(可选方法)

恢复控制文件

export ORACLE_SID=gopos
sqlplus / as sysdba

SQL> CREATE SPFILE FROM PFILE='/tmp/initgoposstb.ora';

恢复数据库

export ORACLE_SID=gopos
rman target /

RMAN> STARTUP MOUNT;
RMAN> list backup of database summary;
RMAN> RESTORE DATABASE;

Note: Recovery of database would be failed with RMAN-06054 error, We can ignore it because RMAN will ask for unknown archive log ( i.e. next archive log sequence, i.e. 10 ) who is not also available on Primary database.

Error log: RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 10 and starting SCN of 1009554

创建日志文件

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

在主和备数据库中创建STANDBY LOGFILE( +1 redo file )

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL';
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER DATABASE ADD STANDBY LOGFILE ('+GOWMS_REDO') SIZE 4G;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';

ALTER DATABASE DROP LOGFILE GROUP 10;

使用RMAN自动复制主数据库至备数据库

For duplicate listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = GOWMS)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = GOWMS)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = GOPOSSTB)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

~$ sqlplus / as sysdba
SQL> startup nomount pfile='$ORACLE_HOME/dbs/initgoposstb.ora';

SQL> startup nomount pfile='$ORACLE_HOME/dbs/initgoposstb.ora';
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
SQL> show parameter dump
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0


SQL> startup nomount pfile='$ORACLE_HOME/dbs/initgoposstb.ora';
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount pfile='$ORACLE_HOME/dbs/initgoposstb.ora';
ORACLE instance started.

Total System Global Area 7465926656 bytes
Fixed Size                  2267744 bytes
Variable Size            1375733152 bytes
Database Buffers         6073352192 bytes
Redo Buffers               14573568 bytes


[oracle@goposstb ~]$ rman target sys@gopos auxiliary sys@goposstb
RMAN> duplicate target database for standby from active database nofilenamecheck;

/u01/app/11.2.0/grid/bin
[grid@goposstb bin]$ ./setasmgidwrap -o oracle

应用传输进程

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY DISCONNECT FROM SESSION;

# Foreground redo apply. Session never returns until cancel. 
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

# Background redo apply. Control is returned to the session once the apply process is started.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

停止传输

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

确认Dataguard保护模式

默认为 maximum performance 模式

SELECT protection_mode FROM v$database;

select name,open_mode,database_role from v$database;
select message from v$dataguard_status;
select dest_name,status,error from v$archive_dest where dest_name='LOG_ARCHIVE_DEST_2';

dgmgrl sys/oracle36#^@goposstb
DGMGRL>  show configuration;

测试主备服务器ARCHIVELOG

主:

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SELECT sequence#, first_time, next_time
FROM   v$archived_log
ORDER BY sequence#;

ALTER SYSTEM SWITCH LOGFILE;

备:

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SELECT sequence#, first_time, next_time, applied
FROM   v$archived_log
ORDER BY sequence#;

主备数据库切换操作

=== Enable Data Guard Broker == http://www.juliandyke.com/Research/DataGuard/DataGuardBroker.php

SQL> ALTER SYSTEM SET dg_broker_start = TRUE;

dgmgrl

dgmgrl
 CREATE CONFIGURATION DG1 AS PRIMARY DATABASE IS 'gopos'
 CONNECT IDENTIFIER IS 'gopos';

 Configuration "DG1" created with primary database "gopos"

 dgmgrl
 ADD DATABASE 'goposstb' AS CONNECT IDENTIFIER IS 'goposstb';

 dgmgrl
 ENABLE CONFIGURATION

 dgmgrl
DGMGRL> SWITCHOVER TO 'goposstb'

 dgmgrl
DGMGRL> SWITCHOVER TO 'gopos'

手动从主gopos切换至备goposstb

CONNECT / AS SYSDBA
ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

关闭主gopos数据库,挂载主数据库为“备”数据库工作

SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

备数据库(goposstb)执行接管操作

CONNECT / AS SYSDBA
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SHUTDOWN IMMEDIATE;
STARTUP;

切换回去的话,重启执行一遍,反方向。

主数据库故障手动切换操作

在备goposstb数据库执行

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE ACTIVATE STANDBY DATABASE;

Read-Only Standby and Active Data Guard

To switch the standby database into read-only mode, do the following.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

select name,open_mode,database_role from v$database;

To resume managed recovery, do the following.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

select name,open_mode,database_role from v$database;

Remove dataguard

alter database recover managed standby database disconnect from session; alter database recover managed standby database cancel;

dup log

[oracle@goposstb ~]$ lsnrctl start 

[oracle@goposstb ~]$ rman target sys/oracle36#^@gopos auxiliary sys/oracle36#^@goposstb

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jul 8 01:33:11 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: GOWMS (DBID=1444008119)
connected to auxiliary database: GOWMS (not mounted)

RMAN> duplicate target database for standby from active database nofilenamecheck;

Starting Duplicate Db at 08-JUL-16
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK

contents of Memory Script:
{  
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwgopos' auxiliary format
 '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwgopos'   ;
}
executing Memory Script

Starting backup at 08-JUL-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=68 device type=DISK
Finished backup at 08-JUL-16

contents of Memory Script:
{  
   backup as copy current controlfile for standby auxiliary format  '/mnt/sdb1/oracleData/gopos/control01.ctl';
   restore clone controlfile to  '/mnt/sdb1/oracleData/rman/control02.ctl' from
 '/mnt/sdb1/oracleData/gopos/control01.ctl';
}
executing Memory Script

Starting backup at 08-JUL-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/mnt/sdb1/oracleData/rman/snapcf_gopos.f tag=TAG20160708T013323 RECID=5 STAMP=916623203
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 08-JUL-16

Starting restore at 08-JUL-16
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 08-JUL-16

contents of Memory Script:
{  
   sql clone 'alter database mount standby database';
}
executing Memory Script

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for tempfile  1 to 
 "/mnt/sdb1/oracleData/gopos/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to 
 "/mnt/sdb1/oracleData/gopos/system01.dbf";
   set newname for datafile  2 to 
 "/mnt/sdb1/oracleData/gopos/sysaux01.dbf";
   set newname for datafile  3 to 
 "/mnt/sdb1/oracleData/gopos/undotbs01.dbf";
   set newname for datafile  4 to 
 "/mnt/sdb1/oracleData/gopos/users01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format 
 "/mnt/sdb1/oracleData/gopos/system01.dbf"   datafile 
 2 auxiliary format 
 "/mnt/sdb1/oracleData/gopos/sysaux01.dbf"   datafile 
 3 auxiliary format 
 "/mnt/sdb1/oracleData/gopos/undotbs01.dbf"   datafile 
 4 auxiliary format 
 "/mnt/sdb1/oracleData/gopos/users01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /mnt/sdb1/oracleData/gopos/temp01.dbf in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 08-JUL-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/mnt/sdb1/oracleData/gopos/system01.dbf
output file name=/mnt/sdb1/oracleData/gopos/system01.dbf tag=TAG20160708T013331
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/mnt/sdb1/oracleData/gopos/sysaux01.dbf
output file name=/mnt/sdb1/oracleData/gopos/sysaux01.dbf tag=TAG20160708T013331
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/mnt/sdb1/oracleData/gopos/undotbs01.dbf
output file name=/mnt/sdb1/oracleData/gopos/undotbs01.dbf tag=TAG20160708T013331
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/mnt/sdb1/oracleData/gopos/users01.dbf
output file name=/mnt/sdb1/oracleData/gopos/users01.dbf tag=TAG20160708T013331
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 08-JUL-16

sql statement: alter system archive log current

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=916623257 file name=/mnt/sdb1/oracleData/gopos/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=916623257 file name=/mnt/sdb1/oracleData/gopos/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=916623257 file name=/mnt/sdb1/oracleData/gopos/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=916623257 file name=/mnt/sdb1/oracleData/gopos/users01.dbf
Finished Duplicate Db at 08-JUL-16

Troubleshooting

http://oracleinaction.com/recover-standby-datafile-primary/

ORA-12514 TNS:listener does not currently know of service requested in connect descriptor

http://stackoverflow.com/questions/10786782/ora-12514-tnslistener-does-not-currently-know-of-service-requested-in-connect-d

auxiliary duplicate error

RMAN-04006: error from auxiliary database: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor


ORA-00600: internal error code, arguments: [kfdskAlloc0], [], [], [], [], [], [], [], [], [], [], []

/u01/app/11.2.0/grid/bin
[grid@goposstb bin]$ ./setasmgidwrap -o oracle

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instanceORACLE instance started.

ORA-01665: control file is not a standby control file

SQL> STARTUP MOUNT
ORACLE instance started.

Database mounted.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
ERROR at line 1:
ORA-01665: control file is not a standby control file

SQL> SELECT database_role FROM v$database;

DATABASE_ROLE
—————-
PRIMARY

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

Database altered.

SQL> STARTUP MOUNT

ORACLE instance started.

Database mounted.

SQL> SELECT database_role FROM v$database;

DATABASE_ROLE
—————-
PHYSICAL STANDBY

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Database altered.

ORA 16139

1:alter database recover managed standby database finish;
2:alter database commit to switchover to physical primary;
3:shutdown
4:startup
5:stop listener to point to crashed db primary and point it to standby and restart.
6:try to connect as user@to_primary

https://community.oracle.com/thread/315787?start=0&tstart=0

ORA-00328

ORA-00283: recovery session canceled due to errors 
ORA-00328: archived log ends at change 1019342, need later change 1050270 
ORA-00334: archived log: '+GOPOS_ARCH/goposstb/archivelog/2016_07_21/thread_1_seq_18.263.917821673'

Metalink ID: 864364.1

1-Run the following query to determine the needed logfile

SQL> select name, thread#, sequence#, archived, applied, status from v$archived_log \
where 1050270 between FIRST_CHANGE# and NEXT_CHANGE#;

2-Recopy the logfile from the primary to the standby server

3-Register the logfile

SQL> alter database register or replace logfile '</absolute path/archive log file name>';

4-start media recovery

SQL> alter database recover automatic managed standby database disconnect from session;

alert failed to establish dependency between database and diskgroup

ALTER DISKGROUP "GOWSM_ARCH" CHECK ALL;

select instance_name,db_name,status from v$asm_client;

tail -f alert+ASM.log

ERROR: failed to establish dependency between database goposstb and diskgroup resource ora.GOPOS_ARCH.dg

This error is harmless.

It is documented in the internal Bug 8304720 "ERROR: FAILED TO ESTABLISH DEPENDENCY BETWEEN DB & DISKGROUP"

"The db-dg dependency will be created later on if the diskgroup is used by the db again; the dependency can also be created manually through cmdline tool. Automatically it will resolve itself later on when the db tries to use the diskgroup. Or we can manually establish the dependancy through any command line utility."

Doc ID 1474954.1