环境规划:

节点1: tc1 192.168.56.101 内存:2G

节点2: tc2 192.168.56.102 内存:2G

物理备库:tcdg192.168.56.108内存:1.5G

操作系统:Windows 2008 R2 Enterprise

************

 RAC部分

************





一、准备工作






1.改动提升权限提示方式为“不提示,直接提升”(默觉得“非Windows二进制文件的允许提示”)

cmd> secpol.msc->本地策略->安全选项->用户账户控制->管理员批准模式中管理员的提升权限提示的行为





2.禁用防火墙

cmd> firewall.cpl->打开或关闭防火墙->关闭Window防火墙





3.改动注冊表关闭DHCP媒体感知(改动后重新启动生效)

cmd> regedit->\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters以下加入一项,名字是DisableDHCPMediaSense,类型为DWORD,值为1





4.检查是否生效

cmd> netsh interface ipv4 show global

DHCP 媒体感知 :enabled





5.关闭可伸缩网络包(SNP)特性(改动后马上生效)

cmd> netsh int tcp set global rss=disabled

cmd> netsh int tcp set global chimney=disabled





c:\grid>netsh int tcp show global

查询活动状态...





TCP 全局參数

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

接收方缩放状态                    : disabled

烟囱卸载状态                      : disabled

NetDMA 状态                       : enabled

直接缓存訪问(DCA)                 : disabled

接收窗体自己主动调谐级别              : normal

附加拥塞控制提供程序              : ctcp

ECN 功能                          : disabled

RFC 1323 时间戳                   : disabled





6.调整网络绑定顺序

cmd> ncpa.cpl->高级->高级设置->调整public在前,private在后,而且确保IPV4协议在IPV6协议之前





7.停止Distributed Transaction Coordinator,并设置成手动启动

cmd> services.mcs->点属性改动





8.同步各节点时间(可选)

通常节点之间的时间是由CTSSD(Cluster Time Synchronization Services Daemon)或 Windows Time Service来保证的,假设开启了Windows Time Service(默认关闭),那么必须保证不会被反向改动,须要做下面调整

cmd> regedit->\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

把MaxNegPhaseCorrection的值改为0

cmd> w32tm /config /update  --使改动生效





9.环境变量设置(可选)

装完系统默认应该已经有TMP和TEMP这两个环境变量了,路径都为%USERPROFILE%\AppData\Local\Temp

因为在安装OUI的时候,会用到这2个环境变量。所以假设没有的话须要加入上。而且确保路径是一致的





10.改动C:\windows\system32\etc\hosts

#public ip

192.168.56.101 tc1

192.168.56.102 tc2

#virtual ip

192.168.56.103 tc1-vip

192.168.56.104 tc2-vip

#private ip

10.0.0.1 tc1-priv

10.0.0.2 tc2-priv

192.168.56.105 tc-cluster-scan
--格式为"cluster名-scan"





11.full clone节点1至节点2

启动并改动节点2的网卡ip地址和主机名后再次重新启动





12.測试连通性

节点1运行

cmd> ping tc2

cmd> ping tc2-vip

cmd> ping tc2-priv

cmd> net use \\tc2\c$

节点2运行(略)





13.測试远程注冊表

节点1运行

cmd> regedit->文件->连接网络注冊表->输入tc2->检查名称-确定

节点2运行(略)





二、配置共享磁盘





1.共享磁盘划分规划

DISK1 TC_OCR_VOTE1
1G

DISK2 TC_OCR_VOTE2
1G

DISK3 TC_OCR_VOTE3
1G

DISK1 TC_DATA12G

DISK5 TC_DATA22G

DISK6 TC_FRA1
2G

DISK7 TC_FRA2
2G





从11g開始。Oracle推荐把OCR和VOTEDISK放到ASM中进行管理。所以这里共划分了7块磁盘,3块用于磁盘组OCRVOTE,採用NORMAL冗余。2块用于DATA,2块用于FRA。都是外部冗余。注意。这里分配的用于创建ASM磁盘组的磁盘必须是不带盘符的裸磁盘,在Windows 2003中。能够用diskmgmt.msc来取代diskpart来创建磁盘分区,可是在Windowns 2008中仅仅能用diskpart来分区





2.设置自己主动挂载(全部节点)

cmd> diskpart

diskpart> automount enable





3.清除磁盘(节点1)

cmd> list disk

cmd> select disk 1

cmd> clean all

...

cmd> select disk 7

cmd> clean all





4.创建扩展分区和逻辑磁盘(节点1)

cmd> select disk 1

cmd> create part ext

cmd> create part log

...

cmd> select disk 7

cmd> create part ext

cmd> create part log





5.删除逻辑磁盘盘符(节点2)

