1. 程式人生 > 實用技巧 >【Oracle Database】Oracle DataGuard(single-single)

【Oracle Database】Oracle DataGuard(single-single)

[oracle@monkey01 ~]$ sqlplus / as sysdba
SQL> alter database force logging;
Database altered.

SQL> col force_logging for a15
SQL> select force_logging from v$database;
FORCE_LOGGING

YES

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 35
Next log sequence to archive 37
Current log sequence 37

SQL> alter system set db_unique_name='monkeymdb' scope=spfile;
SQL> alter system set log_archive_config='dg_config=(monkeymdb,monkeysdb)' 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=monkeymdb' scope=spfile;
SQL> alter system set log_archive_dest_2='service=monkeysdb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=monkeysdb' scope=spfile;
SQL> alter system set fal_server='monkeysdb' scope=spfile;
SQL> alter system set standby_file_management='auto' scope=spfile;
SQL> alter system set log_archive_dest_state_2='defer' scope=spfile;
SQL> alter system set service_names=monkeydb,monkeymdb scope=spfile;

[oracle@monkey01 ~]$ cd $ORACLE_HOME/dbs
[oracle@monkey01 dbs]$ sqlplus / as sysdba
SQL> create pfile from spfile;
File created.

[oracle@monkey01 dbs]$ scp initmonkeydb.ora 192.168.1.202:/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@monkey01 dbs]$ scp orapwmonkeydb 192.168.1.202:/u01/app/oracle/product/11.2.0/db_1/dbs

[oracle@monkey01 ~]$ mkdir backup
[oracle@monkey02 ~]$ mkdir backup

[oracle@monkey01 ~]$ rman target /
RMAN> backup device type disk format '/home/oracle/backup/%U' database plus archivelog;
RMAN> backup device type disk format '/home/oracle/backup/%U' current controlfile for standby;

[oracle@monkey01 ~]$ scp /home/oracle/backup/* 192.168.1.202:/home/oracle/backup

[oracle@monkey01 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
monkeymdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = monkeydb)
)
)
monkeysdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = monkeydb)
)
)

[oracle@monkey02 ~]$ vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = monkeydb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = monkeydb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = monkey02)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle

[oracle@monkey02 ~]$ lsnrctl start
[oracle@monkey02 ~]$ lsnrctl status

[oracle@monkey02 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
monkeymdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = monkeydb)
)
)
monkeysdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = monkeydb)
)
)

[oracle@monkey01 ~]$ tnsping monkeysdb
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =
monkeydb)))
OK (40 msec)

[oracle@monkey02 ~]$ tnsping monkeymdb
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =
monkeydb)))
OK (30 msec)

[oracle@monkey02 ~]$ cd $ORACLE_HOME/dbs
[oracle@monkey02 dbs]$ vi initambdb.ora
*.audit_file_dest='/u01/app/oracle/admin/monkeydb/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/ambdb/control01.ctl','/u01/app/oracle/fast_recovery_area/ambdb/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='monkeydb'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=107374182400
*.db_unique_name='monkeysdb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=monkeydbXDB)'
*.fal_server='monkeymdb'
*.log_archive_config='dg_config=(monkeymdb,monkeysdb)'
*.log_archive_dest_1='location=db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=monkeysdb'
*.log_archive_dest_2='service=monkeymdb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=monkeymdb'
*.memory_max_target=1073741824
*.memory_target=1073741824
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names='monkeydb','monkeysdb'
*.standby_file_management='auto'
*.undo_tablespace='UNDOTBS1'

[oracle@monkey02 dbs]$ sqlplus / as sysdba
SQL> create spfile from pfile;

File created.

[oracle@monkey02 ~]$ mkdir -p /u01/app/oracle/admin/monkeydb/adump
[oracle@monkey02 ~]$ mkdir -p /u01/app/oracle/oradata/monkeydb
[oracle@monkey02 ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/monkeydb

[oracle@monkey02 ~]$ sqlplus / as sysdba
SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 432014216 bytes
Database Buffers 629145600 bytes
Redo Buffers 5517312 bytes

[oracle@monkey02 ~]$ rman target sys/oracle@monkeymdb auxiliary sys/oracle@monkeysdb nocatalog
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Mar 31 14:25:26 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: monkeydb (DBID=1072562510)
using target database control file instead of recovery catalog
connected to auxiliary database: monkeydb (not mounted)

RMAN> duplicate target database for standby dorecover nofilenamecheck;

[oracle@monkey02 ~]$ sqlplus / as sysdba
SQL> alter database add standby logfile '/u01/app/oracle/oradata/monkeydb/standby01.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/monkeydb/standby02.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/monkeydb/standby03.log' size 50m;
SQL> alter database add standby logfile '/u01/app/oracle/oradata/monkeydb/standby04.log' size 50m;

SQL> alter database recover managed standby database disconnect from session using current logfile;

[oracle@monkey01 ~]$ sqlplus / as sysdba
SQL> alter system set log_archive_dest_state_2=enable scope=both;
SQL> alter system switch logfile;

[oracle@monkey02 ~]$ sqlplus / as sysdba
SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session using current logfile;

[oracle@monkey01 ~]$ sqlplus / as sysdba
sql> set line 200
sql> col database_mode for a30
sql> col protection_mode for a30
sql> col recovery_mode for a30
sql> select dest_id , database_mode , recovery_mode , protection_mode from v$archive_dest_status where dest_id=2;
dest_id database_mode recovery_mode protection_mode


     2 open_read-only                 managed real time apply        maximum performance

sql> col dest_name for a20
sql> col destination for a30
sql> col error for a50
sql> select dest_id,dest_name,status, destination, error from v$archive_dest where dest_id<=2;
dest_id dest_name status destination error


     1 log_archive_dest_1   valid                       db_recovery_file_dest
     2 log_archive_dest_2   valid                       monkeysdb

sql> col type for a20
sql> select dest_name,destination,status,type,archived_seq#,applied_seq# from v$archive_dest_status where dest_id<=2;

dest_name destination status type archived_seq# applied_seq#


log_archive_dest_1 db_recovery_file_dest valid local 50 0
log_archive_dest_2 monkeysdb valid physical 50 49

sql> select thread# , sequence# , status from v$log;

thread# sequence# status


     1         49 inactive
     1         50 inactive
     1         51 current

[oracle@monkey02 ~]$ sqlplus / as sysdba
sql> set line 200
sql> col archived for a10
sql> select thread# , sequence# , archived , status from v$standby_log;
thread# sequence# archived status


     1         51 yes        active
     1          0 no         unassigned
     0          0 yes        unassigned
     0          0 yes        unassigned

sql> select process , status , thread# , sequence# , block# , blocks from v$managed_standby where process != 'ARCH';
process status thread# sequence# block# blocks


rfs idle 0 0 0 0
rfs idle 0 0 0 0
rfs idle 1 51 4381 1
mrp0 applying_log 1 51 4381 102400