oracle 10g dg环境的搭建

软件的安装不需要介绍,把主节点数据库安装好之后,然后把文件打包拷贝到备节点就可以了。
测试环境:主节点IP192.168.163.110,主机名是vmhost02、备节点IP192.168.163.120,主机名是vmhost03.服务器操作系统centos 5.7 64位,oracle版本10.2.0.5 64位
起先的很多操作先在主节点完成:
1,允许强制日志。
SQL> alter database force logging;

系统已更改。

SQL>
2,要保证每个DG数据库都使用密码文件,而且对于sys用户的口令文件中每个系统上要相同。
这个可以通过把主节点的密码文件拷贝到备节点,也可以通过orapwd命令在每个备节点建立密码文件。

3,配置备重做日志,这个对于最大保护模式和最大可用性模式是必须的。但是对于默认的模式最大性能来说可以没有。
备重做日志文件的大小要和重做日志文件的大小相同,数量可以使用(每个线程的日志文件最大数量+1)线程最大数量获得。
SQL> select group#,thread#,bytes,members from v$log;

    GROUP#    THREAD#      BYTES    MEMBERS
---------- ---------- ---------- ----------
         1          1   52428800          1
         2          1   52428800          1
         3          1   52428800          1
添加备重做日志文件
alter database add standby logfile group 4('/app/oradata/orcl/logs1.log') size 50M;
alter database add standby logfile group 5('/app/oradata/orcl/logs2.log') size 50M;
alter database add standby logfile group 6('/app/oradata/orcl/logs3.log') size 50M;
alter database add standby logfile group 7('/app/oradata/orcl/logs4.log') size 50M;   
查看备重做日志信息:
SQL> select group#,thread#,sequence#,archived,status from v$standby_Log;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
         4          0          0 YES UNASSIGNED
         5          0          0 YES UNASSIGNED
         6          0          0 YES UNASSIGNED
         7          0          0 YES UNASSIGNED         
         
4,开启归档
查看数据库是否开启归档
QL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            /app/flash_recovery_area/
最早的联机日志序列     33
下一个存档日志序列   35
当前日志序列           35

显示当前数据库已经是归档模式。
如果没有开启归档,只需要把数据库重新启动到mount模式,然后alter database archivelog,再alter database open即把完成设置数据归档模式。

5,设置参数文件,
下面是测试环境参数文件内容
orcl.__db_cache_size=138412032
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=109051904
orcl.__streams_pool_size=8388608
*.audit_file_dest='/app/admin/orcl/adump'
*.background_dump_dest='/app/admin/orcl/bdump'
*.compatible='10.2.0.5.0'
*.control_files='/app/oradata/orcl/control01.ctl','/app/oradata/orcl/control02.ctl','/app/oradata/orcl/control03.ctl'
*.core_dump_dest='/app/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_unique_name='orcl'
log_archive_config='dg_config=(orcl,orcls)'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
standby_file_management=auto
fal_server=orcl
fal_client=orcls
log_archive_dest_1='location=/app/flash_recovery_area/ valid_for=(all_logfiles,all_roles) db_unique_name=orcl'
log_archive_dest_2='service=orcls LGWR ASYNC valid_for=(online_logfiles,primary_role) db_unique_name=orcls'
*.db_recovery_file_dest='/app/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=283115520
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/app/admin/orcl/udump'
这个参数文件也可以直接用于standby节点,只需要把db_unique_name的值修改一下就行了。
6,关闭数据库,使用这个参数文件启动,并使用这个pfile创建spfile
7,使用rman 创建主数据库数据文件备份
8,为备数据库创建控制文件
9,把数据库文件备份,备控制文件和pfile文件拷贝到standby机器
10,修改tnsname.ora文件添加standby数据库信息。测试环境内容如下:
ORCLS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.163.120)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.163.110)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

11,把备控制文件拷贝到pfile文件指定的位置,并把名字修改得和pfile指定的意志
12,使用pfile文件启动备库到nomount模式
startup nomount pfile=‘/home/oracle/pfile.ora'
13,将备库启动到mount状态 alter database mount standby database;
14,使用rman恢复数据文件
rman target /
restore database;
15,将备库启动到自动恢复状态
alter database recover managed standby database disconnect from session;

经过上面的这些操作整个DG的基本配置就已经完成了。剩下的就是验证了。
在主库上执行alter system switch logfile切换日志,并确认归档重做日志文件中的文件,
select sequence#,first_time,next_time from v$archived_log;
在备库上查询归档日志应用情况
select sequence#,applied from v$archived_log;