一,DG搭建实例--主库配置

  one : 归档配置

     01,查看归档

     1 select log_mode,force_logging from v$database; 

oracle 单实例DG(配置篇二)_DG实例

     02,开启归档

      关闭数据库重新启动到mount阶段    


shutdown immediate

startup mount


oracle 单实例DG(配置篇二)_sql_02

      03,改成归档模式和强制 logging


SQL> alter database archivelog;

Database altered.

SQL> alter database force logging;

Database altered.


          再次查看:

oracle 单实例DG(配置篇二)_sql_03

      04,改变归档目录 oracle 单实例DG(配置篇二)_DG实例_04


!mkdir /u01/app/oracle/oradata/oracle01/archivelog

!ls /u01/app/oracle/oradata/oracle01/

alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/oracle01/archivelog';
alter database open;


oracle 单实例DG(配置篇二)_hive_05

    05,创建pfile文件 


1 create pfile from spfile;
2
3 alter database create standby controlfile as '/u01/oracle/standby.ctl';


  two.设置闪回-flashback

    01,查看是否开启:


SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO -----如果为YES可以忽略这一步


     02, 设置闪回路径


SQL> altersystem set db_recovery_file_dest='/u01/app/oracle';


     03,设置闪回大小


SQL> altersystem set db_recovery_file_dest_size='5G';


     04,关闭数据库重新启动


SQL> shutdown immediate; ----关闭数据库

SQL> alter database flashback on; ----开启闪回
SQL> alter database open;   ------open数据库


      05,验证数据

    oracle 单实例DG(配置篇二)_hive_06

  three.添加standby日志

     01,查看主库在线日志大小和主数


SQL> select group#,bytes/1024/1024 from v$log;
GROUP# BYTES/1024/1024
---------- ---------------

     1      50

     2      50

     3      50


       02,查看备库在线日志大小和主数


SQL>  select group#,bytes/1024/1024 from v$standby_log;


       默认显示

         no rows selected

      03,创建


SQL> alter database add standby logfile group 11 '/data/CEBPM/onlinelog/redo11_stb01.log' size 50M;
SQL> alter database add standby logfile group 12 '/data/CEBPM/onlinelog/redo12_stb01.log' size 50M;
SQL> alter database add standby logfile group 13 '/data/CEBPM/onlinelog/redo13_stb01.log' size 50M;
SQL> alter database add standby logfile group 14 '/data/CEBPM/onlinelog/redo14_stb01.log' size 50M;


       04,再次查看备库的时候发现:

       oracle 单实例DG(配置篇二)_oracle_07

   four.主库修改参数文件


SQL> select group#,bytes/1024/1024 from v$standby_log;

SQL> alter database add standby logfile group 14 '/u01/oracle/redo14_stb01.log' size 50M;

SQL> alter system set log_archive_config='DG_CONFIG=(oracle01,standby)';

SQL> alter system set log_archive_dest_2='SERVICE=standby VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=spfile;

SQL> alter system set log_archive_dest_state_1='enable';

SQL> alter system set log_archive_dest_state_2='enable'

SQL> alter system set db_file_name_convert='/u01/oracle/datafile','/u01/oracle/datafile'scope=spfile;

SQL> alter system set log_file_name_convert='/u01/oracle/onlinelog','/u01/oracle/onlinelog'scope=spfile;

SQL> alter system set fal_server='standby';

SQL> alter system set fal_client='oracle01';

SQL> alter system set standby_file_management='AUTO';
全部执行输出显示为:
System altered.
修改完成后重启数据库
SQL> shutdown immediate
SQL> startup


   five.修改配置文件

      01, listener.ora


[root@oracle01 ~]# cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = oracle01)
(SID_NAME = oracle01)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = /u01/app/oracle


       02, tnsnames.ora


[root@oracle01 ~]# cat /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORACLE01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle01)
)
)

STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.16)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)


      03,重启监听

      [oracle@oracle01 ~]#lsnrctl stop

      [oracle@oracle01 ~]#lsnrctl start

  six.文件传输


SQL> create pfile='/tmp/initoracle01.ora' fromspfile;

生成参数文件

拷贝参数文件与密码文件

scp orapworacle01 192.168.1.143:/u01/app/oracle/product/11.2.0/db_1/dbs/

scp /tmp/initoracle01.ora 192.168.1.143:/u01/app/oracle/product/11.2.0/db_1/dbs/



二,DG搭建实例--从库配置

  one.配置文件修改

    01,配置文件重命名

    oracle 单实例DG(配置篇二)_oracle_08

      重命名文件