本地节点上用diskpart创建完扩展分区和逻辑盘后不会显示逻辑盘符,但其它节点上可能会有,须要所有去除。注意,刚在节点2需重新启动才干发现节点1上对磁盘的分区

cmd> select disk 3 --注意相应的逻辑驱动器卷标。并非从1開始的

cmd> remov

...

cmd> select disk 9

cmd> remov





6.用asmtool或asmtoolg来划分asm磁盘组分区

进入grid安装介质中,如:C:\grid\asmtools。执行amstoolg

选中要加入到同一个磁盘组的盘。输入磁盘组名称。点击下一步





三、安装Grid Infrastructure软件





1.预检安装条件是否满足

C:\grid> runcluvfy stage -pre crsinst -n tc1,tc2 -verbose

C:\grid> runcluvfy stage -post hwos -n tc1,tc2 -verbose

会提示集群服务配置失败,由于此时并没有配置过vip,忽略。

另一个警告是无法将用户 "Administrator" 作为域用户进行验证,这个能够忽略。最后一个警告是提示防火墙没有关闭。但检查了一下,确实是关闭的,依据后面OUI里面的提示。通过改动注冊表能够关闭防火墙。

可是后来发现是由于域配置文件里的防火墙没有关造成的

2.安装(略)

               
     

四、安装Database软件





1.预检安装条件是否满足

C:\grid> runcluvfy stage -pre dbinst -n tc1,tc2 -verbose





2.安装(略)

安装数据库软件卡在100%,卡了大约1个小时,多数是由于系统资源不够。測试环境内存太小。分配了2G也勉强能用,以为卡死掉了,只是耐心等待后最终全然装好。好费劲啊

结束之后要在远程节点运行ORACLE_HOME/bin/selecthome.bat,以激活下面5个产品:

Oracle Data Provider for .NET

Oracle Provider for OLE DB

Oracle Objects for OLE

Oracle Counters for Windows Performance Monitor

Oracle Administration Assistant





五、创建磁盘组(ASMCA)





1.创建+DATA和+FRA磁盘组

C:\Users\Administrator>set oracle_home=c:\app\11.2.0\grid

C:\Users\Administrator>set oracle_sid=+asm1

C:\Users\Administrator>asmcmd

ASMCMD> ls

DATA/

FRA/

OCRVOTE/





2.创建OCR镜像备份

尽管之前已经单独为OCR和VOTEDISK创建了一个磁盘组。但Oracle建议至少在其它磁盘组中存放OCR的镜像,注意,每一个磁盘组仅仅能存放一个OCR镜像

C:\Users\Administrator>asmcmd lsof

DB_Name  Instance_Name  Path

+ASM     +asm1          +ocrvote.255.4294967295

因为此时并未创建数据库实例。所以眼下仅仅有在+OCRDATE磁盘组中有唯一的一个文件。就是OCR文件





C:\Users\Administrator>asmcmd

ASMCMD> cd ocrvote/tc-cluster/ocrfile

ASMCMD> ls

REGISTRY.255.854982335

ASMCMD> pwd

+ocrvote/tc-cluster/ocrfile

注意。OCR实际的文件名称是REGISTRY.255.854982335,而并非+ocrvote.255.4294967295。这仅仅是一个路径





OCR文件的备份方式





--自己主动备份

C:\Users\Administrator>ocrconfig -showbackup

PROT-24: Oracle 集群注冊表的自己主动备份不可用

PROT-25: Oracle 集群注冊表的手动备份不可用





默认Oracle会提供5份自己主动备份,按月、星期、天、以及保留最后3次修改。也能够手动运行备份,因为是新部署的环境,所以自己主动备份还未生成,也没有运行过手动备份





--手工备份

C:\Users\Administrator>ocrconfig -manualbackup





tc2     2014/08/08 11:05:30     C:\app\11.2.0\grid\cdata\tc-cluster\backup_20140808_110530.ocr

默认存放在“%ORACLE_CRS_HOME%\cdata\集群名\”以下,文件名称格式为“backup_xxxxxxxx_xxxxxx.orc”

这个默认位置能够通过-backuploc參数来改

C:\Users\Administrator>ocrconfig -backuploc c:\app





C:\Users\Administrator>ocrconfig -manualbackup





tc2     2014/08/08 11:20:38    
c:\app\backup_20140808_112038.ocr





tc2     2014/08/08 11:05:30     C:\app\11.2.0\grid\cdata\tc-cluster\backup_20140808_110530.ocr





注意,以上命令我是在tc1节点上运行的,可是默认却放到了tc2节点的本地路径,我又尝试在节点2上再次运行手工备份。依旧是在tc2节点本地指定的路径生成OCR备份,难道是Oracle专门这样设计的吗?





--导出/导入到本地磁盘的方式

ocrconfig -export C:\ocr_bak.ocr

ocrconfig -import C:\ocr_bak.ocr



