zoukankan      html  css  js  c++  java
  • 批量迁移Oracle数据文件,日志文件及控制文件

    有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求。对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移。当然备份恢复也是其中的方式之一。本文主要描述如何使用批量方式来迁移数据文件,日志文件。如需要也可以将整个数据库迁移到新的位置以及重命名数据库。

    [sql] view plain copy
     
     print?
    1. 1、环境及需求  
    2.   robin@SZDB:~> cat /etc/issue  
    3.     
    4.   Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel   (l).  
    5.     
    6.   robin@SZDB:~> sqlplus -v  
    7.     
    8.   SQL*Plus: Release 10.2.0.3.0 - Production  
    9.   
    10.   下面的迁移主要是将数据库/u02/database/SYBO2SZ下的所有文件迁移到一个新的目录/u02/database/SY5221BK下面。  
    11.   源路径:数据库SYBO2SZ所有的数据文件,日志文件,控制文件全部位于SYBO2SZ下的相应子目录。  
    12.   新路径:数据库SYBO2SZ所有的数据文件,日志文件,控制文件全部移动到SY5221BK相应的子目录下。  
    13.     
    14. 2、当前数据库文件位置(来源于数据字典)    
    15.   sys@SYBO2SZ> @dba_files_all_2.sql  
    16.     
    17.   Tablespace Name / File Class  Filename                                                      File Size Auto  
    18.   ----------------------------- ------------------------------------------------------- --------------- ----  
    19.   GOEX_ACCOUNT_IDX              /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_idx.dbf        16,777,216 YES  
    20.   GOEX_ACCOUNT_TBL              /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf        25,165,824 YES  
    21.   GOEX_ARCHIVE_IDX              /u02/database/SYBO2SZ/oradata/SYBO2SZ_archive_idx.dbf        20,971,520 YES  
    22.    --    .........                  .........................  
    23.   SOE                           /u02/database/SYBO2SZ/oradata/soe.dbf                       934,043,648 YES  
    24.   SOEINDEX                      /u02/database/SYBO2SZ/oradata/soeindex.dbf                  713,031,680 YES  
    25.   SYSAUX                        /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf             325,058,560 YES  
    26.   SYSTEM                        /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf                524,288,000 YES  
    27.   TBST                          /u02/database/SYBO2SZ/oradata/tbst.dbf                       10,485,760 YES  
    28.   TEMP                          /u02/database/SYBO2SZ/temp/tempSYBO2SZ.dbf                  432,013,312 YES  
    29.   UNDOTBS1                      /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf               429,916,160 YES  
    30.   UNDOTBS2                      /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf              314,572,800 YES  
    31.   [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.log               20,971,520  
    32.   [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log3bSYBO2SZ.log               20,971,520  
    33.   [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log4aSYBO2SZ.log               20,971,520  
    34.   [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log4bSYBO2SZ.log               20,971,520  
    35.                                                                                         ---------------  
    36.   sum                                                                                     5,107,376,128  
    37.     
    38.     41 rows selected.  
    39.       
    40. 3、创建相应的目录  
    41.   oracle@SZDB:/u02/database/SYBO2SZ> more mkdir_SY5221BK.sh   
    42.   #!/bin/sh  
    43.   rm -rf /u02/database/SY5221BK/archive  
    44.   rm -rf /u02/database/SY5221BK/backup  
    45.   rm -rf /u02/database/SY5221BK/bdump  
    46.   rm -rf /u02/database/SY5221BK/cdump  
    47.   rm -rf /u02/database/SY5221BK/udump  
    48.   rm -rf /u02/database/SY5221BK/controlf  
    49.   rm -rf /u02/database/SY5221BK/oradata  
    50.   rm -rf /u02/database/SY5221BK/redolog  
    51.   rm -rf /u02/database/SY5221BK/undo  
    52.   rm -rf /u02/database/SY5221BK/temp  
    53.   rm -rf /u02/database/SY5221BK/ref_data  
    54.   rm -rf /u02/database/SY5221BK/BNR  
    55.   rm -rf /u02/database/SY5221BK/BNR/full  
    56.   rm -rf /u02/database/SY5221BK/BNR/dump  
    57.   rm -rf /u02/database/SY5221BK/dbcreatelogs   
    58.     
    59.   mkdir -p /u02/database/SY5221BK/flash_recovery_area   
    60.   mkdir -p /u02/database/SY5221BK  
    61.   mkdir -p /u02/database/SY5221BK/archive  
    62.   mkdir -p /u02/database/SY5221BK/backup  
    63.   mkdir -p /u02/database/SY5221BK/bdump  
    64.   mkdir -p /u02/database/SY5221BK/cdump  
    65.   mkdir -p /u02/database/SY5221BK/udump  
    66.   mkdir -p /u02/database/SY5221BK/controlf  
    67.   mkdir -p /u02/database/SY5221BK/oradata  
    68.   mkdir -p /u02/database/SY5221BK/redolog  
    69.   mkdir -p /u02/database/SY5221BK/undo  
    70.   mkdir -p /u02/database/SY5221BK/temp  
    71.   mkdir -p /u02/database/SY5221BK/ref_data  
    72.   mkdir -p /u02/database/SY5221BK/BNR  
    73.   mkdir -p /u02/database/SY5221BK/BNR/full  
    74.   mkdir -p /u02/database/SY5221BK/BNR/dump  
    75.   mkdir -p /u02/database/SY5221BK/dbcreatelogs   
    76.     
    77.   oracle@SZDB:/u02/database/SYBO2SZ> ./mkdir_SY5221BK.sh   
    78.   
    79. 4、实施迁移  
    80.   sys@SYBO2SZ> startup mount force;   --->切换数据库到mount状态  
    81.   ORACLE instance started.  
    82.     
    83.   Database mounted.  
    84.   sys@SYBO2SZ> @/users/robin/dba_scripts/custom/sql/transfer_db_files -->调用脚本进行数据及日志文件的迁移  
    85.     
    86.   Step 1, Coping file to destination from source  
    87.   ============================================  
    88.     
    89.   Step 2, updating files to control file  
    90.   ============================================  
    91.     
    92.   sys@SYBO2SZ> alter database open;   -->切换数据库到open状态  
    93.     
    94.   Database altered.  
    95.     
    96.   sys@SYBO2SZ> @dba_files_all_2.sql   -->验证切换结果  
    97.     
    98.   Tablespace Name / File Class  Filename                                                     File Size Auto  
    99.   ----------------------------- ---------------------------------------------------------------------- ----  
    100.   GOEX_ACCOUNT_IDX              /u02/database/SY5221BK/oradata/SY5221BK_account_idx.dbf     16,777,216 YES  
    101.     --..........                        .................  
    102.   TEMP                          /u02/database/SY5221BK/temp/tempSY5221BK.dbf               432,013,312 YES  
    103.   UNDOTBS1                      /u02/database/SY5221BK/undo/undotbsSY5221BK.dbf            429,916,160 YES  
    104.   UNDOTBS2                      /u02/database/SY5221BK/undo/undotbsSY5221BK2.dbf           314,572,800 YES  
    105.   [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log3aSY5221BK.log            20,971,520  
    106.   [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log3bSY5221BK.log            20,971,520  
    107.   [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log4aSY5221BK.log            20,971,520  
    108.   [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log4bSY5221BK.log            20,971,520  
    109.                                                                                          -------------  
    110.   sum                                                                                    5,107,376,128  
    111.     
    112.   41 rows selected.  
    113.     
    114.   --如果仅仅是迁移数据文件以及日志文件则上述步骤完成即可  
    115.   --如果需要修改相关的参数文件以及迁移控制文件则继续下面的步骤  
    116.   --由于控制文件的在mount状态下被校验,因此我们在nomount状态下来处理  
    117.     
    118.   sys@SYBO2SZ> shutdown immediate;  
    119.     
    120.   sys@SYBO2SZ> startup nomount;  
    121.       
    122.   -->修改参数文件之前先备份spfile  
    123.   sys@SYBO2SZ> create pfile='/users/oracle/OraHome10g/dbs/initSYBO2SZ_bak.ora' from spfile;  
    124.     
    125.   File created.  
    126.     
    127.   -->下面对相关的参数文件的路径进行修改,如果不需要修改参数,则跳过下面的步骤  
    128.   sys@SYBO2SZ> show parameter dump  
    129.     
    130.   NAME                                 TYPE        VALUE  
    131.   ------------------------------------ ----------- ------------------------------  
    132.   background_core_dump                 string      partial  
    133.   background_dump_dest                 string      /u02/database/SYBO2SZ/bdump  
    134.   core_dump_dest                       string      /u02/database/SYBO2SZ/cdump  
    135.   max_dump_file_size                   string      UNLIMITED  
    136.   shadow_core_dump                     string      partial  
    137.   user_dump_dest                       string      /u02/database/SYBO2SZ/udump  
    138.     
    139.   sys@SYBO2SZ> alter system set background_dump_dest='/u02/database/SY5221BK/bdump' scope=both sid='*';  
    140.     
    141.   System altered.  
    142.     
    143.   sys@SYBO2SZ> alter system set core_dump_dest='/u02/database/SY5221BK/cdump' scope=both sid='*';  
    144.     
    145.   System altered.  
    146.     
    147.   sys@SYBO2SZ> alter system set user_dump_dest='/u02/database/SY5221BK/udump' scope=both sid='*';  
    148.     
    149.   System altered.  
    150.     
    151.   sys@SYBO2SZ> show parameter db_recovery_file_dest  
    152.     
    153.   NAME                                 TYPE        VALUE  
    154.   ------------------------------------ ----------- ------------------------------  
    155.   db_recovery_file_dest                string      /u02/database/SYBO2SZ/flash_re  
    156.                                                    covery_area  
    157.   db_recovery_file_dest_size           big integer 1G  
    158.     
    159.   sys@SYBO2SZ> alter system set db_recovery_file_dest='/u02/database/SY5221BK/flash_recovery_area' scope=both;  
    160.     
    161.   System altered.  
    162.     
    163.   sys@SYBO2SZ> show parameter LOG_ARCHIVE_DEST_1  
    164.     
    165.   NAME                                 TYPE        VALUE  
    166.   ------------------------------------ ----------- ------------------------------  
    167.   log_archive_dest_1                   string      LOCATION=/u02/database/SYBO2SZ  
    168.                                                    /archive/  
    169.   log_archive_dest_10                  string  
    170.   sys@SYBO2SZ> alter system set log_archive_dest_1='LOCATION=/u02/database/SY5221BK/archive' scope=both;     
    171.     
    172.   System altered.  
    173.     
    174.   sys@SYBO2SZ> show parameter UTL_FILE_DIR  
    175.     
    176.   NAME                                 TYPE        VALUE  
    177.   ------------------------------------ ----------- ------------------------------  
    178.   utl_file_dir                         string      /u02/database/SYBO2SZ/udump  
    179.     
    180.   sys@SYBO2SZ> alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=both;  
    181.   alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=both  
    182.                    *  
    183.   ERROR at line 1:  
    184.   ORA-02095: specified initialization parameter cannot be modified  -->该参数不能修改内存值  
    185.     
    186.     
    187.   sys@SYBO2SZ> alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=spfile;  
    188.     
    189.   System altered.  
    190.     
    191.   -->下面对控制文件位置进行修改  
    192.   sys@SYBO2SZ> show parameter control_f  
    193.     
    194.   NAME                                 TYPE        VALUE  
    195.   ------------------------------------ ----------- ------------------------------  
    196.   control_file_record_keep_time        integer     7  
    197.   control_files                        string      /u02/database/SYBO2SZ/controlf  
    198.                                                    /cntl1SYBO2SZ.ctl, /u02/databa  
    199.                                                    se/SYBO2SZ/controlf/cntl2SYBO2  
    200.                                                    SZ.ctl, /u02/database/SYBO2SZ/  
    201.                                                    controlf/cntl3SYBO2SZ.ctl  
    202.     
    203.   -->将控制文件复制到新位置  
    204.   sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl1SY5221BK.ctl  
    205.     
    206.   sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl2SY5221BK.ctl  
    207.     
    208.   sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl3SY5221BK.ctl  
    209.                 
    210.   -->Author : Robinson Cheng  
    211.   -->Blog   : http://blog.csdn.net/robinson_0612  
    212.                 
    213.   -->通过修改control_files参数来修改控制文件位置                                                   
    214.   sys@SYBO2SZ> alter system set control_files='/u02/database/SY5221BK/controlf/cntl1SY5221BK.ctl',  
    215.     2  '/u02/database/SY5221BK/controlf/cntl2SY5221BK.ctl','/u02/database/SY5221BK/controlf/cntl3SY5221BK.ctl'  
    216.     3  scope=spfile;  
    217.     
    218.   System altered.  
    219.     
    220.   sys@SYBO2SZ> shutdown immediate;  
    221.     
    222.   sys@SYBO2SZ> startup mount;  
    223.     
    224.   SQL> show parameter control_f  
    225.     
    226.   NAME                                 TYPE        VALUE  
    227.   ------------------------------------ ----------- ------------------------------  
    228.   control_file_record_keep_time        integer     7  
    229.   control_files                        string      /u02/database/SY5221BK/control  
    230.                                                    f/cntl1SY5221BK.ctl, /u02/data  
    231.                                                    base/SY5221BK/controlf/cntl2SY  
    232.                                                    5221BK.ctl, /u02/database/SY52  
    233.                                                    21BK/controlf/cntl3SY5221BK.ct  
    234.                                                    l  
    235.     
    236.   sys@SYBO2SZ> show parameter dump  
    237.   background_core_dump                 string      partial  
    238.   background_dump_dest                 string      /u02/database/SY5221BK/bdump  
    239.   core_dump_dest                       string      /u02/database/SY5221BK/cdump  
    240.   max_dump_file_size                   string      UNLIMITED  
    241.   shadow_core_dump                     string      partial  
    242.   user_dump_dest                       string      /u02/database/SY5221BK/udump  
    243.     
    244.   sys@SYBO2SZ> alter database open;  
    245.     
    246.   Database altered.  
    247.   
    248. 5、迁移脚本  
    249.   sys@SYBO2SZ> ho more /users/robin/dba_scripts/custom/sql/transfer_db_files.sql  
    250.   Prompt  
    251.   Prompt Step 1, Coping file to destination from source  
    252.   Prompt ============================================  
    253.   Prompt  
    254.   set linesize 200  
    255.   set heading off verify off feedback off termout off pagesize 999  
    256.   define src_dir='SYBO2SZ'  
    257.   define tar_dir='SY5221BK'  
    258.   spool /tmp/cp_files.sql  
    259.   SELECT 'ho cp ' || name || ' ' || REPLACE (name, '&src_dir', '&tar_dir')  
    260.     FROM v$datafile  
    261.   UNION ALL  
    262.   SELECT 'ho cp ' || name || ' ' || REPLACE (name, '&src_dir', '&tar_dir')  
    263.     FROM v$tempfile  
    264.   UNION ALL  
    265.   SELECT 'ho cp ' || MEMBER || ' ' || REPLACE (MEMBER, '&src_dir', '&tar_dir') FROM v$logfile;  
    266.   spool off;  
    267.     
    268.   @/tmp/cp_files.sql  
    269.     
    270.   set termout on  
    271.   Prompt  
    272.   Prompt  Step 2, updating files to control file  
    273.   Prompt ============================================  
    274.   Prompt  
    275.   set termout off  
    276.   spool /tmp/update_cntl.sql  
    277.   SELECT    'alter database  rename file '''  
    278.          || name  
    279.          || '''  to '''  
    280.          || REPLACE (name, '&src_dir', '&tar_dir')  
    281.          || ''''  
    282.          || ';'  
    283.     FROM v$datafile  
    284.   UNION ALL  
    285.   SELECT    'alter database rename file '''  
    286.          || name  
    287.          || '''  to '''  
    288.          || REPLACE (name, '&src_dir', '&tar_dir')  
    289.          || ''''  
    290.          || ';'  
    291.     FROM v$tempfile  
    292.   UNION ALL  
    293.   SELECT    'alter database rename file '''  
    294.          || MEMBER  
    295.          || ''' to '''  
    296.          || REPLACE (MEMBER, '&src_dir', '&tar_dir')  
    297.          || ''''  
    298.          || ';'  
    299.     FROM v$logfile;  
    300.   spool off;  
    301.   set termout on;  
    302.   @/tmp/update_cntl.sql  
    303.   set heading on verify on feedback on termout on  
    304.   
    305. 6、后记  
    306.   a、数据迁移前建议先备份数据库  
    307.   b、我们在迁移中使用了复制(cp)方式,实际上可以直接使用移动方式(mv)  
    308.   c、需要理解数据库的启动的几个阶段。即nomount状态时不加载控制文件,mount状态时不加载数据文件及日志文件  
    309.   d、对于数据库启动阶段的深刻理解,有助于弄清楚什么状态下我们能做什么,不能做什么  
    310.   e、对于控制文件位置以及参数中相关dump文件位置可以直接通过编辑pfile文件来完成。上例使用的是修改spfile文件  
    311.   f、迁移脚本可以根据需要进行相应的修改,注意我们定义了src_dir与tar_dir  
    312.   g、可将数据库源文件夹重命名,重启数据库(open),open会校验所有文件,以防止迁移中的部分文件丢失,无误后可删除源文件夹  
    313.   h、如果需要修改数据库名,则可以通过使用nid命令修改 db name 及 dbid来完成,相当于生成了一个新的数据库  
    314. 转:http://blog.csdn.net/leshami/article/details/8553650
  • 相关阅读:
    js_css_dl.dt实现列表展开、折叠效果
    property_自己编写一个读取Property文件的Util类
    HttpClient_002_中文乱码、HttpClient中文乱码透析、总结
    HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问
    jsp:中文乱码解决
    linux命令
    js 监测from表单中的input和select,时时监测,没有输入或选择信息报错,不允许提交数据
    数据库的那些事
    待参考
    layer.open多次触发,遮罩层覆盖content的解决办法
  • 原文地址:https://www.cnblogs.com/andy6/p/5877517.html
Copyright © 2011-2022 走看看