前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在ORACLE中移动数据库文件

在ORACLE中移动数据库文件

作者头像
阿新
发布2018-04-12 14:33:07
1.3K0
发布2018-04-12 14:33:07
举报
文章被收录于专栏:c#开发者c#开发者

在ORACLE中移动数据库文件

--ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。

--由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,

--我們可能会考虑移动数据库文件。

--下面以LUNIX平台为例,分别讨论三种数据库文件的移动方法。

一.移动数据文件: -- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。 1. ALTER DATABASE方法; -- 用此方法,可以移动任何表空间的数据文件。 STEP 1. 下数据库: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> SHUTDOWN; SQL> EXIT; STEP 2.用操作系统命令移动数据文件: -- 将数据文件 'test.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下: $ mv /ora/oracle/data1/test.ora /ora/oracle/data2 STEP 3. Mount数据库,用ALTER DATABASE命令将数据文件改名: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> STARTUP MOUNT; SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora'; STEP 4. 打开数据库:. SQL> ALTER DATABASE OPEN; SQL>SELECT NAME,STATUS FROM V$DATAFILE; 2. ALTER TABLESPACE方法: -- 用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。 STEP1. 将此数据文件所在的表空间OFFLINE: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> ALTER TABLESPACE test OFFLINE; SQL> EXIT; STEP2. 用操作系统命令移动数据文件: 将数据文件 'test.ora' 从/ora/oracle/ data1目录移动到/ora/oracle/data2目录下: $ mv /ora/oracle/data1/test.ora /ora/oracle/data2 STEP3. 用ALTER TABLESPACE命令改数据文件名: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> ALTER TABLESPACE test RENAME DATAFILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora'; STEP4. 将此数据文件所在的表空间ONLINE: SQL> ALTER TABLESPACE test ONLINE; SQL> SELECT NAME,STATUS FROM V$DATAFILE; 二. 移动控制文件: -- 控制文件 在 INIT.ORA文件中指定。移动控制文件相对比较简单,下数据库, -- 编辑INIT.ORA,移动控制文件,重启动数据库。 STEP 1. 下数据库: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> SHUTDOWN; SQL> EXIT; STEP 2.用操作系统命令 移动控制文件: --将控制文件'ctl3orcl.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下: $ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2 STEP 3. 编辑INIT.ORA文件: INIT.ORA文件的在$ORACLE_HOME/dbs目录下, 修改参数 "control_files",其中指定移动后的控制文件: control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora) STEP 4. 重启动数据库: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> STARTUP; SQL>SELECT name FROM V$CONTROLFILE; SQL> EXIT; 三. 移动联机日志文件: STEP 1. 停数据库: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> SHUTDOWN; SQL> EXIT; STEP 2. 用操作系统命令移动联机日志文件: --将联机日志文件'redolog1.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下: $ mv /ora/oracle/data1/redolog1.ora /ora/oracle/data2 STEP 3. Mount数据库,用ALTER DATABASE 命令改联机日志文件名:. $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> STARTUP MOUNT ; SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/redolog1.ora' TO '/ora/oracle/data2/redolog1.ora'; STEP 4.重启动数据库: . SQL> ALTER DATABASE OPEN; SQL>SELECT MEMBER FROM V$LOGFILE;

按Oracle原理,启动过程分为三个步骤nomount/mount/open. PHASE0:nomount前,即数据库完全关闭了. 此时可以将数据库control files/data files/redo log files在OS下用mv命令任意移动(实际上,只要未被open的文件都是可以mv的),然后根据各种file location在Oracle中的存放位置,采用不同的方式来告诉Oracle:"偶已将原文件移动到另一个地方了". 其中初始参数文件中的control_files参数指定了具体的control file的location.所以移动了control file可在参数文件被open前直接改参数值Oracle就明白了.(PFILE/SPFILE的具体使用此处不多累赘). PHASE1:nomount阶段. 打开了初始参数文件和backupground_dump_dest下的   alert_sid.log和background processes 的trace files. PHASE2:mount阶段是打开了control file. control file中存放的东东如下: • Database name and identifier • Time stamp of database creation • Tablespace names • Names and locations of data files and redo log files • Current redo log file sequence number • Checkpoint information • Begin and end of undo segments • Redo log archive information • Backup information 所以偶们在PHASE0中所做操作就得在PHASE3真正open这些文件之前,告诉Oracle(因为信息记录在control file中,所以又得在PHASE2中,control file被open后做),偶们已改了file location. 于是可用alter database的data file clause或log file clause的rename 命令来更新control file,于是Oracle会在PHASE3时,到新file location去找相应的文件. PHASE3:open阶段打开所有非offline的data files和redo log files. 因为文件已打开了.所以此时,只能对已经offline或还可以offline的文件作rename操作.原理也是通过更新control file中的内容来告诉Oracle:File location has been changed.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档