Oracle 11gR2 使用RMAN Duplicate复制数据库(一)

2015-07-16 12:08:01 · 作者: · 浏览: 2

前言:


上周刚做完一个项目,用户要求RAC的数据库能够自动备份到另外一个单节点上,单节点能够正常拿起来就能用。当时跟他们讨论的是用ADG来做,但通过描述后,用户觉得如果要人工干预的话太麻烦,它不想做任何的人工干预,实现数据自动到这台单机上来,那只是一台备用的数据库,没事的时候可以登录上去看看历史的数据情况。


这个时候我提出了11g的RMAN Duplicate方案,它可以在线实现异机的在线备份,且无需人工干预,通过网络将数据传输过来后能够自动open备机.


如图:


Oracle 11gR2 使用RMAN Duplicate复制数据库


一、环境介绍


Oracle 11gR2 使用RMAN Duplicate复制数据库


?


二、开始配置Duplicate Database,步骤如下:


2.1 构建辅助数据库目录结构,配置辅助数据库相关系统参数。
2.2 安装软件并创建数据库。
2.3 开启归档
2.3 创建pfile,并修改
2.4 创建辅助数据库实例口令文件
2.5 配置静态监听
2.6 用pfile文件,将辅助数据库启动到nomount状态
2.7 执行RMAN duplicate命令复制数据库
2.8 创建spfile文件


三、构建辅助数据库目录结构,配置辅助数据库相关参数。(简)


/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/useradd -u 502 -g oinstall -G dba oracle
mkdir -p /DBSoft/oraInventory
mkdir -p /DBSoft/oracle/product/11.2.4/dbhome_1
chown -R oracle:oinstall /DBSoft
chmod -R 775 /DBSoft
echo "oracle"|passwd --stdin oracle
yum install -y setarch binutils compat-libstdc++-33 compat-libcap1 compat-db compat-libstdc++ compat-gcc elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc
-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel make ksh numactl sysstat libXp unixODBC unixODBC-devel udev
cat >> /etc/sysctl.conf <kernel.shmall = 4294967296
kernel.sem = 510 65280 510 128
kernel.shmmni = 4096
kernel.shmmax = 137438953472
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_wmem = 262144
net.ipv4.tcp_rmem = 4194304
EOF



/sbin/sysctl –p
cat >> /etc/security/limits.conf <oracle? ? ? ? ? soft? ? nproc? ? ? ? ? 2047
oracle? ? ? ? ? hard? ? nproc? ? ? ? ? 16384
oracle? ? ? ? ? soft? ? nofile? ? ? ? ? 65536
oracle? ? ? ? ? hard? ? nofile? ? ? ? ? 65536
oracle? ? ? ? ? soft? ? memlock? ? ? ? 3145728
oracle? ? ? ? ? hard? ? memlock? ? ? ? 3145728



#signaturelevin
EOF
cat >> /etc/profile <


if [ \$USER = "oracle" ]; then
? ? if [ \$SHELL = "/bin/ksh" ]; then
? ? ? ? ? ? ? ? ulimit -p 16384
? ? ? ? ? ? ? ? ulimit -n 65536
? ? ? ? else
? ? ? ? ? ? ? ? ulimit -u 16384 -n 65536
? ? ? ? fi
fi
EOF



cat >> /home/oracle/.bash_profile <export TMP=/tmp
export TMPDIR=\$TMP
export EDIT=vi
alias? vi=vim
export ORACLE_HOSTNAME=$hostname
export ORACLE_UNQNAME=$db_name
export ORACLE_BASE=/DBSoft/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.4/dbhome_1
export ORACLE_SID=$instance_name
export ORACLE_TERM=xterm
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_AMERICA AL32UTF16
umask 022
EOF


四、安装软件并创建数据库


./runInstaller -silent -debug -force -responseFile /home/oracle/database/response/db_install.rsp


dbca -silent -responsefile /home/oracle/database/response/dbca.rsp


五、开启归档


SQL> alter system set log_archive_dest_1=\'location=+FRA001/archive\' scope=spfile sid=\'woo1\';


System altered.
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 +FRA001/archive
Oldest online log sequence 978
Next log sequence to archive 979
Current log sequen