ITPub博客

首页 > 数据库 > Oracle > DG_安装二

DG_安装二

原创 Oracle 作者:chenoracle 时间:2015-04-13 15:34:21 0 删除 编辑

ORACLE DG 的搭建 ( 方法二 )

 

说明:

备库生成原理:

1 配置好主库后将数据库安装文件 /u01 ,备库控制文件,归档文件打包发送到备库

2 备库添加 oracle 用户,组,附加组,解压主库的压缩文件

3 修改 SID ,目录结构,参数文件,网络文件等相关配置

4 启动备库 mount(主 备库 sid 不同 )

 

 

主机

IP:192.168.1.181

主机名 :chen01

OS:Red Hat Enterprise Linux Server release 6.4 (Santiago)

oracle:11.2.0.1.0

SID:orcl

 

备机

IP : 192.168.1.183

主机名 :chen03

OS:Red Hat Enterprise Linux Server release 6.4 (Santiago)

oracle:11.2.0.1.0

SID:db01

 

一:主机 , 备机分别配置 hosts 文件

 

192.168.1.181

[root@chen01 ~]# vim /etc/hosts

192.168.1.181 chen01

192.168.1.183 chen03

 

[root@chen01 ~]# vim /etc/sysconfig/network

 

192.168.1.183

[root@chen03 ~]# vim /etc/hosts

192.168.1.183 chen03

192.168.1.181 chen01

 

[root@chen01 ~]# vim /etc/sysconfig/network

 

二:主机修改为归档模式,强制写日志

 

192.168.1.181

 

SQL> startup mount

 

SQL> alter database archivelog;

 

SQL> select force_logging from v$database;

 

FOR

---

NO

 

SQL> alter database force logging;

 

Database altered.

 

SQL> select force_logging from v$database;

 

FOR

---

YES

 

三:主机创建密码文件

 

192.168.1.181

 

[oracle@chen01 ~]$ cd $ORACLE_HOME/network/admin

 

[oracle@chen01 admin]$ orapwd file=orapworcl password=oracle

 

 

四:主机配置 standby redolog

最佳性能模式可以忽略,如果将来变成备库且要转为其它两种模式则要建立

 

192.168.1.181

 

standby redolog 的组数参考公式: (online redolog 组数 + 1) * 数据库线程数;单机线程数为 1 , RAC 一般为 2 。

standby redolog 的组成员数和大小也尽量和 online redolog 一样。

 

SQL> select * from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                   IS_

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

         3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log  NO

         2         ONLINE  /u01/app/oracle/oradata/orcl/redo02.log  NO

         1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log  NO

 

SQL> select group#,members,bytes/1024/1024||'M' M from v$log;

 

    GROUP#    MEMBERS M

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

         1          1 50M

         2          1 50M

         3          1 50M

 

SQL> alter database add standby logfile

  2  group 4 ('/u01/app/oracle/oradata/orcl/stdby_redo04.log') size 50M,

  3  group 5 ('/u01/app/oracle/oradata/orcl/stdby_redo05.log') size 50M,

  4  group 6 ('/u01/app/oracle/oradata/orcl/stdby_redo06.log') size 50M;

 

Database altered.

 

SQL> select * from v$logfile order by group#;

 

    GROUP# STATUS  TYPE    MEMBER                                        IS_

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

         1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log       NO

         2         ONLINE  /u01/app/oracle/oradata/orcl/redo02.log       NO

         3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log       NO

         4         STANDBY /u01/app/oracle/oradata/orcl/stdby_redo04.log NO

         5         STANDBY /u01/app/oracle/oradata/orcl/stdby_redo05.log NO

         6         STANDBY /u01/app/oracle/oradata/orcl/stdby_redo06.log NO

 

6 rows selected.

 

SQL> select group#,members,bytes/1024/1024||'M' M from v$log;

 

    GROUP#    MEMBERS M

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

         1          1 50M

         2          1 50M

         3          1 50M

 

SQL> select group#,bytes/1004/1024||'M' M from v$standby_log;

 

    GROUP# M

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

         4 50.9960159362549800796812749003984063745M

         5 50.9960159362549800796812749003984063745M

         6 50.9960159362549800796812749003984063745M

 

 

五:设置主库初始化参数

 

192.168.1.181

 

备份参数文件

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

 

File created.

 

1

 

SQL> show parameter db_unique_name

 

NAME                                 TYPE        VALUE

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

db_unique_name                       string      orcl

 

SQL> alter system set log_archive_config='dg_config=(orcl,db01)' scope=spfile;

 

System altered.

( 启动 db 接受或发送 redo data ,包括所有库的 db_unique_name)

 

2

[oracle@chen01 ~]$ mkdir arch_orcl

