• oracle复制数据库


    准备两台设备,以我的为例一台source  ip:192.168.3.66和一台duplicate ip:192.168.3.77

    1》基于备份集复制数据库,目录结构都一样(active database网络)

    1.在duplicate端检查有没有亚参文件(如果没有的话就创建)

    cd $ORACLE_HOME/dbs

    touch dummy.ora

    编辑vi dummy.ora添加

    db_name='prod'

    2.在source端复制一个口令文件(前提是在source有orapwprod口令文件,或者自己在duplicate自己创建一个)

    scp $ORACLE_HOME/dbs/orapwprod 192.168.3.77:$ORACLE_HOME/dbs

    3.检查duplicate必要的文件目录(如果没有创建)

    mkdir -p /u01/admin/prod/adump
    mkdir -p /u01/flash_recovery_area
    mkdir -p /u01/arch/prod
    mkdir -p /u01/oracle/dbs
    mkdir -p /u01/oradata/prod

    4.配置监听器source(可静态可动态)和duplicate(静态):

    两端的tns一样如下:

    VBOX77 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.77)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = prod)
    )
    )

    VBOX66 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.66)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = prod)
    )
    )

    5.检查两端的连通性:

    两边检查如下

    sqlplus sys/oracle@vbox66 as sysdba

    sqlplus sys/oracle@vbox77 as sysdba

    6.在duplicate端重新登录sys用户sqlplus / as sysdba

    SYS@prod>startup pfile=/u01/oracle/dbs/dummy.ora nomount

    7.在source端

    rman target sys/oracle@vbox66 auxiliary sys/oracle@vbox77

    RMAN> duplicate target database to prod from active database spfile nofilenamecheck;

    8.完成检验。


     2》基于备份集复制数据库,目录结构不一样(active database网络)

    1.在duplicate端检查有没有亚参文件(如果没有的话就创建)

    cd $ORACLE_HOME/dbs

    touch dummy.ora

    编辑vi dummy.ora添加

    db_name='auxprod'(这里我们换一个实例名)

    注意:还要把.bash_profile中的ORACLE_SID实例名改成auxprod,然后生效。

    2.在source端复制一个口令文件(前提是在source有orapwprod口令文件,或者自己在duplicate自己创建一个)

    scp $ORACLE_HOME/dbs/orapwprod 192.168.3.77:$ORACLE_HOME/dbs

    改口令名:mv orapwprod orapwauxprod

    3.

    因为是基于不同目录,所以在root下在新建一个目录/u02

    mkdir /u02

    chown -R oracle:oinstall /u02              ------如果这里不授权在后面会遇到权限问题

    创建新目录:

    mkdir -p /u02/arch1                             ----放归档

    mkdir -p /u02/admin/auxprod/adump   -----审计文件

    mkdir -p /u02/oradata/auxprod            ---放控制文件,数据文件等

    4.配置监听器和tns(注意1》中与相同目录配置的区别)

    duplicate端:

    配置监听器 内容如下:

    [oracle@wjm admin]$ vi listener.ora

    # listener.ora Network Configuration File: /u01/oracle/network/admin/listener.ora

    # Generated by Oracle configuration tools.

    LISTENER =

      (DESCRIPTION_LIST =

        (DESCRIPTION =

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

        )

      )

     

    ADR_BASE_LISTENER = /u01

    SID_LIST_LISTENER =

        (SID_DESC =

            (GLOBAL_DBNAME= auxprod)

            (ORACLE_HOME = /u01/oracle)

            (SID_NAME = auxprod)

          )

    )

    重启监听

    lsnrctl stop

    lsnrctl start

     

    配置文件tnsnames.ora 内容如下:

    [oracle@wjm admin]$ vi tnsnames.ora

    # tnsnames.ora Network Configuration File: /u01/oracle/network/admin/tnsnames.ora

    # Generated by Oracle configuration tools.

     

    vbox66 =

      (DESCRIPTION =

        (ADDRESS_LIST =

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

        )

        (CONNECT_DATA =

            (SERVER = DEDICATED)

          (SERVICE_NAME = prod)

        )

      )

    auxprod =

      (DESCRIPTION =

        (ADDRESS_LIST =

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

        )

        (CONNECT_DATA =

        (SERVER = DEDICATED)

          (SERVICE_NAME = auxprod)

        )

      )

    5.检查两端的连通性:

    两边检查如下

    sqlplus sys/oracle@vbox66 as sysdba

    sqlplus sys/oracle@vbox77 as sysdba

    6.在duplicate端重新登录sys用户sqlplus / as sysdba

    SYS@prod>startup pfile=/u01/oracle/dbs/dummy.ora nomount

    7.在source端

    DUPLICATE TARGET DATABASE
    TO auxprod
    FROM ACTIVE DATABASE
    SPFILE
    SET DB_NAME 'auxprod'
    SET LOG_ARCHIVE_DEST_1='location=/u02/arch1'
    SET CONTROL_FILES=
    '/u02/oradata/auxprod/control01.ctl',
    '/u02/oradata/auxprod/control02.ctl'
    SET AUDIT_FILE_DEST='/u02/admin/auxprod/adump'
    SET DB_FILE_NAME_CONVERT '/u01/oradata/prod','/u02/oradata/auxprod'
    SET LOG_FILE_NAME_CONVERT '/u01/oradata/prod','/u02/oradata/auxprod'
    NOFILENAMECHECK;

    8.完成检验。

    博主当时配置不同目录复制库遇到的错误:

    1.在.bash_profile中ORACLE_SID没有改

    2.口令文件命名错误

    3.

    ERROR:
    ORA-09925: Unable to create audit trail file
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 9925
    ORA-01075: you are currently logged on

    授权问题重新给/u01和/u02授权

    chown -R oracle:oinstall /u01

    chown -R oracle:oinstall /u02

    注:在一个数据库上也可以复制方法同上。


    3》在上面是基于备份集的复制,接下来是基于备份来复制库

    基于备份来复制一个数据库
    在原来的source设备上做一个全备+归档备份到/home/oracle/myrman
    将source设备上的全备scp到另外一个设备duplicate上/home/oracle/rman
    在source设备上select member from v$logfile;中的日志复制到另一个duplicate设备/home/oracle/rman
    将duplicate中.bash_profile文件ORALCE_SID改为auxprod
    在duplicate设备中打开rman target/
    startup nomount;(提示缺少spfile文件)
    --打开/u01/flash_recovery_area找到文件
    restore spfile from '/home/oracle/rman/o1_mf_s_951945765_ds0no68m_.bkp';
    startup force nomount;
    连接SYS@auxprod>
    show parameter controlfile
    alter system set control_files='/u03/oradata/auxprod/control01.ctl','/u03/oradata/auxprod/control02.ctl','/u03/oradata/auxprod/control03.ctl' scope=spfile;
    然后再rman中
    restore controlfile from '/home/oracle/rman/o1_mf_s_951945765_ds0no68m_.bkp';
    alter database mount;
    catalog start with '/home/oracle/rman'
    在source中批处理后执行
    select 'set newname for datafile '||''''||' to '||''''||replace(name,'/u02/oradata/auxprod/','/u03/oradata/auxprod/')||''';' from v$datafile;
    set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/system01.dbf';
    set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/sysaux01.dbf';
    set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/undotbs01.dbf';
    set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/users01.dbf';
    set newname for datafile '/u02/oradata/auxprod/' to '/u03/oradata/auxprod/example01.dbf';
    alter database rename file '/u02/oradata/auxprod/redo03.log' to '/u03/oradata/auxprod/redo03.log';
    alter database rename file '/u02/oradata/auxprod/redo02.log' to '/u03/oradata/auxprod/redo02.log';
    alter database rename file '/u02/oradata/auxprod/redo01.log' to '/u03/oradata/auxprod/redo01.log';

    restore database;
    recover database;
    alter database open resetlogs;

  • 相关阅读:
    Kubernetes之Ingress-Nginx
    Prometheus之AWS-EC2自动发现
    Prometheus之kubernetes-sd自动发现
    ORACLE 遇到ORA 03113 数据库连接卡住
    ORACLE 遇到ORA-31693 ORA-31617 ORA-19505 ORA-27037
    Oracle 计划任务批量清理临时表实例
    GO 基础
    CentOS 7.3安装完整开发环境
    3.6 String 与 切片&str的区别
    ubantu上编辑windows程序
  • 原文地址:https://www.cnblogs.com/wjmbk/p/7858146.html
Copyright © 2020-2023  润新知