批量迁移Oracle数据文件,日志文件及控制文件

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

[sql] view plain copy

print?

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

批量迁移Oracle数据文件,日志文件及控制文件的相关文章

oracle 11g 数据库恢复技术 ---02 控制文件

[email protected] orcl >show parameter control_file NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string /u01/app/oracle/oradata/orcl/c ontrol01.c

表空间tablespace,数据文件datafiles,和控制文件control files介绍

https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm#i5919 本文系翻译 表空间tablespace,数据文件datafiles,和控制文件control files介绍 在逻辑上,oracle把数据存储在表空间tablespace中,而在物理上,数据是存储在datafiles中的. 图1 图1很好的诠释了表空间与数据文件的关系,这里这一个表空间对应了两个数据文件,而数据对象如表.索引等,他们只关心表空间,对物

Oracle Study之案例--重建数据库控制文件

Oracle Study之案例--重建数据库控制文件 系统环境: 操作系统: Linux RH6 数据库:   Oracle 11gR2    案例分析:           数据库中所有的控制文件被意外破坏,非归档的库,在有trace备份的情况下,重建控制文件. 1.控制文件trace脚本 [[email protected] ~]$ cat crctr.sql  CREATE CONTROLFILE REUSE DATABASE "TEST3" NORESETLOGS  NOARC

遇到ORA-01207: 文件比控制文件更新 - 旧的控制文件解决办法-简单版

遇到这样的问题,如ORA-01207: 文件比控制文件更新 - 旧的控制文件 解决问题的思路是重建控制文件 注意: 1.不知道会不会丢一小部分数据.适用于不重要的库和已经停机的业务,或者急救业务. 可以尝试从不同的地方找原来的control文件,几个不同的control文件如果都一样,说明只能这么恢复,如果不一样,尽量找系统表空间比较新的control去用,因为不涉及用户数据. 2.做之前保存之前的控制文件!!!! 报错如下: SQL>startupORACLE 例程已经启动.Total Sys

丢失全部控制文件,noresetlogs重建控制文件,alter database open

測试2: (1)一致性的全备 SQL> shutdown immediate; $ cp -rf $ORACLE_BASE/oradata/boss/*.dbf /oradata/bossbak/20140610allbackup $ cp -rf $ORACLE_BASE/oradata/boss/*.log /oradata/bossbak/20140610allbackup $ cp -rf $ORACLE_BASE/oradata/boss/*.ctl /oradata/bossbak/

丢失所有控制文件,noresetlogs重建控制文件,alter database open

测试2: (1)一致性的全备 SQL> shutdown immediate; $ cp -rf $ORACLE_BASE/oradata/boss/*.dbf /oradata/bossbak/20140610allbackup $ cp -rf $ORACLE_BASE/oradata/boss/*.log /oradata/bossbak/20140610allbackup $ cp -rf $ORACLE_BASE/oradata/boss/*.ctl /oradata/bossbak/

数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE# STATUS ENABLED NAME ---------- ------- ---------- ------------------------------------------------ 1 SYSTEM READ WRITE D:\APP\ADMINISTRATOR\ORADATA\ORC

oracle之 RAC 11G ASM下控制文件多路复用

如果数据库仅有一组control file文件,需要添加一组或者多组,保证一组文件损坏或者丢失导致数据库宕机. -- 环境说明SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Produc

清空文件下的SVN控制文件

代码如下,复制代码为txt文件,更改后缀为“.bat”,把文件放到,需要删除的文件的顶端文件夹内,点击执行. @echo on color 2f mode con: cols=80 lines=25 @REM @echo 正在清理SVN文件,请稍候...... @rem 循环删除当前目录及子目录下所有的SVN文件 @rem for /r . %%a in (.) do @if exist "%%a\.svn" @echo "%%a\.svn" @for /r . %