`

Oracle主备库配置过程

阅读更多
实验环境
操作系统:RHEL AS4
数据库:Version 10.2.0.1.0
一台机器上,装两个数据库,来进行主备切换实验。多台机器道理相同。
整个操作过程为我实验成功后,根据记忆整理,如有遗漏,请指正。
隔壁老王 2012年01月10日

一、安装设置详细过程
正常安装一个数据库,可以用DBCA,也可以手动建库,手动建库数据文件可以小一点儿,实验速度会快一点儿。
数据库名:beijing,初始的主库,备库名:shanghai

1.生成pfile,根据主备库的要求,进行参数修改
SQL> create pfile='/dbfile/initbeijing.ora' from spfile;
#默认带的参数
*.compatible='10.2.0.1.0'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='beijing'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
log_archive_format=%t_%s_%r.arc

#DUMP目录,也是默认带的,需要修改
*.audit_file_dest='/oracle/admin/beijing/adump'
*.background_dump_dest='/oracle/admin/beijing/bdump'
*.user_dump_dest='/oracle/admin/beijing/udump'
*.core_dump_dest='/oracle/admin/beijing/cdump'

#主备切换需要增加的参数
db_unique_name=beijing
log_archive_config='dg_config=(beijing,shanghai)'
control_files='/dbfile/datafile/beijing/control01.ctl',
'/dbfile/datafile/beijing/control02.ctl',
'/dbfile/datafile/beijing/control03.ctl'
log_archive_dest_1=
'location=/dbfile/logfile/beijing/ valid_for=(all_logfiles,all_roles) db_unique_name=beijing'
log_archive_dest_2=
'service=shanghai lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=shanghai'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
standby_file_management=auto

#切换时的一些设置
fal_server=shanghai
fal_client=beijing
db_file_name_convert='shanghai','beijing'
log_file_name_convert='shanghai','beijing'

2.生成spfile,要在数据库关闭状态下进行
SQL> create spfile from pfile='/dbfile/initbeijing.ora';

3.打开到mount状态,启动归档模式
SQL> alter database mount;
SQL> alter database archivelog;

4.创建备库用的控制文件
SQL> alter database create standby controlfile as '/dbfile/beijing.ctl';

5.关闭数据库,准备备库所需的文件,替换控制文件,然后启动主库(beijing)
SQL> shutdown immediate;
拷贝数据文件,相当于冷备,替换控制文件
[oracle@linux ~]$ cp -r /dbfile/datafile/beijing /dbfile/datafile/shanghai
[oracle@linux ~]$ cp /dbfile/beijing.ctl /dbfile/datafile/shanghai/control01.ctl
[oracle@linux ~]$ cp /dbfile/beijing.ctl /dbfile/datafile/shanghai/control02.ctl
[oracle@linux ~]$ cp /dbfile/beijing.ctl /dbfile/datafile/shanghai/control03.ctl
创建归档日志目录
[oracle@linux ~]$ mkdir -p /dbfile/datafile/shanghai
创建dump目录,简单起见,拷贝一下,因为有好几个dump目录。
[oracle@linux ~]$ cp -r $ORACLE_BASE/admin/beijing $ORACLE_BASE/admin/shanghai
启动主库
SQL> startup

6.修改tnsnames.ora,在$ORACLE_HOME/network/admin目录中,如果没有,就新建一个
在文件中增加以下内容,也就是两个库的别名
shanghai =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = shanghai)
    )
  )
beijing =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = beijing)
    )
  )
 
7.启动监听,然后测试一下别名
[oracle@linux ~]$ lsnrctrl start
[oracle@linux ~]$ tnsping beijing
[oracle@linux ~]$ tnsping shanghai

8.创建备库的密码文件,库名为shanghai
[oracle@linux ~]$ orapwd $ORACLE_HOME/dbs/orapwshanghai password=oracle

9.使用主库的数据文件(刚才拷贝了),创建备库的参数文件
修改主库的参数文件initbeijing.ora,保存为initshanghai.ora
*.compatible='10.2.0.1.0'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='beijing'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
log_archive_format=%t_%s_%r.arc

*.audit_file_dest='/oracle/admin/shanghai/adump'
*.background_dump_dest='/oracle/admin/shanghai/bdump'
*.user_dump_dest='/oracle/admin/shanghai/udump'
*.core_dump_dest='/oracle/admin/shanghai/cdump'

db_unique_name=shanghai
log_archive_config='dg_config=(beijing,shanghai)'
control_files='/dbfile/datafile/shanghai/control01.ctl',
'/dbfile/datafile/shanghai/control02.ctl',
'/dbfile/datafile/shanghai/control03.ctl'
log_archive_dest_1=
'location=/dbfile/logfile/shanghai/ valid_for=(all_logfiles,all_roles) db_unique_name=shanghai'
log_archive_dest_2=
'service=beijing lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=beijing'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable

fal_server=beijing
fal_client=shanghai
db_file_name_convert='beijing','shanghai'
log_file_name_convert='beijing','shanghai'
standby_file_management=auto

10.启动备库(shanghai),使用pfile(刚才修改的)生成spfile
[oracle@linux ~]$ export ORACLE_SID=shanghai
[oracle@linux ~]$ sqlplus / as sysdba
SQL> create spfile from pfile='/dbfile/initshanghai.ora';

11.启动备库到mount状态,然后启动redo应用
SQL> startup mount
SQL> alter database recover managed standby database disconnect from session

12.检查日志,看设置是否成功
主库切换日志
SQL> alter system switch logfile;
备库查看有无新收到的日志
SQL> select sequence#,first_time,next_time from v$archived_log order by 1;

SEQUENCE# FIRST_TIME          NEXT_TIME
---------- ------------------- -------------------
        16 2012-01-10 08:51:41 2012-01-10 08:51:45
        16 2012-01-10 08:51:41 2012-01-10 08:51:45
        17 2012-01-10 08:51:45 2012-01-10 08:51:48
        17 2012-01-10 08:51:45 2012-01-10 08:51:48
        18 2012-01-10 08:51:48 2012-01-10 08:52:26
        18 2012-01-10 08:51:48 2012-01-10 08:52:26
        19 2012-01-10 08:52:26 2012-01-10 08:53:57
        19 2012-01-10 08:52:26 2012-01-10 08:53:57
        20 2012-01-10 08:53:57 2012-01-10 08:54:06
        20 2012-01-10 08:53:57 2012-01-10 08:54:06
也可以到/dbfile/logfile/shanghai目录中,看一下有无归档日志文件

二、主备切换

1.查看主库(beijing)的状态,是TO STANDBY状态,可切换成备库。
SQL> select db_unique_name,switchover_status,database_role from v$database;

DB_UNIQUE_NAME       SWITCHOVER_STATUS                        DATABASE_ROLE
-------------------- ---------------------------------------- --------------------------------
beijing              TO STANDBY                               PRIMARY

2.执行命令,切换成备库
SQL> alter database commit to switchover to physical standby;

Database altered.

3.查看一下备库(shanghai),可以切换成主库。
SQL> select db_unique_name,switchover_status,database_role from v$database;

DB_UNIQUE_NAME       SWITCHOVER_STATUS                        DATABASE_ROLE
-------------------- ---------------------------------------- --------------------------------
shanghai             TO PRIMARY                               PHYSICAL STANDBY
(在主库切换之前,SWITCHOVER_STATUS是NOT ALLOWED)

4.执行命令,切换成主库,打开库,就可以执行正常操作了。
SQL> alter database commit to switchover to primary;

Database altered.

SQL> alter database open;

Database altered.

5.查看一下数据文件,没有显示,重新登录一下。发现数据文件按参数设置的方式发生的变化。
SQL> select name from v$datafile;

SQL> conn / as sysdba
Connected.
SQL> select name from v$datafile;

NAME
------------------------------------------------------------------------------------------------------------------------
/dbfile/datafile/shanghai/system01.dbf
/dbfile/datafile/shanghai/undotbs01.dbf
/dbfile/datafile/shanghai/sysaux01.dbf
/dbfile/datafile/shanghai/users01.dbf

关闭原来的主库(beijing),启动Redo应用
SQL> shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218968 bytes
Variable Size              88082024 bytes
Database Buffers          188743680 bytes
Redo Buffers                7168000 bytes
Database mounted.
SQL> select db_unique_name,switchover_status,database_role from v$database;

DB_UNIQUE_NAME       SWITCHOVER_STATUS                        DATABASE_ROLE
-------------------- ---------------------------------------- --------------------------------
beijing              TO PRIMARY                               PHYSICAL STANDBY

SQL> alter database recover managed standby database disconnect from session;

Database altered.

三、通过日志检查切换结果

现在的备库(beijing)上看一下归档日志
SQL> select sequence#,first_time,next_time from v$archived_log order by 1;

SEQUENCE# FIRST_TIME          NEXT_TIME
---------- ------------------- -------------------
        21 2012-01-10 08:54:06 2012-01-10 09:49:30
        21 2012-01-10 08:54:06 2012-01-10 09:49:30
        22 2012-01-10 09:49:30 2012-01-10 09:49:32
        22 2012-01-10 09:49:30 2012-01-10 09:49:32
        23 2012-01-10 09:49:32 2012-01-10 09:49:47
        23 2012-01-10 09:49:32 2012-01-10 09:49:47(此时还是主库,有两个同序号的日志)
        24 2012-01-10 09:49:47 2012-01-10 09:52:43

现在的主库(shanghai)切换一下日志       
SQL> alter system switch logfile;

System altered.

现在的备库(beijing)上看一下归档日志,发现同样新增了一条日志,序号为25
SQL> select sequence#,first_time,next_time from v$archived_log order by 1;

SEQUENCE# FIRST_TIME          NEXT_TIME
---------- ------------------- -------------------
        21 2012-01-10 08:54:06 2012-01-10 09:49:30
        21 2012-01-10 08:54:06 2012-01-10 09:49:30
        22 2012-01-10 09:49:30 2012-01-10 09:49:32
        22 2012-01-10 09:49:30 2012-01-10 09:49:32
        23 2012-01-10 09:49:32 2012-01-10 09:49:47
        23 2012-01-10 09:49:32 2012-01-10 09:49:47
        24 2012-01-10 09:49:47 2012-01-10 09:52:43
        25 2012-01-10 09:52:43 2012-01-10 09:59:20
       
看一下现在的备库(beijing)的状态,SWITCHOVER_STATUS是NOT ALLOWED,因为主库正常运转中。
SQL> select db_unique_name,switchover_status,database_role from v$database;

DB_UNIQUE_NAME       SWITCHOVER_STATUS                        DATABASE_ROLE
-------------------- ---------------------------------------- --------------------------------
beijing              NOT ALLOWED                              PHYSICAL STANDBY

四、数据验证

1.在主库scott.dept表中插入些数据。
SQL> select * from scott.dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
SQL> insert into scott.dept values (55,'wallimn','beijing');

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.     

2.备库查询一下
SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open;

Database altered.

SQL> select * from scott.dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
        55 wallimn                      beijing 
       
3.备库恢复REDO应用
SQL> alter database recover managed standby database disconnect from session;

Database altered.

-END-
1
0
分享到:
评论

相关推荐

    Oracle19C DataGuard物理备库配置文档-完整版

    创建物理备库的过程涉及设置环境、安装软件、配置数据库以及建立主备库之间的连接。在这个例子中,操作系统是RHEL7.9,主备库都在虚拟环境中运行,数据库版本为19.3。备库通过redo apply来应用重做日志,以保持与...

    oracle数据库datagard搭建物理备库(主动切换)-详细笔记文档总结

    总的来说,Oracle Data Guard 的物理备库搭建涉及网络配置、数据库参数调整、归档日志模式、数据文件的复制以及备库的初始化和角色切换。这个过程需要谨慎操作,确保数据的安全性和系统的高可用性。在实际环境中,还...

    rhel7.5下配置Oracle11gR2 DataGuard物理备库-完整版

    Oracle 11gR2 DataGuard 物理备库配置是一项关键任务,旨在提供数据库的高可用性和灾难恢复策略。本文将深入探讨在64位RHEL7.5环境下配置Oracle11gR2(11.2.0.4)物理备库的全过程,并介绍相关原理和技术细节。 首先...

    oracle dataguard 快速搭建物理备库

    本文将详细介绍如何使用 RMAN (Recovery Manager) 工具快速搭建 Oracle 物理备库的过程。 #### 一、概述 Oracle Dataguard 支持多种类型的备库:物理备库、逻辑备库以及快照备库。其中,物理备库是与主库具有相同...

    Oracle 12.2主从数据同步方法

    主数据库的环境为 Win10 + Oracle 12.2.0.1 + Oracle GoldenGate 12.3,IP 地址为 172.16.100.73;从数据库的环境为 Win7 + Oracle 12.2.0.1 + Oracle GoldenGate 12.3,IP 地址为 192.168.33.56。 三、步骤 ### 1...

    Oracle 11g DataGuard配置过程_CentOS1

    Oracle 11g DataGuard 配置过程在 CentOS 环境中 Oracle 11g DataGuard 是一种高可用性解决方案,可以实现在主库和备库之间的实时数据同步,以确保数据的安全和可靠性。下面将详细介绍在 CentOS 环境中配置 Oracle ...

    Oracle11 Windows DG配置

    备库配置** 备库的配置主要涉及到软件的安装以及通过主库进行数据文件的初始化。在安装完软件后,可以通过以下步骤完成数据文件的复制: - 使用RMAN(Recovery Manager)工具进行全量备份。 - 将备份后的数据文件...

    oracle DATA DUARD安装配置

    备库部分则仅需要配置ASM,因为备库通常是通过主库复制而来的。 3. 在ASM中创建存放归档的目录:归档模式是Oracle数据库的一种模式,在此模式下,所有的日志文件都会被归档保存下来。这一步骤是为了确保主库和备库...

    清理备库已经应用的归档日志

    当备库已经应用了这些归档日志后,为了释放存储空间和优化系统性能,清理已应用的归档日志是一项常规任务。 首先,我们需要理解归档日志的工作原理。在Oracle数据库中,当redo log文件填满时,当前的redo log组会...

    Oracle 12c 主备集群部署手册:高可用架构的完整指南

    通过配置Oracle Data Guard的主备机制,用户可以实现主库和备库的实时同步,当主库出现故障时,备库能够快速接管,确保业务系统的连续性。 Oracle 12c主备集群架构是企业级数据库高可用解决方案的重要组成部分,...

    Oracle 11g DataGuard配置过程_Windows1

    ### Oracle 11g DataGuard配置过程详解 #### 一、引言 Oracle DataGuard 提供了一种全面的解决方案来管理生产数据库的物理备份。它不仅支持数据的实时复制,还能够实现对灾难恢复的支持。在 Windows 环境下进行 ...

    基于oracle的主备容灾-BC-manager

    BCManager eReplication支持同步和异步两种复制模式,同步模式下,数据更改会在主库和备库间即时同步,确保数据的一致性;异步模式则允许一定的数据延迟,以优化性能。在发生故障时,BCManager可以快速执行故障切换...

    ORACLE 数据库RAC环境DG主备不同步问题处理.docx

    在这个特定的问题中,我们面临的是一个主库和备库不同步的情况,具体表现为备库等待6392号归档日志而无法完成同步。 首先,这个问题涉及到的操作系统是Red Hat Enterprise Linux 5.11 - 64bit,运行在Oracle ...

    Oracle DataGuard 安装配置详解:从主备环境搭建到故障切换

    同时,文中还提供了如何在不同状态下启动和管理主备库的方法,以及数据保护和故障切换的具体步骤和技术细节。 适合人群:数据库管理员(DBA),负责 Oracle 数据库运维的专业人士。 使用场景及目标:适用于需要搭建...

    Oracle10g RAC环境下DataGuard备库搭建实例

    Oracle 10g RAC 环境下的 DataGuard 备库搭建实例是一个重要的数据库高可用性和灾难恢复方案。DataGuard 提供了主库和备库之间的实时数据复制,确保在主库出现故障时,备库能够快速接管,保证业务连续性。在 RAC ...

    Oracle DBA必备技能详解

    2. **数据库安装与配置**:学习如何在不同的操作系统上安装Oracle 10g,并进行初始配置,包括环境变量设置、网络服务命名和监听器配置。 3. **数据存储与表空间管理**:掌握数据块、区、段、表空间等概念,以及如何...

    CentOS7.6部署Oracle12 Data Guard文档.doc

    在本文中,我们将深入探讨如何在CentOS 7.6操作系统上部署Oracle 12c Data Guard环境。Data Guard是一种高可用性和灾难恢复解决方案...记住,配置过程可能因具体环境而异,因此在实际操作时需要根据实际情况进行调整。

    Oracle19c RAC+ RACDG配置详细部署文档

    在开始配置前,必须确保所有节点的Oracle版本相同,因为不同版本的数据库可能不兼容,这可能导致在切换主备库或进行其他操作时出现问题。例如,在描述中提到的环境,所有节点都是19.12.0.0版本,这是保持一致性的一...

Global site tag (gtag.js) - Google Analytics