Vous êtes sur la page 1sur 19

change_on_install … an oracle blog

by Borys Neselovskyi

Steps to con gure Oracle Data Guard


12.2 for non-multitenant database

This document describes the con guration of the Oracle Data Guard Version 12.2. We
will con gure a standby for a non-multitenant database.

Our test environment consists of two Linux (OEL 7.3) servers: oradg1 and oradg2. I
already created the non-multitenant database on the server oradg1. We will
con gure the standby database on the server oradg2. We will use a new feature of
12.2 by creating a physical standby via dbca – oracle database creation assistant.

Environment overview:

Primary server name/os: oradg1/Oracle Linux Server 7.3 (64 bit)

Standby server name/os: oradg2/


/Oracle Linux Server 7.3 (64 bit)

RDBMS Version (primary and standby): 12.2.0.1.0

ORACLE_HOME (primary and standby): /u01/app/oracle/product/12.2.0/dbhome_1

Primary ORACLE_SID/DB_UNIQUE_NAME: ORCL1/ORCL1PRM

Standby ORACLE_SID/DB_UNIQUE_NAME: ORCL1/ORCL1STB

Listener name/port (primary and standby): LISTENER/1521

Path to DB files (primary and standby): /u01/app/oracle/oradata/orcl1

Recovery area (primary and standby):


/u01/app/oracle/fast_recovery_area/orcl1
Blueprint:

Preparing the primary database

All steps will be executed on the server oradg1 as OS user oracle. Set the environment
and start SQLPlus:

[oracle@oradg1 ~]$ . oraenv


ORACLE_SID = [orcl1] ? orcl1

[oracle@oradg1 ~]$ sqlplus / as sysdba

Enable the archivelog modus – in my con guration is already done:

SQL> archive log list

Database log mode     Archive Mode


Automatic archival     Enabled
Archive destination     USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence     10

Enable force logging and ashback on the primary:

SQL> alter database force logging;


SQL> alter database flashback on;

Create standby redologs

— Check the number of groups and a size of redolog les:

SQL> select GROUP#,THREAD#,BYTES from v$log;

GROUP# THREAD#     BYTES


---------- ---------- ----------
     1     1 209715200
     2     1 209715200
     3     1 209715200

SQL> select member from v$logfile;

MEMBER
-----------------------------------------------------------------------
/u01/app/oracle/oradata/orcl1/redo01.log
/u01/app/oracle/oradata/orcl1/redo02.log
/u01/app/oracle/oradata/orcl1/redo03.log

— Create:

SQL> ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/orcl1/redostb01.log' size 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE
'/u01/app/oracle/oradata/orcl1/redostb02.log' size 209715200;

SQL> ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/orcl1/redostb03.log' size 209715200;

Adjust some initialization parameters:

SQL> show parameter db_name

NAME                 TYPE     VALUE


----------------------------------------------
db_name              string     orcl1

SQL> show parameter db_unique_name

NAME                 TYPE     VALUE


-----------------------------------------------
db_unique_name             string     ORCL1PRM

-- remote_login_password:
SQL> show parameter remote_login_password

NAME                 TYPE     VALUE


-----------------------------------------------
remote_login_passwordfile     string     EXCLUSIVE

-- LOG_ARCHIVE_CONFIG:
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl1prm,orcl1stb)'
scope = spfile;

-- LOG_ARHIVE_DEST_1:
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl1prm' scope = spfile;

-- Parameter for Swith- Failover -These parameters take effect when the
primary database is transitioned to the standby role:
SQL> alter system set FAL_SERVER='orcl1stb' scope = spfile;
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope = spfile;
Now we will restart the database und check parameters:

SQL> shutdown immediate


SQL> startup

SQL> set linesize 500 pages 100


SQL> col name for a30
SQL> col value forma a100
SQL>
select name, value
from v$parameter
where name in ('db_name','db_unique_name','log_archive_config',
'log_archive_dest_1','log_archive_dest_2',
'log_archive_dest_state_1','log_archive_dest_state_2',
'remote_login_passwordfile', 'log_archive_format',
'log_archive_max_processes',
'fal_server','db_file_name_convert', 'log_file_name_convert',
'standby_file_management');

NAME             VALUE

