DataGuard环境搭建详细步骤(新方法).doc_第1页
DataGuard环境搭建详细步骤(新方法).doc_第2页
DataGuard环境搭建详细步骤(新方法).doc_第3页
DataGuard环境搭建详细步骤(新方法).doc_第4页
DataGuard环境搭建详细步骤(新方法).doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一:实验环境介绍*鉴于生产环境均采用64位系统和数据库软件,本实验也将采用这个标准*采用vmware workstation 10(版本随意,我用的10)虚拟机软件作为安装平台对于真机的要求:CPU:INTEL:CORE I3级别或以上(推荐) AMD :4核心CPU或以上(推荐)内存:建议4G以上系统:WIN7 /8 64位/WINDOWS SERVER 2003/2008 64位硬盘:虚拟机所在分区剩余空间50G以上,固态硬盘最好虚拟机系统:Oracle Enterprise Linux 5 update 5(64位)数据库版本:Oracle 11gR2 (64位)基础要求:(1)安装两台虚拟机分别作为主库和备库,硬盘大小随意。但要保证根分区有20G,别给太小了就行。物理内存1G,SWAP 2G 关于Active database duplication方式:(必看)在Oracle 10g下,我们可以使用RMAN duplicate 命令创建一个具有不同DBID 的复制库。 到了Oracle 11gR2, RMAN 的duplicate 有2种方法实现: 1. Active database duplication(本文所使用的方式,适用于11gR2之后的版本) 2. Backup-based duplication(传统方式,10g,11g通用) Active database duplication 通过网络,直接copy target 库到auxiliary 库,然后创建复制库。这种方法就不需要先用RMAN 备份数据库,然后将备份文件发送到auxiliary端。 这个功能的作用是非常大的。 尤其是对T级别的库。 因为对这样的库进行备份,然后将备份集发送到备库,在进行duplicate 的代价是非常大的。 一备份要占用时间,二要占用备份空间,三在网络传送的时候,还需要占用带宽和时间。所以Active database duplicate 很好的解决了以上的问题。 它对大库的迁移非常有用。 如果是从RAC duplicate 到单实例,操作是一样的。 如果是从单实例duplicate 到RAC。 那么先duplicate 到 单实例。 然后将单实例转换成RAC。二:安装数据库软件前的系统配置(主库和备库端都要做下列操作)1基本配置:一定要用新装的系统(这里以红帽企业版5.5为例),系统要求最低配置1G内存,2Gswap分区,根分区20G以上,装好系统后先配置好yum,IP地址,/etc/sysconfig/network文件中的主机名,以及/etc/hosts文件中的IP地址和主机名的对应关系。主库IP:01主库主机名:pri备库IP:02备库主机名:std2装包yum install compat-libstdc+-33 ksh gcc gcc-c+ libgomp elfutils-libelf-devel glibc-devel glibc-headers libaio-devel libstdc+-devel sysstat unixODBC unixODBC-devel -y 3查看共享内存大小,要求最低为1GB# df -h /dev/shmFilesystem Size Used Avail Use% Mounted ontmpfs 506M 0 506M 0% /dev/shm发现不够,修改# vim /etc/fstab如图,在tmpfs那一行的defaults后面加上,size=1024m保存退出后重新挂载:# mount -o remount /dev/shm再次查看共享内存:# df -h /dev/shmFilesystem Size Used Avail Use% Mounted ontmpfs 1.0G 0 1.0G 0% /dev/shm修改成功4创建相关的组与用户:groupadd oinstallgroupadd dbagroupadd operuseradd -g oinstall -G dba,oper oraclepasswd oracle5创建所需的目录并赋予特定的属主和属组mkdir /u01/app/oracle -pvchown oracle.oinstall /u01 -R建议:最好为单独分一个区,然后将u01挂载到该分区上(可不做,看情况)6编辑limits.conf 文件vim /etc/security/limits.conf添加下面5行内容:oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 102407编辑sysctl.conf文件,设置相关参数vim /etc/sysctl.conf添加/修改下列内容:(注意!下面的参数,若是已经存在,则直接修改数值,不要再添加同样的参数,相同的参数只能有一个!如果需要修改的参数已经大于下面的数字,则不用修改,请仔细核对!)kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096kernel.sem =250 32000 100 128fs.file-max = 6815744fs.aio-max-nr = 1048576net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576保存退出后,别忘了用sysctl -p命令使参数生效!8编辑vim /home/oracle/.bash_profile文件,配置相关环境变量添加下列几行:export TMP=/tmpexport TMPDIR=/tmpexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1export ORACLE_SID=pri(备库端设置为std)export PATH=$ORACLE_HOME/bin:$PATH至此,安装环境相关配置结束。三:开始安装oracle11g数据库软件(主库和备库端都要做下列操作)1.挂载oracle11g的镜像到/mnt/cdrom 目录下,并把3个包解压到/usr/local/src 目录下cd /mnt/cdrom/unzip p10404530_112030_LINUX_1of7.zip -d /usr/local/srcunzip p10404530_112030_LINUX_2of7.zip -d /usr/local/srcunzip p10404530_112030_LINUX_3of7.zip -d /usr/local/src(只装数据库的话,解压前两个包即可,第三个包是grid)2. root身份执行xhost +,然后切换到oracle用户进入/usr/local/src/database目录中,执行runInstaller 开始安装 (database是默认解压完的目录名)# xhost + # su - oracle$ ./runInstaller 注意:安装oracle11g要求分辨率最低为1024x768,不然无法完整显示安装过程安装过程:略注意:主库在安装完软件后需要进行DBCA建库操作,推荐不要启用归档模式,会节省时间,备库端不要建库!四:开始搭建Dataguard1:将数据库改为强制日志模式(此步骤只在主库上做)oraclepri $ sqlplus / as sysdba查看当前是否强制日志模式:SYSpri select name,log_mode,force_logging from v$database;NAME LOG_MODE FOR- - -PRI NOARCHIVELOG NOSYSpri alter database force logging;Database altered.SYSpri select name,log_mode,force_logging from v$database;NAME LOG_MODE FOR- - -PRI NOARCHIVELOG YES2:创建密码文件(此步骤只在主库上做)注意:两端分别创建自己的密码文件好像有问题,备库的密码文件需要跟主库一致,否则导致日志传输不到备库,有待验证。我最后是将主库的密码文件直接copy到备库,重命名后使用。oraclepri $ cd $ORACLE_HOME/dbsoraclepri dbs$ lshc_racdb1.dat init.ora initracdb1.ora orapwpri已经有一个密码文件了oraclepri dbs$ orapwd file=orapwpri password=oracle force=y这条命令可以手动生成密码文件,force=y的意思是强制覆盖当前已有的密码文件oraclepri dbs$ lshc_pri.dat init.ora initpri.ora lkPRI orapwpri spfilepri.ora将主库的密码文件copy给备库,并重命名oraclepri dbs$ scp orapwpri 02:$ORACLE_HOME/dbs/orapwstdorapwpri 100% 1536 1.5KB/s 00:00 3:创建standby redolog日志组(此步骤只在主库上做)原则:1:standby redo log的文件大小与primary 数据库online redo log 文件大小相同2:standby redo log日志文件组的个数依照下面的原则进行计算:Standby redo log组数公式=(每个instance日志组个数+1)*instance个数假如只有一个节点,这个节点有三组redolog,所以Standby redo log组数=(3+1)*1 = 4 所以至少需要创建4组Standby redo log查看当前线程与日志组的对应关系及日志组的大小:SYSpri select thread#,group#,bytes/1024/1024 from v$log; THREAD# GROUP# BYTES/1024/1024 - - - 1 1 50 1 2 50 1 3 50如上,我现在的环境有三组redolog,每个日志组的大小都是50M,所以Standby redo log组数=(3+1)*1= 4所以至少需要创建4组Standby redo log,大小均为50M(thread:线程,只有在多实例数据库才有用的参数,例如RAC环境,单实例不考虑)查看当前有哪些日志组及其成员:SYSpri col member for a50SYSpri select group#,member from v$logfile; GROUP# MEMBER- - 3 /u01/app/oracle/oradata/pri/redo03.log 2 /u01/app/oracle/oradata/pri/redo02.log 1 /u01/app/oracle/oradata/pri/redo01.log先手动创建standby log日志组所需的目录:(创建新目录只是为了便于区分,并非必须)oraclepri dbs$ cd /u01/app/oracle/oradata/oraclepri oradata$ lsprioraclepri oradata$ mkdir standbylogoraclepri oradata$ lspri standbylog新建4个日志组作为standby redolog日志组,大小与原来的日志组一致:由于已经存在group1-3,,所以group号只能从4开始SYSpri alter database add standby logfile group 4 2 /u01/app/oracle/oradata/standbylog/std_redo04.log 3 size 50m;Database altered.SYSpri alter database add standby logfile group 5 2 /u01/app/oracle/oradata/standbylog/std_redo05.log 3 size 50m;Database altered.SYSpri alter database add standby logfile group 6 2 /u01/app/oracle/oradata/standbylog/std_redo06.log 3 size 50m;Database altered.SYSpri alter database add standby logfile group7 2 /u01/app/oracle/oradata/standbylog/std_redo07.log 3 size 50m;Database altered.查看standby 日志组的信息:SYSpri select group#,sequence#,status, bytes/1024/1024 from v$standby_log; GROUP# SEQUENCE# STATUS BYTES/1024/1024- - - - 4 0 UNASSIGNED 50 5 0 UNASSIGNED 50 6 0 UNASSIGNED 50 7 0 UNASSIGNED 50查看当前有哪些日志组及其成员:SYSpri set pagesize 100 SYSpri col member for a60SYSpri select group#,member from v$logfile order by group#; GROUP# MEMBER - 1 /u01/app/oracle/oradata/pri/redo01.log 2 /u01/app/oracle/oradata/pri/redo02.log 3 /u01/app/oracle/oradata/pri/redo03.log 4 /u01/app/oracle/oradata/standbylog/std_redo04.log 5 /u01/app/oracle/oradata/standbylog/std_redo05.log 6 /u01/app/oracle/oradata/standbylog/std_redo06.log 7 /u01/app/oracle/oradata/standbylog/std_redo07.log4:修改主库的pfile参数文件(此步骤只在主库上做)查看spfile的路径:SYSpri show parameter spfile;NAME TYPE VALUE- - -spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfilepri.ora用spfile创建一个pfile,用于修改:SYSpri create pfile from spfile; 修改主库的pfile:oraclepri $ cd $ORACLE_HOME/dbsoraclepri dbs$ vim initpri.orapri._db_cache_size=125829120pri._java_pool_size=4194304pri._large_pool_size=4194304pri._oracle_base=/u01/app/oracle#ORACLE_BASE set from environmentpri._pga_aggregate_target=146800640pri._sga_target=272629760pri._shared_io_pool_size=0pri._shared_pool_size=125829120pri._streams_pool_size=4194304*.audit_file_dest=/u01/app/oracle/admin/pri/adump*.audit_trail=db*.compatible=.0*.control_files=/u01/app/oracle/oradata/pri/control01.ctl,/u01/app/oracle/fast_recovery_area/pri/control02.ctl*.db_block_size=8192*.db_domain=*.db_name=priDG主库和备库的db_name必须一致,db_unique_name不一致*.db_recovery_file_dest=/u01/app/oracle/fast_recovery_area*.db_recovery_file_dest_size=4227858432*.diagnostic_dest=/u01/app/oracle*.dispatchers=(PROTOCOL=TCP) (SERVICE=priXDB)*.memory_target=419430400*.open_cursors=300*.processes=150*.remote_login_passwordfile=EXCLUSIVE*.undo_tablespace=UNDOTBS1下面几行是需要手动添加的:*.db_unique_name=pri*.log_archive_config=dg_config=(pri,std)*.log_archive_dest_1=location=/u01/app/arch/pri valid_for=(all_logfiles,all_roles) db_unique_name=pri*.log_archive_dest_2=service=std valid_for=(online_logfiles,primary_role) db_unique_name=std*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enable*.log_archive_max_processes=4*.fal_server=std*.fal_client=pri*.db_file_name_convert=/u01/app/oracle/oradata/std,/u01/app/oracle/oradata/pri*.log_file_name_convert=/u01/app/oracle/oradata/std,/u01/app/oracle/oradata/pri*.standby_file_management=auto修改完毕,保存退出手工创建/u01/app/arch/pri:oraclepri dbs$ mkdir /u01/app/arch/pri -pvmkdir: created directory /u01/app/archmkdir: created directory /u01/app/arch/pri5:用修改过的pfile重新创建一个spfile,用于重启数据库(此步骤只在主库上做)关闭数据库:SYSpri shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.用修改过的pfile重新创建一个spfile:SYSpri create spfile from pfile;此时把数据库改为归档模式:(如果当初建库时选择了启用归档,则此步骤忽略)由于当前数据库已关闭,首先需要把数据库启动到mount状态SYSpri startup mount;ORACLE instance started.Database mounted.SYSpri alter database archivelog;启用归档模式Database altered.SYSpri alter database open;OPEN数据库Database altered.SYSpri archive log list;查看是否启用归档模式Database log mode Archive ModeAutomatic archival EnabledArchive destination /u01/app/arch/priOldest online log sequence 6Next log sequence to archive 8Current log sequence 8如上,归档路径已经改为/u01/app/arch/pri,证明对pfile的修改已生效查看当前数据库是否使用spfile启动:SYSpri show parameter spfile;NAME TYPE VALUE- - -spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfilepri.ora如上,若能看到spfile的路径,则证明数据库是使用spfile启动的,若没有值,则说明是用pfile启动的。确认数据库已经启用归档模式和强制日志模式:SYSpri select name,log_mode,force_logging from v$database;NAME LOG_MODE FOR- - -PRI ARCHIVELOG YES6:修改监听文件,添加静态监听(主库、备库都要做)主库:oraclepri $ cd $ORACLE_HOME/network/adminoraclepri admin$ vim listener.ora 添加如下内容:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = pri) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = pri) ) )主库修改后最终效果如下图:备库:oraclepri $ cd $ORACLE_HOME/network/adminoraclepri admin$ vim listener.ora 添加如下内容:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = std) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = std) ) )备库修改后最终效果如下图:使新增加的监听生效:(主库和备库端都要做)oraclepri admin$ lsnrctl stoporaclepri admin$ lsnrctl start 确认新增加的静态监听有效:主库:oraclepri $ lsnrctl status.(N行省略)Service pri has 2 instance(s). Instance pri, status UNKNOWN, has 1 handler(s) for this service. Instance pri, status READY, has 1 handler(s) for this service.Service priXDB has 1 instance(s). Instance pri, status READY, has 1 handler(s) for this service.The command completed successfully备库:oraclestd $ lsnrctl status.(N行省略)Service std has 1 instance(s). Instance std, status UNKNOWN, has 1 handler(s) for this service.The command completed successfully如上,静态监听添加成功7:编辑网络服务名配置文件tnsnames.ora(主库和备库端都要做)oraclepri admin$ cd $ORACLE_HOME/network/adminoraclepri admin$ pwd/u01/app/oracle/product/11.2.0/db_1/network/adminoraclepri admin$ lslistener.ora samples shrept.lst tnsnames.oraoraclepri admin$ vim tnsnames.ora编辑结果如下图:保证主库和备库的tnsnames.ora文件中的内容完全相同,可以把修改后的文件直接传给备库。oraclepri admin$ scp tnsnames.ora 02:$ORACLE_HOME/network/admintnsnames.ora 100% 925 0.9KB/s 00:00 配置完后,确保在任意一端上都能tnsping通对方:oraclepri admin$ tnsping stdoraclestd admin$ tnsping pri8:在备库端,修改pfile参数文件(只在备库端做)首先,在主库端把pfile拷贝给备库端的$ORACLE_HOME/dbs目录下,并重命名:oraclepri $ cd $ORACLE_HOME/dbsoraclepri dbs$ lshc_pri.dat init.ora initpri.ora lkPRI orapwpri spfilepri.oraoraclepri dbs$ scp initpri.ora 02:$ORACLE_HOME/dbs/initstd.orainitpri.ora 100% 1497 1.5KB/s 00:00 然后在备库端进行修改:oraclestd $ cd $ORACLE_HOME/dbsoraclestd dbs$ vim initstd.ora std._db_cache_size=125829120std._java_pool_size=4194304std._large_pool_size=4194304std._oracle_base=/u01/app/oracle#ORACLE_BASE set from environmentstd._pga_aggregate_target=146800640std._sga_target=272629760std._shared_io_pool_size=0std._shared_pool_size=125829120std._streams_pool_size=4194304*.audit_file_dest=/u01/app/oracle/admin/std/adump*.audit_trail=db*.compatible=.0*.control_files=/u01/app/oracle/oradata/std/std_con.ctl*.db_block_size=8192*.db_domain=*.db_name=priDG主库和备库的db_name必须一致,db_unique_name不一致*.db_recovery_file_dest=/u01/app/oracle/fast_recovery_area*.db_recovery_file_dest_size=4227858432*.diagnostic_dest=/u01/app/oracle*.dispatchers=(PROTOCOL=TCP) (SERVICE=stdXDB)*.memory_target=419430400*.open_cursors=300*.processes=150*.remote_login_passwordfile=EXCLUSIVE*.undo_tablespace=UNDOTBS1下面几行是需要手动添加的:*.db_unique_name=std*.log_archive_config=dg_config=(pri,std)*.log_archive_dest_1=location=/u01/app/arch/std valid_for=(all_logfiles,all_roles) db_unique_name=std*.log_archive_dest_2=service=pri valid_for=(online_logfiles,primary_role) db_unique_name=pri*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enable*.log_archive_max_processes=4*.fal_server=pri*.fal_client=std*.db_file_name_convert=/u01/app/oracle/oradata/pri,/u01/app/oracle/oradata/std*.log_file_name_convert=/u01/app/oracle/oradata/pri,/u01/app/oracle/oradata/std*.standby_file_management=auto修改完毕,保存退出注意:整个搭建过程最需要留意的就是主库和备库的PFILE配置,建议修改完后仔细对照主备库PFILE的区别9:在备库端手工创建所需的目录(备库端做,不提前创建的话恢复时会报错!)/u01/app/oracle/admin/std/adump/u01/app/oracle/diag/rdbms/std/std/trace/u01/app/arch/std/u01/app/oracle/oradata/std/u01/app/oracle/oradata/standbylog创建/u01/app/oracle/fast_recovery_area:创建/u01/app/oracle/admin/std/adump:oraclestd dbs$ cd /u01/app/oracle/oraclestd oracle$ lscfgtoollogs checkpoints diag product(由于没建库,此时没有admin目录)oraclestd oracle$ mkdir -pv admin/std/adumpmkdir: created directory adminmkdir: created directory admin/stdmkdir: created directory admin/std/adump创建/u01/app/oracle/diag/rdbms/std/std/trace:oraclestd oracle$ cd /u01/app/oracle/diag/rdbms/oraclestd rdbms$ ls(由于没建库,该目录下为空)oraclestd rdbms$ mkdir -pv std/std/tracemkdir: created directory stdmkdir: created directory std/stdmkdir: created directory std/std/trace创建/u01/app/arch/std:oraclestd rdbms$ cd /u01/app/oraclestd app$ lsoracle oraInventoryoraclestd app$ mkdir -pv arch/stdmkdir: created directory archmkdir: created directory arch/std创建/u01/app/oracle/oradata/std:oraclestd app$ cd /u01/app/oracle/oraclestd oracle$ lsadmin cfgtoollogs checkpoints diag productoraclestd oracle$ mkdir -pv oradata/stdmkdir: created directory oradatamkdir: created directory oradata/std创建/u01/app/oracle/oradata/standbylog:oraclestd oracle$ cd /u01/app/oracle/oradata/oraclestd oradata$ lsstdoraclestd oradata$ mkdir -pv standbylogmkdir: created directory standbylog创建/u01/app/oracle/fast_recovery_area:oraclestd dbs$ cd /u01/app/oracle/oraclestd oracle$ lsadmin cfgtoollogs checkpoints diag oradata productoraclestd oracle$ mkdir -pv fast_recovery_areamkdir: created directory fast_recovery_area10:用修改后的pfile创建一个spfile,用于启动数据库(备库端做)oraclestd $ sqlplus / as sysdbaConnected to an idle instance.SYSstd create spfile from pfile;File created.将数据库启动到nomount状态:SYSstd startup nomount;ORACLE instance started.Total System Global Area 839282688 bytesFixed Size 2233000 bytesVariable Size 482348376 bytesDatabase Buffers 352321536 bytesRedo Buffers 2379776 bytesSYSstd 11:利用RMAN在备库上恢复主库(备库端做)oraclestd $ rman target sys/oraclepri auxiliary sys/oraclestdRecovery Manager: Release .0 - Production on Tue Apr 15 16:39:28 2014Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.connected to target database: PRI (DBID=775616459)connected to auxiliary d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论