eygle.com   eygle.com
eygle.com  
 

« 快快乐乐做人 开开心心过节 | Blog首页 | Oracle HowTo:如何通过只读方式更改Oracle数据文件位置 »

Oracle HowTo:如何移动数据文件的位置?

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:
站内相关文章|Related Articles
在Oracle数据库中,有多种方式可以移动数据文件的位置,之前介绍过一种方法:Oracle HowTo:在非归档模式下如何更改数据文件位置
其实可以采用的方法有多种,本文继续补充几种常用方法:
采用offline的方式
第一步,将表空间offline
alter tablespace tablespace_name offline;
第二步,cp文件到新的目录并rename修改控制文件
第三步,将相应表空间online
当然这种方式同样会影响期间的表空间使用。

以下是简单的示范步骤:
1.将表空间offline
[oracle@jumper oracle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Sat Nov 12 18:14:21 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Enabled
Archive destination            /opt/oracle/oradata/conner/archive
Oldest online log sequence     6
Current log sequence           9
SQL> select name from v$datafile;

NAME
---------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/conner/users01.dbf

SQL> alter tablespace users offline;

Tablespace altered.

2.拷贝相应的数据文件
SQL> ! cp /opt/oracle/oradata/conner/users01.dbf /opt/oracle/oradata/users01.dbf

SQL> alter tablespace users rename datafile '/opt/oracle/oradata/conner/users01.dbf'
     to '/opt/oracle/oradata/users01.dbf';

Tablespace altered.

3.将表空间online
SQL> alter tablespace users online;

Tablespace altered.

SQL> select name from v$datafile;

NAME
------------------------------------------------------------------------
/opt/oracle/oradata/conner/system01.dbf
/opt/oracle/oradata/conner/undotbs01.dbf
/opt/oracle/oradata/users01.dbf

当然还有一些其他的方法可以采用.
-----
这篇 【Oracle HowTo:如何移动数据文件的位置?】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

By eygle on 2005-11-12 21:09 | Comments (6) | Posted to HowTo | Edit |Pageviews:

相关文章 随机文章
寒冬中的温暖-SUN E4500温度过高当机
故障总是在同一个地方出现
感谢d.c.b.a 新书第六章定稿
香山赏红叶 北京秋意浓
Oracle HowTo:如何获得数据库的DBID
网上相关主题:
Google

留言 (6)

SQL> select name from V$datafile;
....
E:\TEST.DBF

SQL> alter tablespace test offline;
表空间已更改。
SQL> host copy E:\test.dbf E:\data\test.dbf
已复制 1 个文件。

SQL> alter tablespace test rename datafile 'E:\test.dbf' to 'E:\data\test.dbf';

表空间已更改。

SQL> select name from V$datafile;
...
E:\DATA\TEST.DBF

tablespace还没有online ,v$已经改了,我想不明白原理,能告诉我相关资料都包括那些吗,我自己去找。

Posted by: starlvzhen at November 14, 2005 10:52 AM

rename只是修改的控制文件,重新标记文件位置信息.
这和文件是否Online无关.

你可以想,在数据库mount状态下就可以修改位置,此时文件仍然尚未打开.

Posted by: eygle at November 14, 2005 11:00 AM

明白了,谢谢!
在数据库nomount状态下,应该不可以修改文件位置,对吗?

Posted by: starlvzhen at November 14, 2005 2:48 PM

nomount只是使用参数文件创建了实例,此时还没有读取控制文件,自然无法修改.

Posted by: eygle at November 14, 2005 2:58 PM

eygle,你好
之前曾采用这个方法移动过数据文件,今天刚巧看,其中第三章的(193页)中讲到如何移动数据文件,不过guide中第四步,Sync the file header with the database:
RECOVER DATAFILE C:\ORACLE\ORADATA\ORA10\DATA02.DBF';
请问,在你的方法中未使用同步,和指导书中用了同步有很大区别吗?该步骤是否是必要的?
谢谢!

Posted by: beyondme at June 19, 2007 12:23 AM

你的例子中,移动的是表空间中的单个文件,offline针对的是单个文件,online时是需要recover来同步的

我的例子表空间只有一个文件,offline针对的是表空间,所以可以直接Online,你自己测试一下就知道了。

Posted by: eygle at June 19, 2007 8:39 AM

发表留言:



Remember Me?
(输入验证码后方可评论,谢谢支持)



CopyRight © 2004 eygle.com, All rights reserved.