`
wuhuizhong
  • 浏览: 681173 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

使用 RMAN 同步数据库

 
阅读更多

一.概述

二 操作步骤

(一).把生产库置为归档模式

(二).启动rman做数据库0级备份

(三).修改生产库数据库到未归档

(四).拷贝备份集到测试库

(五).在测试库上的操作

一.概述

因项目组遇到要2台数据库同步的问题,决定使用rman来实现此功能,生产库运行在非归档模式,所以操作起来相对麻烦些,生产库最多允许丢失半天数据,晚上可以重启数据,这样就为我们使用rman创造了必要条件,先来理清一下操作步骤:

1. 首先shutdown生产库(node1) ,并修改成归档模式。

2. 使用rman做一个0级备份集,并设置控制文件为自动备份。

3. 修改生产库为非归档模式,并置为open状态。

4. 到测试库上面,修改数据库为归档模式,因没有性能要求,不需要再改回非归档,方便恢复操作。

5. 拷贝备份集到测试库(node2),备份集的存放位置和生产库保持一致。

6. 启动测试库到nomount状态。

7. 启动rman,第一步先恢复controlfile.里面包含了重要的备份信息。

8. 更改数据库到mount状态.

9. 恢复数据库 restore database,注意,此步骤只会使用最近的一次0级备份,而不会应用增量或差异备份。

10. Recover database,此步骤会首先应用所有的差异或增量备份,然后恢复归档日志,当然在恢复归档时会出现错误,在此可以忽略掉。

11. 使用resetlogs关键字打开数据库,数据库同步完成。

以后每天按上面操作写成脚本自动执行即可,需要注意的地方是把0级备份改为1级或2级即可,这样就可以每半月做一次0级备份,每天晚上做一次1级或2级备份,然后恢复到测试库,以此来实现2数据库的同步.

二 操作步骤 (一).把生产库置为归档模式.

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>shutdown immediate;

3. Sql>startup mount;

4. Sql>alter database archivelog;

5. Sql>alter database open;

6. Sql>quit

(二).启动rman做数据库0级备份

1. [oracle@primary orcl]$ rman target /

2. RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

3. RMAN> backup incremental level 0 database format 'full_db_%d_%s_%t_%p';

--第一次同步操作时用该语句。

RMAN>quit;

日常同步备份时使用1级备份

4. [oracle@primary orcl]$ rman target /

5. RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

6. RMAN> backup incremental level 1 database format 'increment _db_%d_%s_%t_%p';

7. RMAN>quit;

(三).修改生产库数据库到未归档.

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>alter database noarchivelog;

3. Sql>alter database open;

4. Sql>quit;

(四).拷贝备份集到测试库

拷贝备份集文件到测试库,并和生产库相同位置,可以使用sftp或ftp等工具完成。

(五).在测试库上的操作

1. [oracle@primary orcl]$ Sqlplus ‘/as sysdba’

2. Sql>startup nomount;

3. Sql>quit;

4. [oracle@primary orcl]$ rman target /

5. RMAN> restore controlfile from/opt/oracle11g/u01/dbs/c-1190421672-20080819-01';

--该处可修改为实际备份集。

6. RMAN> alter database mount;

7. RMAN> restore database;

8. RMAN> recover database;

9. RMAN>alter database open resetlogs;

注意,所有的增量或差异备份都是用recover database来恢复的,如果丢失增量备份,需用下面方法启动数据库,将可能导致丢失大量数据:

启动sqlplus,使用下面语句清除丢失的增量备份.

Sql>recover database using backup controlfile until cancel;

ORA-00279: ü 1839635 ( 08/18/2008 23:25:21 ú) 1 ±è

ORA-00289: ¨é: /archive/1_74_662640938.dbf

ORA-00280: ü 1839635 ( 1) ò #74

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

Cancel <需要手工输入后回车>

Media recovery cancelled.

最后执行resetlogs关键字启动数据库。

SQL> alter database open resetlogs;

Database altered.

备份及同步脚本:
 rman_backup_v1.1.sh

    #!/bin/bash
    ###################################################################
    # Usage:
    # backup_rman_v1.1.sh [all|repeat|sync]
    # all: list all backup file.
    # repeat: repeat level-1 increment backup.
    # sync: sync backup file to target database.
    ###################################################################
    export ORACLE_HOME=/opt/oracle11g/u01
    export ORACLE_SID=primary
    export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/ctx/lib
    export PATH=$PATH:${ORACLE_HOME}/bin
    export NLS_LANG="American_america.zhs16gbk"
    export ORACLE_OWNER=oracle
    export backup_dir=/home/oracle/backup/backup
    export log=/home/oracle/backup/log
    rsync_dir=$backup_dir #sync dir
    controlfile_dir=$backup_dir/controlfile
    username=oracle #target OS ,oracle user
    password=go2north #target oracle user password
    target_host=172.16.5.27
    today_backup=`date +'%Y-%m-%d'`
    mail_to_admin="zhaorupeng@126.com"
    ########set display color#########
    white=$(echo -e "\e[39;40m")
    green=$(echo -e "\e[36;40m")
    red=$(echo -e "\e[31;40m")
    purple=$(echo -e "\e[35;40m")
    yellow=$(echo -e "\e[33;40m")
    blue=$(echo -e "\e[34;40m")
    ########color set end ############
    # data backup status.
    # 0: backup failed.
    # 2: default
    # 9: success
    backup_status=2
    #database status check ,If it's not turn on,the value is 0,or else 1
    ora_stat=`ps -ef | grep -i 'ora_smon_*' |grep -v grep| wc -l`
    #database mode check,If it's archive mode,that value is 1,or else 0;
    arch=`ps -ef | grep -i 'ora_arc_*' | grep -v grep | wc -l`
    function open_database()
    {
    if [ "$ora_stat" = 0 ]; then
    cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
    shutdown immediate;
    startup;
    quit;
    EOF
    backup_status=2
    if [ "$?" = 1 ]; then
    echo "database unable strtup!"
    backup_status=0
    exit 1
    fi
    fi
    }
    function open_archive_mode()
    {
    if [ "$arch" = 0 ]; then #if arch=1,nothing,because it was already on archive mode
    echo "****************open archive mode*************"
    cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
    quit;
    EOF
    fi
    }
    function return_initaliztion_mode()
    {
    if [ "$arch" = 0 -a "$backup_status" > 0 ]; then
    #if arch=1,nothing,because initialization mode is archive mode
    echo "********* return initialization database mode**********"
    cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
    shutdown immediate;
    startup mount;
    alter database noarchivelog;
    alter database open;
    quit;
    EOF
    fi
    if [ "$?" = 0 ]; then
        echo "return initalization database successfully."
    fi
    echo "************return initialization database mode *********" ;
    }
    function increment_backup_level_1() # incremental level-1 backup
    {
    open_database
    open_archive_mode
    echo "******** `date +'%Y%m%d'` Do level-1 increment backup....*********************" 2>&1;
    cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_increment_db_`date +'%y%m%d%H%M'`.log
    configure maxsetsize to 20g;
    configure controlfile autobackup on;
    configure controlfile autobackup format for device type disk to '$controlfile_dir/%F';
    run {
    allocate channel c01 type disk;
    backup incremental level 1 database format '$backup_dir/increment_db_%d_%s_%t_%p' tag="increment_db_`date +'%y%m%d%H%M'`";
    release channel c01;
    }
    configure controlfile autobackup off;
    crosscheck backup of database;
    crosscheck archivelog all;
    delete noprompt obsolete ;
    delete noprompt expired backup;
    delete noprompt backup completed before 'sysdate-30';
    delete noprompt archivelog until time 'sysdate-14';
    EOF
    if [ "$?" = 0 ];then
        echo "*******************level-1 backup completed!************************"
            backup_status=9
    else
        echo "*****************level-1 backup databae failed,please contact oracle dba*******"
        backup_status=0
    fi
    return $backup_status
    return_initaliztion_mode
    }
    function level_0_backup_database()
    {
    open_database
    open_archive_mode
    echo "************* Do level-0 backup ****************"
    cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_full_db_`date +'%y%m%d%H%M'`.log
    configure retention policy to redundancy 30;
    configure maxsetsize to 20g;
    configure controlfile autobackup on;
    configure controlfile autobackup format for device type disk to '$controlfile_dir/%F';
    crosscheck backup of database;
    crosscheck archivelog all;
    delete noprompt obsolete ;
    delete noprompt expired backup;
    delete noprompt backup completed before 'sysdate-30';
    delete noprompt archivelog until time 'sysdate-5';
    run {
    allocate channel c1 type disk;
    backup incremental level 0 database format '$backup_dir/full_db_%d_%s_%t_%p' tag="full_db_`date +'%y%m%d%H%M'`";
    release channel c1 ;
    }
    configure controlfile autobackup off;
    quit;
    EOF
    if [ "$?" = 0 ];then
        echo "*******************level-0 backup completed!************************"
            backup_status=9
    else
        echo "******************level-0 backup databae failed,please contact oracle dba*******"
        backup_status=0
    fi
    return $backup_status
    return_initaliztion_mode
    }
    function repeat_increment_backup()
    {
        if [ "$#" = 0 ]; then
            exit 0
        else
              if [ "$1" = "repeat" ]; then
                echo "************do database increment backup again**************"
                increment_backup_level_1 $ORACLE_HOME $log $backup_dir
                echo "************repeat increment backup completed!**************"
              else
                echo "command error,please use parameter 'repeat'"
                exit 0
              fi
        fi
    }
    # sync target database backup files #
    function sync()
    {
    ping $target_host -c 1 > /dev/null # test network link #
    if [ $? != 0 ] ; then
        echo "sync host:$red $target_host $white link failed!,please check network."
        exit 1
    fi
    if [ -f /usr/bin/rsync ]; then
    #check resync command #
       cat << EOF > sync
    #!/usr/bin/expect
    spawn /usr/bin/rsync -avzu $rsync_dir/ $username@$target_host:$rsync_dir
    expect "password:"
    send "$password\n";
    send "quit\n";
    interact
    EOF
    echo "********copy backup files to target database********"
      if [ -f sync -a -f /usr/bin/expect ]; then
        chmod +x sync
        ./sync
        rm -rf ./sync
    #list sync files
    backup_file=`ls -ltR --full-time $backup_dir/ | egrep -i "increment_|c-" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
        echo "sync files:"
        echo "$blue"
        j=0
        for i in $backup_file
        do
            ((j++))
            a[$j]=$i
            if [ $j = 3 ]; then
                echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} ${a[$j]}"
                 j=0
            fi
        done
        echo "$white"
        echo " transtion has succeed.please check the backup files on target database."
        exit 0
       else
          echo "command expect not found, please install Tcl/expect"
          exit 1
       fi
    else
        echo "command rsync not found,please install!"
        exit 1
    fi
    }
    if [ -f $log/autobak_`date +'%Y%m%d'`.log ]; then
        rm -rf $log/autobak_`date +'%Y%m%d'`.log
    fi
    (
    level_0_backup_status=`find $backup_dir/ -name 'full_db_*'| grep -i full_db |grep -v grep | wc -l` 2>&1
    level_1_backup_status=`ls -l --full-time $backup_dir/ |grep -i 'increment_db_*'| grep -i $today_backup|grep -v grep | wc -l` 2>&1
    if [ $level_0_backup_status = 0 -a $backup_status = 2 ]; then
        level_0_backup_database
        backup_status=$?
    fi
    if [ $level_1_backup_status = 0 -a $backup_status = 2 ]; then
        increment_backup_level_1
        backup_status=$?
    fi
    # ############Today's database backup information##########
    # check today's backup status #
    check_backup=`ls -l --full-time $backup_dir/ | egrep -i "increment_db_|full_db_" | awk '{print $6}' | grep -i $today_backup | wc -l`
    # check today's controlfile backup information #
    control_file=`ls -lt --full-time $controlfile_dir/ | grep -i "c-*" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
    # check today's increment backup information #
    backup_file_info=`ls -lt --full-time $backup_dir/ | egrep -i "increment_db_|full_db_" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
    log_file_info=`ls -lt --full-time $log/ | egrep -i "increment_db_|full_db_" | grep -i $today_backup | awk '{print $6 " " substr($7,1,8) " " $9}'`
    if [ "$1" = "all" ] ; then
        backup_file_info=`ls -lt --full-time $backup_dir/ | egrep -i "increment_db_|full_db" | awk '{print $6 " " substr($7,1,8) " " $9}'`
        control_file=`ls -lt --full-time $controlfile_dir/ | grep -i "c-*"| awk '{print $6 " " substr($7,1,8) " " $9}'`
    fi
        
    # print today's backup information including controlfile and log information #
    if [ $check_backup -ge 0 ]; then
        if [ "$1" = "repeat" ] ; then
            repeat_increment_backup $1
        else
                    echo " ############Today's database backup information########## "
               if [ "$1" = "all" ]; then
        
                        today_backup=`ls -l --full-time $backup_dir/ | grep -i full_db_* | awk '{print $6}'`
                
                echo "List date $purple ${today_backup[0]} $white level-0 backup database after file information"
               else
                    echo "Date $purple $today_backup $white database backup is completed."
                    fi
                echo "backup file directory: $backup_dir"
                echo "backup file information: $green"
            echo ""
            j=0
                for i in $backup_file_info
            do
                ((j++))
                a[$j]=$i
                if [ $j = 3 ]; then
                    echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $backup_dir/${a[$j]}"
                     j=0
                fi
            done
                echo "$white"
                    echo "Controlfile information:$yellow"
            echo ""
            j=0
            for p in $control_file;do
                ((j++))
                a[$j]=$p
                if [ $j = 3 ] ; then
                        echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $controlfile_dir/${a[$j]}"
                        j=0
                fi
              done
            echo "$white"
                    echo "log information:$blue"
            echo ""
            j=0
            for p in $log_file_info;do
                ((j++))
                a[$j]=$p
                if [ $j = 3 ] ; then
                        echo "${a[`expr $j - 2`]} ${a[`expr $j - 1`]} $log/${a[$j]}"
                        j=0
                fi
              done
            echo "$white"
                echo "If you want increment backup database again,please use \"repeat\" parameter"
                    echo " ############Today database backup information the end ########## "
            fi
    fi
    # end print backup information #
    # copy backup file #
    if [ "$1" = "sync" ] ; then
        backup_status=9
    fi
    if [ "$backup_status" = 9 ]; then
        sync
    else
         echo "Today's Backup file is synced. please check whether it's in the target database."
         echo "If you want to sync again,please use \"sync\" parameter."
         exit 0
    fi
    echo "If you want to view all backup information,Please use \"all\" parameter."
    ) 2> $log/autobak_`date +'%Y%m%d'`.log
    #mail -s "`date +'%Y%m%d'`database backup information" $mail_to_admin<$log/autobak_`date +'%Y%m%d'`.log

 

