您的位置:首页 > 数据库 > Oracle

redhat 6.4 oracle 11g dataguard 搭建(一)

2017-12-28 14:37 555 查看
概述:了解oracle先从安装开始,在日常工作中很大一部分也将会是从安装开始;在oracle中的高可用中有RAC(能够做到实例级别的高可用),而dataguard能够做到操作系统、硬件层面的高可用;当然oracle goldengate也是可以实现并还支持异构跨数据库厂商等优势;本次我们将测试dataguard的安装,dataguard的安装有很多种方法,本人列举三种方法:1、使用冷备搭建;2、使用传统的rman搭建,3、使用rman中的duplicate 复制进行;本文使用冷备搭建,后续测试使用2、3的方法进行;

实验简单步骤:

1、主库安装oracle数据库软件并且dbca监控

2、备库安装oracle数据库软件

3、主库归档模式开启

4、主库修改dataguard 数据库参数

5、主备库监听配置

6、主库关库开始备份数据库文件

7、主库mount状态生产standby control file

8、将备份文件、standby control file、参数文件、密码文件拷贝至备库

9、主库open,备库mount开始应用日志

10、查看dataguard状态,测试dataguard是否搭建成功

实验:

主库数据状态查看:

SQL> select INSTANCE_NAME ,STATUS from v$instance;

INSTANCE_NAME                    STATUS

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

CUBE                             OPEN

SQL> !hostname

cube

备库确定数据库软件已经安装完成:

[root@jakki db_1]# ls

apex         csmig        dv             j2ee    md       opmn         precomp       sqlplus          xdk

assistants   css          emcli          javavm  mesg     oracore      racg          srvm

bin          ctx          EMStage        jdbc    mgw      oraInst.loc  rdbms         sysman

ccr          cv           has            jdev    network  ord          relnotes      timingframework

cdata        dbs          hs             jdk     nls      oui          root.sh       ucp

cfgtoollogs  dc_ocm       ide            jlib    oc4j     owb          scheduler     uix

clone        deinstall    install        ldap    odbc     owm          slax          usm

config       demo         instantclient  lib     olap     perl         sqldeveloper  utl

crs          diagnostics  inventory      log     OPatch   plsql        sqlj          wwg

[root@jakki db_1]# pwd

/u01/app/oracle/product/11.2.0/db_1

主库dataguard配置设置:

归档开启

SQL> archive log list

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     16

Current log sequence           18

SQL> show parameter recover

NAME                                 TYPE                   VALUE

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

db_recovery_file_dest                string                 /u01/app/oracle/fast_recovery_

                                                            area

db_recovery_file_dest_size           big integer            4182M

db_unrecoverable_scn_tracking        boolean                TRUE

recovery_parallelism                 integer                0

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             524291112 bytes

Database Buffers          310378496 bytes

Redo Buffers                2355200 bytes

Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

开启强制生成日志模式:

SQL> alter database force logging;

Database altered.

修改dataguard参数

SQL> create pfile from spfile;

File created.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

[root@cube ~]# cd /u01/app/oracle/product/11.2.0/db_1/dbs/

[root@cube dbs]# pwd

/u01/app/oracle/product/11.2.0/db_1/dbs

[root@cube dbs]# ls

hc_CUBE.dat  initCUBE.ora  init.ora  lkCUBE  orapwCUBE  spfileCUBE.ora

[root@cube dbs]# vi initCUBE.ora ---添加dataguard配置参数

DB_UNIQUE_NAME=CUBE

LOG_ARCHIVE_CONFIG='DG_CONFIG=(CUBE,JAKKI1)'

LOG_ARCHIVE_DEST_1=

 'LOCATION=/u01/app/oracle/fast_recovery_area

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=CUBE'

LOG_ARCHIVE_DEST_2=

 'SERVICE=JAKKI1 ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=JAKKI1'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

FAL_SERVER=JAKKI1

DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/JAKKI1/','/u01/app/oracle/oradata/CUBE/'

LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/JAKKI1/','/u01/app/oracle/oradata/CUBE/'

STANDBY_FILE_MANAGEMENT=AUTO

SQL> create spfile from pfile;

File created.

SQL> startup 

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

Database mounted.

Database opened.

关闭主库,备份数据库文件;

SQL> col file_name for a60