--------------------------------------------------------------------------
log_archive_dest_1     LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=
(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl1prm

log_archive_dest_state_1 enable
log_archive_dest_state_2 enable
fal_server         orcl1stb
log_archive_config     DG_CONFIG=(orcl1prm,orcl1stb)
log_archive_format     %t_%s_%r.dbf
log_archive_max_processes 4
standby_file_management AUTO
remote_login_passwordfile EXCLUSIVE
db_name          orcl1
db_unique_name         ORCL1PRM

Network con guration

Now we will edit two con guration les: listener.ora and tnsnames.ora:
[oracle@oradg1 dbhome_1]$ cd $ORACLE_HOME/network/admin

Edit le listener.ora, add following lines:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl1prm)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orcl1)
)

(SID_DESC =
(GLOBAL_DBNAME = orcl1prm_dgmgrl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orcl1)
)
)

Add following lines to the le tnsnames.ora:

# Data Guard
ORCL1PRM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1prm)
(UR=A)
)
)

ORCL1STB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1stb)
(UR=A)
)
)

LISTENER_ORCL1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))

Restart the listener:

[oracle@oradg1 admin]$ lsnrctl stop


[oracle@oradg1 admin]$ lsnrctl start

Creating a physical standby database

Now we will create the physical standby database on the server oradg2. We will use
oracle database creation assistant – dbca – it is a new feature in the RDBMS 12.2.

We will set the environment and start the listener:

[oracle@oradg2 ~]$ export


ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
[oracle@oradg2 ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@oradg2 ~]$ lsnrctl start

Now we can start the dbca.

The syntax is:

dbca -createDuplicateDB
-gdbName global_database_name
-primaryDBConnectionString easy_connect_string_to_primary
-sid database_system_identifier
[-createAsStandby
[-dbUniqueName db_unique_name_for_standby]]

In our case we will start the dbca with following arguments:

[oracle@oradg2 ~]$ dbca -silent -createDuplicateDB -gdbName orcl1 -


primaryDBConnectionString oradg1:1521/orcl1prm -sid orcl1 -createAsStandby -
dbUniqueName orcl1stb

Output:

Enter SYS user password:


Listener config step
33% complete
Auxiliary instance creation
66% complete
RMAN duplicate
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl1stb/orcl10.log"
for further details.

The physical standby database is now created.

The sp le and password le are automatically created in the $ORACLE_HOME/dbs


directory:

[oracle@oradg2 ~]$ cd $ORACLE_HOME/dbs


[oracle@oradg2 dbs]$ ll *orcl1*

-rw-rw----. 1 oracle oinstall 1544 14. Aug 18:42 hc_orcl1.dat


-rw-r-----. 1 oracle oinstall 94 14. Aug 18:41 initorcl1.ora
-rw-r-----. 1 oracle oinstall 3584 14. Aug 18:41 orapworcl1
-rw-r-----. 1 oracle oinstall 3584 14. Aug 18:42 spfileorcl1.ora

Check the database role on the standby:

[oracle@oradg2 ~]$ . oraenv


ORACLE_SID = [oracle] ? orcl1
[oracle@oradg2 ~]$ sqlplus / as sysdba

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

Con guring a physical standby database

Set database parameters:

[oracle@oradg2 dbs]$ . oraenv


ORACLE_SID = [oracle] ? orcl1
[oracle@oradg2 dbs]$ sqlplus / as sysdba

SQL> show parameter db_name

NAME                 TYPE     VALUE


-----------------------------------------------
db_name              string     orcl1

SQL> show parameter db_unique_name

NAME                 TYPE     VALUE


-----------------------------------------------
db_unique_name             string     orcl1stb

SQL> -- remote_login_password:
SQL> show parameter remote_login_password
NAME                 TYPE     VALUE
-----------------------------------------------
remote_login_passwordfile     string     EXCLUSIVE

SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl1stb,orcl1prm)'


scope = spfile;
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl1stb' scope = spfile;
SQL> alter system set FAL_SERVER='orcl1prm' scope = spfile;
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope = spfile;

Shutdown the database and start it in the mount modus:

SQL> shutdown immediate


SQL> startup mount

Check parameters:

SQL> set linesize 500 pages 100