恢复脚本:
rman_restore_v1.1.sh

    #!/bin/sh
    export ORACLE_HOME=/opt/oracle11g/u01
    export ORACLE_SID=primary
    export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/ctx/lib
    export PATH=$PATH:${ORACLE_HOME}/bin
    export NLS_LANG="American_america.zhs16gbk"
    export ORACLE_OWNER=oracle
    export backup_dir=/home/oracle/backup/backup
    export log=/home/oracle/backup/log
    rsync_dir=$backup_dir #sync dir
    controlfile_dir=$backup_dir/controlfile
    username=oracle #target OS ,oracle user
    password=go2north #target oracle user password
    target_host=172.16.5.27
    today_backup=`date +'%Y-%m-%d'`
    today=`date +'%Y%m%d'`
    white=$(echo -e "\e[39;40m")
    green=$(echo -e "\e[36;40m")
    red=$(echo -e "\e[31;40m")
    blue=$(echo -e "\e[33;40m")
    backup_status=2 #data backup status ,0: backup faild,1: 1 level increment backup,2 : 0 level backup
    # Begin change restore variable
    restore_status=true
    last_restore_file=increment_db_ORCL_76_663449691_1
    last_restore_date=(2008-08-22 19:36)
    last_recover_time="2008-08-28 15:12:08"
    last_restore_time=2
    last_restore_num=3
    # End change restore variable
    #sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/t=[0-9]\+/t='$((t+1))'/' $0
    #sed -i 's/t=[0-9]\+/t='$((t+1))'/' $0
    restore_file=`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print $9}'|head -1`
    controlfile=`ls -lt --full-time $controlfile_dir | grep -i 'c-*' | awk '{print $9}'| head -1`
    recover_time=`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print substr($7,1,5)}'| head -1`
    recover_date=(`ls -lt --full-time $backup_dir/ | grep -i 'increment_db_*' | awk '{print $6 " " substr($7,1,5)}' | head -1`)
    recover_times=`date +'%Y-%m-%d %H:%M:%S'`
    function update_backup_info()
    {
        sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=true/' $0
            sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_file=.*/last_restore_file='"${restore_file}"'/' $0
            sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
                    sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_date=.*/last_restore_date='"(${recover_date[*]})"/ $0
            sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_time=.*/last_restore_time='$((last_restore_time+1))'/' $0
            sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_num=.*/last_restore_num='$((last_restore_num+1))'/' $0
    }
    function restore_database()
    {
        echo "************* recover database start ****************"
            cat << EOF | $ORACLE_HOME/bin/sqlplus '/as sysdba'
            shutdown immediate;
            startup nomount;
    EOF
            cat << EOF | $ORACLE_HOME/bin/rman target / |tee $log/rman_restore_db_`date +'%y%m%d%H%M'`.log
            run {
                allocate channel c01 type disk;
                allocate channel c02 type disk;
                allocate channel c03 type disk;
                restore controlfile from "$controlfile_dir/$controlfile";
                alter database mount;
                recover database;
                release channel c01;
                release channel c02;
                release channel c03;
            }
            alter database open resetlogs;
    EOF
            if [ "$?" = 0 ];then
                echo "*******************restore be completed!************************"
                backup_status=9
                update_backup_info
                exit 0
            else
                echo "******************restore database failed,please contact oracle dba*******"
                            sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
                sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=false/' $0
            fi
                return "$backup_status"
    }
    #delete backup file on the weekend again
    #file_info=`ls -l $backup_dir/ | grep -i 'increment_backup_*.gz'|wc -l`
    #if [ $file_count -gt 7 ]
    #then
    # del_files=`ls -lR $backup_dir| egrep -i "increment_db_|full_db_"|grep \`date -d "7 days ago" +'%Y-%m-%d'\`|awk "{print $9}"`
    # rm -f $del_files;
    # if [ $? = 0 ]
    # then
    # echo "removing $del_files"
    # fi
    #else
    # echo "No last file"
    #
    #fi
    ###########################################
    if [ "$last_restore_file" != "$restore_file" -o "${last_restore_date[1]}" != "$recover_time" ]; then
    restore_database    
    fi
    if [ "$1" = "repeat" ] ; then
                   restore_database
    fi
    if [ "$restore_status" = "true" -o "${last_restore_date[0]}" = ${recover_date[0]} ]; then

    echo "Today's sync already completed!"
    echo "Last restore file: $backup_dir/$last_restore_file"
    echo "Last restore time: $last_restore_time"
    echo "The number of times the database be restored today: $last_restore_num"
    echo "The total number of times the database have ever been restore: $last_recover_time"
    sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
    else
    sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_restore_time=.*/last_restore_time=0/' $0
    sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/restore_status=.*/restore_status=false/' $0
    sed -i '/^# Begin change restore variable/,/^# End change restore variable/s/last_recover_time=.*/last_recover_time='"\"${recover_times}\""'/' $0
    fi

 

 

