Oracle10g DG 的搭建


前提:

 

  • 两台已经装有Oracle的linux机器。本次使用的是CentOS3_x86
  • 主库上装有oracle服务及添加了一个名ora10g的实例
  • 从库仅安装了oracle服务
  • 为了方便,主从库oracle的安装路径完全一致。主库上的ORACLE_HOME=/u01/app/oracle
详细步骤:   主库服务设置  
  1. 归档日志
    ****检查主库的实例是否为归档状态
    SQL>SELECT log_mode FROM v$database;
    LOG_MODE
    ------------------------
    NOARCHIVELOG
    SQL>

    ****如果是非归档状态,将其更换为归档状态
    SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT;
    SQL>ALTER DATABASE ARCHIVELOG;
    SQL>ALTER DATABASE OPEN;

    ****启动数据库的force logging
    SQL>ALTER DATABSE FORCE LOGGING;
  2. 初始化参数
    ****检查db_name和db_unique_name这两个参数,这次将这两个参数都设置为ora10g
    SQL>show parameter db_name;
    NAME TYPE VALUE
    ---------------- --------------- ----------------
    db_name string ora10g
    SQL>show parameter db_unique_name;
    NAME TYPE VALUE
    ---------------- --------------- ----------------
    db_unique_name string ora10g

    ****主从库的db_name一致,可是db_unique_name不能相同,因为主从库的db-unique_name会在dg_config当作log_archive_config参数。这个例子里,将从库的db_unique_name设置为“ora10g_stby”。
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORA10G,ORA10G_STBY)';
    ****设置合适的远程归档日志路径。这个例子里,把flash_recover_area当作本地路径,或者你自己也可以指定一个特定的路径。指定SERVICE和DB_UNIQUE_NAME为了给从库路径做参考
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=‘SERVICE=ora10g_stby NOAFFIRM ASYNC VALID=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=ORA10G_STBY';
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

    ****LOG_ARCHIVE_FORMAT和LOG_ARCHIVE_MAX_PROCESSES参数要合理设置,REMOTE_LOGIN_PASSWORDFILE 要设置为EXCLUSIVE。
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT=‘%t_%s_%r.arc' SCOPE=SPFILE;
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
    SQL>ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

    ****除了之前的设置,还要确保主库和备库能互换角色。为了使互换角色能正常使用,需要设置如下参数。调整*_CONVERT参数用于解释主备库文件名和路径不同的地方。****
    SQL>ALTER SYSTEM SET FAL_SERVER=ORA10G_STBY;
    SQL>ALTER SYSTEM SET DB_FILE_NAME_CONVERT='ORA10G_STBY','ORA10G' SCOPE=SPFILE;
    SQL>ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='ORA10G_STBY','ORA10G' SCOPE=SPFILE;
    SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

    ****记住,一些参数是不会立即生效的,所以需要重启数据库以确保他们能起作用。
  3. 服务设置
    ****主备库都需要“$ORACLE_HOME/network/admin/tnsnames.ora”文件。你可以用Network Configuration Utility(netca)或者手动创建。
    ****主库的tnsnames.ora
    # tnsnames.ora Network Configuration File: /u01/app/oracle//network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    ORA10G_STBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.238)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ora10g)
    )
    )
    ORA10G =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.185)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ORA10G)
    )
    )

    ****备库的tnsname.ora****
    # tnsnames.ora Network Configuration File: /u01/app/oracle//network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    ORA10G =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.185)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ORA10G)
    )
    )
    ORA10G_STBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.238)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = ora10g)
    )
    )
  4. 备份主库
    ****如果你使用duplicate模式去创建从库,则这一步是不必要的。基于备份的duplicate,或者手动恢复,都要备份主库。
    $ rman target = /
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
  5. 生成从库的控制文件和pfile文件
    ****在主库同步如下命令生成备库的控制文件
    SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/ora10g_stby.ctl';
    ****由spfile文件生成备库的参数文件。
    SQL>CREATE PFILE='/tmp/iniora10g_stby.ora' FROM SPFILE;
    ****修改与备库有关的参数,因为备库是复制过来的,所以只需修改如下参数:
    *.db_unique_name='ORA10G_STBY'
    *.fal_server='ORA10G'
    *.log_archive_dest_2='SERVICE=ora10g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORA10G'

    (以上是原文翻译,不过在我实践的过程中,我的备库是值安装了oracle服务,并没有oracle实例。所以$ORACLE_HOME/admin下的某些路径会不存在,那么则需看清楚生成的iniora10g_stby.ora中存在哪些路径。如果文件中有,而备库机器实际上没有该路径的话,则需手动添加。如有不符合的路径,也许手动更改该路径或修改ora文件)

更多详情见请继续阅读下一页的精彩内容

 

推荐阅读:

使用RMAN的Duplicate功能创建物理DataGuard

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

通过RMAN备份duplicate创建DataGuard

  • 1
  • 2
  • 下一页

相关内容