数据库迁移冷备份实现方案(原创)

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 1.1 数据库迁移实现方案

1.1.1   EIBS数据库迁移

一.EIBS原数据库

A、原数据库参数文件准备

Ø  原参数文件路径: $ORACLE_HOME/dbs/

Ø  需要迁移的文件、目录

参数文件:$ORACLE_HOME/dbs/initeibs.ora   

口令文件:

监听文件:$ORACLE_HOME/network/admin/tnsnames.ora

$ORACLE_HOME/network/admin/listener.ora

以上文件复制到新数据库中后提前修改相应的数据库定义

 

B、新数据库环境准备

   1)、修改相应数据库参数配置

    按照标准定义,修改控制文件路径以及归档日志文件路径,同时注意文件中修改”dest”关键字的路径。

2)、 手工创建步骤“16”中的几个*dump目录以及db_recovery_file_dest目录

 

二.EIBS数据库文件迁移准备

原数据库文件路径 /oraeibs/eibs

FTP传输后的文件路径: /backup/oradta_bak/eibs/

需要迁移的文件、目录

  A、文件:

    /oraeibs/eibs/* 

  B、目录:

    /oraeibs/eibs/archivelog/*

三.宕原EIBS数据库

A、停原EIBS数据库。

B、检查数据库是否停完全。

四.复制文件到新EIBS数据库

步骤2中所列文件和目录复制到新数据库服务器上的路径为/backup/oradata_bak/eibs/

/backup/oradata_bak/eibs/archivelog/

 

五.新EIBS数据库恢复

A、检查新数据库的相关环境变量,并设定ORACLE_SID

B、按照新定义的数据库构架,拷贝文件到指定目录:

    1)、参数文件拷贝

        拷贝修改后initeibs.ora $ORACLE_HOME/dbs/.

    2)、监听器配置文件以及TNS配置文件拷贝

        拷贝修改后tnsnames.ora $ORACLE_HOME/network/admin/.

        拷贝修改后listener.ora $ORACLE_HOME/network/admin/.

    3)、所有的数据文件拷贝【依据标准结构】

        拷贝/backup/oradata_bak/eibs/*.dbf/oradata/eibs/data/.

        拷贝/backup/oradata_bak/eibs/archivelog/*.*/oradata/eibs/arch/.

    4)、拷贝所有的redo日志文件路径到指定路径【依据标准结构】

    5)、拷贝控制文件到指定的目录

    6)、拷贝归档日志到指定的目录

    7)、使用新pfile创建spfile文件

  8)、启动数据库到mount状态 并修改所有数据库文件的注册路径到新路径

9)、更改redo文件注册路径

10)、重组新的临时表空间数据文件

 11)、检查临时文件是否添加成功,启动数据库

12)、启动监听,并检查监听端口状态

13)、完整正常步骤重启数据库,并检查alert日志

14)、测试sqlplus正常连接到eibs数据库

15)、增加redo日志成员组,并检查redo成员的状态。

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

以下是操作步骤

方案简介:
1. 该方案实施风险小,对数据库原数据没有影响。
2. 该方案是采用数据库冷迁移方式【将数据库文件直接拷贝到新库】,然后重新构架数据库的方式迁移数据库。
3. 该方案将控制文件、redo文件存放在多个文件系统,避免因为单一文件系统损坏而带来的数据丢失隐患。【按照新的数据库构架实施】


前提条件:
1. 目标库已经安装好oracle软件,系统相关的环境参数以及ORACLE_HOME等环境变量已经设定。
2. 目标库的目录设定已经是标准化设定,具体请看文件 “空间规划”sheet页面的数据库部分,lv名以及文件系统名已经标准化。
3. 正式实施时需要关闭连接原数据库的所有应用。


提前检查步骤:(该步骤必须在迁移之前完成)
具体步骤:
原数据库上操作:
1.  oracle用户登录系统
      su – oracle

2. 设定oracle sid环境,假设SID=eibs
    export ORACLE_SID=eibs