注意:利用自己主动或手动备份进行恢复是用restore而不是import





--在磁盘组中加入OCR冗余

C:\Users\Administrator>ocrconfig -add +DATA

C:\Users\Administrator>ocrconfig -add +FRA

C:\Users\Administrator>ocrcheck

Oracle 集群注冊表的状态例如以下:

         版本号                  :          3

         总空间 (KB)     :     262120--总共才250M左右

         已用空间 (KB)      :      

         可用空间 (KB):     259312

         ID                       :  513928542

         设备/文件名称         :   +OCRVOTE

                                    设备/文件完整性检查成功

         设备/文件名称         :      +DATA

                                    设备/文件完整性检查成功

         设备/文件名称         :       +FRA

                                    设备/文件完整性检查成功





                                    设备/文件尚未配置





                                    设备/文件尚未配置





         集群注冊表完整性检查成功





         逻辑损坏检查成功





这里在+DATA和+FRA磁盘组都配置了OCR的备份,能够看到。Oracle提供最多5个位置用来备份OCR





能够看到。Oracle提供了多种备份ORC的方法,在10g中,用得比較多的就是存放在多个RAW设备上,然后用export/import到RAW磁盘的方式进行备份恢复,到了11g,Oracle把OCR放入了磁盘组。默认就是放VOTEDISK的那个磁盘组。而且建议在其它磁盘组中创建冗余





3.查看表决磁盘

C:\Users\Administrator>crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group

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

 1. ONLINE   7a6a6919ffe84fcfbf1e242c18f0b93e (\\.\ORCLDISKOCRVOTE2) [OCRVOTE]

 2. ONLINE   5857035b4da74fb3bf2f9c7d79a8aa2e (\\.\ORCLDISKOCRVOTE1) [OCRVOTE]

 3. ONLINE   7dd5966551d84fcbbffd88b32c038537 (\\.\ORCLDISKOCRVOTE0) [OCRVOTE]

找到了 3 个表决磁盘。

六、创建数据库实例(DBCA)





1.预检之前安装的RAC数据库软件是否正常

c:\grid> runcluvfy stage -pre dbcfg -n all -d C:\app\11.2.0\grid -verbose





2.创建数据库实例

c:\grid> dbca

***********

  DG部分

***********





*****主库配置*****






1.开启归档和force logging

SQL> select database_role,log_mode,force_logging from v$database;





DATABASE_ROLE    LOG_MODE     FOR

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

PRIMARY          ARCHIVELOG  
NO





SQL> alter database force logging;





2.改动主库DG配置须要的參数

SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(tc,tcdg)';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=tc';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=tcdgLGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=tcdg';

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

SQL> ALTER SYSTEM SET FAL_SERVER=tcdg;

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';





默认情况下,假设不指定scope,默认是both,这里我们须要让设置的參数在内存和spfile同一时候生效,所以能够不加scope=both。

此外,数据库默认的db_unique_name=db_name,因此也不作改动





SQL> show parameter db_unique_name





NAME                                 TYPE        VALUE

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

db_unique_name                       string  
   tc





下面两个參数改动后,需重新启动生效,必须加上scope=spfile

SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='C:\app\oracle\oradata\tc','+data/tc/datafile' scope=spfile;

SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='C:\app\oracle\oradata\tc','+data/tc/onlinelog' scope=spfile;





生产环境停库须要先停应用,再停监听,运行检查点,把在线日志归档

C:\Users\Administrator>srvctl stop listener -n tc1

C:\Users\Administrator>srvctl stop lisetner -n tc2

SQL> alter system checkpoint;

SQL> alter system archive log current;

C:\Users\Administrator>srvctl stop database -d tc





再启动数据库(注意,启动数据库时,会自己主动开启监听)

C:\Users\Administrator>srvctl start database -d tc





SQL> show parameter file_name_convert





NAME                                 TYPE        VALUE

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

db_file_name_convert                 string      C:\app\oracle\oradata\tc, +data/tc/datafile

log_file_name_convert                string      C:\app\oracle\oradata\tc, +data/tc/onlinelog

能够看到,2个转换文件名称的參数已经生效了





3.创建tnsnames.ora和listener.ora

C:\Users\Administrator>netca。加入备库的NET SERVICE NAME:tcdg

也能够在原有的tnsnames.ora中进行改动。那么就不用netca了





改动完的内容例如以下:

# tnsnames.ora Network Configuration File: C:\app\oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.





TC =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = tc-cluster-scan)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = tc)

    )

  )





TCDG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.108)(PORT = 1521))  --这里HOST究竟用主机名还是IP能够依据需求

    )

    (CONNECT_DATA =

      (SERVICE_NAME = tc)--注意这里是tc而不是tcdg,由于实例名和主库保持一致

    )

  )