[root@standby dbs]# mv initoracle01.ora initstandby.ora
[root@standby dbs]# mv orapworacle01 orapwstandby


    02,改配置文件

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 [root@standby dbs]# pwd
2 /u01/app/oracle/product/11.2.0/db_1/dbs
3 [root@standby dbs]# cat initstandby.ora
4 *.audit_file_dest='/u01/app/oracle/admin/standby/adump'
5 *.audit_trail='db'
6 *.compatible='11.2.0.4.0'
7 *.control_files='/u01/oracle/standby.ctl'
8 *.db_block_size=8192
9 *.db_domain='localdomain'
10 *.db_file_name_convert='/u01/oracle/datafile','/u01/oracle/datafile'
11 *.db_name='oracle01'
12 *.db_recovery_file_dest='/u01/oracle'
13 *.db_recovery_file_dest_size=5368709120
14 *.db_unique_name='standby'
15 *.diagnostic_dest='/u01/app/oracle'
16 *.dispatchers='(PROTOCOL=TCP) (SERVICE=oracle01XDB)'
17 *.fal_server='oracle01'
18 *.fal_client='standby'
19 *.log_archive_config='DG_CONFIG=(oracle01,standby)'
20 *.log_archive_dest_1='location=/u01/oracle/archivelog'
21 *.log_archive_dest_2='SERVICE=oracle01 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oracle01'
22 *.log_archive_dest_state_1='enable'
23 *.log_archive_dest_state_2='enable'
24 *.log_file_name_convert='/u01/oracle/onlinelog','/u01/oracle/onlinelog'
25 *.open_cursors=300
26 *.pga_aggregate_target=836763648
27 *.processes=150
28 *.remote_login_passwordfile='EXCLUSIVE'
29 *.sga_target=2510290944
30 *.standby_file_management='AUTO'
31 *.undo_tablespace='UNDOTBS1'

View Code

oracle 单实例DG(配置篇二)_sql_11

    03,创建必要的目录

    mkdir -p /u01/app/oracle/admin/standby/adump

    mkdir -p /u01/oracle/onlinelog/

    mkdir -p /u01/oracle/datafile

    mkdir -p  /u01/oracle/archivelog

    mkdir -p  /u01/oracle/controlfile

   two.从库配置文件更新

    01, listener.ora

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 [root@standby ~]# cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
2 SID_LIST_LISTENER =
3
4 (SID_LIST =
5
6 (SID_DESC =
7
8 (GLOBAL_DBNAME = standby)
9
10 (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
11
12 (SID_NAME = standby)
13
14 )
15
16 )
17 STENER =
18
19 (DESCRIPTION_LIST =
20
21 (DESCRIPTION =
22
23 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.16)(PORT = 1521))
24
25 )
26
27 )
28 ADR_BASE_LISTENER = /u01/app/oracle

View Code

    02,   tnsnames.ora

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 [root@standby ~]# cat /u01/app/oracle/product/11.2.0/db_1/network/admin/
2 listener.ora samples/ shrept.lst tnsnames.ora tnsnames.ora.bak
3 [root@standby ~]# cat /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
4 # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
5 # Generated by Oracle configuration tools.
6
7 ORACLE01 =
8 (DESCRIPTION =
9 (ADDRESS_LIST =
10 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
11 )
12 (CONNECT_DATA =
13 (SERVICE_NAME = oracle01)
14 )
15 )
16
17 STANDBY =
18 (DESCRIPTION =
19 (ADDRESS_LIST =
20 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.16)(PORT = 1521))
21 )
22 (CONNECT_DATA =
23 (SERVICE_NAME = standby)
24 )
25 )

View Code

    03, 重启监听服务器

        [oracle@standby ~]$lsnrctl stop

        [oracle@standby ~]$lsnrctl start 

    04,启动从库为nomount

        SQL> shutdown immediate;

        SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initstandby.ora';

        SQL> create spfile from pfile;

  three.验证监听

      01.两端的数据库都需要执行


sqlplus sys/123456@oracle01 as sysdba

sqlplus sys/123456@standby as sysdba


主库执行结果

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 [oracle@oracle01 ~]$ sqlplus sys/123456@standby as sysdba
2
3 SQL*Plus: Release 11.2.0.4.0 Production on Thu Feb 21 11:43:14 2019
4
5 Copyright (c) 1982, 2013, Oracle. All rights reserved.
6
7
8 Connected to:
9 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
10 With the Partitioning, OLAP, Data Mining and Real Application Testing options
11
12 SQL> exit
13 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
14 With the Partitioning, OLAP, Data Mining and Real Application Testing options
15
16
17
18 [oracle@oracle01 ~]$ sqlplus sys/123456@oracle01 as sysdba
19
20 SQL*Plus: Release 11.2.0.4.0 Production on Thu Feb 21 13:04:26 2019
21
22 Copyright (c) 1982, 2013, Oracle. All rights reserved.
23
24
25 Connected to:
26 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
27 With the Partitioning, OLAP, Data Mining and Real Application Testing options
28
29 SQL> exit
30 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
31 With the Partitioning, OLAP, Data Mining and Real Application Testing options