SQL> select file_id,file_name from dba_data_files;

   FILE_ID FILE_NAME

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

         4 /u01/app/oracle/oradata/CUBE/users01.dbf

         3 /u01/app/oracle/oradata/CUBE/undotbs01.dbf

         2 /u01/app/oracle/oradata/CUBE/sysaux01.dbf

         1 /u01/app/oracle/oradata/CUBE/system01.dbf

         5 /u01/app/oracle/oradata/CUBE/example01.dbf

         6 /u01/app/oracle/oradata/CUBE/cube1_1.dbf

6 rows selected.

[root@cube CUBE]# su - oracle

[oracle@cube ~]$ cd  /u01/app/oracle/oradata/CUBE/

[oracle@cube CUBE]$ ls

control01.ctl  example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf

cube1_1.dbf    redo01.log     redo03.log  system01.dbf  undotbs01.dbf

[oracle@cube CUBE]$ tar cvfz /home/oracle/cube.tar.gz *.dbf

cube1_1.dbf

example01.dbf

主库启动到mount状态生产standby control file:

SQL> startup mount;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

Database mounted.

SQL> alter database create standby controlfile as '/home/oracle/stand.ctl';

Database altered.

主备库监听设置:主备库都设置为静态监听

主库监听文件内容:

LISTENER=

  (DESCRIPTION=

    (ADDRESS_LIST=

      (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.66)(PORT=1521))

      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=CUBE)

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

      (SID_NAME=CUBE))

    (SID_DESC=

      (SID_NAME=plsextproc)

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

      (PROGRAM=extproc)))

ADR_BASE_LISTENER = /u01/app/oracle

开启监听 lsnrctl start  

查看监听状态:

[oracle@cube admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-DEC-2017 16:01:02

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.66)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                28-DEC-2017 15:59:47

Uptime                    0 days 0 hr. 1 min. 15 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/cube/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.66)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))

Services Summary.
c5f5
..

Service "CUBE" has 2 instance(s).

  Instance "CUBE", status UNKNOWN, has 1 handler(s) for this service...

  Instance "CUBE", status READY, has 1 handler(s) for this service...

Service "plsextproc" has 1 instance(s).

  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

[root@cube admin]# vi tnsnames.ora

CUBE=            

 (DESCRIPTION=

   (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.66)(PORT=1521))

   (CONNECT_DATA=

   (SERVER=dedicate)

     (SERVICE_NAME=CUBE)))

JAKKI1=

 (DESCRIPTION=

   (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521))

   (CONNECT_DATA=

   (SERVER=dedicate)

     (SERVICE_NAME=JAKKI1)))

备库监听配置:

[root@jakki ~]# su - oracle

[oracle@jakki ~]$ cd /u01/app/oracle/product/11.2.0/db_1/network/admin/

[oracle@jakki admin]$ ls

samples  shrept.lst

[oracle@jakki admin]$ vi listener.ora

LISTENER=

  (DESCRIPTION=

    (ADDRESS_LIST=

      (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521))

      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=JAKKI1)

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

      (SID_NAME=JAKKI1))

    (SID_DESC=

      (SID_NAME=plsextproc)

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

      (PROGRAM=extproc)))

ADR_BASE_LISTENER = /u01/app/oracle

                                               

[oracle@jakki admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-DEC-2017 16:02:45

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/jakki/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521)))

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521)))

STATUS of the LISTENER

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

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production

Start Date                28-DEC-2017 16:02:46

Uptime                    0 days 0 hr. 0 min. 0 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File         /u01/app/oracle/diag/tnslsnr/jakki/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))

Services Summary...

Service "JAKKI1" has 1 instance(s).

  Instance "JAKKI1", status UNKNOWN, has 1 handler(s) for this service...

Service "plsextproc" has 1 instance(s).

  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

[root@cube admin]# vi tnsnames.ora

CUBE=            

 (DESCRIPTION=

   (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.66)(PORT=1521))

   (CONNECT_DATA=

   (SERVER=dedicate)

     (SERVICE_NAME=CUBE)))

JAKKI1=

 (DESCRIPTION=

   (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.68)(PORT=1521))

   (CONNECT_DATA=

   (SERVER=dedicate)

     (SERVICE_NAME=JAKKI1)))

将cube.tar.gz,stand.ctl,initCUBE.ora 文件传送至备库

[oracle@cube ~]$ scp cube.tar.gz 192.168.1.68:/home/oracle/

The authenticity of host '192.168.1.68 (192.168.1.68)' can't be established.