注意,因为GI的监听是在%ORACLE_CRS_HOME%/network/admin中的,即C:\app\11.2.0\grid\NETWORK\ADMIN,而不是单实例的%ORACLE_HOME%/network/admin。即C:\app\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN





默认RAC数据库是用grid下的netca来创建监听的,能够通过下面命令查看

C:\Users\Administrator>call C:\app\11.2.0\grid\BIN\netca





Oracle Net Services 配置:

Oracle Net Configuration Assistant 是从网格基础结构主文件夹启动的。网络配置将是集

群范围的。

在打开的配置界面中。能够看到已经有一个LISTENER的监听了,打开C:\app\11.2.0\grid\NETWORK\ADMIN下的listener.ora,发现内容例如以下。和我们熟悉的listener.ora并不同:





LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))# line added by Agent

LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))# line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON
# line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent





已经有2个监听了,而我们须要的是能用于单实例的监听,又不和原有动态监听冲突,所以考虑给主库创建一个静态监听。用net manager应用程序来创建,完毕后会在%ORACLE_HOME%/network/admin文件夹下生成一个listener.ora的文件,内容例如以下:





# listener.ora Network Configuration File: C:\app\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora

# Generated by Oracle configuration tools.





SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = tc)

      (ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)

      (SID_NAME = tc1)--注意是节点1的实例,所以是tc1,不能写成tc

    )

  )





LISTENER =

  (DESCRIPTION =

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

  )





ADR_BASE_LISTENER = C:\app\oracle\product\11.2.0\dbhome_1\log





假设配置正确。那么会显演示样例如以下的监听状态:

C:\Users\Administrator>lsnrctl status

...

服务摘要..

服务 "+ASM" 包括 1 个实例。

  实例 "+asm1", 状态 READY, 包括此服务的 1 个处理程序...

服务 "tc" 包括 2 个实例。

  实例 "tc1", 状态 UNKNOWN, 包括此服务的 1 个处理程序...

  实例 "tc1", 状态 READY, 包括此服务的 1 个处理程序...

服务 "tcXDB" 包括 1 个实例。

  实例 "tc1", 状态 READY, 包括此服务的 1 个处理程序...

命令运行成功



1个动态监听,1个静态监听。都为实例tc1创建了服务tc



4.创建password文件(可省略)

C:\Users\Administrator>orapwd file=pwdtc1.ora password=oracle entries=5 





5.创建备库初始化參数文件

SQL> create pfile='c:\inittc1.ora' from spfile;





6.复制tnsnames.ora,listener.ora。password文件。初始化參数文件到备库对应位置





*****备库配置*****





1.依据pfile创建对应的文件夹

mkdir C:\app\oracle\admin\tc\adump

mkdir C:\app\oracle\admin\tc\dpdump

mkdir C:\app\oracle\admin\tc\hdump

mkdir C:\app\oracle\admin\tc\pfile

mkdir C:\app\oracle\oradata\tc

mkdir C:\app\oracle\flash_recovery_area



能够仅仅创建红色部分



2.把从主库复制过来的文件做对应改动,在这些文件里,除了tnsnames.ora能够原封不动,其它都须要进行对应改动,包含改动文件名称,改动完的pfile内容例如以下:

*.__db_cache_size=0

*.__java_pool_size=0

*.__large_pool_size=0

*.__oracle_base='C:\app\oracle'#ORACLE_BASE set from environment

*.__pga_aggregate_target=0

*.__sga_target=0

*.__shared_io_pool_size=0

*.__shared_pool_size=0

*.__streams_pool_size=0

*.audit_file_dest='C:\app\oracle\admin\tc\adump'

*.audit_trail='db'

*.cluster_database=false --这个參数必须设置为false,说明是单实例数据库。否则启动会报错

*.compatible='11.2.0.0.0'

*.control_files='C:\app\oracle\oradata\tc\control01.ctl','C:\app\oracle\oradata\tc\control02.ctl'

*.db_block_size=8192

*.db_create_file_dest='C:\app\oracle\oradata'

*.db_domain=''

*.db_name='tc'

*.db_recovery_file_dest='C:\app\oracle\flash_recovery_area'

*.db_recovery_file_dest_size=3908042752

*.diagnostic_dest='C:\app\oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=tcXDB)'

*.fal_server='TC'

*.instance_number=1

*.log_archive_config='DG_CONFIG=(tc,tcdg)'

*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tcdg'

*.log_archive_dest_2='SERVICE=tc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tc'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='ARC%S_%R.%T'

*.memory_target=857735168

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.processes=150

#*.remote_listener='tc-cluster-scan:1521'
--原来的远程监听,这行要凝视掉,单实例上没有这个參数

*.remote_login_passwordfile='exclusive'

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.db_file_name_convert='+data/tc/datafile','C:\app\oracle\oradata\tc\'

