本文记录ADG搭建操作步骤,首先在虚拟机CentOS中安装并配置好oracle 11g R2(具体安装步骤在我的另一篇博客中),然后拷贝一份虚拟机,修改新虚拟机的主机名和ip配置,这时候主库和备库是一模一样的,降低后面配置adg的难度,下面开始ADG的搭建了。

1:主库上检查主库数据库是否启用了强制日志模式并启用归档,如果不是,则启用强制日志模式并开启日志归档。

SQL> select name, log_mode, force_logging from v$database;

NAME           LOG_MODE            FORCE_
------------------ ------------------------ ------
ORCL           NOARCHIVELOG         NO

 未启用强制日志模式,需要启用,另外,可以看到日志模式是非归档模式,这个也要修改成归档模式。

启用强制日志:

SQL> alter database force logging;

Database altered.

开启归档模式(需要重启实例至mount状态):

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  830930944 bytes
Fixed Size            2217912 bytes
Variable Size          641730632 bytes
Database Buffers      180355072 bytes
Redo Buffers            6627328 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

检查一下归档是否已开启:

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

2:在主库创建密码文件,将密码文件拷贝至备机。

[oracle@apollo ~]$ cd $ORACLE_HOME/dbs
[oracle@apollo dbs]$ ll
total 24
-rw-rw---- 1 oracle oinstall 1544 Mar  3  2019 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Feb 27 20:12 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24 Mar  3  2019 lkORCL
-rw-r----- 1 oracle oinstall 1536 Jan 11 16:17 orapworcl
-rw-r----- 1 oracle oinstall 2560 Feb 27 20:12 spfileorcl.ora

可以看到已经有密码文件了orapworcl,可以再强制重新生成下:

[oracle@apollo dbs]$ orapwd file=orapworcl password=123456 force=y

force=y表示强制覆盖有的密码文件,接下来将密码文件SCP拷贝至备机:

[oracle@apollo dbs]$ scp orapworcl oracle@10.211.55.101:$ORACLE_HOME/dbs/orapworcl
oracle@10.211.55.101's password:
orapworcl                                                                   100% 1536     2.3MB/s   00:00

3:主库上创建standby redolog日志组。

standby redo log日志组数量=(每个实例日志组个数+1)*实例数

查询一下当前实例日志组个数:

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

   THREAD#     GROUP# BYTES/1024/1024
---------- ---------- ---------------
     1        1           50
     1        2           50
     1        3           50

当前实例日志组个数为3,所以需要至少需要创建(3+1)*1=4组standby redolog,大小均为50M。

查看当前的日志组及其成员:

SQL> col member for a50
SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
     3 /u01/app/oracle/oradata/orcl/redo03.log
     2 /u01/app/oracle/oradata/orcl/redo02.log
     1 /u01/app/oracle/oradata/orcl/redo01.log

新建4个standby redolog日志组,编号从4开始:

SQL> alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 50M;

Database altered.

SQL> alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/standby_redo05.log' size 50M;

Database altered.

SQL> alter database add standby logfile group 6 '/u01/app/oracle/oradata/orcl/standby_redo06.log' size 50M;

Database altered.

SQL> alter database add standby logfile group 7 '/u01/app/oracle/oradata/orcl/standby_redo07.log' size 50M;

Database altered.

再看日志组成员情况:

SQL> set pagesize 100
SQL> col member for a60
SQL> select group#,member from v$logfile order by group#;

    GROUP# MEMBER
---------- ------------------------------------------------------------
     1 /u01/app/oracle/oradata/orcl/redo01.log
     2 /u01/app/oracle/oradata/orcl/redo02.log
     3 /u01/app/oracle/oradata/orcl/redo03.log
     4 /u01/app/oracle/oradata/orcl/standby_redo04.log
     5 /u01/app/oracle/oradata/orcl/standby_redo05.log
     6 /u01/app/oracle/oradata/orcl/standby_redo06.log
     7 /u01/app/oracle/oradata/orcl/standby_redo07.log

7 rows selected.

查询结果显示添加成功。

4:修改主库和备库监听文件,设置静态监听。

主库的listener.ora文件改成:

[oracle@apollo dbs]$ cd ../network/admin/
[oracle@apollo admin]$ cat listener.ora
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME= orcl)
      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.100)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = /u01/app/oracle

备库的listener.ora文件:

[oracle@neptune admin]$ cat listener.ora
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME= orcl)
      (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.101)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = /u01/app/oracle

主库和备库的监听文件listener.ora按照上面改好后,重启监听服务:

重启主库的监听:

[oracle@apollo admin]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:12:01

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
[oracle@apollo admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:12:09

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

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

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/apollo/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.211.55.100)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                27-FEB-2020 21:12:09
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/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/apollo/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.211.55.100)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

重启备库的监听:

[oracle@neptune admin]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:12:52

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
[oracle@neptune admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:13:00

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

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

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/neptune/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.211.55.101)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                27-FEB-2020 21:13:00
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/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/neptune/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.211.55.101)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

5:编辑主库和备库的网络服务名tnsname.ora文件。

主库的:

CentOS 7 下oracle 11G R2 ADG 搭建

备库的:

CentOS 7 下oracle 11G R2 ADG 搭建

即主库和备库的tnsnames.ora文件是一模一样的。

配好后,tnsping一下对方,看是否通的:

主库tnsping备库:

[oracle@apollo admin]$ tnsping STANDBY

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:23:39

Copyright (c) 1997, 2009, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.101)(PORT = 1521))) (CONNECT_DATA = (SID = orcl)))
OK (0 msec)

备库tnsping主库:

[oracle@neptune admin]$ tnsping PRIMARY

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 27-FEB-2020 21:26:01

Copyright (c) 1997, 2009, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.100)(PORT = 1521))) (CONNECT_DATA = (SID = orcl)))
OK (10 msec)

6:修改主库的pfile文件。

查看主库spfile文件位置:

SQL> show parameter spfile;

NAME                     TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile                     string
/u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfileorcl.ora

创建一个pfile用于修改:

SQL> create pfile from spfile;

File created.

去修改创建的pfile文件:

[oracle@apollo admin]$ cd /$ORACLE_HOME/dbs
[oracle@apollo dbs]$ ls
hc_DBUA0.dat  hc_orcl.dat  init.ora  initorcl.ora  lkORCL  orapworcl  spfileorcl.ora
[oracle@apollo dbs]$ vi initorcl.ora

编辑后的文件内容如下(红框部分为新增):

CentOS 7 下oracle 11G R2 ADG 搭建

 

orcl.__db_cache_size=180355072
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=289406976
orcl.__sga_target=545259520
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=322961408
orcl.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=834666496
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.fal_client='PRIMARY'
*.fal_server='STANDBY'
*.log_archive_config='DG_CONFIG=(PRIMARY,STANDBY)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/arc valid_for=(all_logfiles,all_roles) db_unique_name=PRIMARY'
*.log_archive_dest_2='service=STANDBY lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=STANDBY'
*.standby_file_management='AUTO'
*.db_unique_name='PRIMARY'
initorcl.ora

相关文章:

  • 2021-08-13
  • 2022-12-23
  • 2021-08-21
  • 2021-12-09
  • 2022-12-23
  • 2021-12-28
  • 2021-10-08
猜你喜欢
  • 2022-12-23
  • 2022-01-08
  • 2021-06-21
  • 2021-12-01
  • 2022-01-18
  • 2019-11-04
相关资源
相似解决方案