3. 检查已经没有应用的普通用户连上来
    Sqlplus '/as sysdba'
    select username,count(*) from v$session group by username;
    没有普通用户的下连接数说明数据库现在没有其他用户连上来。

4. 创建一个pfile参数文件。创建的文件默认是放置在$ORACLE_HOME/dbs/,文件名默认是init{SID}.ora,
    create pfile from spfile;

5. 检查数据文件路径以及状态,记录下数据文件路径。
        col file_name for a32
        select FILE_NAME,TABLESPACE_NAME,STATUS from dba_data_files;
    FILE_NAME                        TABLESPACE_NAME                STATUS
    -------------------------------- ------------------------------ ---------
    /oraeibs/eibs/users01.dbf        USERS                          AVAILABLE
    /oraeibs/eibs/sysaux01.dbf       SYSAUX                         AVAILABLE
    /oraeibs/eibs/system01.dbf       SYSTEM                         AVAILABLE
    /oraeibs/eibs/rman01.dbf         RMAN                           AVAILABLE
    /oraeibs/eibs/coebankdata01.dbf  COEBANKDATA                    AVAILABLE
    /oraeibs/eibs/coebankdata02.dbf  COEBANKDATA                    AVAILABLE
    /oraeibs/eibs/coebankindx01.dbf  COEBANKINDX                    AVAILABLE
    /oraeibs/eibs/imebankdata01.dbf  IMEBANKDATA                    AVAILABLE
    /oraeibs/eibs/imebankindx01.dbf  IMEBANKINDX                    AVAILABLE
    /oraeibs/eibs/undotbs2.dbf       UNDOTBS2                       AVAILABLE




6. 检查临时表空间文件路径,记录下数据文件路径以及文件大小
    SQL> select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;
    FILE_NAME                        TABLESPACE_NAME                STATUS
    -------------------------------- ------------------------------ ---------
    /oraeibs/eibs/temp01.dbf         TEMP                           AVAILABLE


7. 检查redo日志文件路径,记录下文件路径等信息。
col member for a32
select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                           IS_
---------- ------- ------- -------------------------------- ---
     3         ONLINE  /oraeibs/eibs/redo03.log         NO
     2         ONLINE  /oraeibs/eibs/redo02.log         NO
     1         ONLINE  /oraeibs/eibs/redo01.log         NO



8. 检查控制文件路径,记录下文件路径等信息。
col name for a32
select * from v$controlfile;

STATUS  NAME                             IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------- --- ---------- --------------
    /oraeibs/eibs/control01.ctl      NO       16384            416
    /oraeibs/eibs/control02.ctl      NO       16384            416
    /oraeibs/eibs/control03.ctl      NO       16384            416

以下9,10步骤在新数据库上操作
9. 配置其他oracle启动实例的参数(已经完成)
    vi /etc/oratab
    里面增加一行【格式是: SID:$ORACLE_HOME:N 】
    eibs:/oracle/app/oracle/product/10g:N
    添加密码文件
    orapwd file=/oracle/app/oracle/product/10g/dbs/orapweibs password=oracle entries=10

10. 检查监听文件,主要是监听IP,如果跟现在数据库服务器ip匹配,可启动监听。((已经完成))
    lsnrctl start
    lsnrctl status

11.记录SCN最大改变号
    select last_redo_change# from v$thread;


准备工作结束
================================================================================================
迁移数据文件开始
================================================================================================
(11,12步骤为文件传输步骤)

11. 关闭数据库
    SQL>shutdown immediate
    SQL>quit
        $ps -ef|grep oracle (检查数据库进程是否停止干净)