SQL> col name for a30
SQL> col value forma a100
SQL>
select name, value
from v$parameter
where name in ('db_name','db_unique_name','log_archive_config',
'log_archive_dest_1','log_archive_dest_2',
'log_archive_dest_state_1','log_archive_dest_state_2',
'remote_login_passwordfile', 'log_archive_format',
'log_archive_max_processes',
'fal_server','db_file_name_convert', 'log_file_name_convert',
'standby_file_management');

NAME             VALUE
------------------------------ ---------------------------------------------
-------------------------------------------------------
db_file_name_convert
log_file_name_convert
log_archive_dest_1     LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=
(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl1stb
log_archive_dest_2
log_archive_dest_state_1 enable
log_archive_dest_state_2 enable
fal_server         orcl1prm
log_archive_config     dg_config=(orcl1stb,orcl1,orcl1prm)
log_archive_format     %t_%s_%r.dbf
log_archive_max_processes 4
standby_file_management AUTO
remote_login_passwordfile EXCLUSIVE
db_name          orcl1
db_unique_name         orcl1stb

Create standby logfiles:

SQL> ALTER DATABASE ADD STANDBY LOGFILE


'/u01/app/oracle/oradata/orcl1/redostb01.log' size 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE
'/u01/app/oracle/oradata/orcl1/redostb02.log' size 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE
'/u01/app/oracle/oradata/orcl1/redostb03.log' size 209715200;

Network con guration

We will con gure the network con guration for a data guard.

[oracle@oradg2]$ cd $ORACLE_HOME/network/admin

Edit le listener.ora, add following lines:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl1stb)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orcl1)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl1stb_dgmgrl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orcl1)
)
)

Add following lines to the le tnsnames.ora:

# Data Guard
ORCL1PRM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1prm)
(UR=A)
)
)

ORCL1STB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1stb)
(UR=A)
)
)

LISTENER_ORCL1 = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))

Restart the listener:

[oracle@oradg2 admin]$ lsnrctl stop


[oracle@oradg2 admin]$ lsnrctl start
Enabling Data Guard con guration

Enable the data guard broker via SQLPlus (on both servers: oradg1/oradg2):

Server oradg1:

[oracle@oradg1 ~]$ . oraenv


ORACLE_SID = [orcl1] ?
[oracle@oradg1 ~]$ sqlplus / as sysdba
SQL> alter system set dg_broker_start=true scope=both;

Server oradg2:

[oracle@oradg2 ~]$ . oraenv


ORACLE_SID = [orcl1] ?
[oracle@oradg2]$ sqlplus / as sysdba
SQL> alter system set dg_broker_start=true scope=both;

Creating a Data Guard con guration via a tool DGMGRL on the Server oradg1:

[oracle@oradg1 ~]$ . oraenv


ORACLE_SID = [orcl1] ?
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oradg1]$ dgmgrl /
DGMGRL> create configuration orcl1 as primary database is orcl1prm connect
identifier is orcl1prm;
DGMGRL> add database orcl1stb as connect identifier is orcl1stb maintained
as physical;
DGMGRL> enable configuration;

Check con guration:


DGMGRL> show configuration

Configuration - orcl1
Protection Mode: MaxPerformance
Members:
orcl1prm - Primary database
orcl1stb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 55 seconds ago)

DGMGRL> show database orcl1prm

Database - orcl1prm
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
orcl1
Database Status:
SUCCESS

DGMGRL> show database orcl1stb


Database - orcl1stb
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Average Apply Rate: 11.00 KByte/s
Real Time Query: ON
Instance(s):
orcl1
Database Status:
SUCCESS

Set the parameter StaticConnectIdenti er to prevent errors during switchover

DGMGRL> edit database orcl1prm set property


StaticConnectIdentifier="oradg1:1521/orcl1prm_dgmgrl";

DGMGRL> edit database orcl1stb set property


StaticConnectIdentifier="oradg2:1521/orcl1stb_dgmgrl";
Check Data Guard in SQLPlus (on both servers oradg1/oradg2):

Database role/status:

Primary:

SQL> SELECT DATABASE_ROLE, DB_UNIQUE_NAME INSTANCE, OPEN_MODE,