*.log_file_name_convert='+data/tc/onlinelog','C:\app\oracle\oradata\tc\'

*.db_unique_name=tcdg --复制过来的pfile假设不设置这个參数,默认的值是tc。所以必需要改动掉



注意,红色部分是须要改动的内容,因为主库是RAC数据库,非常多用于RAC的參数已经去掉,没有所有列出



3.创建服务

oradim -new -sid tc -startmode manual -spfile





4.启动监听

C:\Users\Administrator>lsnrctl start





5.用pfile启动

假设启动时遇到ORA-12560: TNS: 协议适配器错误,那么请检查下面2点:





1.是否启动了OracleServervicetcdg服务

因为之前创建实例时用了-startmode manual,那么主机重新启动后需手动启动这个服务,Oracle建议这些服务都是手动的

C:\Users\Administrator>net start oracleservicetcdg

OracleServicetcdg 服务正在启动 ..

OracleServicetcdg 服务已经启动成功。





2.是否设置了正确的ORACLE_SID

C:\Users\Administrator>set oracle_sid=tc





C:\Users\Administrator>sqlplus / as sysdba

SQL> startup nomount

ORACLE 例程已经启动。





Total System Global Area  855982080 bytes--由memory_target參数确定

Fixed Size                  2260000 bytes

Variable Size             507511776 bytes

Database Buffers          343932928 bytes

Redo Buffers                2277376 bytes

SQL> 





注意,这里系统又一次分配了各内存组件的内存,事实上刚才改动pfile的时候,把这些參数的值所有设置为0了:





*.__db_cache_size=0

*.__java_pool_size=0

*.__large_pool_size=0

*.__pga_aggregate_target=0

*.__sga_target=0

*.__shared_io_pool_size=0

*.__shared_pool_size=0

*.__streams_pool_size=0





这样就表示由数据库自己主动管理这些内存组件,包含SGA和PGA。详细是由下面这个參数来分配的:

*.memory_target=857735168

注意,生产环境务必要改大这个參数值。起码是真实物理内存的40%-60%





主库或备库运行:





C:\Users\Administrator>rman target sys/oracle@tc auxiliary sys/oracle@tcdg





恢复管理器: Release 11.2.0.3.0 - Production on 星期六 8月 9 12:26:33 2014





Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.





已连接到目标数据库: TC (DBID=3163057399)

已连接到辅助数据库: TC (未装载)





假设在备库上运行出现下面错误:





RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00554: 内部恢复管理器程序包初始化失败

RMAN-04005: 目标数据库中存在错误:

ORA-12545: 因目标主机或对象不存在, 连接失败





那么须要在备库主机的hosts中增加一行:

192.168.56.105 tc-cluster-scan--注意。这里加入的是scan-ip,而不是详细的节点1或节点2的主机名





RMAN> duplicate target database for standby from active database;

出现例如以下错误:





RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: Duplicate Db 命令 (在 08/09/2014 17:19:04 上) 失败

RMAN-05501: 终止复制目标数据库

RMAN-05517: 暂时文件 +DATA/tc/tempfile/temp.263.855057647 与目标数据库使用的文件

冲突





那么就须要用SET NEWNAME FOR TEMPFILE 1 TO 'PATH'来指定一下文件名称,例如以下(注意换了一种写法):





RMAN> run{

allocate channel c1 device type disk;

allocate auxiliary channel c2 device type disk;

set newname for tempfile 1 to 'c:\app\oracle\oradata\tc\temp01.dbf';

duplicate target database for standby from active database;

release channel c1;

release channel c2;

}





事实上还能够加上很多其它的參数来进行duplicate:

RMAN> run{

allocate channel c1 device type disk;

allocate auxiliary channel c2 device type disk;

set newname for tempfile 1 to 'c:\app\oracle\oradata\tc\temp01.dbf';

duplicate target database for standby from active database 

spfile --能够使用spfile參数来加入备库所需參数 

set control_files='c:\app\oracle\oradata\tc\control01.ctl','\app\oracle\oradata\tc\control02.ct' 

set log_archive_config='DG_CONFIG=(tc,tcdg)' 

set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tcdg' 

set log_archive_dest_2='SERVICE=tc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=tc' 

set log_archive_dest_state_1='ENABLE' 

set log_archive_dest_state_2='ENABLE' 

set remote_login_passwordfile='exclusive' 

set standby_file_management='AUTO'; 

set db_file_name_convert='+data/tc/datafile','C:\app\oracle\oradata\tc' 

set log_file_name_convert='+data/tc/onlinelog','C:\app\oracle\oradata\tc' 

set db_name=tc 

set db_unique_name=tcdg;

release channel c1;

release auxiliary channel c2;

}

注意。假设使用了spfile參数。那么就不再使用备库上的pfile,会直接在备库上生成一个改动好參数的spifle并使用,所以建议把备库上须要的DG參数所有加上





