Oracle 11g RAC 配置单实例 DataGuard

环境说明:
主库:RAC  public IP  节点1  192.168.126.42    节点2 192.168.126.43
                scan IP   192.168.20.100
                 操作系统:Redhat linux 6.5
                 存储:ASM
备库: 单实例 192.168.126.44
                 操作系统:Redhat linux 6.5
                 存储:文件系统

下面是主备库的DB_UNIQUE_NAME和Oracle Net Service Name

Database          DB_UNIQUE_NAME         Oracle Net Service Name

Primary                       atfdb                           atfdb

Physical standby      atfdbdg                       atfdbdg



安装步骤:

1. 安装备库的数据库软件

1.1 先在主库上查询字符集,保证备库的字符集与主库一致

select * from V$NLS_PARAMETERS p where p.parameter like '%CHARACTER%';

 

NLS_CHARACTERSET                    ZHS16GBK

NLS_NCHAR_CHARACTERSET              AL16UTF16

 

show parameter compatible

NAME                                 TYPE        VALUE

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

compatible                           string      11.2.0.0.0


1.2 检查备库的系统参数是否满足安装要求

#查看主机内存

grep MemTotal /proc/meminfo

 

#交换空间,如果物理内存在16G以上,推荐交换空间至少为16G

grep SwapTotal /proc/meminfo

free

 

#检查机器的硬件名称

uname -m

 

#检查临时表空间,至少1G

df -h /tmp

df -h

 

#检查 linux 版本

cat /proc/version

lsb_release -id

 

#检查内核

uname –r


1.3 禁用防火墙和 SELINUX

#使用root用户登录

service iptables status

service iptables stop

chkconfig iptables off

 

#然后输入以下命令,禁用SELinux

vi /etc/selinux/config

SELINUX=disabled


1.4  检查软件包

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libstdc elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel


1.5 创建组和用户

/usr/sbin/groupadd oinstall

/usr/sbin/groupadd -g 502 dba

/usr/sbin/groupadd -g 503 oper

id oracle

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

passwd oracle


1.6  设置环境变量,从 rac 的其中一个节点拷贝环境变量文件到备库上面

#登录主库的节点1

cd

scp .bash_profile oracle@beiku_ip:/home/oracle
#更改变量文件中ORACLE_SID为atfdb


1.7  设置内核参数

vi /etc/sysctl.conf

#增加或者修改以下内容:

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

 

#使用以下命令验证配置:

sysctl -p

 

#修改用户oracleshell限制:

vi /etc/security/limits.conf

#增加以下内容:

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

 

#修改登录参数,执行以下操作:

vi /etc/pam.d/login

#增加以下内容:

session required /lib64/security/pam_limits.so

session required pam_limits.so

 

#同样执行以下操作:

vi /etc/profile

#增加以下内容:

I

f [ $USER = "oracle" ] ; then

  if [ $SHELL = "/bin/ksh" ]; then

    ulimit -p 16384

    ulimit -n 65536

  else

    ulimit -u 16384 -n 65536

  fi

  umask 022

fi


1.8 创建文件目录

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

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01

 

#创建数据库文件目录

mkdir /data

#创建数据库日志目录

mkdir /log

#创建归档日志目录

mkdir /arc


1.9  安装 Oracle 软件,此步骤不建库

#使用oracle用户登录

#首先解压安装文件:

unzip p10404530_112030_Linux-x86-64_1of7.zip

unzip p10404530_112030_Linux-x86-64_2of7.zip

#打开图形设置,打开Xmanager4 Passive模式。

export DISPLAY=ip:0.0

#ip不是服务器的ip,为自己的笔记本ip

#然后进入解压后的database目录,执行以下命令:

./runInstaller


2. DataGuard 主库的相关配置

2.1 主库打开 FORCE LOGGING模式

ALTER DATABASE FORCE LOGGING;

作用:不管什么操作都会生成redo日志

特点:1.在数据库mount状态和open状态都可以启动force logging模式

         2.临时表空间和临时回滚段动作不会生成redo日志

2.2 配置主库的参数文件

在主库节点一上执行

cd $ORACLE_HOME/dbs

sqlplus / as sysdba

create pfile from spfile;

exit

 

#备份参数文件

cp initatfdb1.ora /home/oracle/initatfdb1.ora_bak


编辑参数文件

vi initatfdb.ora

*.db_unique_name=atfdb

*.LOG_ARCHIVE_DEST_1='LOCATION=+FRA

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=atfdb'

*.log_archive_config='DG_CONFIG=(atfdb,atfdbdg)'

*.LOG_ARCHIVE_DEST_2=

 'SERVICE=atfdbdg ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=atfdbdg'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

#更改之前的archive log format

*.LOG_ARCHIVE_FORMAT = log%d_%t_%s_%r.arc

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.fal_server=atfdbdg

*.STANDBY_FILE_MANAGEMENT=AUTO


#用新编辑的PFILE生成SPFILE,并重启数据库

cd $ORACLE_HOME/dbs

create spfile='+DATA/atfdb/spfileatfdb.ora' from pfile = 'initatfdb1.ora';