[oracle@chen01 ~]$ mkdir arch_db01

 

SQL> alter system set log_archive_dest_1='location=/home/oracle/arch_orcl valid_for=(all_logfiles,all_roles) db_unique_name=orcl' scope=spfile;

 

System altered.

(主库归档目的地)

 

SQL> alter system set log_archive_dest_2='service=db_db01 LGWR ASYNC valid_for=(online_logfiles,primary_roles) db_unique_name=db01' scope=spfile;

 

System altered.

( 当该库充当主库角色时,设置物理备库 redo data 的传输目的地 )

 

3

SQL> alter system set log_archive_max_processes=5 scope=spfile;

 

System altered.

( 最大 ARCn 进程数 )

 

4

SQL> alter system set log_archive_dest_state_1=ENABLE scope=spfile;

 

System altered.

 

SQL> alter system set log_archive_dest_state_2=ENABLE scope=spfile;

 

System altered.

 

5

SQL> show parameter remote_login_passwordfile

 

NAME                                 TYPE        VALUE

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

remote_login_passwordfile            string      EXCLUSIVE

 

SQL> alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile;   

( exclusive or shared ,所有库 sys 密码要一致,默认是 exclusive )

 

-- 以下是主库切换为备库,充当备库角色时的一些参数设置,如果不打算做数据库切换就不用设置了

 

6

SQL> alter system set fal_server=db_db01 scope=spfile;

 

System altered.

(配置网络服务名,假如转换为备库角色时,从这里获取丢失的归档文件)

 

SQL> alter system set fal_client=db_orcl scope=spfile;

 

System altered.

(配置网络服务名, fal_server 拷贝丢失的归档文件到这里)

 

7

SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/db01/','/u01/app/oracle/oradata/orcl/' scope=spfile;

 

System altered.

(前为切换后的主库路径,后为切换后的备库路径,如果主备库目录结构完全一样,则无需设定)

 

SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/db01/','/u01/app/oracle/oradata/orcl/' scope=spfile;

 

System altered.

(同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定)

 

8

SQL> alter system set standby_file_management=auto scope=spfile;

 

System altered.

( auto 后当主库的 datafiles 增删时备库也同样自动操作,且会把日志传送到备库 standby_archive_dest 参数指定的目录下,

确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为 manual )

 

9

SQL> alter system set standby_archive_dest='location=/home/oracle/arch_orcl' scope=spfile;

 

System altered.

(一般和 LOG_ARCHIVE_DEST_1 的位置一样,如果备库采用 ARCH 传输方式,那么主库会把归档日志传到该目录下)

 

有了以上参数设置,则无论该库充当主库角色还是备库角色都无需再修改了。

 

 

六 备份主库数据文件

 

192.168.1.181

 

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

SQL> shutdown immediate

[root@chen01 ~]# tar -zcvf arch.tar arch_orcl/

[root@chen01 ~]# tar -zcvf uu.tar /u01

[root@chen01 ~]# scp arch.tar 192.168.1.183:/root

[root@chen01 ~]# scp uu.tar 192.168.1.183:/root

[root@chen01 ~]# scp stdby_control01.ctl 192.168.1.183:/root

 

 

七 配置备库 - 将 orcl 数据库改成 db01 数据库

 

[root@chen03 ~]# tar -zxvf arch.tar

[root@chen03 ~]# tar -zxvf uu.tar

[root@chen03 ~]# mkdir /u01

[root@chen03 ~]# mkdir arch_db01

[root@chen03 ~]# mkdir arch_cc

[root@chen03 ~]# mv u01/* /u01

[root@chen03 ~]# mv arch_orcl/* arch_db01/

[oracle@chen03 dbs]$ mv /u01/app/oracle/oradata/orcl /u01/app/oracle/oradata/db01/

[oracle@chen03 dbs]$ mv /u01/app/oracle/flash_recovery_area/orcl /u01/app/oracle/flash_recovery_area/db01/

[oracle@chen03 rdbms]$ mv /u01/app/oracle/diag/rdbms/orcl/ /u01/app/oracle/diag/rdbms/db01/

[oracle@chen03 rdbms]$ mv /u01/app/oracle/diag/rdbms/db01/orcl /u01/app/oracle/diag/rdbms/db01/db01

[root@chen03 ~]# cp stdby_control01.ctl stdby_control02.ctl

[root@chen03 ~]# cp stdby_control01.ctl /u01/app/oracle/oradata/db01

[oracle@chen03 dbs]$ cp stdby_control02.ctl /u01/app/oracle/flash_recovery_area/db01/

[root@chen03 ~]# chown -R oracle.oinstall /u01

 

 