RSA key fingerprint is 43:9d:ea:4c:e1:8e:f6:f0:6f:95:e9:17:6e:8d:55:be.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.68' (RSA) to the list of known hosts.

oracle@192.168.1.68's password: 

Permission denied, please try again.

oracle@192.168.1.68's password: 

cube.tar.gz                                                                   100%  335MB  41.8MB/s   00:08    

[oracle@cube ~]$ scp stand.ctl 192.168.1.68:/home/oracle/

oracle@192.168.1.68's password: 

stand.ctl                                                                     100% 9520KB   9.3MB/s   00:00    

[oracle@cube ~]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/

[oracle@cube dbs]$ scp orapwCUBE  192.168.1.68:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwJAKKI1

oracle@192.168.1.68's password: 

orapwCUBE                                                                     100% 1536     1.5KB/s   00:00    

[oracle@cube dbs]$ scp initCUBE.ora 192.168.1.68:/u01/app/oracle/product/11.2.0/db_1/dbs/initJAKKI1.ora

oracle@192.168.1.68's password: 

initCUBE.ora                                                                  100% 1238     1.2KB/s   00:00    

[oracle@cube dbs]$ 

备库dataguard配置

备库参数文件修改使得数据库能够启动到nomount状态:

[oracle@jakki dbs]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs

[oracle@jakki dbs]$ vi initJAKKI1.ora 

*.compatible='11.2.0.4.0'

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

*.db_block_size=8192

*.db_domain=''

*.db_name='CUBE'

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4385144832

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

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

*.job_queue_processes=1000

*.memory_target=839909376

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

DB_UNIQUE_NAME=JAKKI1

LOG_ARCHIVE_CONFIG='DG_CONFIG=(JAKKI1,CUBE)'

LOG_ARCHIVE_DEST_1=

 'LOCATION=/u01/app/oracle/fast_recovery_area

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=JAKKI1'

LOG_ARCHIVE_DEST_2=

 'SERVICE=CUBE ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 

  DB_UNIQUE_NAME=CUBE'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

[oracle@jakki dbs]$ mkdir -p /u01/app/oracle/oradata/JAKKI1/

[oracle@jakki dbs]$ mkdir -p /u01/app/oracle/fast_recovery_area

[oracle@jakki dbs]$ mkdir -p /u01/app/oracle/admin/JAKKI1/adump

[oracle@jakki dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 28 16:44:33 2017

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

Connected to an idle instance.

SQL> create spfile from pfile ;

File created.

SQL> startup nomount;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                  2257880 bytes

Variable Size             545262632 bytes

Database Buffers          289406976 bytes

Redo Buffers                2355200 bytes

SQL> 

将cube.tar.gz 解压到相应文件夹中

[oracle@jakki ~]$ tar -xvf cube.tar.gz -C /u01/app/oracle/oradata/JAKKI1/

将stand.ctl 拷贝至对用的文件夹中

[oracle@jakki ~]$ cp stand.ctl /u01/app/oracle/oradata/JAKKI1/control01.ctl

[oracle@jakki ~]$ cp stand.ctl /u01/app/oracle/fast_recovery_area/JAKKI1/control02.ctl

备库启动至mount状态:

SQL> alter database mount;

Database altered.

主库open

SQL> alter database open;

Database altered.

备库开open并开启日志接收:

SQL> recover managed standby database disconnect;

Media recovery complete.

SQL>  select open_Mode,database_role from v$database;

OPEN_MODE                                DATABASE_ROLE

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

READ ONLY WITH APPLY                     PHYSICAL STANDBY

测试:在主库中cube用户下新建表,切换日志后,查看备库是否有数据更新;

主库:

SQL> create table cube.t2 as select * from scott.dept;

Table created.

备库:

SQL> select * from cube.t2;

select * from cube.t2

                   *

ERROR at line 1:

ORA-00942: table or view does not exist

主库:

SQL> alter system switch logfile;

System altered.

备库

SQL> select * from cube.t2;

    DEPTNO DNAME                        LOC

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

        10 ACCOUNTING                   NEW YORK

        20 RESEARCH                     DALLAS

        30 SALES                        CHICAGO

        40 OPERATIONS                   BOSTON

查到数据 ok 完成了

总结:使用冷备份搭建DG完成,各位自行测试吧。明后天会出其他两种方法搭建方法。谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 oracle