首先关于异构平台搭建DATAGUARD的相关文档参见:http://blog.youkuaiyun.com/tianlesoftware/article/details/7241488
Win7 64位与Win7 32位 Oracle 11gR2
Primary主要参数:
操作系统:window7 64bit
数据库名db_name:orcl1234
实例名oracle_sid:orcl1234
db_unique_name:orcl1234pre
IP:192.168.100.126 port:1526
Net Service Name:orcl1234pre_service_name
Database Home:D:\app\Administrator\product\11.2.0\dbhome_1
standby主要参数:
操作系统:window7 32bit
数据库名db_name:orcl1234(数据库名称一定相同)
实例名oracle_sid:orcl1234dg
db_unique_name:orcl1234dg
IP:192.168.100.128 port:1526
Net Service Name:orcl1234dg_service_name
Database Home:D:\app\Administrator\product\11.2.0\dbhome_1
首先确认Primary数据库处于归档模式:
SQL>ARCHIVE LOG LIST;可以查看数据库是否为归档模式
如果不是将数据库启动至mount模式,执行:
SQL>ALTER DATABASE ARCHIVELOG;
然后将主库设置为Force Logging模式:
查询和更改语句分别为:
SQL>SELECT FORCE_LOGGING FROM V$DATABASE;
SQL>ALTER DATABASE FORCE LOGGING;
接着配置Primary数据库的初始化参数:
首先将主库参数文件Spfile转换成pfile:
SQL>CREATE PFILE='D:\backup\pfile_orcl1234.ora' from spfile;
然后修改其参数,修改后的文件为:
orcl1234.__db_cache_size=176160768
orcl1234.__java_pool_size=12582912
orcl1234.__large_pool_size=12582912
orcl1234.__oracle_base='D:\app\Administrator'#ORACLE_BASE set from environment
orcl1234.__pga_aggregate_target=285212672
orcl1234.__sga_target=536870912
orcl1234.__shared_io_pool_size=0
orcl1234.__shared_pool_size=322961408
orcl1234.__streams_pool_size=0
*.audit_file_dest='D:\app\Administrator\admin\orcl1234\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='D:\APP\ADMINISTRATOR\ORADATA\ORCL1234\CONTROL01.CTL'#Restore Controlfile
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl1234'
*.db_unique_name='orcl1234pre'
*.log_archive_config='dg_config=(orcl1234pre,orcl1234dg)'
*.log_archive_dest_2='service=orcl1234dg_service_name arch valid_for=(online_logfiles,primary_role) db_unique_name=orcl1234dg'
*.log_archive_dest_state_2=defer
*.fal_server=orcl1234dg_service_name
*.fal_client=orcl1234pre_service_name
*.db_file_name_convert='D:\APP\ADMINISTRATOR\ORADATA\ORCL1234','D:\APP\ADMINISTRATOR\ORADATA\ORCL1234dg'
*.log_file_name_convert='D:\APP\ADMINISTRATOR\ORADATA\ORCL1234','D:\APP\ADMINISTRATOR\ORADATA\ORCL1234dg'
*.standby_file_management=auto
*.db_recovery_file_dest='D:\app\Administrator\flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='D:\app\Administrator'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orcl1234XDB)'
*.local_listener='LISTENER_ORCL1234'
*.memory_target=822083584
*.open_cursors=300
*.processes=150
*.recyclebin='OFF'
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
其中主要参数解释如下, 感谢http://blog.youkuaiyun.com/sunjiapeng/article/details/9115531整理:
参数 | 主库角色? | 备库角色? | 建议和注释 |
ARCHIVE_LOG_TARGET | 是 | 仅物理 | 经过指定的秒数后强制进行日志切换。 |
COMPATIBLE | 是 | 物理和逻辑 | Data Guard的要求最低值9.2.0.1.0。设置为10.2.0.0的最低使用Oracle数据库10g的新功能。指定主数据库和备库相同的值,如果你希望做一个切换。如果值不同,重做传输服务可能无法从主库的重做数据传输到备库。 |
CONTROL_FILE_RECORD_KEEP_TIME | 是 | 物理和逻辑 | 可选,使用此参数指定的天数(从0到365),以避免覆盖一个可重用的控制文件中记录(如归档重做日志文件包含所需的信息)。 |
CONTROL_FILES | 是 | 物理和逻辑 | 必需,指定一个或多个控制文件的路径名和文件名 。控制文件在数据库中必须已经存在。Oracle建议使用2个控制文件。如果另一个当前控制文件的副本是可用的,那么一个实例可以很容易地复制好的控制文件到坏控制文件的位置后重新启动。 |
DB_FILE_NAME_CONVERT | 否 | 仅物理 | 如果备库作为主库,或者位于备库上的数据文件所在的目录是从主库不同,在同一系统上。此参数必须指定配对的字符串。第一个字符串是要寻找主库文件名中的字符序列。如果该字符序列匹配,它将被替换为第二个字符串构造备库文件名 。您可以指定多个文件名。 |
DB_UNIQUE_NAME | 是 | 物理和逻辑 | 推荐,但需要您指定LOG_ARCHIVE_CONFIG的参数。这个数据库指定一个唯一的名称。这个名字不会改变,即使主数据库和备用数据库互换角色。DB_UNIQUE_NAME参数默认值为DB_NAME参数的值。 |
FAL_CLIENT | 是 | 仅物理 | 如果FAL_SERVER参数被指定则必须。指定Oracle Net服务名使用FAL服务器(通常指主库)参考FAL客户端(备库)。 |
FAL_SERVER | 否 | 仅物理 | 如果FAL_CLIENT参数被指定则必须。为数据库指定一个或多个Oracle Net服务名,从这个备库可以获取丢失的归档重做日志文件(请求)。 |
INSTANCE_NAME | 是 | 逻辑和物理 | 可选,如果这个参数被定义和主备库属于同一台主机上,为备库指定一个不同的名称区别于你的主库。 |
LOG_ARCHIVE_CONFIG | 是 | 逻辑和物理 | 推荐,通过DG_CONFIG的属性为主库和每个备库来确定Data Guard配置中的DB_UNIQUE_NAME。此参数的默认值使主库的重做数据传送到远程目的地和使备库接收重做数据。当RAC环境下主库运行在最大保护模式或最大可用性模式时,备库中DG_CONFIG属性必须被设置为动态添加。 |
LOG_ARCHIVE_DEST_n | 是 | 逻辑和物理 | 必需,定义多达十个(N = 1,2,3,... 10)目的地,每一个目的地都必须指定地点或服务的属性。每一个LOG_ARCHIVE_DEST_n参数对应每个LOG_ARCHIVE_DEST_STATE_n参数。 |
LOG_ARCHIVE_DEST_STATE_n | 是 | 逻辑和物理 | 必需,指定LOG_ARCHIVE_DEST_STATE_n参数来启用或禁用重做传输服务来传送重做数据到指定的目的地(或替代)。为每个LOG_ARCHIVE_DEST_n参数定义LOG_ARCHIVE_DEST_STATE_n参数。 |
LOG_ARCHIVE_FORMAT | 是 | 逻辑和物理 | 如果你指定了STANDBY_ARCHIVE_DEST参数则必须。在备库上这些参数都串连在一起以产生完全合格的归档重做日志文件名。 |
LOG_ARCHIVE_LOCAL_FIRST | 是 | 否 | 可选。指定控制归档进程(ARCn)传输;一种是在联机重做日志文件成功地归档到至少一个本地目标之后(TRUE),一种是在相同的时间联机重做日志文件被归档到本地目的地(FALSE)。 |
LOG_ARCHIVE_MAX_PROCESSES | 是 | 逻辑和物理 | 可选,指定一个你希望Oracle调用的最大的归档进程(ARCn)数(从1到30)。默认值是4。 |
LOG_ARCHIVE_MIN_SUCCEED_DEST | 是 | 没有 | 可选,定义的最小数量(从1到10)的目的地,在主库上的日志写进程可以重用联机重做日志文件之前必须成功地接收重做数据。 |
LOG_ARCHIVE_TRACE | 是 | 逻辑和物理 | 可选,设置这个参数来追踪重做数据传输到备用站点。有效的整数值(0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096) |
LOG_FILE_NAME_CONVERT | 否 | 逻辑和物理 | 必需,当主备库所处操作系统相同或主备站点上的日志文件位于不同的目录结构时,此参数将在备库上对主库重做日志文件路径名转换为对应的备库路径名。 |
PARALLEL_MAX_SERVERS | 是 | 仅逻辑 | 必需,指定逻辑备库的并行服务最大数量值。为了达到最佳效果,此参数不能小于5,PARALLEL_MAX_SERVERS最低限度设为9。 |
REMOTE_LOGIN_PASSWORDFILE | 是 | 逻辑和物理 | 必需,在主库和每个备库上都需指定。 |
SHARED_POOL_SIZE | 是 | 逻辑和物理 | 可选,使用指定系统全局区(SGA)阶段信息读取联机重做日志文件。越多的SGA可用,越多的信息可以实施。 |
SORT_AREA_SIZE | 是 | 逻辑和物理 | 可选,在大型排序中增加SORT_AREA_SIZE的值(默认大小为65536字节)来提高效率。 |
STANDBY_ARCHIVE_DEST | 否 | 逻辑和物理 | 可选,指定备库从主库接收归档重做日志文件的位置。初始化参数STANDBY_ARCHIVE_DEST会覆盖参数LOG_ARCHIVE_DEST_n指定的目录位置。STANDBY_ARCHIVE_DEST和LOG_ARCHIVE_FORMAT连接起来以产生完整的日志文件名。 |
STANDBY_FILE_MANAGEMENT | 是 | 仅物理 | 将STANDBY_FILE_MANAGEMENT参数设置为AUTO,以便主库添加或删除数据文件时备库做出相应的变化,无需人工干预。如果主库和备库的目录结构不同,你必须设置初始化参数DB_FILE_NAME_CONVERT将主库上一组或多组数据文件的文件名转换至(物理)备库。 |
USER_DUMP_DEST | 是 | 逻辑和物理 | 如果LOG_ARCHIVE_TRACE参数被指定则必须。USER_DUMP_DEST指定写入调试跟踪文件的路径名。 |
在重建前需要:
SQL>SHUTDOWN IMMEDIATE;
然后:
SQL>CREATE SPFILE FROM PFILE='D:\BACKUP\PFILE_ORCL1234';
如果上面参数有任何语法错误就会立即出现各种错误,例如我遇到的:
最终查明好像是下面的参数va