oracle11g DG的一般性步驟

這是在本地虛擬機上搭建的DATAGUARD,一主一備,因爲之前是用word寫的文檔,所以就保留格式,直接拷貝過來了! 


SQL> select * from v$version 
  2  /


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production

 

操作系統信息

[oracle@oraprimary admin]$ cat /etc/centos-release

CentOS release 6.8 (Final)

 

host 設置

主庫備庫一致

[oracle@oraprimary admin]$ cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.80.135  oraprimary

192.168.80.136  oradg

 

 

主庫sql*net 設置

listener

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl_prd)

      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

      (SID_NAME = orcl)

    )

  )

 

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oraprimary)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

 

 

 

 

tns 設置

 

ORCL_PRD =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oraprimary)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl_prd)

    )

  )

 

ORCL_DG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl_dg)

    )

  )

 

 

 

 

備庫listener

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl_dg)

      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

      (SID_NAME = orcl)

    )

  )

 

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

tns設置

 

[oracle@oradg admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

ORCL_DG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl_dg)

    )

  )

 

ORCL_PRD =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = oraprimary)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl_prd)

    )

  )

 

 

 

 

主庫db_name的設置

注意 db_name 保持一致,db_unique_name區分開,在後面的初始化參數文件,會提到這一點

SQL> show parameter db_name

 

NAME                   TYPE  VALUE

------------------------------------ ----------- ------------------------------

db_name                string orcl

SQL> show parameter db_unique_name

 

NAME                   TYPE  VALUE

------------------------------------ ----------- ------------------------------

db_unique_name                string orcl_dg

SQL> show parameter instance_name

 

NAME                   TYPE  VALUE

------------------------------------ ----------- ------------------------------

instance_name             string orcl

SQL> show parameter service_name

 

NAME                   TYPE  VALUE

------------------------------------ ----------- ------------------------------

service_names             string orcl_dg

 

 

主庫上配置

 

開啓強制歸檔

alter database force logging

SQL> select open_mode,log_mode,force_logging,flashback_on from v$database;

 

OPEN_MODE       LOG_MODE    FOR FLASHBACK_ON

-------------------- ------------ --- ------------------

READ WRITE      ARCHIVELOG   YES NO

 

 

配置log_archive_config的歸檔設置

SQL> alter system set log_archive_config= 'dg_config=(orcl_prd,orcl_dg)';

 

System altered.

 

 

 

SQL>    

alter system setlog_archive_dest ='LOCATION= /u01/app/archive_log/ valid_for=(all_logfiles,all_roles) db_unique_name=orcl_prd' scope=spfileSQL>

  2  ;

 

System altered.

 

注意上面的log_archive-dest 和後面的 dest-1 或者dest_2是衝突的。只能重置爲空。

 

 

SQL> alter system setlog_archive_dest_1='LOCATION=/u01/app/archive_log/ valid_for=(all_logfiles,all_roles) db_unique_name=orcl_prd'scope=spfile

 2  /

 

System altered.

 

這個命令指定快速恢復區作爲歸檔位置,此歸檔位置用於在所有數據庫角色下歸檔所有的日誌文件。官方文檔裏說使用 valid_for=(online_logfiles, all_roles),這將導致備庫無法歸檔備用日誌文件,因爲它們不是在線日誌。但如果使用 all_logfiles 選項,主備庫將都能歸檔在線以及備用日誌。如果你想在備庫進行備份,並同時備份歸檔日誌的話,必須使用 all_logfiles。

 

 

 

 

設定redo傳輸日誌的路徑

SQL> alter system set log_archive_dest_2= 'service=orcl_dg  lgwr syncvalid_for=(online_logfiles,primary_role) db_unique_name=orcl_dg';

 

System altered.

 

 

SQL> alter system setfal_server='orcl_dg'

 2  /

 

System altered.

 

SQL> show parameter fal_server

 

NAME                   TYPE  VALUE

----------------------------------------------- ------------------------------

fal_server             string orcl_dg

 

該參數的解釋:

FAL_SERVER specifies the FAL (fetch archive log)server for a standby database. The value is an Oracle Net service name, whichis assumed to be configured properly on the standby database system to point tothe desired FAL server.

 

主庫增加standby 日誌

SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/orcl_prd/redo05.log') size 50m;

 

Database altered.

 

SQL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/orcl_prd/redo06.log') size 50m;

 

Database altered.

 

SQL> desc v$logfile

 Name                   Null?    Type

 ----------------------------------------- -------- ----------------------------

 GROUP#                      NUMBER

 STATUS                      VARCHAR2(7)

 TYPE                        VARCHAR2(7)

 MEMBER                      VARCHAR2(513)

 IS_RECOVERY_DEST_FILE                 VARCHAR2(3)

 

