zoukankan      html  css  js  c++  java
  • Rman通过duplicate创建standby

    Rman通过duplicate创建standby

    1.试验环境

    [oracle@gaojf orcl]$ sqlplus "/as sysdba"

    SQL*Plus: Release 10.2.0.1.0 - Production on Wed Dec 6 08:54:45 2006

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options

    SQL> select * from v$version;

    BANNER

    ----------------------------------------------------------------

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

    PL/SQL Release 10.2.0.1.0 - Production

    CORE 10.2.0.1.0 Production

    TNS for Linux: Version 10.2.0.1.0 - Production

    NLSRTL Version 10.2.0.1.0 - Production

    SQL>

    2.确认主库处于归档模式

    SQL> archive log list;

    Database log mode Archive Mode

    Automatic archival Enabled

    Archive destination /home/oracle/archive_log

    Oldest online log sequence 69

    Next log sequence to archive 71

    Current log sequence 71

    SQL>

    3创建备库instance

    windows平台利用oradim工具创建一个新的instance,unix/linux平台设置新的ORACLE_SID即可,我的是linux平台,设置ORACLE_SID即可。

    4:准备好备库的参数文件

    本次试验在两个系统上建主备库,另外如果主备库都在一起的话,db_name设置为主库名,lock_name_space设置为备库名,同时要注意设置好DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数。

    备库主要的几个参数如下:

    db_name='dbsour'

    db_unique_name='standby'

    log_archive_config='dg_config=(primary,standby)'

    log_archive_dest_1='location=/home/oracle/arch_log'

    log_archive_dest_2='service=primary valid_for=(online_logfiles,primary_role) db_unique_name=standby'

    fal_client='primary'

    fal_server='standby'

    log_archive_dest_state_1='enable'

    log_archive_dest_state_2='enable'

    standby_archive_dest='/home/oracle/standby_log'

    standby_file_management='auto'

    主库几个主要参数如下:

    log_archive_config='DG_CONFIG=(PRIMARY,STANDBY)'

    DB_UNIQUE_NAME='PRIMARY'

    LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive_log'

    log_archive_dest_2='SERVICE=STANDBY valid_for=(online_logfiles,primary_role) DB_UNIQUE_NAME=STANDBY'

    LOG_ARCHIVE_DEST_STATE_1=ENABLE

    LOG_ARCHIVE_DEST_STATE_2=ENABLE

    LOG_ARCHIVE_FORMAT='arc%s%t%r.arc'

    FAL_SERVER='primary'

    FAL_CLIENT='standby'

    STANDBY_FILE_MANAGEMENT='AUTO'

    STANDBY_ARCHIVE_DEST='/home/oracle/standby_log'

    5.在备库生成password file

    [oracle@gaojfdbs]$Orapwd file= /opt/oracle/product/dbs password= entries

    或者可以直接复制主库密码文件到备库相应的位置也可。

    6.配置网络

    配置主备库的listener.ora,tnsnames.ora。修改完lisner.ora后注意重启监听。

    主库Listener.ora

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = PLSExtProc)

    (ORACLE_HOME = /free/oracle/product/10.2.0/db_1)

    (PROGRAM = extproc)

    )

    LISTENER =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.144)(PORT = 1521))

    )

    )

    备库Listener.ora

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = PLSExtProc)

    (ORACLE_HOME = /free/oracle/product/10.2.0/db_1)

    (PROGRAM = extproc)

    )

    LISTENER =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.253)(PORT = 1521))

    )

    )

    tnsnames.ora(主备库配置一样)

    PRIMARY =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.144)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVICE_NAME = primary)

    )

    )

    STANDBY =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.60.253)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVICE_NAME = standby)

    )

    )

    7.利用rman备份主库

    注意同时备库控制文件

    [oracle@gaojf ~]$ rman target /

    Recovery Manager: Release 10.2.0.1.0 - Production on Thu Dec 7 10:10:02 2006

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    connected to target database: ORCL (DBID=1132959697)

    RMAN> backup full format='/opt/oracle/backup/FULL_%d_%T_%s' database include current controlfile for standby

    plus archivelog format='/opt/oracle/backup/arch_%d_%T_%s';

    Starting backup at 07-DEC-06

    current log archived

    using target database control file instead of recovery catalog

    allocated channel: ORA_DISK_1

    channel ORA_DISK_1: sid=159 devtype=DISK

    skipping archive log file /opt/oracle/backup/arc2951605985194.arc; already backed up 1 time(s)

    skipping archive log file /opt/oracle/backup/arc2961605985194.arc; already backed up 1 time(s)

    skipping archive log file /opt/oracle/backup/arc2971605985194.arc; already backed up 1 time(s)

    skipping archive log file /opt/oracle/backup/arc2981605985194.arc; already backed up 1 time(s)

    8:复制 rman全备份到备库

    利用操作系统命令scp,或者ftp bin方式复制rman全备份到备库。

    由于我rman主库备份时设置备份文件位置为/opt/oracle/backup,因此必须把此备份文件也放到备库同样的位置。

    9.启动备库到nomount

    SQL> startup nomount
    ORACLE instance started.

    Total System Global Area 135338868 bytes
    Fixed Size 453492 bytes
    Variable Size 109051904 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes

    10.利用rman恢复备库

    [oracle@localhost ~]$ rman target sys/oracle@primary auxiliary /

    Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 31 15:32:19 2009

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    connected to target database: DBSOUR (DBID=1207697562)

    connected to auxiliary database: DBSOUR (not mounted)

    RMAN> duplicate target database for standby dorecover nofilenamecheck;

    Starting Duplicate Db at 31-MAR-09

    using target database control file instead of recovery catalog

    allocated channel: ORA_AUX_DISK_1

    channel ORA_AUX_DISK_1: sid=156 devtype=DISK

    contents of Memory Script:

    {

    set until scn 1217985;

    restore clone standby controlfile;

    sql clone 'alter database mount standby database';

    }

    executing Memory Script

    executing command: SET until clause

    Starting restore at 31-MAR-09

    using channel ORA_AUX_DISK_1

    channel ORA_AUX_DISK_1: starting datafile backupset restore

    channel ORA_AUX_DISK_1: restoring control file

    channel ORA_AUX_DISK_1: reading from backup piece /opt/oracle/backup/FULL_DBSOUR_20090331_35

    channel ORA_AUX_DISK_1: restored backup piece 1

    piece handle=/opt/oracle/backup/FULL_DBSOUR_20090331_35 tag=TAG20090331T153600

    channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03

    output filename=/opt/oracle/oradata/orcl/control01.ctl

    output filename=/opt/oracle/oradata/orcl/control02.ctl

    output filename=/opt/oracle/oradata/orcl/control03.ctl

    Finished restore at 31-MAR-09

    11.将备库置于自动恢复状态

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

    Database altered.

    12.在主库上执行检查

    SQL> conn /as sysdba

    Connected.

    SQL> select dest_name,status,error from v$archive_dest;

    DEST_NAME STATUS ERROR

    ------------------------------ -------- ----------

    LOG_ARCHIVE_DEST_1 VALID

    LOG_ARCHIVE_DEST_2 VALID

    LOG_ARCHIVE_DEST_3 INACTIVE

    LOG_ARCHIVE_DEST_4 INACTIVE

    LOG_ARCHIVE_DEST_5 INACTIVE

    LOG_ARCHIVE_DEST_6 INACTIVE

    LOG_ARCHIVE_DEST_7 INACTIVE

    LOG_ARCHIVE_DEST_8 INACTIVE

    LOG_ARCHIVE_DEST_9 INACTIVE

    LOG_ARCHIVE_DEST_10 INACTIVE

    10 rows selected.

    SQL> select * from v$archive_gap;

    no rows selected

    SQL> select sequence# from v$log_history;

    SEQUENCE#

    ----------

    1

    2

    ...

    321

    13.在备库上执行检查

    SQL> conn / as sysdba

    Connected.

    SQL> select * from v$archive_gap;

    no rows selected

    SQL> select sequence# from v$log_history;

    SEQUENCE#

    ----------

    1

    2

    ...

    321

    SQL> select sequence#,applied from v$archived_log;

    SEQUENCE# APPLIE

    ---------- ------

    320 YES

    321 YES

    SQL> select process,status from v$managed_standby;

    PROCESS STATUS

    ------------------ ------------------------

    ARCH CONNECTED

    ARCH CONNECTED

    RFS IDLE

    MRP0 WAIT_FOR_LOG

    至此,备库创建成功。

    可以看到,使用rman的duplicate来创建备库,过程简洁了不少,无需在手动创建备库控制文件。

    14.主备库正常切换测试

    1.交换主备库的参数文件,并停止主库的监听器(备库的监听器不能停)

    2. primary site
    alter database commit to switchover to physical standby with session shutdown;
    shutdown immediate
    startup nomount; #用备库的初始化参数启动。
    alter database mount standby database;
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    3.standby site
    alter database commit to switchover to primary;
    shutdown immediate;
    startup #用拷贝过来的主库的初始化参数修改。

  • 相关阅读:
    使用Jenkins自带功能(不用shell)构建Docker镜像并推送到远程仓库
    方法2:使用Jenkins构建Docker镜像 --SpringCloud
    在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库
    解决跟Docker私有仓库登陆,推送,拉取镜像出现的报错
    Linux 内存占用大排查
    方法1:使用Jenkins构建Docker镜像 --SpringCloud
    使用Jenkins编译打包SpringCloud微服务中的个别目录
    使用Jenkins的Git Parameter插件来从远程仓库拉取指定目录的内容
    稀疏检出-使用git检索出仓库里的某一个目录文件,而不是整个仓库的所有文件
    通过 Kubeadm 安装 K8S 与高可用,版本1.13.4
  • 原文地址:https://www.cnblogs.com/weixun/p/3130207.html
Copyright © 2011-2022 走看看