签到成功

知道了

CNDBA社区CNDBA社区

Oracle 18c DG搭建手册完整版(DBCA方式)

2018-09-18 13:51 5018 0 原创 Oracle 18c
作者: Expect-乐

1.环境说明

         本文档仅用于测试搭建Oracle 18c DG,没有任何性能参数方面的调整。而且故意将主备库的数据文件存放目录设置不同,为了之后一些问题的测试。

 

主库

备库

IP地址

192.168.1.166

192.168.1.167

数据库SID

leidb

leidb

DB_UNIQUE_NAME

leidb_p

leidb_s

数据文件路径

/u01/app/oracle/oradatahttp://www.cndba.cn/Expect-le/article/3072

/u01/app/oracle/oradata_s

归档路径

/u01/archivelog

/u01/archivelog_s

2.主备库的数据库安装

主库安装数据库软件和创建数据库

备库只需要安装数据库软件和创建相关目录即可

2.1.  操作系统环境配置

         如果没有特殊说明,下面每一步都需要在主备库上执行。

         目前Oracle官方网站上放出了18.3版本的下载,今天测试一下18.3的RAC安装。

https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle18c-linux-180000-5022980.html

2.1.1.   配置host

 cat /etc/hosts

127.0.0.1   localhost

 

192.168.1.166 lei-p

192.168.1.167 lei-s

2.1.2.   添加用户和组

/usr/sbin/groupadd -g 54321 oinstall

/usr/sbin/groupadd -g 54322 dba

/usr/sbin/groupadd -g 54323 oper

/usr/sbin/useradd -u 54321 -g oinstall -G dba ,oper oracle

设置密码

passwd oracle

Changing password for user oracle.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

2.1.3.   关闭防火墙和selinux

防火墙:

 

 systemctl stop firewalld.service

 systemctl disable firewalld.service

rm '/etc/systemd/system/basic.target.wants/firewalld.service'

rm '/etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service'

SELINUX

 cat /etc/selinux/config

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

2.1.4.   创建目录

mkdir -p /u01/app/oracle/product/18.3.0/db_1

chown -R oracle:oinstall /u01/

chmod -R 775 /u01/

2.1.5.   配置用户环境变量·

2.1.5.1.        ORACLE用户

在/home/oracle/.bash_profile中添加以下内容

ORACLE_SID=leidb;export ORACLE_SID

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/18.3.0/db_1; export ORACLE_HOME

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin

PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JREhttp://www.cndba.cn/Expect-le/article/3072

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export CLASSPATH

export TEMP=/tmp

export TMPDIR=/tmp

umask 022

2.1.6.   修改资源限制

2.1.6.1.        修改/etc/security/limits.conf

 cat >> /etc/security/limits.conf < http://www.cndba.cn/Expect-le/article/3072

oracle  soft  nproc  2047

oracle  hard  nproc  16384

oracle  soft  nofile  1024

oracle  hard  nofile  65536

oracle  soft  stack  10240

oracle  hard  stack  32768

oracle soft memlock 3145728

oracle hard memlock 3145728

EOF

2.1.7.   修改内核参数

 vi /etc/sysctl.conf 

fs.file-max = 6815744

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096http://www.cndba.cn/Expect-le/article/3072

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

kernel.panic_on_oops = 1

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

net.ipv4.conf.all.rp_filter = 2

net.ipv4.conf.default.rp_filter = 2

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

生效

sysctl -p

2.1.8.   安装必要的包

         在Redhat 7.*镜像文件中没有了compat-libstdc++-33包,需要单独下载。

yum install binutils  compat-libstdc++-33   gcc  gcc-c++  glibc  glibc.i686  glibc-devel   ksh   libgcc.i686   libstdc++-devel  libaio  libaio.i686  libaio-devel  libaio-devel.i686  libXext  libXext.i686  libXtst  libXtst.i686  libX11  libX11.i686  libXau  libXau.i686  libxcb  libxcb.i686  libXi  libXi.i686  make  sysstat  unixODBC  unixODBC-devel  zlib-devel  zlib-devel.i686 compat-libcap1 -y

2.1.9.   安装数据库软件

         由于从12.2开始,Oracle将采用ZIP格式直接将Oracle_HOME下的内容直接压缩到一个ZIP格式文件中,所以直接解压到ORACLE_HOME下即可。例如:

[oracle@lei-p software]$ unzip -d /u01/app/oracle/product/18.3.0/db_1/ LINUX.X64_180000_db_home.zip

[oracle@lei-p software]$ cd /u01/app/oracle/product/18.3.0/db_1/

[oracle@lei-p db_1]$ ./runInstaller


如果是单实例则选择第一个


选择企业版


修改为新的ORACLE_BASE目录


默认


http://www.cndba.cn/Expect-le/article/3072

安装前检查,内存不符合要求。18c建议的内存为8G


正在安装


执行root.sh脚本

2.1.10.            DBCA创建数据库

         仅在主库执行即可。