#在两个节点下,分别在init.ora下面增加下列参数,确保dbs目录下没有spfile.oraspfile.ora文件,有的话需要改名
spfile='+DATA/aftdb/spfileaftdb.ora'

 

#重启数据库

srvctl stop database –d atfdb –o immediate

srvctl start database –d atfdb



2.3 创建standby logfile

ALTER DATABASE ADD STANDBY LOGFILE   GROUP 17 SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE   GROUP 18 SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE   GROUP 19 SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE   GROUP 20 SIZE 200M;

作用:主库切换到备库角色时接收主库redo日志

检查:

SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG;

特点:

1. standby logfileonline redolog大小应一致,管理方便

2. 如果是单实例数据库那么standby logfile组比online redolog组的个数多一个;如果是rac架构那么standby logfile组个数=rac节点数*online redolog组个数+1


2.4 在各节点分别配置监听

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

 

#modified by neo for the data guard on date

 

ATFDBDG =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = atfdbdg)

    )

  )

2.5 创建主库数据文件的备份

#登录到主库的RAC节点2
su – oracle

#建立备份存放目录

mkdir /home/oracle/backup

rman tareget /

    run {

      allocate channel d1 type disk;

      backup tag 'dbfull' format

        '/home/oracle/backup/dbfull_%d_%s_%p.bck'

         database include current controlfile;

      backup tag 'logfull' format

         '/home/oracle/backup/logfull_%d_%s_%p.bck'

          archivelog all;

      release channel d1;}

exit


2.6  为备库创建控制文件,并拷贝控制文件和数据文件的备份到备库

#登录到节点2

su – oracle

sqlplus / as sysdba

shutdown immediate

STARTUP MOUNT;

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/backup/controlfile.ctl';

ALTER DATABASE OPEN;

#在备库建立对应的备份存放目录

mkdir /home/oracle/backup

scp /home/oracle/backup/* oracle@ip:/home/oracle/backup


2.7 拷贝主库密码文件到备库上

cd $ORACLE_HOME/dbs

scp orapwatfdb1 oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/


2.8 拷贝主库的参数文件到备库

cd

scp init* oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/


3. 配置Dataguard备库的相关配置

3.1 配置备库的参数文件

vi initatfdb.ora

atfdb2.__db_cache_size=10670309376

atfdb1.__db_cache_size=10670309376

这样的参数改为一个,如

*.__db_cache_size=10670309376

去掉下面参数

atfdb1.instance_number=1

atfdb2.instance_number=2

atfdb1.instance_number=1

atfdb2.instance_number=2

*.cluster_database=true

*.remote_listener='rac-scan:1521'


增加下面参数

*.db_name='atfdb'

DB_UNIQUE_NAME=atfdbdg

*.db_create_file_dest='/data'

*.db_create_online_log_dest_1='/log'

*.db_create_online_log_dest_2='/log'

*.control_files='/u01/app/oracle/product/11.2.0/db_1/dbs/controlfile01.ctl, /u01/app/oracle/product/11.2.0/db_1/dbs/controlfile02.ctl'

LOG_ARCHIVE_DEST_1=

 'LOCATION=/arc

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=atfdbdg'

LOG_ARCHIVE_DEST_2=

 'SERVICE=misdb ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=atfdb'

FAL_SERVER=atfdb

LOG_ARCHIVE_CONFIG='DG_CONFIG=(atfdb,atfdbdg)'

STANDBY_FILE_MANAGEMENT=AUTO


拷贝从主库传送过来的控制文件到对应目录

cp /home/oracle/backup/controlfile.ctl /u01/app/oracle/product/11.2.0/db_1/dbs/controlfile01.ctl
cp /home/oracle/backup/controlfile.ctl  /u01/app/oracle/product/11.2.0/db_1/dbs/controlfile02.ctl

3.2 配置备库的监听

在备库的/etc/hosts里面,添加主库rac-scan和其ip的解析

su - root

vi /etc/hosts
ATFDB    ip
ATFDBDG    ip

cd $ORACLE_HOME/network/admin

vi listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = atfdbdg)

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

      (SID_NAME = atfdb1)

    )

  )

 

LISTENER =

  (DESCRIPTION =

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

  )

ADR_BASE_LISTENER = /u01/app/oracle

vi tnsnames.ora

ATFDBDG =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = atfdbdg)

    )

  )

 

ATFDB =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = atfdb)

    )

  )


lsnrctl stop

lsnrctl start

3.3 通过RMAN恢复从主库传送过来的备份文件

在备库下创建spfile

cd $ORACLE_HOME/dbs

sqlplus / as sysdba

create spfile from pfile= 'initatfdb1.ora_bak';


启动数据库到mount状态

sqlplus / as sysdba
startup mount

通过RMAN恢复从主库传送过来的备份文件

CATALOG START WITH '/home/oracle/backup/';
restore database;


3.4 备库启动日志应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

--检查归档日志的同步情况

SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;



3.5 启动数据库日志实时应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
 
ALTER DATABASE OPEN;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


3.6 检查备库数据库状态

select database_role,switchover_status,open_mode from v$database;

select * from v$dataguard_stats;

select * from v$managed_standby;







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

转载于:http://blog.itpub.net/26506993/viewspace-1810725/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值