Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- 格式:docx
- 大小:35.20 KB
- 文档页数:15
ORACLE11G RMAN备份恢复到异机数据库1. 主数据库环境操作系统版本 : Centos6.7 x64数据库版本 : Oracle 11.2.0.4 x64数据库名 : prb数据库SID : prbdb_unique_name : prbinstance_name : prbIP : 10.0.8.1002. 备库环境操作系统版本 : Centos6.7 x64数据库版本 : Oracle 11.2.0.4 x64 (只安装oracle数据库软件,no netca dbca)数据库名 : prb数据库SID : prbdb_unique_name: prbinstance_name : prbIP:10.0.8.101将参数文件备份、控制文件备份、数据文件备份、以及归档备份到目标主机1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构。
2 目标机器只需要安装oracle只安装oracle数据库软件,no netca dbca3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标机器并在控制文件中注册,再见行恢复测试。
备份数据库backup format '/u01/prb/rmanbk/fulldb_%d_%U' database include current controlfile plus archivelog delete input;orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y1rman 连接到源数据库prd-db1-> rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 19:23:27 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: PRB (DBID=1906641159)RMAN>2 分别列出参数文件备份,控制文件备份,数据文件备份,以及归档备份的名字参数文件备份如下:RMAN> list backup of spfile;using target database control file instead of recovery catalogList of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ -------------------3 Full 9.36M DISK 00:00:01 2016/08/17 16:47:34BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20160817T164718 Piece Name: /u01/prb/rmanbk/fulldb_PRB_04rdg8d5_1_1SPFILE Included: Modification time: 2016/08/17 16:30:57SPFILE db_unique_name: PRB控制文件备份如下:RMAN> list backup of controlfile;List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ -------------------3 Full 9.36M DISK 00:00:01 2016/08/17 16:47:34BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20160817T164718 Piece Name: /u01/prb/rmanbk/fulldb_PRB_04rdg8d5_1_1Control File Included: Ckp SCN: 972048 Ckp time: 2016/08/17 16:47:33数据文件备份如下:RMAN> list backup of database;List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ -------------------2 Full 1.08G DISK 00:00:15 2016/08/17 16:47:33BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20160817T164718 Piece Name: /u01/prb/rmanbk/fulldb_PRB_03rdg8cm_1_1List of Datafiles in backup set 2File LV Type Ckp SCN Ckp Time Name---- -- ---- ---------- ------------------- ----1 Full 972030 2016/08/17 16:47:18 /u01/app/oracle/oradata/prb/system01.dbf2 Full 972030 2016/08/17 16:47:18 /u01/app/oracle/oradata/prb/sysaux01.dbf3 Full 972030 2016/08/17 16:47:18 /u01/app/oracle/oradata/prb/undotbs01.dbf4 Full 972030 2016/08/17 16:47:18 /u01/app/oracle/oradata/prb/users01.dbf列出归档备份如下:RMAN> list backup of archivelog all;List of Backup Sets===================BS Key Size Device Type Elapsed Time Completion Time------- ---------- ----------- ------------ -------------------1 68.93M DISK 00:00:01 2016/08/17 16:47:17BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20160817T164716 Piece Name: /u01/prb/rmanbk/fulldb_PRB_02rdg8ck_1_1List of Archived Logs in backup set 1Thrd Seq Low SCN Low Time Next SCN Next Time---- ------- ---------- ------------------- ---------- ---------1 4 955212 2016/08/17 16:26:15 966337 2016/08/17 16:28:09 1 5 966337 2016/08/17 16:28:09 971912 2016/08/17 16:45:39 1 6 971912 2016/08/17 16:45:39 972019 2016/08/17 16:47:16 BS Key Size Device Type Elapsed Time Completion Time------- ---------- ----------- ------------ -------------------4 13.00K DISK 00:00:00 2016/08/17 16:47:35BP Key: 4 Status: AVAILABLE Compressed: NO Tag: TAG20160817T164735 Piece Name: /u01/prb/rmanbk/fulldb_PRB_05rdg8d7_1_1List of Archived Logs in backup set 4Thrd Seq Low SCN Low Time Next SCN Next Time---- ------- ---------- ------------------- ---------- ---------1 7 972019 2016/08/17 16:47:16 972053 2016/08/17 16:47:35 目标主机创建相应的目录mkdir -p /u01/app/oracle/admin/prb/{adump,dpdump,pfile,scripts}mkdir -p /u01/app/oracle/oradata/prbmkdir -p /u01/app/oracle/fast_recovery_area/prbmkdir -p /u01/prb/rmanbkmkdir -p /u01/archivelog3 将备份文件、密码文件copy到目标主机scp /u01/prb/rmanbk/* oracle@prd-db2:/u01/prb/rmanbk/scp /u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb oracle@prd-db2:/u01/app/oracle/product/11.2.0.4/db_1/dbs/恢复参数文件及控制文件1 配置新主机上的ORACLE_SIDecho 'db_name=prb' > $ORACLE_HOME/dbs/initprb.oraexport ORACLE_SID=prbsqlplus / as sysdba@prbstartup nomount pfile='/u01/app/oracle/product/11.2.0.4/db_1/dbs/initprb.ora' 目标主机上发起rman连接prd-db2-> rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 18:36:34 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database (not started)设置dbid 并启动实例到nomount状态RMAN> set dbid 3601019238executing command: SET DBIDRMAN> startup nomount;Oracle instance startedTotal System Global Area 217157632 bytesFixed Size 2251816 bytesVariable Size 159384536 bytesDatabase Buffers 50331648 bytesRedo Buffers 5189632 bytes恢复spfile文件RMAN> restore spfile to '/u01/app/oracle/product/11.2.0.4/db_1/dbs/spfileprb.ora' from '/u01/prb/rmanbk/fulldb_PRB_04rdg8d5_1_1';Starting restore at 2016/08/17 18:37:40allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=19 device type=DISKchannel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/prb/rmanbk/fulldb_PRB_04rdg8d5_1_1channel ORA_DISK_1: SPFILE restore from AUTOBACKUP completeFinished restore at 2016/08/17 18:37:41startup force nomountRMAN> startup force nomount;Oracle instance startedTotal System Global Area 584568832 bytesFixed Size 2255432 bytesVariable Size 226493880 bytesDatabase Buffers 352321536 bytesRedo Buffers 3497984 bytes恢复控制文件RMAN> restore controlfile to '/u01/app/oracle/oradata/prb/control01.ctl' from '/u01/prb/rmanbk/fulldb_PRB_04rdg8d5_1_1';Starting restore at 2016/08/17 18:38:26allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=19 device type=DISKchannel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:01Finished restore at 2016/08/17 18:38:27启动数据库到加载状态RMAN> alter database mount;RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of alter db command at 08/17/2016 18:38:39ORA-00205: error in identifying control file, check alert log for more infoprd-db2-> export ORACLE_SID=prbprd-db2-> sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 17 18:42:04 2016Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate;ORA-01507: database not mountedORACLE instance shut down.SQL> startup mount;ORACLE instance started.Total System Global Area 584568832 bytesFixed Size 2255432 bytesVariable Size 226493880 bytesDatabase Buffers 352321536 bytesRedo Buffers 3497984 bytesORA-00205: error in identifying control file, check alert log for more info 解决办法:scp /u01/app/oracle/oradata/prb/control01.ctl prd-db2:/u01/app/oracle/oradata/prb/ scp /u01/app/oracle/fast_recovery_area/prb/ control02.ctlprd-db2:/u01/app/oracle/fast_recovery_area/prb/启动到mount状态正常SQL> startup mountORACLE instance started.Total System Global Area 584568832 bytesFixed Size 2255432 bytesVariable Size 226493880 bytesDatabase Buffers 352321536 bytesRedo Buffers 3497984 bytesDatabase mounted.三 在新控制文件中注册数据文件备份和归档备份prd-db2-> rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 17 18:52:34 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: PRB (DBID=1906641159, not open)RMAN> catalog start with '/u01/prb/rmanbk/';using target database control file instead of recovery catalogsearching for all files that match the pattern /u01/prb/rmanbk/no files found to be unknown to the database恢复整个库RMAN> restore database;Starting restore at 2016/08/17 18:53:42allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=18 device type=DISKchannel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/prb/system01.dbfchannel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/prb/sysaux01.dbfchannel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/prb/undotbs01.dbfchannel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/prb/users01.dbfchannel ORA_DISK_1: reading from backup piece /u01/prb/rmanbk/fulldb_PRB_03rdg8cm_1_1channel ORA_DISK_1: piece handle=/u01/prb/rmanbk/fulldb_PRB_03rdg8cm_1_1 tag=TAG20160817T164718channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:00:15Finished restore at 2016/08/17 18:53:57RMAN> recover database;Starting recover at 2016/08/17 18:54:12using channel ORA_DISK_1starting media recoverychannel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived logarchived log thread=1 sequence=7channel ORA_DISK_1: reading from backup piece /u01/prb/rmanbk/fulldb_PRB_05rdg8d7_1_1channel ORA_DISK_1: piece handle=/u01/prb/rmanbk/fulldb_PRB_05rdg8d7_1_1 tag=TAG20160817T164735channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:00:01archived log file name=/u01/app/oracle/fast_recovery_area/PRB/archivelog/2016_08_17/o1_mf_1_7_cv8 jlo4y_.arc thread=1 sequence=7RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of recover command at 08/17/2016 18:54:14ORA-00283: recovery session canceled due to errorsRMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile'/u01/app/oracle/fast_recovery_area/PRB/archivelog/2016_08_17/o1_mf_1_7_cv8jlo4 y_.arc'ORA-00283: recovery session canceled due to errorsORA-00313: open failed for members of log group 2 of thread 1ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/prb/redo02.log'ORA-27037: unable to obtain file statusLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3缺失归档日志情况下的恢复prd-db2-> export ORACLE_SID=prbprd-db2-> sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 17 19:03:52 2016Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> shutdown immediate;ORA-01109: database not openDatabase dismounted.ORACLE instance shut down.SQL> startup mount;ORACLE instance started.Total System Global Area 584568832 bytesFixed Size 2255432 bytesVariable Size 226493880 bytesDatabase Buffers 352321536 bytesRedo Buffers 3497984 bytesDatabase mounted.SQL> alter database open ;alter database open*ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database openSQL> alter database open noresetlogs;alter database open noresetlogs*ERROR at line 1:ORA-01588: must use RESETLOGS option for database openSQL> alter database open resetlogs;Database altered.SQL> select max(sequence#) from v$archived_log;MAX(SEQUENCE#)--------------7数据库正常启动prd-db2-> export ORACLE_SID=prbprd-db2-> sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 17 19:11:49 2016Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 584568832 bytesFixed Size 2255432 bytesVariable Size 226493880 bytesDatabase Buffers 352321536 bytesRedo Buffers 3497984 bytesDatabase mounted.Database opened.。
ORACLE11gRAC-RACDGDuplicate搭建(⽣产操作⽂档)环境:rhel 6.7 64位源库:ORACLE 11204 RAC 未打PSU备库:ORACLE 11204 RAC PSU 20170718⼀、停⽌中间件并做全库备份1、在节点2做全备2、⾸先要规划主、备库db_unique_name主库:备库:============================================================db_name mgrdb db_name mgrdbdb_unique_name mgrdb db_unique_name mgrdbdg============================================================3、vi /etc/hosts 修改主、备共计4个节点=========================================================#主库由于是⽣产系统IP 省略#备库由于是⽣产系统IP 省略============================================================⼆、源库参数设置1、检查源库每个节点⾄少3组redoselect group#,thread#,bytes/1024/1024,members,status from v$log;GROUP# THREAD# BYTES/1024/1024 MEMBERS STATUS---------- ---------- --------------- ---------- ----------------5 1 500 2 INACTIVE6 1 500 2 INACTIVE7 1 500 2 INACTIVE8 1 500 2 CURRENT9 1 500 2 INACTIVE10 1 500 2 INACTIVE11 2 500 2 CURRENT12 2 500 2 INACTIVE13 2 500 2 INACTIVE14 2 500 2 INACTIVE15 2 500 2 INACTIVEGROUP# THREAD# BYTES/1024/1024 MEMBERS STATUS---------- ---------- --------------- ---------- ----------------16 2 500 2 INACTIVE1节点\2节点alter database add logfile thread 1 group 5 ('+DATA1') size 500m;alter database add logfile thread 2 group 6 ('+DATA1') size 500m;2、添加Standby Redo Log如果主库是Rac数据库,standby redo log组数=(所有节点中⽇志组数最⼤值+1)*RAC节点数;#################################################################################################--1节点alter database add standby logfile thread 1 group 21('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 22('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 23('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 24('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 25('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 26('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 1 group 27('+DATA1','+DATA1') size 500m;--2节点alter database add standby logfile thread 2 group 31('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 32('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 33('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 34('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 35('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 36('+DATA1','+DATA1') size 500m;alter database add standby logfile thread 2 group 37('+DATA1','+DATA1') size 500m;################################################################################################## select group#,thread#,sequence#,BYTES/1024/1024,archived,used,status from v$standby_log;GROUP# THREAD# SEQUENCE# BYTES/1024/1024 ARC USED STATUS---------- ---------- ---------- --------------- --- ---------- ----------21 1 0 500 YES 0 UNASSIGNED22 1 0 500 YES 0 UNASSIGNED23 1 0 500 YES 0 UNASSIGNED24 1 0 500 YES 0 UNASSIGNED25 1 0 500 YES 0 UNASSIGNED26 1 0 500 YES 0 UNASSIGNED27 1 0 500 YES 0 UNASSIGNED31 2 0 500 YES 0 UNASSIGNED32 2 0 500 YES 0 UNASSIGNED33 2 0 500 YES 0 UNASSIGNED34 2 0 500 YES 0 UNASSIGNEDGROUP# THREAD# SEQUENCE# BYTES/1024/1024 ARC USED STATUS---------- ---------- ---------- --------------- --- ---------- ----------35 2 0 500 YES 0 UNASSIGNED36 2 0 500 YES 0 UNASSIGNED37 2 0 500 YES 0 UNASSIGNED3、判断DG软件是否安装select * from v$option where parameter = 'Oracle Data Guard';4、允许Forced Loggingalter database force logging;select INST_ID,name,force_logging from gv$database;--备份原始参数⽂件create pfile='/home/oracle/pfile0908.bak' from spfile;!ls -ltr /home/oracle5、设置主库初始化参数################################################################################################## select name,db_unique_name from v$database;--alter system set db_unique_name=mgrdb scope=spfile sid='*';alter system set log_archive_config='dg_config=(mgrdb,mgrdbdg)' scope=spfile sid='*';alter system set log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdb' scope=spfile sid='*';alter system set log_archive_dest_2='SERVICE=standby OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdbdg' scope=spfile sid='*';alter system set log_archive_format = '%t_%s_%r.arc' scope=spfile sid='*';alter system set log_archive_dest_state_1=enable scope=spfile sid='*';alter system set log_archive_dest_state_2=enable scope=spfile sid='*';alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile sid='*';alter system set log_archive_max_processes = 10 scope=spfile sid='*';--Primary Database:Standby Role initialization parameters FAL参数定义的数据库名同样取⾃本地tnsnames.ora⾥配置的Oracle Net Service Name.alter system set fal_server=standby scope=spfile sid='*';alter system set standby_file_management=auto scope=spfile sid='*';alter system set db_file_name_convert='+DATA1','+DATA1' scope=spfile sid='*'; --备端的磁盘组写前⾯alter system set log_file_name_convert='+DATA1','+DATA1' scope=spfile sid='*'; --备端的磁盘组写前⾯###################################################################################################为使修改⽣效,重启Primary Database:alter system archive log current;alter system archive log current;alter system checkpoint;alter system checkpoint;ps -ef|grep LOCAL=NOset pages 999set lines 200col machine for a30select MACHINE,ERNAME, SID,s.SERIAL#,p.spid from v$session s,v$process pwhere s.paddr = p.addr and ername is not nullorder by spid;ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9#分别关闭2节点shut immediate;#srvctl stop database -d mgrdb#srvctl start database -d mgrdb#重启完后,可通过下⾯语句查看修改地⽅:set lines 500 pages 0col value for a90col name for a50select name,valuefrom v$parameterwhere name in('db_name','db_unique_name','log_archive_config','log_archive_dest_1','log_archive_dest_2','log_archive_dest_1','log_archive_dest_2','remote_login_passwordfile','log_archive_format','log_archive_max_processes','fal_server','db_file_name_convert','log_file_name_convert','standby_file_management')/6、将数据库备份、备份控制⽂件、备份参数⽂件su - oraclemkdir backuprman target /run{allocate channel c1 type disk;allocate channel c2 type disk;backup filesperset 3 database format '/home/oracle/backup/full_%d_%T_%s_%p';sql 'alter system archive log current';sql 'alter system archive log current';backup archivelog from time 'sysdate-1/24' format '/home/oracle/backup/arch_%d_%T_%s_%p';backup current controlfile for standby format '/home/oracle/backup/ctl_std';}7、创建备库的pfilesu - oraclemkdir backupsqlplus / as sysdbaCREATE PFILE='/home/oracle/backup/initstandby.ora' FROM SPFILE;--查看备份出来的参数⽂件cat /home/oracle/backup/initstandby.ora#################################################################################mgrdb1.__db_cache_size=14629732352mgrdb2.__db_cache_size=14361296896mgrdb1.__java_pool_size=939524096mgrdb2.__java_pool_size=939524096mgrdb1.__large_pool_size=134217728mgrdb2.__large_pool_size=402653184mgrdb1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentmgrdb2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentmgrdb1.__pga_aggregate_target=39996882944mgrdb2.__pga_aggregate_target=39460012032mgrdb1.__sga_target=24427626496mgrdb2.__sga_target=24964497408mgrdb1.__shared_io_pool_size=0mgrdb2.__shared_io_pool_size=0mgrdb1.__shared_pool_size=7784628224mgrdb2.__shared_pool_size=8321499136mgrdb1.__streams_pool_size=268435456mgrdb2.__streams_pool_size=268435456*.audit_file_dest='/u01/app/oracle/admin/mgrdb/adump'*.audit_trail='db'*.cluster_database=true*.compatible='11.2.0.4.0'*.control_files='+DATA1/mgrdb/controlfile/current.260.834178123','+DATA1/mgrdb/controlfile/current.3076.947956273'*.db_block_size=8192*.db_create_file_dest='+DATA1'*.db_domain=''*.db_file_name_convert='+DATA1','+DATA1'*.db_name='mgrdb'*.diagnostic_dest='/u01/app/oracle'*.fal_server='STANDBY'mgrdb1.instance_number=1mgrdb2.instance_number=2*.job_queue_processes=1000*.log_archive_config='dg_config=(mgrdb,mgrdbdg)'*.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdb'*.log_archive_dest_2='SERVICE=standby OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdbdg'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='%t_%s_%r.arc'*.log_archive_max_processes=10*.log_buffer=306790400*.log_file_name_convert='+DATA1','+DATA1'*.memory_max_target=64424509440*.memory_target=64424509440*.open_cursors=300*.parallel_force_local=FALSE*.pga_aggregate_target=25769803776mgrdb2.pga_aggregate_target=0mgrdb1.pga_aggregate_target=0*.processes=1000*.remote_listener='scanip:1521'*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1600*.sga_max_size=38654705664mgrdb2.sga_max_size=64424509440mgrdb1.sga_max_size=64424509440*.sga_target=38654705664mgrdb1.sga_target=0mgrdb2.sga_target=0*.shared_pool_reserved_size=288568115mgrdb2.shared_pool_reserved_size=524288000mgrdb1.shared_pool_reserved_size=524288000*.shared_pool_size=805306368mgrdb1.shared_pool_size=0mgrdb2.shared_pool_size=0*.standby_file_management='AUTO'*.streams_pool_size=268435456mgrdb2.thread=2mgrdb1.thread=1*.undo_retention=86400mgrdb2.undo_tablespace='UNDOTBS2'mgrdb1.undo_tablespace='UNDOTBS1'*.undo_tablespace='UNDOTBS2'################################################################################# 8、修改主库tnsnames.ora 【两个节点都要修改】#修改1节点:vi $ORACLE_HOME/network/admin/tnsnames.ora#拷贝到2节点scp $ORACLE_HOME/network/admin/tnsnames.ora HOSTNAME:$ORACLE_HOME/network/admin ########################################################################33 primary =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = public ip )(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdb)))primary1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdb)(SID = mgrdb1)))primary2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdb)(SID = mgrdb2)))########################################################################三、准备备库RAC Database1、复制参数⽂件从主库备份出来的参数拷贝到备库上,选择⼀个节点在主库上:scp /home/oracle/backup/initstandby.ora hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/initstandby.ora2、复制源端密码⽂件配置DG需要两边数据库密码保持⼀致,把主库的密码⽂件分别拷贝到【备库两个节点】在主库上:cd $ORACLE_HOME/dbs/scp orapwmgrdb1 hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/scp orapwmgrdb1 hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/拷贝完后修改【备库第⼆节点】的密码⽂件名:在备库2节点:cd $ORACLE_HOME/dbs/mv orapwmgrdb1 orapwmgrdb23、将主库备份⽂件拷贝到备端【因为⽤DUPLICATE⽅式,此步不做】#scp -r /home/oracle/backup hostname:/home/oracle4、按照参数⽂件中指定的⽬录去创建相关⽬录【备端1节点】:su - oraclemkdir -p /app/u01/oracle/admin/mgrdbdg/adumpchmod 775 /app/u01/oracle/admin/mgrdbdg/adump【备端2节点】:mkdir -p /app/u01/oracle/admin/mgrdbdg/adumpchmod 775 /app/u01/oracle/admin/mgrdbdg/adump5、【修改备库参数⽂件】加注释的为修改的地⽅,其他保留即可cd $ORACLE_HOME/dbsvi initstandby.ora##################################################################################################*.audit_file_dest='/app/u01/oracle/admin/mgrdbdg/adump' =============*.audit_trail='db'*.cluster_database=true*.compatible='11.2.0.4.0'*.control_files='+DATA1/mgrdbdg/controlfile/control01.ctl' =============*.db_block_size=8192*.db_create_file_dest='+DATA1' =============*.db_domain=''*.db_file_name_convert='+DATA1','+DATA1' =============*.db_name='mgrdb'*.db_unique_name='mgrdbdg' =============*.diagnostic_dest='/oracle/app/oracle' =============*.dispatchers='(PROTOCOL=TCP) (SERVICE=orcldbXDB)'*.fal_server='primary' =============orcldb2.instance_number=2orcldb1.instance_number=1*.log_archive_config='dg_config=(mgrdb,mgrdbdg)'*.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdbdg' ============= *.log_archive_dest_2='SERVICE=primary OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdb' =============*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='%t_%s_%r.arc'*.log_archive_max_processes=10*.log_file_name_convert='+DATA1','+DATA1' =============*.open_cursors=300*.pga_aggregate_target=545259520 =============*.processes=150*.remote_listener='scanip:1521' =============*.remote_login_passwordfile='EXCLUSIVE'*.sga_target=817889280*.standby_file_management='AUTO'orcldb2.thread=2orcldb1.thread=1orcldb2.undo_tablespace='UNDOTBS2'orcldb1.undo_tablespace='UNDOTBS1'##################################################################################################*.audit_file_dest='/app/u01/oracle/admin/mgrdbdg/adump'*.audit_trail='db'*.cluster_database=true*.compatible='11.2.0.4.0'*.control_files='+DATA1/mgrdbdg/controlfile/control01.ctl','+DATA1/mgrdbdg/controlfile/control02.ctl'*.db_block_size=8192*.db_create_file_dest='+DATA1'*.db_domain=''*.db_file_name_convert='+DATA1','+DATA1'*.db_name='mgrdb'*.diagnostic_dest='/app/u01/oracle'*.fal_server='primary'mgrdb1.instance_number=1mgrdb2.instance_number=2*.job_queue_processes=1000*.log_archive_config='dg_config=(mgrdb,mgrdbdg)'*.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdbdg'*.log_archive_dest_2='SERVICE=primary OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdb'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='%t_%s_%r.arc'*.log_archive_max_processes=10*.log_buffer=306790400*.log_file_name_convert='+DATA1','+DATA1'*.memory_max_target=64424509440*.memory_target=64424509440*.open_cursors=300*.parallel_force_local=FALSE*.pga_aggregate_target=25769803776mgrdb2.pga_aggregate_target=0mgrdb1.pga_aggregate_target=0*.processes=1000*.remote_listener='scanip:1521'*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1600*.sga_max_size=38654705664mgrdb2.sga_max_size=64424509440mgrdb1.sga_max_size=64424509440*.sga_target=38654705664mgrdb1.sga_target=0mgrdb2.sga_target=0*.shared_pool_reserved_size=288568115mgrdb2.shared_pool_reserved_size=524288000mgrdb1.shared_pool_reserved_size=524288000*.shared_pool_size=805306368mgrdb1.shared_pool_size=0mgrdb2.shared_pool_size=0*.standby_file_management='AUTO'*.streams_pool_size=268435456mgrdb2.thread=2mgrdb1.thread=1*.undo_retention=86400mgrdb2.undo_tablespace='UNDOTBS2'mgrdb1.undo_tablespace='UNDOTBS1'*.undo_tablespace='UNDOTBS2'################################################################################################## 6、【备库1节点】创建ASM路径通过grid⽤户进⼊到asmcmd,在备库磁盘组下创建db_unique_name⽬录su - gridasmcmdASMCMD> mkdir DATA1/mgrdbdg7、修改备库tnanames.ora 两个节点都要修改修改【备库1、2节点】tnanames.oravi $ORACLE_HOME/network/admin/tnsnames.orascp $ORACLE_HOME/network/admin/tnsnames.ora hostname:$ORACLE_HOME/network/admin################################################################################################## standby =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdbdg)))standby1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdbdg)(SID = mgrdb1)))standby2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = standby)(SID = mgrdb2)))primary =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = mgrdb)))--标注的primary服务名必须添加,否则启动mrp时⽇志会报如下错误:Error 12154 received logging on to the standbyFAL[client, MRP0]: Error 12154 connecting to orcldb fro fetching gap sequenceFAIL_CLIENT 和 FAIL_SERVER 这两个参数值都需指定⽹络服务器,并⾮是db_unique_nameFAL_SERVER=net_service_nameFAL_CLIENT=net_service_name##################################################################################################四、创建物理备库1、使⽤修改好的参数备库实例启动到nomount连接到oracle⽤户,使⽤上⾯已修改好的参数⽂件将备库实例启动到nomount仅在【备库的1节点】操作:echo $ORACLE_SIDmgrdb1sqlplus / as sysdbastartup nomount pfile = '$ORACLE_HOME/dbs/initstandby.ora'2、RMAN Duplicate复制数据库使⽤Rman Duplicate ⽅式,须先配置监听,添加静态服务名。
利用RMAN将Oracle 11g的文件系统单实例数据库移植到双机RAC+ASM环境的过程目的:利用单实例的rman全备,恢复到已有的RAC的ASM磁盘组内,删除RAC 已有的数据库,完成单实例数据库到RAC的环境迁移。
环境:单实例:sid: single版本:11.1.0.7ip: 192.168.76.160data: /home/oracle/single已有RAC:数据库:racdb版本:11.1.0.7testrac01: 192.168.76.160/161 sid: racdb1testrac02: 192.168.76.162/163 sid: racdb2data:+TESTDG/racdbdb_name: racdbsidprefix: racdbinit file: +TESTDG/racdb/spfileracdb.ora一、已有RAC的环境。
su - oracleexport ORACLE_SID=+ASM1sqlplus / as sysdbaselect name,state from v$asm_diskgroup;SQL> select name,state from v$asm_diskgroup;NAME STATE-------------------- -------------------TESTDG MOUNTEDalter system set log_archive_dest_1='Location=/arch_dir' scope=spfile sid='racdb1'; alter system set log_archive_format='racdb_%t_%s_%r.dbf' scope=spfile sid='racdb1'; alter system set log_archive_dest_1='Location=/arch_dir' scope=spfile sid='racdb2'; alter system set log_archive_format='racdb_%t_%s_%r.dbf' scope=spfile sid='racdb2';二、单实例的备份单实例和rac的版本要一致,包括小版本。
Oracle11gR2RAC高可用连接特性–SCAN详解许春植(Luocs)(阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设MongoDB一套完整的运维体系)编辑手记:感谢许春植授权独家转载其精华文章,也欢迎读者朋友向我们投稿,本文是对Oracle SCAN特性的一些介绍和总结,编辑时略有节略。
Oracle 从11g 开始推出的 SCAN 特性在 Oracle RAC 高可用连接里占据着非常重要的地位,也是以后的重点推进方向。
说在前头:文章中核心内容来自官方,当然也参考了部分前辈们整理的资料,再加以自己的理解和测试整理出的文章。
SCAN 概念什么叫 SCAN,SCAN (Single Client Access Name) 是 Oracle 从11g R2 开始推出的,客户端可以通过 SCAN 特性负载均衡地连接到 RAC 数据库。
SCAN 提供一个域名来访问 RAC,域名可以解析 1个到 3个 SCAN IP,我们可以通过 DNS 或者 GNS 来解析实现。
其中 DNS 大家都很熟悉,这里不多说。
GNS (Grid Naming Service)则是Oracle 11g R2 的新功能,可以通过DHCP 服务为节点和SCAN 分配 VIP 和 SCAN IP。
另外还有个优点是,对于新加入集群的节点,它会自动分配VIP 地址,更新集群资源,客户端依然通过SCAN 特性负载均衡地连接到新增集群节点上。
除了 DNS 和 GNS 解析方法外,SCAN 也可以使用 hosts 文件来解析,但用过的人都知道,此方法不仅在安装RAC 的时候产生问题(RAC 安装的时候的确会报错),后期使用也是存在问题的,比如SCAN 域名只能定义一个 SCAN IP。
所以这种方法也是 Oracle 不推荐使用的。
但尽管如此,我见过很多生产上依然这样使用,也就是废弃了11g 的新特性 SCAN,而是依然采用 VIP 连接方式。
Oracle11gR2RMAN配置控制⽂件⾃动备份(controlfileautobackup)通过在 RMAN 中配置 control file autobackup,RMAN 会⾃动备份控制⽂件和参数⽂件到预先设定好的路径。
触发情况:1、当数据库的结构发⽣改变时(数据库运⾏在归档模式)2、当完成 RMAN 备份后好处:即使数据库丢失了控制⽂件和恢复⽬录(recovery catalog),控制⽂件和参数⽂件也可以从⾃动备份的控制⽂件中进⾏恢复,让数据库多了⼀层保护,⽽且从autobackup中恢复控制⽂件和参数⽂件更加快速⽅便。
设置⽅法:查看现有的 RMAN 配置参数,可以看到没有启⽤控制⽂件⾃动备份,参数依旧是默认值[oracle@ATFDB1 admin]$ rman target /Recovery Manager: Release 11.2.0.3.0 - Production on Wed Dec 9 09:19:07 2015Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.connected to target database: FIRE (DBID=917673527)RMAN> show all;using target database control file instead of recovery catalogRMAN configuration parameters for database with db_unique_name FIRE are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/11.2.0/db_1/dbs/snapcf_fire.f'; # default启⽤控制⽂件⾃动备份特性RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters are successfully stored配置控制⽂件⾃动备份的路径和格式RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F';new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F';new RMAN configuration parameters are successfully stored查看重新设置的参数RMAN> show all;RMAN configuration parameters for database with db_unique_name FIRE are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/11.2.0/db_1/dbs/snapcf_fire.f'; # default通过 RMAN 备份数据库,查看是否⽣成控制⽂件⾃动备份。
Oracle数据库rman的使用方法rman修改数据库到archive状态下1.sqlplus "/as sysdba"2.archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 16Current log sequence 183.shutdown immediate;4.startup mount;5. alter database archivelog;6.shutdown immediate;7.startup;全库备份非catalog模式备份操作信息存到 CONTROLFILE 文件中rman>connect target /;rman>backup database;rman>list backupset;显示rman缺省配置show all;查看controlfile文件strings controlfile01.dbfrman 0级备份0级备份和全备份一样都是备份所有数据,但是0级备份可以作为1级2级的备份的基础,全备份则不行rman> backup incremental level=0 database;rman 备份包括归档日志文件同时删除归档日志文件rman>backup database plus archivelog delete input;显示表空间rman>report schema;备份表空间rman>backup tablespace tablespacename;备份控制文件rman>backup current controlfile备份集和镜像备份镜像备份就是拷贝文件,可以实现冷备份。
使用RMAN Duplicate进行本机对本机的复制duplicate前提条件:1,用户名必须统一,如oracle用户2,适用于本机对本机复制例:将DTLBERP复制,命名为dtlerp。
考虑到/u02磁盘空间不够,将原DTLBERP数据文件路径改为/u01路径。
1,建立dtlerp密码文件:$ orapwd file=orapwdtlerp password=oracle2,建立dtlerp init文件:# cd /u02/app/oracle2/product/10.1.0.2.0/db_2/dbs/# cp initdtlberp.ora initdtlerp.ora# vi initdtlerp.ora更改initdtlerp.ora:1),删除:*.local_listener2),新增:*.DB_FILE_NAME_CONVERT='/u02/app/oracle2/oradata/dtlberp','/u01/app/o racle/oradata/dtlerp'*.LOG_FILE_NAME_CONVERT='/u02/app/oracle2/oradata/dtlberp','/u01/app/ oracle/oradata/dtlerp'3),更改路径:db_name,xdump路径,Control_File路径,*.log_archive_dest_1路径3,按initdtlerp参数新增文件夹:$ cd admin$ mkdir dtlerp$ cd dtlerp$ mkdir adump bdump cdump dpdump pfile udump$ cd oradata$ mkdir dtlerp4,配置tnsname,Listener:Listenner:(SID_DESC =(GLOBAL_NAME = dtlerp)(ORACLE_HOME =/u02/app/oracle2/product/10.1.0.2.0/db_2)(SID_NAME = dtlerp))TNS:DTLERP =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =10.91.50.5)(PORT =1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dtlerp)))5,启动dtlerp实例:$ export ORACLE_SID=dtlerp$ sqlplus /as sysdbaSQL>create spfile from pfile='$ORACLE_HOME/dbs/initdtlerp.ora'; SQL> startup nomount;SQL>exit6,分配辅助通道:$ export ORACLE_SID=dtlberp$ $ORACLE_HOME/bin/rman target / auxiliary sys/oracle@dtlerp Recovery Manager: Release 10.1.0.2.0 - ProductionCopyright (c) 1995, 2004, Oracle. All rights reserved.connected to target database: DTLBERP (OPEN状态!!!) connected to auxiliary database: dtlerp (not mounted)7,确认拥有必备的备份:RMAN> list backup;8,如果dtlberp在archivelog模式,则先:RMAN>sql 'alter system switch logfile';9,本地复制创建:duplicate target database to dtlerp nofilenamecheck; ........contents of Memory Script:{Alter clone database open resetlogs;}executing Memory Scriptdatabase openedFinished Duplicate Db at 05-JUN-09。
Oracle 11g 基于RMAN的备份与恢复备份整个数据库C:\Users\huangluxiang>rman target/RMAN> backup database;RMAN> exit (退出)(1)重做日志损坏SQL> conn /as sysdba已连接到空闲例程。
SQL> startup mount;ORACLE 例程已经启动。
Total System Global Area 1071333376 bytesFixed Size 1375792 bytesVariable Size 729809360 bytesDatabase Buffers 335544320 bytesRedo Buffers 4603904 bytes数据库装载完毕。
SQL> recover database until cancel;完成介质恢复。
SQL> alter database open resetlogs;数据库已更改。
SQL> archive log list;数据库日志模式存档模式自动存档启用存档终点USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 1下一个存档日志序列 1当前日志序列 1备注:恢复Oracle数据库,应该备份整个数据库(2)数据库丢失数据文件,控制文件,重做日志文件C:\Users\huangluxiang>rman target/RMAN> restore controlfile from autobackup;RMAN>alter database mount;RMAN> restore database;SQL> conn /as sysdba已连接。
SQL> recover database using backup controlfile until cancel;ORA-00279: 更改990116 (在12/13/2013 14:06:05 生成) 对于线程1 是必需的ORA-00289: 建议:C:\APP\HUANGLUXIANG\FLASH_RECOVERY_AREA\DLNU\ARCHIVELOG\2013_12_13\ O1_MF_1_5_%U_.ARCORA-00280: 更改990116 (用于线程1) 在序列#5 中指定日志: {<RET>=suggested | filename | AUTO | CANCEL}cancel介质恢复已取消。
Oracle 10g可以通过基于备份的rman DUPLICATE实现dataguard,通过步骤需要对数据库进行备份,并在standby侧进行数据库的恢复。
而到了11g,oracle推出了Duplicate From Active Database技术,不需要再对数据库进行rman备份恢复,一切动作都通过网络自动完成。
1.对主数据库进行必要的更改。
a. 启用force logging。
b. 拷贝密码文件到从节点。
c. 创建备用redo 日志。
d. 修改参数文件,使其适用于Dataguard。
2. 确保sql*net 连接正常。
3. 使用主数据库活动文件,通过网络创建备用数据库。
a. 创建密码文件b. 为备用数据库(辅助数据库)创建初始化参数文件c. 为数据库文件创建需要的装载点或文件夹d. 连接至主数据库作为其目标数据库,以运行创建备用ON STANDBY。
第一步:主库(primary)的环境配置1、确认数据库处于归档模式:SQL> select log_mode from v$database;2、允许数据库强制日志SQL> ALTER DATABASE FORCE LOGGING;SQL>select force_logging from v$database;3、添加standby日志文件SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby01.log' size 100M;SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby02.log' size 100M;SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby03.log' size 100M;SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby04.log' size 100M;4,修改primary参数文件spfile,需要设置以下8个参数SQL>alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(pridb,stadb)';SQL> alter system set db_unique_name='pridb' scope=spfile;SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/opt/app/oracle/pridb VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pridb';SQL>alter system set LOG_ARCHIVE_DEST_2='SERVICE=stadb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stadb';SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;SQL> alter system set FAL_SERVER=stadb;SQL> alter system set FAL_CLIENT=pridb;SQL> alter system set DB_FILE_NAME_CONVERT='/opt/app/oracle/oradata/study','/opt/app/oracle/oradata/aux' scope=spfile;SQL> alter system set LOG_FILE_NAME_CONVERT='/opt/app/oracle/oradata/study ','/opt/app/oracle/oradata/aux' scope=spfile;第二步、网络相关配置(确保sql*net 连接正常)1、在备库stadb中的listener.ora中加入stadb的条目:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = stadb)(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1)(SID_NAME = stadb)))LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521)))2、在主库上修改service_names参数:SQL>alter system set service_names='studby,pridb';3、主库和备库的TNSNAMES.ORA 应该有两个条目:STADB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = stadb)))PRIDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.239)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = pridb)))4、在主数据库和备用数据库中使用以下命令,检查SQL*Net 配置:$tnsping pridb$tnsping stadb第三步:创建备用数据库1、从主数据库$ORACLE_HOME/dbs 中复制密码文件,并将其重命名为备用数据库名称。
RHEL7上安装11gR2单机使用ASM存储搭建PhysicalStandby笔记参考文献1.执行root.sh出现ohasd failed解决方案2.inux 7安装rac 11gR2时运行root.sh报错找不到ohas服务3.Error in invoking target 'agent nmhs' of makefile4.Oracle 11g Data Guard 使用duplicate from active database 创建 standby database一、背景介绍接到需求要安装单机使用ASM存储的数据库,原本以为是轻车熟路的事情,emm,世界上哪有那么多轻松的活给你干,废话少说,进主题吧。
二、关于安装思路一直以来搭建的都是RAC+ASM存储或者单机物理存储,这次说要安装单机+ASM存储,确实有点懵逼,不过还是迷之自信,毕竟是安装过十多套RAC+ASM存储和几十遍单机物理存储的男人。
一上手就按单机物理存储的安装模式直接安装DB软件,看DB创建过程中是不是会有什么选项可以创建并使用asm存储盘,可惜世界上并没有奇迹,在安装好DB软件创建DB的过程中发现要使用asm 存储一定要安装GI程序!于是铲除已安装好的DB程序,按照RAC+ASM存储的方式重新安装,在grid用户下安装GI,安装过程中发现没有分配给grid的那5个1g的存储,于是选择在oracle用户下作死安装GI和DB软件,结果又是一顿铲除重装。
单机+ASM存储的正确安装方式:grid用户安装GI,oracle用户安装DB,所有物理磁盘都拿来做data磁盘组!三、安装GI时的问题安装GI在执行root.sh脚本报错,报如下错误:ohasd failed to start at/u01/app/11.2.0/grid/crs/install/roothas.pl line 377, line 4./u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install/u01/app/11.2.0/grid/crs/install/roothas.pl execution failed解决方案如下:1.回退root.sh脚本操作$ORACLE_HOME/crs/install/roothas.pl -deconfig -force -verbose2.清空/var/tmp/.oracle/npohasd文件在执行root.sh脚本时出现Adding daemon to inittab的时候,在另一个窗口使用root立即执行以下命令:dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1顺利安装结束。
oracle rman duplicate 原理
Oracle RMAN Duplicate原理是通过在目标数据库上创建一个
备份数据库的副本,并将源数据库的数据和架构复制到副本数据库中。
这种复制是通过备份集或增量备份来实现的,并将这些备份集或增量备份还原到副本数据库中。
以下是Oracle RMAN Duplicate的原理:
1. 创建备份集:使用RMAN备份源数据库,生成备份集文件。
备份集包含源数据库的数据文件、控制文件和归档日志文件。
2. 传输备份集:将备份集文件从源数据库传输到目标数据库,可以通过网络或其他介质进行传输。
3. 复制控制文件和参数文件:在目标数据库上创建一个空数据库,并使用源数据库的控制文件和参数文件进行初始化。
4. 还原数据文件:使用备份集中的数据文件还原目标数据库的数据文件。
可以选择全量还原或增量还原。
5. 还原归档日志文件:使用备份集中的归档日志文件还原目标数据库中缺失的归档日志。
6. 打开数据库:打开目标数据库,并使用RMAN应用归档日
志文件,将其还原到当前的时间点。
7. 完成复制:复制过程完成后,目标数据库将与源数据库具有
相同的数据和架构,可以用于备份恢复、灾难恢复或测试目的。
需要注意的是,Oracle RMAN Duplicate需要满足一些前提条件,如源数据库和目标数据库必须处于相同版本的Oracle数
据库,目标数据库必须具备足够的存储空间来存储复制的数据等。
另外,在进行Oracle RMAN Duplicate之前,必须确保源
数据库和目标数据库之间的网络连接正常,并且可以进行文件传输。
1服务器安装1.1 操作系统安装操作系统为CentOS 5.8 x86_64注意:1.为满足Oracle安装需求,设置系统swap空间至少为内存1.5倍,最大16G2.磁盘规划部分,请参见下文操作系统设置-->创建目录部分3.建议hostname分别设置为DBSRV1和DBSRV2,和ADG环境数据库名称保持一致1.2 操作系统设置1.2.1修改共享内存vi /etc/fstabtmpfs /dev/shm tmpfs defaults,size=3276M 0 0为了启用Oracle 11g AMM特性,此处size至少设置为物理内存的80%mount -o remount /dev/shm1.2.2安装必要的包yum -y install binutils compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-* libXp.so.6 libXt.so.6 libXtst.so.6 libgcc* ksh libXp libaio-devel numactl numactl-devel sysstat unixODBC unixODBC-devel pdksh如果:pdksh包yum不到,需要手工安装# rpm -e ksh 如果和ksh有冲突,可以把ksh卸载掉# rpm -i pdksh-5.2.14-37.el5.i386.rpm# rpm -i pdksh-5.2.14-37.el5.x86_64.rpm1.2.3临时禁用防火墙chkconfig iptables offservice iptables stopsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config1.2.4内核参数######################################## vi /etc/sysctl.confkernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 6815744fs.aio-max-nr = 1048576net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576/sbin/sysctl -p######################################## vi /etc/security/limits.conf# Added for Oracle Shell Limitsoracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536grid soft nproc 2047grid hard nproc 16384grid soft nofile 1024grid hard nofile 65536######################################## vi /etc/pam.d/login# Added for Oracle Shell Limitssession required pam_limits.so1.2.5创建用户groupadd oinstallgroupadd dbagroupadd asmdbagroupadd asmadmingroupadd asmoperuseradd -g oinstall -G dba,asmdba -d /home/oracle -s /bin/bash -m oracleecho oracle | passwd --stdin oracleuseradd -g oinstall -G dba,asmdba,asmadmin,asmoper -d /home/grid -s /bin/bash -m grid echo grid | passwd --stdin grid1.2.6创建目录mkdir -p /u01/app/oraclemkdir -p /u01/app/gridmkdir -p /u01/app/grid_homemkdir -p /u01/oradatamkdir -p /u01/redomkdir -p /u02/archivelogmkdir -p /u02/rmanbackupmkdir -p /u02/dpdumpmkdir -p /home/oracle/scriptmkdir -p /home/oracle/uploadmkdir -p /home/grid/uploadchown -R oracle:oinstall /home/oraclechown -R grid:oinstall /home/gridchown -R oracle:oinstall /u01chown -R oracle:oinstall /u02chown -R grid:oinstall /u01/app/gridchown -R grid:oinstall /u01/app/grid_homechmod -R 775 /u01chmod -R 775 /u021.2.7环境变量涉及文件➢rlwrap_static_x64# cp ./rlwrap_static_x64 /usr/bin/# chmod +x /usr/bin/rlwrap*# ln -s /usr/bin/rlwrap_static_x64 /usr/bin/rlwrap# vi /home/oracle/.bash_profileexport ORACLE_HOSTNAME=`hostname`export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1export ORACLE_HOME_LISTNER=${ORACLE_HOME}export ORACLE_PATH=${ORACLE_HOME}/rdbms/adminexport ORACLE_SID=billexport PA TH=${PATH}:${ORACLE_HOME}/binexport LD_LIBRARY_PA TH=${LD_LIBRARY_PA TH}:${ORACLE_HOME}/lib export SQLPATH=~/scriptexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBKalias sqlplus='rlwrap sqlplus'alias rman='rlwrap rman'alias dgmgrl='rlwrap dgmgrl'# vi /home/grid/.bash_profileexport ORACLE_HOSTNAME=`hostname`export ORACLE_BASE=/u01/app/gridexport GI_HOME=/u01/app/grid_homeexport ORACLE_HOME=${GI_HOME}export ORACLE_HOME_LISTNER=${ORACLE_HOME}export ORACLE_PATH=${ORACLE_HOME}/rdbms/adminexport ORACLE_SID=+ASMexport PA TH=${PATH}:${ORACLE_HOME}/binexport LD_LIBRARY_PA TH=${LD_LIBRARY_PA TH}:${ORACLE_HOME}/libexport SQLPATH=~/scriptexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBKalias ct='crs_stat -t'alias asmcmd='rlwrap asmcmd'1.3 GRID软件安装本节的操作如无特殊说明,都是使用grid用户执行。
Oracle11GADG搭建RACtoSingle详细教程(RMANDUPLICATE)前言经过交流群中朋友的多次要求,这次给大家分享一下RAC to Single 的 ADG 搭建教程!一、环境准备老规矩,测试环境实战演示:主机名ip DB Version db_name db_unique_name主库节点一lucifer01 10.211.55.100 11.2.0.4 orcl主库节点二lucifer02 10.211.55.101 11.2.0.4 orcl备库luciferdg 10.211.55.110 11.2.0.4 orcl以下几点需要注意:•db_unique_name 主备库不能相同•db_name主备库需保持一致•主备库DB版本需保持一致二、搭建过程1、Oracle软件安装使用我写的Oracle 一键安装脚本,快速安装主库 RAC 和备库单机。
cd ../racdbvagrant upvagrant ssh node1su - rootcd /softsh rac_install.sh简单等待一段时间,Oracle RAC 就安装成功了!2、环境配置搭建 ADG 之前,需要先配置一下环境信息,包括主机名解析以及TNS。
1、配置 hosts 文件主库:##节点一#dgcat<<EOF>>/etc/hosts10.211.55.110 luciferdgEOF##节点二#dgcat<<EOF>>/etc/hosts10.211.55.110 luciferdgEOF备库:##dgcat<<EOF>>/etc/hosts10.211.55.100 lucifer0110.211.55.101 lucifer0210.211.55.105 lucifer-scanEOF2、配置 TNS主库+备库,在 root 用户下执行:##tnsnames.orasu - oracle -c "cat <<EOF >> /u01/app/oracle/product/11.2.0/db/network/admin/tnsnames.o ra##FOR DG BEGINORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = lucifer-scan)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCL1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = lucifer01)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCL2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = lucifer02)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCLDG =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = luciferdg)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))##FOR DG BEGINEOF"3、主库开启归档和强制日志开启归档模式(需要停机):srvctl stop database -d orcl -o immediatesrvctl start instance -d orcl -i orcl1 -o mountalter database archivelog;alter database open;srvctl start instance -d orcl -i oorcl2开启强制日志模式(可在线开启):alter database force logging;4、复制参数文件和密码文件至备库复制参数文件至备库(备库执行),要在 oracle 用户下复制:su - oraclescp oracle@lucifer01:/tmp/initorcldg.ora /tmp备库创建目录:mkdir -p /u01/app/oracle/admin/orcl/adumpsu - oracle -c "mkdir -p /oradata/orcl/datafile"su - oracle -c "mkdir -p /oradata/orcl/onlinelog"su - oracle -c "mkdir -p /oradata/orcl/tempfile"mkdir -p /u01/app/oracle/fast_recovery_area/orclchown -R oracle:oinstall /u01/app/oracle/admin/orcl/adump chown -R oracle:oinstall /u01/app/oracle/fast_recovery_area 备库修改参数文件:*._optimizer_cartesian_enabled=FALSE*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'*.audit_trail='NONE'*.compatible='11.2.0.4.0'*.db_block_size=8192*.control_files='/oradata/orcl/control01.ctl','/u01/app/oracle /fast_recovery_area/orcl/control02.ctl'*.db_create_file_dest='/oradata/orcl'*.db_domain=''*.db_name='orcl'*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_are a'*.db_recovery_file_dest_size=5501878272*.deferred_segment_creation=FALSE*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'*.event='10949 trace name context forever:28401 trace name context forever,level 1:10849 trace name context forever, level 1:19823 trace name context forever, level 90'*.open_cursors=300*.pga_aggregate_target=196083712*.processes=150*.result_cache_max_size=0*.sga_target=784334848*.db_unique_name='orcldg'*.log_archive_config='dg_config=(ORCLDG,ORCL)'*.log_archive_dest_1='location=/archivelogvalid_for=(all_logfiles,all_roles) db_unique_name=ORCLDG' *.log_archive_dest_2='service=orcl async valid_for=(online_logfiles,primary_role) db_unique_name=ORCL' *.log_archive_dest_state_2='ENABLE'*.log_archive_format='%t_%s_%r.arc'*.log_archive_max_processes=4*.remote_login_passwordfile='exclusive'*.fal_server='ORCL'*.fal_client='ORCLDG'*.db_file_name_convert='+DATA','/oradata'*.log_file_name_convert='+DATA','/oradata'*.standby_file_management='AUTO'*.undo_tablespace='UNDOTBS1'复制密码文件至备库(备库执行),要在 oracle 用户下复制:su - oraclescporacle@lucifer01:/u01/app/oracle/product/11.2.0/db/dbs/orap worcl1 /u01/app/oracle/product/11.2.0/db/dbs/orapworcl5、主库添加 stanby log 文件set pagesize100set line222col member for a60select * from v$logfile;select * from v$log;注意:•stanby log 日志大小与 redo log 日志保持一致•stanby log 数量:standby logfile=(1+logfile组数)*thread=(1+3)*1=4 组,需要加 4 组 standby logfile•thread 要与redo log 保持一致,如果是rac,需要增加多个thread 对应的 standby logALTER DATABASE ADD STANDBY LOGFILE thread 1group 5 ('+DATA') SIZE 120M,group 6 ('+DATA') SIZE 120M,group 7 ('+DATA') SIZE 120M;ALTER DATABASE ADD STANDBY LOGFILE thread 2group 8 ('+DATA') SIZE 120M,group 9 ('+DATA') SIZE 120M,group 10 ('+DATA') SIZE 120M;select * from v$standby_log;6、备库开启到 nomount 状态startup nomount pfile='/tmp/initorcldg.ora';3、RMAN DUPLICATErman 恢复备库:rman target sys/oracle@orcl1 AUXILIARY sys/oracle@orcldgrun {allocate channel prmy1 type disk;allocate channel prmy2 type disk;allocate auxiliary channel aux1 type disk;allocate auxiliary channel aux2 type disk;DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;}主库设置 ADG 参数:ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLDG)';ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATAVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=ORCL';ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcldgLGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLDG';ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;ALTER SYSTEM SET FAL_SERVER=ORCLDG;ALTER SYSTEM SET FAL_CLIENT=ORCL;ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/oradata','+DATA' SCOPE=SPFILE;ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/oradata','+DATA' SCOPE=SPFILE;ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;4、备库开启日志应用-- 首先开启备库至只读状态alter database open read only;-- 开启主备同步进程ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;-- 检查备库角色select database_role,open_mode from v$database;DATABASE_ROLE OPEN_MODE---------------- --------------------PHYSICAL STANDBY READ ONLY WITH APPLY-- 检查保护模式,最大性能SQL> SELECT protection_mode FROM v$database;PROTECTION_MODE--------------------MAXIMUM PERFORMANCE5、主库开启 LOG_ARCHIVE_DEST_STATE_2确认主备之前没有问题,主库开启同步:ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; 写在最后ADG 的搭建过程比较简单,有很多朋友经常问,单机到单机,RAC 到单机,RAC到RAC的教程。
oracle 11g r2 LogMiner的使用oracle日志分析工具LogMiner使用1.设置日期格式2.添加补充日志如果数据库需要使用logminer,就应该添加,只有添加这个日志之后的才能捕获DML3.开启归档4.安装LogMiner工具要安装LogMiner工具,必须首先要运行下面这样两个脚本,这两个脚本必须均以SYS 用户身份运行。
其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。
第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
1.$ORACLE_HOME\RDBMS\ADMIN\dbmslm.sql2. $ORACLE_HOME\RDBMS\ADMIN\dbmslmd.sql3.$ORACLE_HOME\RDBMS\ADMIN\dbmslms.sql5.使用LogMiner工具5.1、设置参数UTL_FILE_DIR数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建。
如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,这时就需要重新创建该字典文件。
另外一种情况是在分析另外一个数据库文件的重作日志时,也必须要重新生成一遍被分析数据库的数据字典文件。
在ORACLE8I的时候,首先在init.ora初始化参数文件中,指定数据字典文件的位置,也就是添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。
如:UTL_FILE_DIR = (e:\test)ORACLE9I后,推荐使用SPFILE启动,可以动态调整参数;5.2创建数据字典文件5.3 创建要分析的日志文件列表Oracle的重作日志分为两种,在线(online)和离线(offline)归档日志文件,我这里主要分析归档日志,在线日志原理一样。
---在线(online)A.创建列表B.添加另外的日志文件到列表###说明:dbms_logmnr.new --用于建一个日志分析表dbms_logmnr.addfile --用于加,入用于分析的日志文件dbms_logmnr.removefile --用于移出,用于分析的日志文件删除####说明:查看日志文件列表:5.4启动LogMiner进行分析5.4.1无限制条件5.4.2 限制条件5.5 观察分析结果(v$logmnr_contents)到现在为止,我们已经分析得到了重作日志文件中的内容。
Oracle 11gR2 DataGuard教程(Physical Standby Database)目录第1章理论基础 (4)1.1概述 (4)1.2日志发送 (4)1.2.1使用ARCH进程 (4)1.2.2使用LGWR进程的SYNC(同步)方式 (4)1.2.3使用LGWR进程的ASYNC(异步)方式 (5)1.3日志接收 (6)1.4日志应用 (6)1.5数据保护模式 (7)1.5.1最大保护(Maximum Protection) (7)1.5.2最高可用性(Maximum Availability) (7)1.5.3最高性能(Maximum Performance) (8)1.5.4修改数据保护模式 (8)第2章配置 (8)2.1配置参数说明 (8)2.1.1独立参数 (8)2.1.2主库参数 (10)2.1.3备库参数 (15)2.2环境介绍 (17)2.2.1主库环境 (17)2.2.2备库环境 (17)2.3配置过程 (18)2.3.1主库配置 (18)2.3.2备库配置 (21)2.3.3复制数据库 (23)2.4其他问题 (24)第3章角色切换 (25)3.1S WITCH O VER (25)3.1.1准备工作 (25)3.1.2主库切换为新备库 (25)3.1.3备库切换为新主库 (25)3.1.4新备库应用日志 (26)3.2F AIL O VER (26)第1章理论基础1.1概述DataGuard至少需要两个数据库,一个以READ WRITE(读写)模式打开,进行在线事务处理,角色称为Primary Database(主库),一个以READ ONLY(只读)模式打开,接收重做日志并重新应用,角色称为Standby Database(备库)。
用户连接主库进行事务处理,更改操作被记录在联机重做日志和归档重做日志中,这些日志通过网络发送给备库并在备库上重新应用,最终实现主备库数据同步。
oracle rman备份设置(用于双重备份rman备份到其他电脑,而dump 备份到本机/u02/oradata/orarmanbak下)主要功能:使用rman来备份oracle数据库,然后通过rsync复制到另外的机器上。
##在cron中运行(每天早上 1:02执行)/var/spool/cron/root#crontab -ecat>>/var/spool/cron/root<<EOF2 1 * * * /script/orarmanbak.sh >>/script/orarmanbak.log 2>&11 2 * * * /script/oradumpbak.sh >>/script/oradumpbak.log 2>&1EOF全量备份:##0确认已经启用归档模式SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /u02/oradata/center/archiveSQL>select tablespace_name from dba_tablespaces ;//查看oracle所有表空间,以便于dump备份##1.创建备份目录mkdir /u02/oradata/orarmanbakchown oracle.oinstall /u02/oradata/orarmanbak#mkdir -p /u02/oradata/orarmanbak/dumpdir#chgrp -R oinstall /u02/oradata/orarmanbak/dumpdir#chown -R oracle /u02/oradata/orarmanbak/dumpdir##2.创建备份脚本mkdir /scripttouch /script/orarmanbak.shchmod 777 /script/orarmanbak.shtouch /script/dump.shchmod 777 /script/dump.shtouch /script/oradumpbak.shchmod 777 /script/oradumpbak.shvi /script/orarmanbak.sh内容如下(请按实际情况修改BACKDIR,RPORT,RHOST,RDID,其中后三项为存放备份文件的服务器)#!/bin/bash#function: backup oracle script with rman.#usage: crontab on linux#exsample: 2 1 * * * /script/orabackup.sh >>/script/orabackup.log 2>&1BACKDIR=/u02/oradata/orarmanbakRPORT=65422RHOST=192.168.60.11RDIR=/opt/oraclebak#rman backupif [ ! -d $BACKDIR ] ; thenmkdir -p $BACKDIRchown oracle.oinstall $BACKDIRfi#su - oracle -c "rman target / cmdfile /scripts/rmancmd"su - oracle -c "rman target / <<EOFrun {configure retention policy to redundancy 3;configure controlfile autobackup on;# configure device type disk parallelism 1 backup type to compressed backupset ; #此行为压缩备份,针对空间不够的情况下用configure controlfile autobackup format for device type disk to '$BACKDIR/%F';allocate channel c1 type disk;backup databaseformat '$BACKDIR/$Ddir/db_%d_%T_s%s_p%p.rmn'plus archivelogformat '$BACKDIR/$Ddir/arch_%d_%T_s%s_p%p.rmn'delete all input;release channel c1;}run {allocate channel c1 type disk;crosscheck backupset;delete noprompt force obsolete;release channel c1;}exit;EOF"##rsync to other machine,if no need,pls commentsu - oracle -c "rsync -avz --delete -e 'ssh -p $RPORT' $BACKDIR/ oracle@$RHOST:$RDIR"vi /script/oradumpbak.sh#!/bin/bashBACKDIR=/u02/oradata/orarmanbakRPORT=65422RHOST=192.168.60.11RDIR=/opt/oraclebak#dmp backupDdir=`date +"%d"`Adir=`date --date="15 days ago" +"%d"`rm -rf $BACKDIR/$Adir &&mkdir -p $BACKDIR/$Ddir &&chown -R oracle:oinstall $BACKDIR/$Ddirsu - oracle -c "/script/dump.sh" &&#scp#mv $BACKDIR/dumpdir/* $BACKDIR/$Ddir##rsync to other machine,if no need,pls commentsu - oracle -c "rsync -avz --delete -e 'ssh -p $RPORT' $BACKDIR/ oracle@$RHOST:$RDIR"vi /script/dump.sh内容如下:内容 2.0的#!/bin/bashBACKDIR=/u02/oradata/orarmanbakDdir=`date +"%d"`exp zdcenter/zdsoft file=$BACKDIR/$Ddir/oracenter$Ddir.dmp log=$BACKDIR/$Ddir/oracenter$Ddir.logexp zdnetdisk/zdsoft file=$BACKDIR/$Ddir/oranetdisk$Ddir.dmp log=$BACKDIR/$Ddir/oranetdisk$Ddir.log2.5dump.sh内容#!/bin/bashBACKDIR=/u02/oradata/orarmanbakDdir=`date +"%d"`exp passport/zdsoft file=$BACKDIR/$Ddir/orapassport$Ddir.dmp log=$BACKDIR/$Ddir/orapassport$Ddir.logexp ess/zdsoft file=$BACKDIR/$Ddir/oraess$Ddir.dmplog=$BACKDIR/$Ddir/oraess$Ddir.logexp eis/zdsoft file=$BACKDIR/$Ddir/oraeis$Ddir.dmplog=$BACKDIR/$Ddir/oraeis$Ddir.logexp base/zdsoft file=$BACKDIR/$Ddir/orabase$Ddir.dmplog=$BACKDIR/$Ddir/orabase$Ddir.logexp office/zdsoft file=$BACKDIR/$Ddir/oraoffice$Ddir.dmplog=$BACKDIR/$Ddir/oraoffice$Ddir.logexp train/zdsoft file=$BACKDIR/$Ddir/oratrain$Ddir.dmplog=$BACKDIR/$Ddir/oratrain$Ddir.logexp netdisk/zdsoft file=$BACKDIR/$Ddir/oradisk$Ddir.dmplog=$BACKDIR/$Ddir/oradisk$Ddir.log##4.rsync到远程机器的必要设置在备份机上操作(如192.168.60.11):增加 oracle用户,并将密码设置为123456useradd oracleecho "zdsoft@net"|passwd oracle --stdin创建/data/oraback目录(请跟前面的$RDIR相同)mkdir -p /opt/oraclebakchown -R oracle /opt/oraclebak用oracle创建.ssh目录su - oraclemkdir /home/oracle/.sshchmod 0700 /home/oracle/.ssh在本机上操作:oracle用户下生成无passphrase的密钥对su - oraclessh-keygen (等于ssh-keygen -t rsa)打三个回车生成的密钥对在/home/oracle/.ssh/ 下将公钥复制到备份机上scp -P 65422 /home/oracle/.ssh/id_rsa.puboracle@192.168.60.11:/home/oracle/.ssh/authorized_keys2测试一下oracle用户是否不用密码就可以登录远程机器了。
解决OracleRMAN删除归档⽇志不释放问题的⽅法前⾔当Oracle 归档⽇志满了后,将⽆法正常登⼊oracle,需要删除⼀部分归档⽇志才能正常登⼊ORACLE。
最近同事在⼯作中遇到⼀个问题,他那边的⼀套Oracle 11g数据库使⽤RMAN没办法删除旧的归档,导致磁盘使⽤率很⾼。
oracle@ps251n2s:[/opt/oracle/archive/db] ls -ltr |moretotal 3059881082-rw-r----- 1 oracle oinstall 725320704 May 20 2016 1_1_91233774.dbf-rw-rw---- 1 oracle oinstall 1756937216 Jun 7 2016 1_2_91233774.dbf-rw-rw---- 1 oracle oinstall 1756731392 Jun 21 2016 1_3_91233774.dbf-rw-rw---- 1 oracle oinstall 1758001152 Jul 3 2016 1_4_91233774.dbf-rw-rw---- 1 oracle oinstall 1756729344 Jul 15 2016 1_5_91233774.dbf-rw-rw---- 1 oracle oinstall 1765750784 Jul 26 22:00 1_6_91233774.dbf-rw-rw---- 1 oracle oinstall 1760346112 Aug 6 14:04 1_7_91233774.dbf......使⽤RMAN list archivelog all;查看⽇志也没有显⽰旧归档⽇志的记录RMAN> list archivelog all;using target database control file instead of recovery catalogList of Archived Log Copies for database with db_unique_name DBS=====================================================================Key Thrd Seq S Low Time------- ---- ------- - ---------1206 1 1206 A 14-JAN-17Name: /opt/oracle/archive/db/1_1206_91233774.dbf1207 1 1207 A 14-JAN-17Name: /opt/oracle/archive/db/1_1207_91233774.dbf1208 1 1208 A 14-JAN-17Name: /opt/oracle/archive/db/1_1208_91233774.dbf......使⽤crosscheck检查也没有查到旧归档⽇志记录RMAN> crosscheck archivelog all;using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=16 device type=DISKvalidation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1206_91233774.dbf RECID=1206 STAMP=933244655validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1207_91233774.dbf RECID=1207 STAMP=933249510validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1208_91233774.dbf RECID=1208 STAMP=933254500validation succeeded for archived logarchived log file name=/opt/oracle/archive/db/1_1209_91233774.dbf RECID=1209 STAMP=933259445validation succeeded for archived log查看v$archived_log视图也没有旧归档⽇志记录解决过程于是在⽹上找到⼀篇⽂章,⼤体意思是MAN删除归档⽇志的依据是controlfile中记录的归档⽇志,⽽不是你磁盘上实际存在的归档⽇志,如果你的归档⽇志已经不在controlfile中就⽆法被RMAN识别到,也就⽆法被删除。
在Oracle 10g下,我们可以使用RMAN duplicate 命令创建一个具有不同DBID 的复制库。
到了Oracle 11gR2,RMAN 的duplicate 有2种方法实现:1. Active database duplication2. Backup-based duplicationActive database duplication 通过网络,直接copy target 库到auxiliary 库,然后创建复制库。
这种方法就不需要先用RMAN 备份数据库,然后将备份文件发送到auxiliary端。
这个功能的作用是非常大的。
尤其是对T级别的库。
因为对这样的库进行备份,然后将备份集发送到备库,在进行duplicate 的代价是非常大的。
一备份要占用时间,二要占用备份空间,三在网络传送的时候,还需要占用带宽和时间。
所以Active database duplicate 很好的解决了以上的问题。
它对大库的迁移非常有用。
如果是从RAC duplicate 到单实例,操作是一样的。
如果是从单实例duplicate 到RAC。
那么先duplicate 到单实例。
然后将单实例转换成RAC。
Oracle 10g 下Rman duplicate 的例子参考:RMAN 异机复制数据库下面我们看一下11gR2下,Active Database Duplicate的步骤如下:1. 创建Auxiliary 库的Initialization Parameter:如果使用spfile,那么在pfile文件里只需要设置一个DB_NAME参数,其他参数会在duplicate 命令中自己设置。
如果使用pfile,那么需要设置如下参数:DB_NAMECONTROL_FILESDB_BLOCK_SIZEDB_FILE_NAME_CONVERTLOG_FILE_NAME_CONVERTDB_RECOVERY_FILE_DEST2. 在Auxiliary库创建Password File 文件对于Backup-based duplication,Password File 不是必须的,但是对于Active Database Duplication,Password File是必须的。
因为Active Database Duplication 使用相同的SYSDBA 密码直接连接到auxiliary 库。
所以,确保target 和Auxiliary 库的SYSDBA 密码一样很重要。
当然,我们也可以在duplicate 命令中加上PASSWORD FILE 选项(也是默认值),这样RMAN 在copy 的时候也会从target 库把密码文件copy过来,如果auxiliary库上已经存在了Password file,那么该操作会重写那个文件。
如:RMAN> DUPLICATE TARGET DATABASE TO Dave2> FROM ACTIVE DATABASE3> NOFILENAMECHECK4> PASSWORD FILE5> SPFILE;3. 如果是windows 平台,还需要创建Database service:% set ORACLE_SID=DAVE% set ORACLE_HOME=E:/oracle/product/11.1.0/db_1% oradim -NEW -SID DAVE4. 配置oracle net,修改listener.ora和the tnsnames.ora 文件:在Target 库和Auxiliary 都要修改。
这个也可以使用netca 和netmgr命令配置。
Listener.ora[oracle@qs-dmm-rh1 admin]$ cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost6.localdomain6)(PORT = 1521))))ADR_BASE_LISTENER = /u01/app/oracleSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)(SID_NAME = orcl)))tnsname.ora[oracle@qs-dmm-rh1 admin]$ cat tnsnames.oraORCL_ST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.43)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCL_PD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.42)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))5. 用第一步创建的pfile文件,将Auxiliary启动到nomout 状态。
然后进行Active Database duplicate。
我们看一个完整的复制示例:Target DB:IP: 192.168.2.42SID:orclAuxiliary:IP:192.168.2.43SID:orcl我这里复制的目录相同。
如果不同的话需要在pfile里面加入db_file_name_convert和log_file_name_convert.1. 在Auxiliary 创建pfile 参数文件:[oracle@qs-dmm-rh2 dbs]$ pwd/u01/app/oracle/product/11.2.0/dbhome_1/dbs[oracle@qs-dmm-rh2 dbs]$ cat initorcl.oraDB_NAME=orcl只有一个参数: DB_NAME2. 在Auxiliary库上创建口令文件[oracle@qs-dmm-rh2 admin]$ orapwd file=?/dbs/orapworcl password=oracle3. 在Auxiliary库创建相关的目录结构:[oracle@qs-dmm-rh2 trace]$ mkdir -p /u01/app/oracle/oradata/orcl不然在duplicate时会报如下错误:ORA-19505: failed to identify file "/u01/app/oracle/oradata/orcl/users01.dbf"ORA-27040: file create error, unable to create file4. 启动Auxiliary 到nomout 状态:[oracle@qs-dmm-rh2 admin]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Tue Mar 8 00:28:48 2011Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> conn / as sysdba;Connected to an idle instance.SQL> startup nomount pfile=?/dbs/initorcl.oraORACLE instance started.Total System Global Area 146472960 bytesFixed Size 1335080 bytesVariable Size 92274904 bytesDatabase Buffers 50331648 bytesRedo Buffers 2531328 bytesSQL>5. 在Target 和Auxiliary 都配置Oracle Net(Listener.ora and tnsnames.ora):[oracle@qs-dmm-rh1 admin]$ cat listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost6.localdomain6)(PORT = 1521)) ))ADR_BASE_LISTENER = /u01/app/oracleSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)(SID_NAME = orcl)))[oracle@qs-dmm-rh1 admin]$ cat tnsnames.oraORCL_ST =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.43)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCL_PD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.42)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))6. 开始RMAN duplicate from active database:注意:如果target 和 Auxiliary库的目录结构相同,记得加上nofilenamecheck参数,不然会报如下错误:RMAN-05001: auxiliary file name /u01/app/oracle/oradata/orcl/users01.dbf conflicts with a file used by the target database如果目录不同,在pfile里加如下2个参数进行转换:db_file_name_convertlog_file_name_convert.[oracle@qs-dmm-rh2 dbs]$ rman target sys/oracle@orcl_pd auxiliary sys/oracle@orcl_stRecovery Manager: Release 11.2.0.1.0 - Production on Tue Mar 8 01:01:42 2011Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: ORCL (DBID=1272955137)connected to auxiliary database: ORCL (not mounted)RMAN> duplicate target database to orcl from active database nofilenamecheck;Starting Duplicate Db at 08-MAR-11using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1channel ORA_AUX_DISK_1: SID=20 device type=DISKcontents of Memory Script:{sql clone "create spfile from memory";}executing Memory Scriptsql statement: create spfile from memorycontents of Memory Script:{shutdown clone immediate;startup clone nomount;}executing Memory ScriptOracle instance shut downconnected to auxiliary database (not started)Oracle instance startedTotal System Global Area 146472960 bytesFixed Size 1335080 bytesVariable Size 92274904 bytesDatabase Buffers 50331648 bytesRedo Buffers 2531328 bytescontents of Memory Script:{sql clone "alter system set db_name =''ORCL'' comment=''Modified by RMAN duplicate'' scope=spfile";sql clone "alter system set db_unique_name =''ORCL'' comment=''Modified by RMAN duplicate'' scope=spfile";shutdown clone immediate;startup clone force nomountbackup as copy current controlfile auxiliary format '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/cntrlorcl.dbf';alter clone database mount;}executing Memory Scriptsql statement: alter system set db_name = ''ORCL'' comment= ''Modified by RMAN duplicate'' scope=spfilesql statement: alter system set db_unique_name = ''ORCL'' comment= ''Modified by RMAN duplicate'' scope=spfileOracle instance shut downOracle instance startedTotal System Global Area 146472960 bytesFixed Size 1335080 bytesVariable Size 92274904 bytesDatabase Buffers 50331648 bytesRedo Buffers 2531328 bytesStarting backup at 08-MAR-11allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=43 device type=DISKchannel ORA_DISK_1: starting datafile copycopying current control fileoutput file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f tag=TAG20110308T010214 RECID=3 STAMP=745203735channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01database mountedcontents of Memory Script:{set newname for datafile 1 to"/u01/app/oracle/oradata/orcl/system01.dbf";set newname for datafile 2 to"/u01/app/oracle/oradata/orcl/sysaux01.dbf";set newname for datafile 3 to"/u01/app/oracle/oradata/orcl/undotbs01.dbf";set newname for datafile 4 to"/u01/app/oracle/oradata/orcl/users01.dbf";backup as copy reusedatafile 1 auxiliary format"/u01/app/oracle/oradata/orcl/system01.dbf" datafile 2 auxiliary format"/u01/app/oracle/oradata/orcl/sysaux01.dbf" datafile 3 auxiliary format"/u01/app/oracle/oradata/orcl/undotbs01.dbf" datafile 4 auxiliary format"/u01/app/oracle/oradata/orcl/users01.dbf" ;sql 'alter system archive log current';}executing Memory Scriptexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEusing channel ORA_DISK_1channel ORA_DISK_1: starting datafile copy--在这里开始copy 数据文件,比较慢。