--备库查看文件:

SQL> set lin 80 pages 80

SQL> col name for a50

SQL> select file#,name from v$datafile;





     FILE# NAME

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

         1 C:\APP\ORACLE\ORADATA\TC\SYSTEM.256.855057451

         2 C:\APP\ORACLE\ORADATA\TC\SYSAUX.257.855057453

         3 C:\APP\ORACLE\ORADATA\TC\UNDOTBS1.258.855057453

         4 C:\APP\ORACLE\ORADATA\TC\USERS.259.855057453

         5 C:\APP\ORACLE\ORADATA\TC\EXAMPLE.264.855057687

         6 C:\APP\ORACLE\ORADATA\TC\UNDOTBS2.265.855058289





SQL> select file#,name from v$tempfile;





     FILE# NAME

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

         1 C:\APP\ORACLE\ORADATA\TC\TEMP01.DBF





SQL> select group#,member from v$logfile;





    GROUP#

----------

MEMBER

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





         2

C:\APP\ORACLE\ORADATA\TC\GROUP_2.262.855057605





         2

C:\APP\ORACLE\ORADATA\TCDG\ONLINELOG\O1_MF_2_9YCZCO9R_.LOG





         1

C:\APP\ORACLE\ORADATA\TC\GROUP_1.261.855057597





         1

C:\APP\ORACLE\ORADATA\TCDG\ONLINELOG\O1_MF_1_9YCZBZ3X_.LOG





         3

C:\APP\ORACLE\ORADATA\TC\GROUP_3.266.855058587





         3

C:\APP\ORACLE\ORADATA\TCDG\ONLINELOG\O1_MF_3_9YCZDHFO_.LOG





         4

C:\APP\ORACLE\ORADATA\TC\GROUP_4.267.855058593





         4

C:\APP\ORACLE\ORADATA\TCDG\ONLINELOG\O1_MF_4_9YCZF9L2_.LOG





         1

C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_1_9YCZC41Y_.LOG





         2

C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_2_9YCZCXOH_.LOG





         3

C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_3_9YCZDOGN_.LOG





         4

C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_4_9YCZFJTV_.LOG









已选择12行。





SQL> select group#,thread#,members from v$log;





    GROUP#    THREAD#    MEMBERS

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

         1          1          3

         2          1          3

         3          2          3

         4          2          3





备库共同拥有4组online redo logfile。每组3个日志文件。Oracle建议适当添加日志组。每组最多2个成员。而如今每组3个成员显然太多了,对性能会有影响,删除一组FRA以下的





SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_1_9YCZC41Y_.LOG';





数据库已更改。





SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\

ONLINELOG\O1_MF_2_9YCZCXOH_.LOG';

alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLIN

ELOG\O1_MF_2_9YCZCXOH_.LOG'

*

第 1 行出现错误:

ORA-01609: 日志 2 是线程 1 的当前日志 - 无法删除成员

ORA-00312: 联机日志 2 线程 1: 'C:\APP\ORACLE\ORADATA\TC\GROUP_2.262.855057605'

ORA-00312: 联机日志 2 线程 1:

'C:\APP\ORACLE\ORADATA\TCDG\ONLINELOG\O1_MF_2_9YCZCO9R_.LOG'

ORA-00312: 联机日志 2 线程 1:

'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_2_9YCZCXOH_.LOG'





SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_3_9YCZDOGN_.LOG';





数据库已更改。





SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_4_9YCZFJTV_.LOG';





数据库已更改。





SQL> select group#,members,status from v$log;





    GROUP#    MEMBERS STATUS

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

         1          2 CLEARING

         2          3 CURRENT

         3          2 UNUSED

         4          2 UNUSED





第2组的日志因为正在使用。所以无法删除,先无论。等有机会切换日志后再进行删除





--再来看一下主库的online redo logfile的情况:

SQL> col member for a45

SQL> select group#,member from v$logfile;





    GROUP# MEMBER

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

         2 +DATA/tc/onlinelog/group_2.262.855057605

         2 +FRA/tc/onlinelog/group_2.258.855057607

         1 +DATA/tc/onlinelog/group_1.261.855057597

         1 +FRA/tc/onlinelog/group_1.257.855057601

         3 +DATA/tc/onlinelog/group_3.266.855058587

         3 +FRA/tc/onlinelog/group_3.259.855058591

         4 +DATA/tc/onlinelog/group_4.267.855058593

         4 +FRA/tc/onlinelog/group_4.260.855058595





也是一共4组,但每组是2个成员,能够看到,用duplicate过来的备库。每组多创建了个1个成员





--在备库加入standby redo logfile

SQL> alter database add standby logfile 'C:\app\oracle\oradata\tc\std_05.log'size 50m;