12. 依据步骤“4”、“5”、“7”、“8”得到的文件信息,拷贝到目标数据库。
    注:步骤“6”Temp临时表空间数据文件不用拷贝,但是需要记录文件路径以及大小,表空间名这些信息备用
    将$ORACLE_HOME/network/admin下的listener.ora以及tnsnames.ora拷贝到目标数据库[监听文件以及tns文件]
    1) 拷贝文件:(已经完成)
       A、数据文件
       B、参数配置文件:$ORALCE_HOME/dbs/initeibs.ora  (已经完成)
       C、口令文件:
       D、监听文件: $ORALCE_HOME/network/admin/listener.ora (已经完成)
           $ORALCE_HOME/network/admin/tnsnames.ora (已经完成)

    2) 传输后拷贝文件均放置到/backup/eibs目录
       原服务器数据文件原位置:/oraeibs/eibs/
       原服务器归档数据文件原位置:/oraeibs/eibs/archivelog/
       新数据文件位置:
        /oradata/eibs/data
        /oradata/eibs/redoA
        /oradata/eibs/redoB
        /oradata/eibs/arch
===========================================================================================
迁移数据文件结束
===========================================================================================
恢复步骤开始
===========================================================================================
--目标数据库操作。
13. oracle用户登录
    su – oracle
      
14. 检查系统环境,看参数是否设定(已经完成)
    ulimit –a

15. 检查环境变量,看ORACLE_HOME是否设定(已经完成)
    env|grep ORACLE

16. 设定ORACLE SID
    export ORACLE_SID=eibs
     
