RMAN异机duplicate复制数据库 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    实验平台: REDHAT linux 5.5 + oracle 11g

    RMAN 异机复制和同机复制操作步骤是一样的,不同的是我们需要把备份的文件copy到辅助库上去,

RMAN异机duplicate复制数据库

    我们以实例名相同的为例,实例名不同也一样,在pfile里修改对应参数就可以了。

    步骤如下:

    (1)构建辅助数据库目录结构

    (2)创建pfile,并复制到辅助数据库,修改相关内容

    (3)创建辅助实例口令文件

    (4)RMAN 备份源库

    (5)添加配置监听

    (6)将源库备份文件拷贝到辅助库相同位置

    (7)用pfile文件,将辅助数据库启动到nomount 状态

    (8)执行RMAN duplicate命令复制数据库

    (9)创建spfile文件

    (10)在磁带上恢复备份

    (11)使用DBNEWID程序生成新的DBID

    一.构建辅助数据库目录结构

    1.1 Oracle data 目录

    1.2 其他目录

    [oracle@localhost oracle]$ mkdir -p /u01/app/oracle/admin/orcl/adump

    [oracle@localhost oracle]$ ls

    admin oradata oraInventory product

    [oracle@localhost oracle]$ cd admin

    [oracle@localhost admin]$ ls

    [oracle@localhost admin]$ mkdir orcl

    [oracle@localhost admin]$ ls

    [oracle@localhost admin]$ cd orcl

    [oracle@localhost orcl]$ mkdir adump

    [oracle@localhost orcl]$ mkdir bdump

    [oracle@localhost orcl]$ mkdir cdump

    [oracle@localhost orcl]$ mkdir dpdump

    [oracle@localhost orcl]$ mkdir pfile

    [oracle@localhost orcl]$ mkdir udump

    二. 创建pfile,复制到辅助数据库,并修改相关参数

    2.1 在源库上创建pfile 文件

    SQL> create pfile from spfile;

    2.2 用scp 命令将pfile 文件传到辅助库。要放在$ORACLE_HOME/dbs目录下,不然ORACLE 不识别。

    [oracle@db1 orcl]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs

    [oracle@db1 dbs]$ scp initorcl.ora 192.168.1.21:/$ORACLE_HOME/dbs

    2.3 在辅助库上确认文件是否传送过来

    2.4 在辅助库上修改pfile参数

    说明,在这里我没有做修改,因为我异机复制实例名相同,存储位置也相同。 如果说你复制的不同的话,就需要修改相关的实例名。 如果存储位置不同的话,还需要添加以下参数,对数据文件位置进行转换。

    db_file_name_convert

    log_file_name_convert

    三.创建辅助实例ORCL 的口令文件

    [oracle@localhost dbs]$ cd $ORACLE_HOME/bin

    [oracle@localhost bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=admin

    创建完后,数据库需要重启动,新的口令文件才能生效。

    四.RMAN 备份源库(orcl)

    [oracle@db1 backup]$ rman target /

    RMAN>RUN {

    allocate channel c1 type disk;

    allocate channel c2 type disk;

    BACKUP skip inaccessible filesperset 3 DATABASE FORMAT '/orabackup/full_%D_%s_%p_%T';

    sql 'alter system archive log current';

    BACKUP skip inaccessible filesperset 10 ARCHIVELOG ALL FORMAT '/orabackup/arc_%D_%s_%p_%T' DELETE INPUT;

    backup current controlfile format='/orabackup/ctl_%D_%s_%p_%T';

    backup spfile format='/orabackup/spf_%D_%s_%p_%T';

    release channel c2;

    release channel c1;

    }

    五.添加,配置监听

    5.1 在辅助库的Listener.ora 文件中,添加如下内容

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (GLOBAL_DBNAME = standby)

    (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

    (SID_NAME = orcl)

    )

    (SID_DESC =

    (GLOBAL_DBNAME = orcl2)

    (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

    (SID_NAME = orcl2)

    )

    )

    5.2 修改源库的tnsnames.ora 文件,添加如下内容:

    orcl2_au =

    (DESCRIPTION =

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

    (CONNECT_DATA =

    (SERVER = DEDICATED)

    (SERVICE_NAME = orcl2)

    )

    )

    六.将源库的备份拷贝到辅助数据库的相同位置

    这里有两种方法,一种直接在辅助库上建相同的目录结构,在用SCP 命令把这些备份文件copy过去,但是这样会占用大量的网络资源,

电脑资料

RMAN异机duplicate复制数据库》(https://www.unjs.com)。 还有一种就是建好目录结构后用NFS直接Mount上去。 在这里我们用后面一种方法。

    6.1 在辅助库上建相同的备份目录结构

    6.2 将源库的备份挂载到辅助库上

    6.2.1 在源库上将/u02/backup 目录添加到共享

    [root@rhel5 ~]# at /etc/exports

    /orabackup *(rw,async,anonuid=65534,anongid=65534)

    [root@rhel5 ~]# service nfs start

    6.2.2 在辅助库上挂载源库的目录,注意,mount命令必须以root用户执行

    [root@rhel5 orabackup]# mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 192.168.99.91:/orabackup /orabackup

    -- 注意: 在挂载NFS的时候,一定要加上-t -o 参数,不然在RMAN 复制的时候会报错:

    --ORA-27054: NFS file system where the file is created or resides is not mounted with correct options

    七. 启动辅助库至nomount 状态,注意使用pfile参数启动

    SQL> startup nomount pfile=?/dbs/initorcl2.ora

    SQL> exit -- 启动后就退出session,因为在duplicata的时候不能有session连接

    八. RMAN 连接到目标实例和辅助实例,运行duplicate 命令复制数据库

    [oracle@rhel5 admin]$ rman target / auxiliary sys/oracle@orcl2_au

    RMAN> run {

    allocate channel t1 type disk;

    allocate channel t2 type disk;

    allocate channel t3 type disk;

    allocate auxiliary channel a2 type disk;

    allocate auxiliary channel a3 type disk;

    allocate auxiliary channel a4 type disk;

    duplicate target database to orcl2 nofilenamecheck

    logfile

    '/oradata/orcl2/redo01.dbf' size 50m,

    '/oradata/orcl2/redo02.dbf' size 50m,

    '/oradata/orcl2/redo03.dbf' size 50m;

    }

    注: 这个地方有2个地方需要说明:

    (1) Nofilenamecheck 参数:

    如果在复制时,位置不同时,我们会用参数db_file_name_convert 对文件位置进行转换。 但是在这个复制示例中我们用的是相同的位置。 所以这里必须加上nofilenamecheck参数。 该参数通知复制操作不必在执行还原操作前确认文件名是不同的。如果没有指定nofilenamecheck参数,rman会给出如下错误:

    RMAN-05001: auxiliary filename /u01/app/oracle/oradata/orcl/example01.dbf conflicts with a file used by the target database

    RMAN-05001: auxiliary filename /u01/app/oracle/oradata/orcl/users01.dbf conflicts with a file used by the target database

    (2) logfile 参数:

    在完成复制进程并执行最有一条open resetlogs命令时,RMAN 必须为辅助数据库构建全新的日志文件。 如上面命令所示,我们可以在duplicate 命令中指定logfile参数,并指定使用的日志文件的大小,数目和位置。 

最新文章