[root@chen03 ~]# yum -y install compat-libstdc++-33-3.2.3 elfutils-libelf gcc gcc-c++* glibc glibc-common glibc-common glibc-devel libaio libaio-devel libgcc libstdc++-* libstdc++-devel make sysstat

 

创建一个用户 oracle 要求主租 oinstall 附加组 dba

[root@chen03 ~]# groupdel  oinstall

[root@chen03 ~]# groupdel  dba

[root@chen03 ~]# groupadd  -g 1000 oinstall

[root@chen03 ~]# groupadd  -g 1001 dba

[root@chen03 ~]# useradd  -u 1000 -g oinstall -G dba oracle

 

[oracle@chen03 ~]$ vim .bash_profile

export PATH

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0

export ORACLE_SID=db01

export PATH=$ORACLE_HOME/bin:$PATH

 

[oracle@chen03 ~]$ source .bash_profile

 

安全设置

[root@chen03 ~]# vim /etc/security/limits.conf

 

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile  1024

oracle              hard    nofile  65536

oracle              soft    stack   10240

 

内核设置

[root@chen03 ~]# vim /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

 

更新

[root@test1 orcl]# sysctl  -p

 

配置备库参数

[oracle@chen03 ~]$ cd $ORACLE_HOME/dbs

[oracle@chen03 ~]$ mv initorcl.ora initdb01.ora

[oracle@chen03 ~]$ mv orapworcl orapwdb01

 

[oracle@chen03 dbs]$ vim initdb01.ora

db01.__db_cache_size=176160768

db01.__java_pool_size=4194304

db01.__large_pool_size=4194304

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

db01.__pga_aggregate_target=239075328

db01.__sga_target=352321536

db01.__shared_io_pool_size=0

db01.__shared_pool_size=155189248

db01.__streams_pool_size=0

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

*.control_files='/u01/app/oracle/oradata/db01/stdby_control01.ctl','/u01/app/oracle/flash_recovery_area/db01/stdby_control02.ctl'

*.db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/db01/'

*.db_name='orcl'

*.fal_client='DB_DB01'

*.fal_server='DB_ORCL'

*.log_archive_config='dg_config=(orcl,db01)'

*.log_archive_dest_1='location=/home/oracle/arch_db01 valid_for=(all_logfiles,all_roles) db_unique_name=db01'

*.log_archive_dest_2='service=db_orcl LGWR ASYNC valid_for=(online_logfiles,primary_roles) db_unique_name=orcl'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_max_processes=5

*.log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/db01/'

*.processes=150*.remote_login_passwordfile='EXCLUSIVE'

*.standby_archive_dest='location=/home/oracle/arch_cc'

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.db_unique_name='db01'

                                    

八   配置网络

 

xhost +

netmgr

 

或者

 

192.168.1.183

 

192.168.1.181 (同 183 )

 

[oracle@chen03 admin]$ pwd

/u01/app/oracle/product/11.2.0/network/admin

 

[oracle@chen03 admin]$ ls

listener.ora  orapworcl  samples  shrept.lst  sqlnet.ora  tnsnames.ora

 

[oracle@chen03 admin]$ vim listener.ora

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

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = db01)

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

      (SID_NAME = DB01)

    )

  )

 

LISTENER =

  (DESCRIPTION =

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

  )

 

ADR_BASE_LISTENER = /u01/app/oracle

 

 

[oracle@chen03 admin]$ vim tnsnames.ora

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

# Generated by Oracle configuration tools.

 

LISTENER_ORCL =

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

 

 

DB_DB01 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db01)

    )

  )

 

DB_ORCL =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

 

 

[oracle@chen03 admin]$ tnsping db_orcl

 

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 14-NOV-2014 22:28:16

 

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

 

Used parameter files:

/u01/app/oracle/product/11.2.0/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

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

OK (0 msec)

 

[oracle@chen03 admin]$ tnsping db_db01

 

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 14-NOV-2014 22:28:19

 

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

 

Used parameter files:

/u01/app/oracle/product/11.2.0/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

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

OK (0 msec)

 

 

九 启动 DG

 

1

启用备用数据库

SQL > STARTUP NOMOUNMT;

SQL >alter database mount standby database;

SQL >alter database recover managed standby database disconnect from session;

2

启动主库

SQL> startup

 

 

192.168.1.183

 

SQL> col dest_name for a25

 

SQL> select dest_name,status from v$archive_dest_status;

 

DEST_NAME         STATUS

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

LOG_ARCHIVE_DEST_1        VALID

LOG_ARCHIVE_DEST_2        VALID

STANDBY_ARCHIVE_DEST      VALID

 

SQL> select database_role,protection_mode,protection_level from v$database;

 

DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

  欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-1571779/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: DG_安装一
下一篇: DG_安装三
请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2727959