SQL> select group#,type,member from v$logfile

  2  /

 

    GROUP# TYPE    MEMBER

---------- ------- -------------------------

     3 ONLINE  /u01/app/oracle/oradata/o

          rcl_prd/redo03.log

 

     2 ONLINE  /u01/app/oracle/oradata/o

          rcl_prd/redo02.log

 

     1 ONLINE  /u01/app/oracle/oradata/o

          rcl_prd/redo01.log

 

     4 STANDBY /u01/app/oracle/oradata/o

          rcl_prd/redo04.log

 

    GROUP# TYPE    MEMBER

---------- ------- -------------------------

 

     5 STANDBY /u01/app/oracle/oradata/o

          rcl_prd/redo05.log

 

     6 STANDBY /u01/app/oracle/oradata/o

          rcl_prd/redo06.log

 

 

6 rows selected.

 

SQL>

 

 

 

SQL> createpfile='/home/oracle/initdg.ora' from spfile

 2  /

 

File created.

 

 

 

 

 

 

 

 

 

 

主庫:

[oracle@oradg dbs]$ cat initdg.ora

orcl.__db_cache_size=448790528

orcl.__java_pool_size=4194304

orcl.__large_pool_size=12582912

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=427819008

orcl.__sga_target=637534208

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=159383552

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl_prd/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/u01/app/oracle/oradata/orcl_prd/control01.ctl','/u01/app/oracle/oradata/orcl_prd/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_server='orcl_dg'

*.log_archive_config='dg_config=(orcl_prd,orcl_dg)'

*.log_archive_dest=''

*.log_archive_dest_1='LOCATION=/u01/app/archive_log/ valid_for=(all_logfiles, all_roles) db_unique_name=orcl_prd'

*.log_archive_dest_2='service=orcl_dg  lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcl_dg'

*.memory_target=1063256064

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

[oracle@oradg dbs]$

 

 

 

備庫:

[oracle@oradg dbs]$ cat initorcl_dg.ora

orcl.__db_cache_size=448790528

orcl.__java_pool_size=4194304

orcl.__large_pool_size=12582912

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=427819008

orcl.__sga_target=637534208

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=159383552

orcl.__streams_pool_size=0

-- 如果備庫沒有這些路徑,需要手動創建哦!

*.audit_file_dest='/u01/app/oracle/admin/orcl_dg/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/u01/app/oracle/oradata/orcl_dg/control01.ctl','/u01/app/oracle/oradata/orcl_dg/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_unique_name='orcl_dg'

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_server='orcl_prd'

*.log_archive_config='dg_config=(orcl_prd,orcl_dg)'

*.log_archive_dest=''

*.log_archive_dest_1='LOCATION=/u01/app/archive_log/ valid_for=(all_logfiles, all_roles) db_unique_name=orcl_dg'

*.log_archive_dest_2='service=orcl_prd  lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=orcl_prd'

*.memory_target=1063256064

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.db_file_name_convert='/u01/app/oracle/oradata/orcl_prd','/u01/app/oracle/oradata/orcl_dg'

*.log_file_name_convert='/u01/app/oracle/oradata/orcl_prd','/u01/app/oracle/oradata/orcl_dg'

[oracle@oradg dbs]$

 

 

拷貝密碼文件到備庫服務器

 

[oracle@oraprimary dbs]$ scp [email protected]:/u01/app/oracle/product/11.2.0/dbhome_1/dbs

[email protected]'s password:

orapworcl                                                                                                        100% 1536     1.5KB/s   00:00 

 

備庫創建spfile

SQL> select status from v$instance

  2  /

 

STATUS

------------------------------------

STARTED

 

SQL> create spfile from memory

  2  /

 

File created.

 

SQL> shutdown immediate;

ORA-01507: database not mounted

 

 

ORACLE instance shut down.

SQL> startup nomount;

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

ORACLE instance started.

 

Total System Global Area 1060585472 bytes

Fixed Size        2260000 bytes

Variable Size       671089632 bytes

Database Buffers    381681664 bytes

Redo Buffers          5554176 bytes

 

 

備庫上遠程登錄主庫:

[oracle@oradg trace]$ sqlplus sys/Oracle123@orcl_prd as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 4 14:45:28 2017

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

 

 

主庫上:

[oracle@oraprimary admin]$ sqlplus sys/Oracle123@orcl_dg as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 4 14:47:58 2017

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

 

注意備庫和主庫的監聽都要啓動。

 

 

rman 同時登錄兩個數據庫

[oracle@oradg dbs]$  rman target sys/Oracle123@orcl_prd auxiliary sys/Oracle123@orcl_dg

 

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Aug 4 16:07:01 2017

 

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

 

connected to target database: ORCL (DBID=1478939344)