SQL> alter database add standby logfile 'C:\app\oracle\oradata\tc\std_06.log'size 50m;

SQL> alter database add standby logfile 'C:\app\oracle\oradata\tc\std_07.log'size 50m;

SQL> alter database add standby logfile 'C:\app\oracle\oradata\tc\std_08.log'size 50m;

SQL> alter database add standby logfile 'C:\app\oracle\oradata\tc\std_09.log'size 50m;





注意。假设不指定组号,默认会在online redo logfile组的基础上递增,如,原来有4组online redo logfile,那么能够看到加入后的备库日志:

SQL> select group#,thread# from v$standby_log;





    GROUP#    THREAD#

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

         5          0
--备库日志文件从5開始编号

         6          0

         7          0

         8          0

         9          0





刚才默认创建了5组standby redo logfile。thread#为0是由于还没有被应用。应用以后应该是1





--主库查看归档路径状态

SQL> col destination for a30

SQL> col error for a20

SQL> select dest_id,destination,status,error fromv$archive_dest_state where dest_id<3;





   DEST_ID DESTINATION                    STATUS    ERROR

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

         1 USE_DB_RECOVERY_FILE_DEST      VALID

         2 tcdg                           VALID





--备库查看归档路径状态

SQL> col destination for a30

SQL> col error for a20

SQL> select dest_id,destination,status,error fromv$archive_dest_state where dest_id<3

;





   DEST_ID DESTINATION                    STATUS    ERROR

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

         1 USE_DB_RECOVERY_FILE_DEST      VALID

         2 tc                             VALID





--開始应用日志

SQL> alter database recover managed standby databaseusing current logfile disconnect from session;





--主库切换1次日志

SQL> alter system switch logfile;





系统已更改。





--备库查看日志应用情况

SQL> select sequence#,applied fromv$archived_log;





 SEQUENCE# APPLIED

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

        30 YES

        29 YES

        31 YES

        32 YES

        33 YES

        34 IN-MEMORY
--说明正在应用





已选择6行。





SQL> select group#,status from v$log;





    GROUP# STATUS

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

         1 CURRENT

         2 CLEARING
--CLEARING状态了。而非CURRENT了

         3 UNUSED

         4 UNUSED





--删除刚才没有成功的那个group2的日志组成员

SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\ONLINELOG\O1_MF_2_9YCZCXOH_.LOG';

alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\

*

第 1 行出现错误:

ORA-01156: 进行中的恢复或闪回可能须要訪问文件





--须要先停止REDO APPLY后再删除

SQL> recover managed standby database
cancel;

完毕介质恢复。

SQL> alter database drop logfile member 'C:\APP\ORACLE\FLASH_RECOVERY_AREA\TCDG\

ONLINELOG\O1_MF_2_9YCZCXOH_.LOG';





数据库已更改。





SQL> select group#,members from v$log;





    GROUP#    MEMBERS

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

         1          2

         2          2

         3          2

         4          2





--删完日志文件后,要记得把standby_file_management參数的值改回为AUTO

SQL> show parameter standby_file_management;





NAME                                 TYPE        VALUE

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

standby_file_management              string      MANUAL

SQL> alter system set standby_file_management=auto;





系统已更改。

SQL> show parameter standby_file_management





NAME                                 TYPE        VALUE

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

standby_file_management              string      AUTO





--又一次启用REDO APPLY

SQL> recover managed standby database
using current logfile disconnect from session;

完毕介质恢复。





至此,RAC-DG顺利搭建完毕。





总结:

因为本机的内存并不大,仅仅有8G。在两个节点共分配2G,DG节点分配1.5G以后。常常会出现卡顿现象,并且是在已经关闭节点2,仅仅在节点1上操作的情况下,节点1会常常因为内存不足而崩溃重新启动,预计对于Window 2008而言,2G物理内存实在是太少了,只是这个情况在生产环境应该要好一点。起码都是几十G到几百G的物理内存环境。

今天用的是duplicate方式来创建的物理备库。事实上这是11g新特性,在10g中,我们仅仅能以rman全库备份的方式进行异机恢复,duplicate的优点是能够直接在备库创建online redo logfile,而且能用spifle指定备库所需參数,无需创建全库备份,主库全部文件能够自己主动化地由rman恢复到备库,包含password文件,暂时文件等,还能够用dorecover还原online
redo logfile中的内容,使恢复出来的备库获得最新的数据文件,能够加快DG同步的时间





Tips:

1.使用远程桌面连接方式安装,能够不装VBox的辅助工具。也无需加入共享目录。就能方便的在主机和虚拟机之间方便地复制安装介质或命令。

2.在11g中数据库警告日志文件的位置与10g不同,要注意。不要混淆了,分析日志同步故障要先看警告日志

