eygle.com   eygle.com
eygle.com  
 

« Oracle HowTo:如何移动数据文件的位置? | Blog首页 | 无尽的爱(Endless Love) - 美丽的神话 »

Oracle HowTo:如何通过只读方式更改Oracle数据文件位置

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:
在Oracle数据库中,有多种方式可以移动数据文件的位置,之前介绍过几种方法:Oracle HowTo:在非归档模式下如何更改数据文件位置Oracle HowTo:如何移动数据文件的位置?
以上两种方法,可能在要求较高的24x7系统中不适合采用,因为会使表空间长时间不可用。
特别是当表空间数据文件巨大时,物理拷贝可能需要较长的时间。

本文推荐另外一种方法,可以做一个折中,以下是一个简单的步骤说明:
1.将表空间置于只读
只读状态可以使数据仍然可为用户访问.
alter tablespace tablespace_name read only;
2.物理拷贝文件
3.将表空间offline
alter tablespace tablespace_name offline;
4.rename数据文件
alter database rename file 'old_dir_file' to 'new_dir_file';
5.将表空间联机
alter tablespace tablespace_name online;
6.将表空间置于read write模式
alter tablespace tablespace_name read write;
以下是示范步骤:
1.将表空间置于只读状态
[oracle@jumper oracle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Sat Nov 12 21:10:49 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              Archive Mode
Automatic archival             Enabled
Archive destination            /opt/oracle/oradata/conner/archive
Oldest online log sequence     7
Next log sequence to archive   10
Current log sequence           10
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 read only;

Tablespace altered.

2.物理拷贝文件

SQL> ! cp /opt/oracle/oradata/conner/users01.dbf /opt/oracle/oradata/users01.dbf

3.将表空间脱机
SQL> alter tablespace users offline;

Tablespace altered.

4.修改文件名称
SQL> alter database rename file '/opt/oracle/oradata/conner/users01.dbf' to '/opt/oracle/oradata/users01.dbf';

Database altered.

5.将表空间联机
SQL> alter tablespace users online;

Tablespace altered.

6.将表空间置于读写状态
SQL> alter tablespace users read write;

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

SQL> 

-----
这篇 【Oracle HowTo:如何通过只读方式更改Oracle数据文件位置】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

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

相关文章 随机文章
  • Oracle中数据文件大小的限制
  • 拥有归档日志 如何恢复一个丢失的数据文件
  • 数据文件SCN的一致性问题
  • DBA Scripts:获取用户创建语句
    转引来自地震现场的报道
    Oracle推出官方Blog站点
    批量绑定(bulk binds):FOR循环与FORALL的性能比较
    Oracle10gR2 New Feature:CVU(Cluster Verification Utiltiy)
    网上相关主题:
    Google

    留言 (4)

    太棒了,通过这种方法可以把表空间停止工作的时间降到最低,谢谢eygle!
    同时,我发现eygle非常注重archive or noarchive,这两种模式对移动数据文件有什么影响吗?
    我认为,表空间offline时,因为不允许发生ddl或dml操作,因此也就不会有日志的发生.所以,我想,应该和归档与否都没有关系吧...

    Posted by: wf at November 12, 2005 11:29 PM

    下午遇到了一个这样的问题,客户的网管误把表空间的datafile建到了服务器自身的磁盘上了,这样当切换备机的时候,因为备机没有这个数据文件,导致了无法open,呵呵....
    通过eygle大侠介绍的这个办法,把停止访问的时间降低到了最少:-)谢谢!

    Posted by: kingheap at December 7, 2005 8:15 PM

    我是将步骤2,和3交换了一下,测试也是成功的,但不是很清楚。2和3 是为什么可以调换位置,能否给解释一下:

    如下是我测试的过程:

    1.将表空间置于只读
    2.将表空间offline
    3.物理拷贝文件
    4.rename数据文件
    5.将表空间online
    6.将表空间置于read write模式

    Posted by: spark at February 25, 2008 2:54 PM

    因为READ ONLY后 表空间处于相对静止状态 所以无所谓

    Posted by: mrdx at April 26, 2008 4:05 PM

    发表留言:



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



    CopyRight © 2004 eygle.com, All rights reserved.