这里直接启用归档


3.             主库启动FORCE LOGGING 

在CDB root中执行以下命令

SQL> alter database force logging;

Database altered.

 

SQL> select force_logging from v$database;

FORCE_LOGGING

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

YES

4.              主库启动归档模式 

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

 

Database altered.

修改归档目录(建议修改),备库为:/u01/archive_s

SQL> alter system set log_archive_dest_1='location=/u01/archivelog' scope=both;--直接生效

System altered.

 

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/archivelog

Oldest online log sequence     2

Next log sequence to archive   4

Current log sequence           4

 

SQL> alter database open;

Database altered.

5.             在主库添加 standby redo log

       CDB root中添加standby redo log,实际上在主库上是用不到standby redo log的。但是为了方便以后的switchover等操作就直接添加了,而且后面搭建备库时备库也会被创建。

SQL> show con_name

 

CON_NAME

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

CDB$ROOT

 

SQL> select  group#, members,  bytes  from v$log;

 

GROUP#    MEMBERS      BYTES

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

         1          1  209715200  --可以看到默认大小以及是200M了,一起是50M

         2          1  209715200

         3          1  209715200

 

SQL>

SQL> select member from v$logfile;

 

MEMBER

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

/u01/app/oracle/oradata/LEIDB/redo01.log

/u01/app/oracle/oradata/LEIDB/redo02.log

/u01/app/oracle/oradata/LEIDB/redo03.log

 

--要比online redo log多一组

alter database add standby logfile '/u01/app/oracle/oradata/LEIDB/stdredo01.log' size 200M;

alter database add standby logfile '/u01/app/oracle/oradata/LEIDB/stdredo02.log' size 200M;

alter database add standby logfile '/u01/app/oracle/oradata/LEIDB/stdredo03.log' size 200M;

alter database add standby logfile '/u01/app/oracle/oradata/LEIDB/stdredo04.log' size 200M;

 

SQL>  select member from v$logfile;

 

MEMBER

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

/u01/app/oracle/oradata/LEIDB/redo03.log

/u01/app/oracle/oradata/LEIDB/redo02.log

/u01/app/oracle/oradata/LEIDB/redo01.log

/u01/app/oracle/oradata/LEIDB/stdredo01.log

/u01/app/oracle/oradata/LEIDB/stdredo02.log

/u01/app/oracle/oradata/LEIDB/stdredo03.log

/u01/app/oracle/oradata/LEIDB/stdredo04.log

 

7 rows selected

6.             在主库创建pfile 文件并修改pfile 内容 

SQL> create pfile='/tmp/initleidb.ora' from spfile;

 

File created.

 

在pfile中添加如下内容:

[oracle@host1 dbs]$ vi /u01/app/oracle/product/18.1.0/dbhome_1/dbs/initcndba.ora

*.db_unique_name='leidb_p'

*.log_archive_config='dg_config=(leidb_p,leidb_s)'

*.log_archive_dest_1='location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=leidb_p'

*.log_archive_dest_2='service=leidb_s affirm sync valid_for=(online_logfiles,primary_role) db_unique_name=leidb_s'

*.log_archive_dest_state_1=enable

*.log_archive_dest_state_2=enable

*.standby_file_management='auto'

*.fal_server='leidb_s'

*.log_file_name_convert='/u01/app/oracle/oradata/LEIDB','/u01/app/oracle/oradata_s/LEIDB'  --如果你的环境主备库数据文件目录相同,可以不需要这两个参数。

*.db_file_name_convert='/u01/app/oracle/oradata/LEIDB','/u01/app/oracle/oradata_s/LEIDB'

用新参数重启数据库:

 

SQL> shutdown immediate

SQL> create spfile from pfile='/tmp/initleidb.ora';

SQL> startup

7.             主备库配置静态监听并启动

这里最好通过netmgr来配置,因为监听文件对格式要求比较高。

 

[oracle@lei-p admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = leidb)

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

      (SID_NAME = leidb)

    )

  )

http://www.cndba.cn/Expect-le/article/3072

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = lei-p)(PORT = 1521))

    )

    (DESCRIPTION =

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

    )

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

重启监听或直接reload

[oracle@host1 admin]$ lsnrctl reload

 

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 17-JUL-2018 11:41:07

 

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

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521)))

The command completed successfullyhttp://www.cndba.cn/Expect-le/article/3072

8.             主备库配置tnsnames.ora

[oracle@host1 admin]$ cat /u01/app/oracle/product/18.1.0/dbhome_1/network/admin/tnsnames.ora

主备库添加以下内容:

LEIDB_S =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = lei-s)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = leidb)

    )

  )

 

LEIDB_P =

  (DESCRIPTION =

http://www.cndba.cn/Expect-le/article/3072

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = lei-p)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = leidb)

    )

  )

配置完成后,使用tnsping 命令检查是否能ping通

[oracle@host1 admin]$ tnsping pdbcndba_p

 

TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 17-JUL-2018 11:45:32

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cndba)))

OK (30 msec)

 

[oracle@lei-p admin]$ tnsping leidb_s

 

TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 17-SEP-2018 15:23:33

 

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

 

Used parameter files:

/u01/app/oracle/product/18.3.0/db_1/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = lei-s)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = leidb)))

OK (10 msec)

9.             通过DBCA来创建物理备库

         相比于RMAN来说感觉更为简单,不需要拷贝密码文件,创建目录,语法如下:

红色部分是相当于参数文件中修改的参数。

-initParams instance_name指定以逗号分隔的初始化参数,如果参数值中有逗号(,)那么需要用转义字符(/),也可以通过-initParamsEscapeChar来指定转义字符。http://www.cndba.cn/Expect-le/article/3072

[oracle@lei-s LEIDB]$ dbca -silent -createDuplicateDB -primaryDBConnectionString  lei-p:1521/leidb -gdbName leidb -sid leidb /

http://www.cndba.cn/Expect-le/article/3072

-initParams instance_name=leidb, /

log_archive_dest_1='location=/u01/archive valid_for=(all_logfiles,all_roles) db_unique_name=leidb_s', /

log_archive_dest_2='service=leidb_p affirm sync valid_for=(online_logfiles,primary_role) db_unique_name=leidb_p', /

log_file_name_convert='/u01/app/oracle/oradata_s/LEIDB'/,'/u01/app/oracle/oradata/LEIDB', /

db_file_name_convert='/u01/app/oracle/oradata_s/LEIDB'/,'/u01/app/oracle/oradata/LEIDB', /

fal_server='leidb_s', /

log_archive_config='dg_config=(leidb_p,leidb_s)', /

standby_file_management='auto' /

-datafileDestination  '/u01/app/oracle/oradata_s/LEIDB' /  --备库数据文件目录

-createAsStandby -dbUniqueName leidb_s    --备库db_unique_name

Enter SYS user password:

 

Prepare for db operation

22% complete

Listener config step

44% complete

Auxiliary instance creation

67% complete

RMAN duplicate

89% complete

Post duplicate database operations

100% complete

 

Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/leidb_s/leidb_s0.log" for further details.

注:这里很奇怪在创建备库时指定了几个初始化参数,但是创建完成后查看相应的几个参数值也没变化。

10.        修改备库初始化参数

         虽然在DBCA时不需要修改初始化参数文件,但是在创建完成之后需要修改一些必要的初始化参数以用来以后的switchover等操作。

SQL> create pfile from spfile;

--备库修改参数文件需要修改的内容:

*.control_files='/u01/app/oracle/oradata_s/LEIDB/control01.ctl','/u01/app/oracle/fast_recovery_area/LEIDB/control02.ctl'

*.db_unique_name='leidb_s'

*.log_archive_config='dg_config=(leidb_p,leidb_s)'

*.log_archive_dest_1='location=/u01/archivelog_s valid_for=(all_logfiles,all_roles) db_unique_name=leidb_s'

*.log_archive_dest_2='service=leidb_p affirm sync valid_for=(online_logfiles,primary_role) db_unique_name=leidb_p'

*.log_archive_dest_state_1=enable

*.log_archive_dest_state_2=enable

*.standby_file_management='auto'

*.fal_server='leidb_p'

*.log_file_name_convert='/u01/app/oracle/oradata_s/LEIDB','/u01/app/oracle/oradata/LEIDB'

*.db_file_name_convert='/u01/app/oracle/oradata_s/LEIDB','/u01/app/oracle/oradata/LEIDB'

用新的spfile文件重启数据

shutdown immediate

create pfile from spfile;

startup

11.        启用MRP

--启动日志应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

Database altered.

 

SQL> select open_mode from v$database;

 

OPEN_MODE

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

READ ONLY WITH APPLY

 

--18c新视图,用于查看DG的进程详细信息,取代了v$managed_standby视图。

SQL> select name,type,role,action,group# from V$DATAGUARD_PROCESS;

 

NAME  TYP ROLE                     ACTION           GROUP#

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

LGWR  KSB log writer               IDLE                  0

TMON  KSB redo transport monitor   IDLE                  0

TT00  KSV gap manager              IDLE                  0

TT01  KSV redo transport timer     IDLE                  0

ARC0  KSB archive local            IDLE                  0

ARC1  KSB archive redo             IDLE                  0

ARC2  KSB archive redo             IDLE                  0

ARC3  KSB archive redo             IDLE                  0

rfs   NET RFS ping                 IDLE                  0

rfs   NET RFS sync                 IDLE                  4

rfs   NET RFS archive              IDLE                  0

 

NAME  TYP ROLE                     ACTION           GROUP#

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

MRP0  KSB managed recovery         APPLYING_LOG          0

 

12 rows selected.

注:v$managed_standby视图已被V$DATAGUARD_PROCESS取代。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle 18c DG DBCA

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1566696次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