求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
在ORACLE中移动数据库文件
 
火龙果软件    发布于 2013-8-16,作者  shamdeng
 

在ORACLE中移动数据库文件在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;

按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.

相关文章

基于EA的数据库建模
数据流建模(EA指南)
“数据湖”:概念、特征、架构与案例
在线商城数据库系统设计 思路+效果
 
相关文档

Greenplum数据库基础培训
MySQL5.1性能优化方案
某电商数据中台架构实践
MySQL高扩展架构设计
相关课程

数据治理、数据架构及数据标准
MongoDB实战课程
并发、大容量、高性能数据库设计与优化
PostgreSQL数据库实战培训
 
分享到
 
 


MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...