`

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
分享到:
评论

相关推荐

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

    64位RHEL7.5环境下配置Oracle11gR2(11.2.0.4)物理备库 安装环境简介 DataGuard 原理概述 1. 备库类型 2. 物理和逻辑的区别 3. 创建过程的不同 4. 主备切换 5. 物理备库原理图 6. 逻辑备库原理图 7. 同步查询原理...

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

    1,Oracle19c RAC+ RACDG配置详细部署文档 2,Oracle19c RAC+ RACDG+racdg2配置详细部署文档 涉及主库备库参数配置、spfile、crs资源配置更新及实施过程中故障排除等; 来自于现实上亿级生产系统的实操记录。

    Oracle 主要配置文件介绍

    /u02/app/oracle/admin/cams/udump 6 UTL_FILE_DIR 参数 UTL_FILE_DIR = * UTL_FILE_DIR 参数指定一个或多个目录用于 Oracle 应用的文件 I/O 如备 份数据到文件 在 CAMS 系统中将该值设置为 * ...

    oracle 10g dataguard 详细配置步骤

    新手上路,在几经辗转多方查看网上各路大侠的资料下,终于搞定了dataguard的物理standby配置问题,以及主备库的switchover。下面就基于网络上一篇配置文档,写下了我的配置过程,愿似我这般新手可以少走弯路。

    oracle spfile

    oracle spfile/pfile详解; 深入spfile 及 pfile的区别

    ORACLE数据库复制

    备库的方式,就是数据库对数据库的备份方式,主要是解决容灾的,不讨论此话题。 流复制主要是利用ORACLE的归档日志,进行增量备份来实现的,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml。可以...

    Oracle RAC静默安装部署操作说明

    RAC安装从开始操作系统环境准备,Grid软件静默安装,Database软件静默安装,补丁操作,建库操作,安全加固等内容。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装 8. 步骤7/8:安装产品 产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 ...

    一种自动管理的高可用架构的实现

    在DataGuard的搭建过程中,配置Broker工具实现自动管理DataGuard,在此基础上,设置FSFO和快速闪回恢复区实现本地主数据库故障时自动切换到备库,以及在备库快速闪回恢复区没有被归档日志撑满之前主库得到正常恢复,...

    asp.net知识库

    发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory3.0完全攻略--简单示例 XCodeFactory3.0完全攻略--IDBAccesser ...

    BlackBerry开发平台配置及入门介绍(傻瓜教程)

     “手机邮箱”和“BlackBerry”业务具有高可靠性的安全加密措施,邮件信息在从邮件代理服务器到手机终端的传递过程中实行端到端加密,使用过程非常安全。它使客户在任何时间,任何地点都可以方便、及时、安全地接入...

    服务器维保服务技术方案(1).doc

    服务器维保服务技术方案... 充足可靠的备品备件 经长期的积累投入,华信富恒已经在成都、深圳等地建立起完备的备件库,有充 足的备机备件,在维护中都会根据每个用户配置制定专用备机备件计划,确保客户设备 的系统维护

    Toad 使用快速入门

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of ...

    智能调度平台系统技术要求.pdf

    3、数据处理能力 3.1必须提供分布式和跨平台的灵活配置方案,支持对关系型数 据库的文本数据和大对象类型数据检索能力。 3.2系统支持并发用户数大于1000人。 3.3百万目录数据量带全文检索,客户端响应时间小于10秒...

    基于J2EE框架的个人博客系统项目毕业设计论...

    它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的...

    Java典型模块

    10.3.1 为什么需要版面的配置 10.3.2 Java语言中的各种布局管理器 10.4 小结 第11章 秒表(事件+线程) 11.1 秒表原理 11.1.1 项目结构框架分析 11.1.2 项目功能业务分析 11.2 秒表的实现过程 11.2.1 秒表类 11.2.2 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的...

Global site tag (gtag.js) - Google Analytics