PROTECTION_MODE, PROTECTION_LEVEL, SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE     INSTANCE     OPEN_MODE   PROTECTION_MODE    


PROTECTION_LEVEL SWITCHOVER_STATUS
---------------- ------------- ----------- -------------------- ------------
-------- --------------------
PRIMARY      ORCL1PRM      READ WRITE  MAXIMUM PERFORMANCE MAXIMUM
PERFORMANCE TO STANDBY

Standby:

SQL> SELECT DATABASE_ROLE, DB_UNIQUE_NAME INSTANCE, OPEN_MODE,


PROTECTION_MODE, PROTECTION_LEVEL, SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE     INSTANCE   OPEN_MODE     PROTECTION_MODE    


PROTECTION_LEVEL SWITCHOVER_STATUS
---------------- ---------- --------------------- -------------------- -----
--------------- --------------------
PHYSICAL STANDBY orcl1stb   READ ONLY WITH APPLY MAXIMUM PERFORMANCE
MAXIMUM PERFORMANCE NOT ALLOWED

Check sequence number of archived redologs:

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY


SEQUENCE#;
Output primary:

SEQUENCE# FIRST_TIM NEXT_TIME


---------- --------- ---------
15 14-AUG-17 14-AUG-17
16 14-AUG-17 14-AUG-17
17 14-AUG-17 14-AUG-17
18 14-AUG-17 14-AUG-17
19 14-AUG-17 15-AUG-17
20 15-AUG-17 15-AUG-17

Output standby:

SEQUENCE# FIRST_TIM NEXT_TIME


---------- --------- ---------
17 14-AUG-17 14-AUG-17
18 14-AUG-17 14-AUG-17
19 14-AUG-17 15-AUG-17
20 15-AUG-17 15-AUG-17

Swithover test

Start DGMGRL and connect to Standby database as user sys:

[oracle@oradg1 ~]$ dgmgrl sys/oracle@orcl1stb

Check the con guration:

DGMGRL> show configuration

Configuration - orcl1
Protection Mode: MaxPerformance
Members:
orcl1prm - Primary database
orcl1stb - Physical standby database

Fast-Start Failover: DISABLED


Configuration Status:
SUCCESS (status updated 32 seconds ago)

Perform the swithover:

DGMGRL> switchover to orcl1stb

Output:

Performing switchover NOW, please wait...


New primary database "orcl1stb" is opening...
Operation requires start up of instance "orcl1" on database "orcl1prm"
Starting instance "orcl1"...
ORACLE instance started.
Database mounted.
Connected to "ORCL1PRM"
Switchover succeeded, new primary is "orcl1stb"

Check the con guration:

DGMGRL> show configuration

Configuration - orcl1
Protection Mode: MaxPerformance

Members:
orcl1stb - Primary database
orcl1prm - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 6 seconds ago)

Advertisements

REPORT THIS AD REPORT THIS AD

Teilen mit:

    

Gefällt mir

Sei der Erste dem dies gefällt.

Ähnliche Beiträge

Steps to con gure Oracle Data Guard version 12.2 for a pluggable database

In "12c"

WebLogic Server 12.2.1.2.0: Installation on the Linux OEL 7: step by step instruction

In "12c"

Upgrade Grid Infrastructure 12.1 to 12.2 + Install the 2017 August Release Update (RU) on Exadata

In "12c"
Autor: Neselovskyi, Borys
Oracle Database / Middleware / Engineered System Infrastructure Solution Architect
Zeige alle Beiträge von Neselovskyi, Borys

Neselovskyi, Borys / 20. August 2017 / 12c, Allgemein, Architecture, Con guration, Data Guard,
DBCA, HA, High Availability, Howto, RDBMS 12.2 / 12c, advanced con guration, Data Guard, DBCA,
High Availability, Howto, new features, Oracle, RDBMS 12.2, Step by Step

Ein Gedanke zu „Steps to con gure Oracle Data Guard


12.2 for non-multitenant database“

Pingback: Steps to con gure Oracle Data Guard version 12.2 for a pluggable database
– change_on_install … an oracle blog

This site uses Akismet to reduce spam. Learn how your comment data is processed.

change_on_install … an oracle blog / Erstellt mit WordPress.com.

Vous aimerez peut-être aussi