通用路径:%ORACLE_HOME%\diag\rdbms\DB_UNIQUE_NAME\SID_NAME\trace\alertSID.log

节点1:C:\app\Administrator\diag\rdbms\tc\tc1\trace\alert_tc1.log

备库:C:\app\oracle\diag\rdbms\tcdg\tc\trace\alert_tc.log

Deploy 11.2.0.3 RAC+DG on Windows 2008 R2 Step by Step的更多相关文章

  1. HPDL380G8平台11.2.0.3 RAC实施手册

    HPDL380G8平台11.2.0.3 RAC实施手册   1 前言 此文档详细描述了Oracle 11gR2 数据库在HPDL380G上的安装RAC的检查及安装步骤.文档中#表示root用户执行,$ ...

  2. Oracle 11.2.0.4 RAC安装最新PSU补丁

    环境:两节点RAC(RHEL 6.4 + GI 11.2.0.4 + Oracle 11.2.0.4) 需求:安装最新PSU补丁11.2.0.4.7 1.下载补丁和最新OPatch 2.检查数据库当前 ...

  3. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

  4. oracle 11.2.0.4 rac 打补丁

    本次安装pus环境是11.2.0.4 rac,打的patch为11.2.0.4.180717 (Includes Database PSU),gi补丁和数据库补丁一起打 安装最新opatch版本 un ...

  5. Oracle 11.2.0.4 RAC重建EM案例

    环境:Oracle 11.2.0.4 RAC 重建EM 背景:客户之前的EM已经被损坏,需要重建EM 重建EM的方案有很多,其中最简单的方法是:直接使用emca重建,oracle用户下,只需一条命令搞 ...

  6. RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题

    RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题 随着Linux 版本的普及,但Oracle数据库主流版本仍是11gR2, 的支持不很完美,在Linux 上安装会遇到几处问题,以此记录 ...

  7. Oracle 11g R2(11.2.0.4) RAC 数据文件路径错误解决--ORA-01157 ORA-01110: 数据文件

    Oracle 11g R2(11.2.0.1) RAC  数据文件路径错误解决--ORA-01157 ORA-01110: 数据文件 oracle 11g R2(11.2.0.4) rac--scan ...

  8. [转帖]Oracle 11G RAC For Windows 2008 R2部署手册

    Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次) https://www.cnblogs.com/yhfssp/p/7821593.html 总体规划 ...

  9. Windows 8.1 IIS 8.5 远程管理 Windows 2008 R2 IIS 7.0

    案例: Windows 8.1 x64 IIS 8.5 inetmgr_amd64_v1.1_en-US.msi Windows 2008 R2  x64 IIS  7.0 在Win8.1 通过IIS ...

随机推荐

  1. android 5.0新特性

    Android Lollipop 面向开发人员的主要功能 Material Design 设计 注重性能 通知 以大屏幕呈现 以文档为中心 连接性能再上一级 高性能图形 音频处理功能更强 摄像头和视频 ...

  2. Lucene.Net 2.3.1开发介绍 —— 二、分词(五)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(五) 2.1.3 二元分词 上一节通过变换查询表达式满足了需求,但是在实际应用中,如果那样查询,会出现另外一个问题,因为,那样搜索,是只 ...

  3. go之匿名字段

    struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段. 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字 ...

  4. IE6_一些简单bug

    1.IE6调整窗口大小的 Bug 当把body居中放置,改变IE浏览器大小的时候,任何在body里面的相对定位元素都会固定不动了.给body定义position:relative;就行了. 2.避免百 ...

  5. windows程序员进阶系列:《软件调试》之Win32堆的调试支持

    Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试. 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出. ...

  6. Richard Stallman与洪峰谈黑客道培训实录_业界_科技时代_新浪网

    Richard Stallman与洪峰谈黑客道培训实录_业界_科技时代_新浪网 Richard Stallman与洪峰谈黑客道培训实录

  7. tracert路由跟踪命令分析判断

    可能有的会使用路由跟踪命令 ,可是却看不太明确显示出来的结果.结合我的来说明一下. (1)tracert命令介绍 tracert是路由跟踪命令,通过该命令的返回结果,能够获得本地到达目标主机所经过的网 ...

  8. delphi 对抗任务管理器关闭(提升进程到Debug模式,然后设置进程信息SE_PROC_INFO)

    [delphi] view plain copy program Project1; uses Windows; {$R *.res} function MakeMeCritical(Yes: Boo ...

  9. Android输入法扩展之外接键盘中文输入

    大家想不想要这样一台Android  Surface平板,看着就过瘾吧. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSVRsZWFrcw==/font/ ...

  10. 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建

          作者今天开始正式开始学习Cocos2d-X引擎进行游戏编程,预计两天会更新一期,最后实现ios游戏的appsore上线. (部分内容转载自:http://blog.csdn.net/yan ...