17. 按照新定义的数据库构架,拷贝文件到指定目录:(已经完成)
    A、参数文件拷贝
        cp /orabackup/eibs/initeibs.ora $ORACLE_HOME/dbs/.
        cp /orabackup/eibs/tnsnames.ora $ORACLE_HOME/network/admin/.
        cp /orabackup/eibs/listener.ora $ORACLE_HOME/network/admin/.
       
    B、监听器配置文件以及TNS配置文件拷贝(已经完成)
        cp /orabackup/eibs/tnsnames.ora $ORACLE_HOME/network/admin/.
        cp /orabackup/eibs/listener.ora $ORACLE_HOME/network/admin/.
         
    C、所有的数据文件拷贝【依据标准结构】
       cp /backup/eibs/*.dbf /oradata/eibs/data/.
       (注意归档文件的位置)

    D、所有的redo日志文件路径拷贝【依据标准结构】
         cp /orabackup/eibs/redo01.log /oradata/eibs/redoA/redo01A.log
         cp /orabackup/eibs/redo02.log /oradata/eibs/redoA/redo02A.log
         cp /orabackup/eibs/redo03.log /oradata/eibs/redoA/redo03A.log
        
    E、控制文件拷贝
         cp /orabackup/eibs/control01.ctl /oradata/eibs/data/control01.ctl
         cp /orabackup/eibs/control02.ctl /oradata/eibs/redoA/control02.ctl
         cp /backup/eibs/control03.ctl /oradata/eibs/redoB/control03.ctl

    F、归档日志拷贝
         cp /orabackup/eibs/archivelog/*  /oradata/eibs/arch

18. 按照标准定义,修改控制文件路径以及归档日志文件路径,同时注意文件中修改”dest”关键字的路径。(已经完成)
    A、修改控制文件控制文件路径
*.control_files='/oradata/eibs/data/control01.ctl','/oradata/eibs/redoA/control02.ctl','/oradata/eibs/redoA/control03.ctl'

dest关键字的路径:
*.audit_file_dest='/oracle/app/oracle/admin/eibs/adump'
*.background_dump_dest='/oracle/app/oracle/admin/eibs/bdump'
*.core_dump_dest='/oracle/app/oracle/admin/eibs/cdump'
*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'   
*.log_archive_dest_1='LOCATION=/oradata/eibs/arch'     ------归档日志路径
*.user_dump_dest='/oracle/app/oracle/admin/eibs/udump'

(已经完成)
19. 手工创建步骤“16”中的几个*dump目录以及db_recovery_file_dest目录
mkdir  -p /oracle/app/oracle/admin/eibs/adump
mkdir  -p /oracle/app/oracle/admin/eibs/bdump
mkdir  -p /oracle/app/oracle/admin/eibs/cdump
mkdir  -p /oracle/app/oracle/admin/eibs/udump
mkdir  -p /oracle/app/oracle/flash_recovery_area
(已经完成)
20. 创建spfile
sqlplus '/as sysdba'
startup nomount pfile='/oracle/app/oracle/product/10g/dbs/initeibs.ora'
create spfile from pfile='/oracle/app/oracle/product/10g/dbs/initeibs.ora'
shutdown immediate

21. 启动数据库到mount状态 并修改所有数据库文件的路径到新路径
startup mount

alter database rename file '/oraeibs/eibs/system01.dbf' to '/oradata/eibs/data/system01.dbf';
alter database rename file '/oraeibs/eibs/sysaux01.dbf' to '/oradata/eibs/data/sysaux01.dbf';
alter database rename file '/oraeibs/eibs/users01.dbf' to '/oradata/eibs/data/users01.dbf';
alter database rename file '/oraeibs/eibs/rman01.dbf' to '/oradata/eibs/data/rman01.dbf';
alter database rename file '/oraeibs/eibs/undotbs2.dbf' to '/oradata/eibs/data/undotbs2.dbf';
alter database rename file '/oraeibs/eibs/coebankdata01.dbf' to '/oradata/eibs/data/coebankdata01.dbf';
alter database rename file '/oraeibs/eibs/coebankdata02.dbf' to '/oradata/eibs/data/coebankdata02.dbf';
alter database rename file '/oraeibs/eibs/coebankindx01.dbf' to '/oradata/eibs/data/coebankindx01.dbf';
alter database rename file '/oraeibs/eibs/imebankdata01.dbf' to '/oradata/eibs/data/imebankdata01.dbf';
alter database rename file '/oraeibs/eibs/imebankindx01.dbf' to '/oradata/eibs/data/imebankindx01.dbf';


22. 更改redo文件注册路径
  alter database rename file '/oraeibs/eibs/redo01.log' to '/oradata/eibs/redoA/redo01A.log';
  alter database rename file '/oraeibs/eibs/redo02.log' to '/oradata/eibs/redoA/redo02A.log';
  alter database rename file '/oraeibs/eibs/redo03.log' to '/oradata/eibs/redoA/redo03A.log';

…………所有redo文件路径更改……………………..

23. 重组新的临时表空间数据文件。
    --在新路径下为临时表空间增加一个新文件。确定临时文件大小
    alter database open;
    alter tablespace temp add tempfile '/oradata/eibs/data/temp01.dbf ' size 500m;
    --删除老的临时文件注册路径
    Shutdown immediate
    Startup mount
    Alter database tempfile '/oraeibs/eibs/temp01.dbf' drop;
    Alter database open;


(此时数据库已经可以正常启动)

24. 检查监听端口状态
    netstat -an|grep 152

25.正常启动数据库一次
    shutdown immediate;
    startup ;
    lsnrctl start
    lsnrctl status

26. 依据新的数据库结构定义,给每组redo增加一个新成员。
   alter database add logfile member '/oradata/eibs/redoB/redo01B.log' to group 1;
   alter database add logfile member '/oradata/eibs/redoB/redo02B.log' to group 2;
   alter database add logfile member '/oradata/eibs/redoB/redo03B.log' to group 3;
27.手动切换archivelog,让增加的成员生效
   select * from v$logfile;  --此时有增加的日志成员是INVALID状态,因为新增加的日志成员没有使用,当归档切换时会该面其状态。
   ALTER SYSTEM ARCHIVE LOG CURRENT;

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


27. 通过tnsname验证数据库是否可以连接,并且测试运行情况。
         Sqlplus sys/oracle@eibs as sysdba
         Select name from v$database;
        返回数据库SID_NAME,说明数据库启动正常。

28.rman相关修改
   rman catalog rman/rman target /
   crosscheck archivelog all;
   delete expired archivelog all;
   exit
  
   rman target /
   crosscheck archivelog all;
   delete expired archivelog all;
   exit
     
28. 数据库迁移成功,联系应用连接使用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/759027/viewspace-740507/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/759027/viewspace-740507/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值