View Code

从库执行结果

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 [oracle@standby ~]$ sqlplus sys/123456@oracle01 as sysdba
2
3 SQL*Plus: Release 11.2.0.4.0 Production on Thu Feb 21 13:06:18 2019
4
5 Copyright (c) 1982, 2013, Oracle. All rights reserved.
6
7
8 Connected to:
9 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
10 With the Partitioning, OLAP, Data Mining and Real Application Testing options
11
12 SQL> exit
13 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
14 With the Partitioning, OLAP, Data Mining and Real Application Testing options
15 [oracle@standby ~]$
16 [oracle@standby ~]$ sqlplus sys/123456@standby as sysdba
17
18 SQL*Plus: Release 11.2.0.4.0 Production on Thu Feb 21 13:06:24 2019
19
20 Copyright (c) 1982, 2013, Oracle. All rights reserved.
21
22
23 Connected to:
24 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
25 With the Partitioning, OLAP, Data Mining and Real Application Testing options
26
27 SQL> exit
28 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
29 With the Partitioning, OLAP, Data Mining and Real Application Testing options
30 [oracle@standby ~]$

View Code

三,rman数据备份与恢复

   one.主库备份数据

      rman target /

      RMAN> configure channel device type disk format '/oradata/backup/%U_%d';

      RMAN> backup as compressed backupset database;

      RMAN> backup current controlfile for standby format '/oradata/backup/standby.ctl';

      ##RMAN> backup full format='/u01/app/oracle/ORACLE01/backupset/db_%U' database include current controlfile for standby;

      等生成后最后的输出上会显示目录

   oracle 单实例DG(配置篇二)_oracle_20

      把文件全部发送到从库

     scp -r /u01/app/oracle/ORACLE01/backupset/* 192.168.0.16:/u01/backupset/ 

   two.从库数据恢复

      01,注册恢复地址

      RAMN> restore standby contolfile from '/u01/app/oracle/ORACLE01/backupset/db_%U' (根据各自名字确定)

      RMAN> catalog start with '/u01/backupset/2019_02_21'; 

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 RMAN> catalog start with '/u01/backupset/2019_02_21';
2
3 searching for all files that match the pattern /u01/backupset/2019_02_21
4
5 List of Files Unknown to the Database
6 =====================================
7 File Name: /u01/backupset/2019_02_21/o1_mf_annnn_TAG20190221T112927_g6w6rq89_.bkp
8 File Name: /u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp
9 File Name: /u01/backupset/2019_02_21/o1_mf_ncsnf_TAG20190221T112928_g6w6s8r5_.bkp
10 File Name: /u01/backupset/2019_02_21/o1_mf_annnn_TAG20190221T112945_g6w6s9tt_.bkp
11
12 Do you really want to catalog the above files (enter YES or NO)? yes
13 cataloging files...
14 cataloging done
15
16 List of Cataloged Files
17 =======================
18 File Name: /u01/backupset/2019_02_21/o1_mf_annnn_TAG20190221T112927_g6w6rq89_.bkp
19 File Name: /u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp
20 File Name: /u01/backupset/2019_02_21/o1_mf_ncsnf_TAG20190221T112928_g6w6s8r5_.bkp
21 File Name: /u01/backupset/2019_02_21/o1_mf_annnn_TAG20190221T112945_g6w6s9tt_.bkp

View Code

      02,数据恢复 

       RMAN> restore database;

oracle 单实例DG(配置篇二)_hive_09oracle 单实例DG(配置篇二)_oracle_10

1 RMAN> restore database;
2
3 Starting restore at 21-FEB-19
4 using channel ORA_DISK_1
5
6 channel ORA_DISK_1: starting datafile backup set restore
7 channel ORA_DISK_1: specifying datafile(s) to restore from backup set
8 channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/oracle01/system01.dbf
9 channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/oracle01/sysaux01.dbf
10 channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/oracle01/undotbs01.dbf
11 channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/oracle01/users01.dbf
12 channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/oracle01/example01.dbf
13 channel ORA_DISK_1: reading from backup piece /u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp
14 channel ORA_DISK_1: ORA-19870: error while restoring backup piece /u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp
15 ORA-19504: failed to create file "/u01/app/oracle/oradata/oracle01/system01.dbf"
16 ORA-27040: file create error, unable to create file
17 Linux-x86_64 Error: 2: No such file or directory
18 Additional information: 1
19
20 failover to previous backup
21
22 RMAN-00571: ===========================================================
23 RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
24 RMAN-00571: ===========================================================
25 RMAN-03002: failure of restore command at 02/21/2019 11:52:24
26 RMAN-06026: some targets not found - aborting restore
27 RMAN-06023: no backup or copy of datafile 5 found to restore
28 RMAN-06023: no backup or copy of datafile 4 found to restore
29 RMAN-06023: no backup or copy of datafile 3 found to restore
30 RMAN-06023: no backup or copy of datafile 2 found to restore
31 RMAN-06023: no backup or copy of datafile 1 found to restore
32
33 RMAN> restore database ;
34
35 Starting restore at 21-FEB-19
36 using channel ORA_DISK_1
37
38 channel ORA_DISK_1: starting datafile backup set restore
39 channel ORA_DISK_1: specifying datafile(s) to restore from backup set
40 channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/oracle01/system01.dbf
41 channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/oracle01/sysaux01.dbf
42 channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/oracle01/undotbs01.dbf
43 channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/oracle01/users01.dbf
44 channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/oracle01/example01.dbf
45 channel ORA_DISK_1: reading from backup piece /u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp
46 channel ORA_DISK_1: piece handle=/u01/backupset/2019_02_21/o1_mf_nnndf_TAG20190221T112928_g6w6rrhr_.bkp tag=TAG20190221T112928
47 channel ORA_DISK_1: restored backup piece 1
48 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
49 Finished restore at 21-FEB-19

View Code

      03,数据库状态

    oracle 单实例DG(配置篇二)_hive_25


四,DG 测试

    01,测试一


1 SQL> col dest_name format a30
2 SQL> col error format a20
3 SQL> select dest_name,error from v$archive_dest;
4
5 DEST_NAME ERROR
6 ------------------------------ --------------------
7 LOG_ARCHIVE_DEST_1
8 LOG_ARCHIVE_DEST_2
9 LOG_ARCHIVE_DEST_3
10 LOG_ARCHIVE_DEST_4
11 LOG_ARCHIVE_DEST_5
12 LOG_ARCHIVE_DEST_6
13 LOG_ARCHIVE_DEST_7
14 LOG_ARCHIVE_DEST_8
15 LOG_ARCHIVE_DEST_9
16 LOG_ARCHIVE_DEST_10
17 LOG_ARCHIVE_DEST_11
18
19 DEST_NAME ERROR
20 ------------------------------ --------------------
21 LOG_ARCHIVE_DEST_12
22 LOG_ARCHIVE_DEST_13
23 LOG_ARCHIVE_DEST_14
24 LOG_ARCHIVE_DEST_15
25 LOG_ARCHIVE_DEST_16
26 LOG_ARCHIVE_DEST_17
27 LOG_ARCHIVE_DEST_18
28 LOG_ARCHIVE_DEST_19
29 LOG_ARCHIVE_DEST_20
30 LOG_ARCHIVE_DEST_21
31 LOG_ARCHIVE_DEST_22
32
33 DEST_NAME ERROR
34 ------------------------------ --------------------
35 LOG_ARCHIVE_DEST_23
36 LOG_ARCHIVE_DEST_24
37 LOG_ARCHIVE_DEST_25
38 LOG_ARCHIVE_DEST_26
39 LOG_ARCHIVE_DEST_27
40 LOG_ARCHIVE_DEST_28
41 LOG_ARCHIVE_DEST_29
42 LOG_ARCHIVE_DEST_30
43 LOG_ARCHIVE_DEST_31
44 STANDBY_ARCHIVE_DEST
45
46 32 rows selected.


    测试,主库查看最大归档序号

      主SQL> select max(sequence#) from v$archived_log;


      MAX(SEQUENCE#)

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

            13

      从SQL> select max(sequence#) from v$archived_log;


       MAX(SEQUENCE#)

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

              13


      主库日志切换:

     1 alter system archive log current;   

      再次查看主从库一样则成功

      oracle 单实例DG(配置篇二)_oracle_26

   two.测试2

      主库操作   


[oracle@oracle01 ~]$ sqlplus / as sysdba
1 SQL> create table dg(id number);
2
3 Table created.
4
5 SQL> insert into dg values(1);
6
7 1 row created.
8
9 SQL> commit;
10
11 Commit complete.
12
13 SQL> select * from dg;
14
15 ID
16 ----------
17 1


     从库操作


[oracle@standby ~]$ sqlplus / as sysdba
SQL> select * from dg;

ID
----------
1


     测试成功