from:

http://blog.chinaunix.net/uid-78699-id-3240613.html

 

other:Linux 平台下 RMAN 全备 和 增量备份 shell 脚本:http://blog.csdn.net/tianlesoftware/article/details/5740630

 

分享到:
评论

相关推荐

    基于rman的数据库迁移(ASMRAC数据库).pdf

    5. **恢复过程**: 在完成备份和参数修改后,接下来是恢复步骤,这通常包括挂载目标数据库,使用RMAN的恢复命令将备份数据应用到新环境,然后打开数据库。这个过程可能还需要执行额外的调整,比如重建控制文件,同步...

    oracle的rman数据库备份方案.doc

    在数据库完全丢失的情况下,RMAN可以使用全量备份和相关的redo日志来恢复整个数据库到一个特定的时间点。 **恢复单个表空间** 对于部分损坏或丢失的表空间,RMAN可以针对性地恢复,避免对整个数据库的影响。 **...

    ORACLE数据库RMAN备份恢复[参照].pdf

    ORACLE 数据库 RMAN 备份恢复是指使用 ORACLE 的 Recovery Manager(RMAN)工具对数据库进行备份和恢复的过程。RMAN 是 ORACLE 数据库管理系统中的一种备份和恢复工具,能够对数据库进行全备、增备、差异备、日志备...

    Oracle 11gR2 使用RMAN 复制搭建物理Data Guard

    4. **初始同步**:使用RMAN的`DUPLICATE TARGET DATABASE`命令复制主数据库到备用数据库。这一步会将主数据库的数据文件、控制文件和初始化参数文件复制到备用服务器。 5. **启用日志传输**:在主数据库上配置redo ...

    Oracle数据库rman环境配置详解

    Oracle 数据库 RMAN 环境配置是指在 Oracle 数据库中使用 RMAN 工具对数据库进行备份和恢复的配置过程。本文将对 RMAN 环境配置进行详细地介绍,并提供相应的示例加以说明。 一、配置自动通道 RMAN 自动分配 2 个...

    使用RMAN实现异机备份恢复(WIN平台)

    ### 使用RMAN实现异机备份恢复(Windows平台) 在企业级数据库管理中,备份与恢复是确保数据安全的重要环节之一。对于Oracle数据库来说,RMAN(Recovery Manager)是一种非常强大的工具,它不仅可以帮助我们进行...

    Oracle数据库实时同步

    - **在线重建备用数据库**:使用RMAN工具连接到主数据库和备用数据库,执行在线重建操作。 - **添加standby logfile**:在备用数据库上创建新的standby logfile,用于记录后续的归档日志。 ##### 3. 监听器的管理和...

    Oracle数据库RMAN备份策略研究

    本文以Oracle数据库为例,重点探讨了RMAN(Recovery Manager)备份工具的使用方法及其备份策略,旨在为Oracle数据库的稳定运行提供保障。 #### 关键词 Oracle, 备份策略, RMAN #### 引言 数据库作为企业核心资产之...

    基于DataGuard和RMAN的Oracle数据库容灾方案.pdf

    在DataGuard中,如果主数据库因硬件故障或其他原因无法使用,可以通过RMAN从备份中恢复数据,然后再切换到备用数据库,确保业务不受影响。 容灾系统的设计需要考虑RPO和RTO两个关键指标。RPO代表能容忍的数据丢失量...

    oracle11g 关于rman 的基础知识

    3. **同步数据库和恢复目录**:`RESYNC CATALOG`命令可以确保恢复目录中的信息与数据库实际状态保持一致。 4. **备份和恢复命令**:RMAN提供了多种备份和恢复命令,如`COPY`用于复制数据文件,`BACKUP`用于备份...

    rman-doc

    本文档是Oracle Consulting Services编写的关于RMAN( Recovery Manager)的内部使用指南,主要讨论如何维护和利用RMAN进行数据库备份与恢复。RMAN是Oracle数据库的一个内置工具,用于管理数据库的备份、恢复和归档...

    利用RMAN创建“军卫一号”Oracle Dataguard数据库.pdf

    3. **捕获日志文件**:使用RMAN的DUPLICATE命令从主数据库捕获控制文件和redo日志,同步备用数据库的数据文件。 4. **开启redo传输**:配置主数据库以发送redo日志到备用数据库,这通常通过ALTER SYSTEM命令完成。 5...

    Oracle10G 数据库同步

    例如,可能使用RMAN(Recovery Manager)进行备份,或者使用Data Pump导出/导入数据。 - **runsql.sql**:这是一个SQL脚本文件,通常用于执行特定的数据库操作,如创建表、插入数据或执行DDL/DML语句。在数据库同步...

    oracle RMAN 功能介绍 ppt

    - 更新恢复目录信息,如通过`REGISTER`命令注册新数据库,或者使用`RESYNC CATALOG`命令同步数据库和恢复目录之间的变化。当数据文件、表空间或数据库结构发生变化时,手动同步是必要的。 - `RESET DATABASE`命令...

    Oracle_RMAN快速入门

    同时,RMAN还支持使用恢复目录进行备份历史的管理和同步,以确保备份信息的准确性和完整性。 总的来说,Oracle RMAN是数据库管理中的关键工具,对于数据安全和业务连续性有着至关重要的作用。新手可以通过实践和...

    RMAN 教程

    RMAN使用CATALOG数据库来存储备份元数据,这对于管理和追踪备份历史非常关键。可以通过RMAN命令将备份信息注册到CATALOG,以便于后续的恢复操作。 ### 磁带接口 RMAN支持多种备份介质,包括磁带设备。通过配置磁带...

    使用RMAN DUPLICATE...FROM ACTIVE DATABASE 创建物理备库.docx

    - 在主库上,使用RMAN连接到目标数据库(即主库)和辅助数据库(这里是备库)。 - 运行`DUPLICATE`命令,指定`FROM ACTIVE DATABASE`选项,以及备库的相关参数,例如数据库名、表空间映射等。 2. **RMAN ...

    RMAN管理ORACLE-RAC数据库的备份与恢复

    本文将详细介绍如何使用RMAN(Recovery Manager)来管理ORACLE RAC数据库的备份与恢复。 1. **修改 RAC 数据库的归档模式** 在进行RMAN备份时,数据库通常需要处于归档模式,这样可以确保在发生故障时有完整的事务...

Global site tag (gtag.js) - Google Analytics