connected to auxiliary database: ORCL (not mounted)

 

RMAN>

 

 

 

 

 

duplicate的過程

 

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

 

Starting Duplicate Db at 04-AUG-17

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=63 device type=DISK

 

這裏rman自己拷貝了密碼文件

contents of Memory Script:

{

   backup as copy reuse

   targetfile  '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl' auxiliary format

 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl'   ;

}

executing Memory Script

 

Starting backup at 04-AUG-17

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=198 device type=DISK

Finished backup at 04-AUG-17

生產控制文件

contents of Memory Script:

{

   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/orcl_dg/control01.ctl';

   restore clone controlfile to  '/u01/app/oracle/oradata/orcl_dg/control02.ctl' from

 '/u01/app/oracle/oradata/orcl_dg/control01.ctl';

}

executing Memory Script

 

Starting backup at 04-AUG-17

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

output file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f tag=TAG20170804T160937 RECID=1 STAMP=951149377

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 04-AUG-17

 

Starting restore at 04-AUG-17

using channel ORA_AUX_DISK_1

 

channel ORA_AUX_DISK_1: copied control file copy

Finished restore at 04-AUG-17

mount數據庫

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

 "/u01/app/oracle/oradata/orcl_dg/temp01.dbf";

   switch clone tempfile all;

   set newname for datafile  1 to

 "/u01/app/oracle/oradata/orcl_dg/system01.dbf";

   set newname for datafile  2 to

 "/u01/app/oracle/oradata/orcl_dg/sysaux01.dbf";

   set newname for datafile  3 to

 "/u01/app/oracle/oradata/orcl_dg/undotbs01.dbf";

   set newname for datafile  4 to

 "/u01/app/oracle/oradata/orcl_dg/users01.dbf";

   backup as copy reuse

   datafile  1 auxiliary format

 "/u01/app/oracle/oradata/orcl_dg/system01.dbf"   datafile

 2 auxiliary format

 "/u01/app/oracle/oradata/orcl_dg/sysaux01.dbf"   datafile

 3 auxiliary format

 "/u01/app/oracle/oradata/orcl_dg/undotbs01.dbf"   datafile

 4 auxiliary format

 "/u01/app/oracle/oradata/orcl_dg/users01.dbf"   ;

   sql 'alter system archive log current';

}

executing Memory Script

 

executing command: SET NEWNAME

 

renamed tempfile 1 to /u01/app/oracle/oradata/orcl_dg/temp01.dbf in control file

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

Starting backup at 04-AUG-17

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00001 name=/u01/app/oracle/oradata/orcl_prd/system01.dbf

output file name=/u01/app/oracle/oradata/orcl_dg/system01.dbf tag=TAG20170804T160948

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=/u01/app/oracle/oradata/orcl_prd/sysaux01.dbf

output file name=/u01/app/oracle/oradata/orcl_dg/sysaux01.dbf tag=TAG20170804T160948

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25

channel ORA_DISK_1: starting datafile copy

input datafile file number=00003 name=/u01/app/oracle/oradata/orcl_prd/undotbs01.dbf

output file name=/u01/app/oracle/oradata/orcl_dg/undotbs01.dbf tag=TAG20170804T160948

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=/u01/app/oracle/oradata/orcl_prd/users01.dbf

output file name=/u01/app/oracle/oradata/orcl_dg/users01.dbf tag=TAG20170804T160948

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 04-AUG-17

 

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=1 STAMP=951149442 file name=/u01/app/oracle/oradata/orcl_dg/system01.dbf

datafile 2 switched to datafile copy

input datafile copy RECID=2 STAMP=951149442 file name=/u01/app/oracle/oradata/orcl_dg/sysaux01.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=3 STAMP=951149442 file name=/u01/app/oracle/oradata/orcl_dg/undotbs01.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=4 STAMP=951149442 file name=/u01/app/oracle/oradata/orcl_dg/users01.dbf

Finished Duplicate Db at 04-AUG-17

 

RMAN>

 

 

複製完成後:

數據庫在monut狀態

SQL> select open_mode,database_role,db_unique_name from v$database

  2  /

 

OPEN_MODE       DATABASE_ROLE    DB_UNIQUE_NAME

-------------------- ---------------- ------------------------------

MOUNTED         PHYSICAL STANDBY orcl_dg

 

 

SQL> alter database open

  2  /

 

Database altered.

啓動實時重做應用

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

 

Database altered.

 

以只讀方式打開數據庫

SQL> select open_mode,database_role,db_unique_name from v$database;

 

OPEN_MODE       DATABASE_ROLE    DB_UNIQUE_NAME

-------------------- ---------------- ------------------------------

READ ONLY WITH APPLY PHYSICAL STANDBY orcl_dg

 

SQL>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章