我是靠谱客的博主 干净网络,这篇文章主要介绍Oracle— datafile 迁移,现在分享给大家,希望可以做个参考。

文档结构

    • 场景简介
    • 迁移操作
      • 数据文件迁移操作
        • (一)shuntown方式
        • (二)offline、online方式

场景简介

近期一个Linux服务器上的Oracle数据库某个实例的数据文件全部位于 /oradata01/devprodb/ 路径下,包括临时表空间的数据文件,但是随着表空间的扩展,导致该路径的 磁盘使用率 达到了 100%,数据库在数据抽取时,临时表空间的数据文件空间分配导致数据库实例异常挂掉,所以需要迁移某些数据文件到 /oradata02/devprodb/ 路径下,空出临时表空间的大小;

迁移操作

数据文件迁移操作

说明:数据文件迁移操作一般有两种方式:
A:停止数据库实例,移动文件,启动实例;
B:表空间 offline,移动文件,online表空间;

服务器磁盘使用情况

[oracle@server-devpro ~]$
[oracle@server-devpro ~]$ df -h
Filesystem                            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol00        1000G  284G  666G  30% /
tmpfs                                 505G   43M  505G   1% /dev/shm
/dev/sda1                             194M   64M  121M  35% /boot
/root/rhel-server-6.5-x86_64-dvd.iso  3.6G  3.6G     0 100% /media/rhel
/dev/mapper/oradata01vg-oradata01lv    12T   12T   17M 100% /oradata01
/dev/mapper/oradata02vg-oradata02lv    12T  450G   11T   4% /oradata02
[oracle@server-devpro ~]$

说明:
A:可以看到 /oradata01 路径下磁盘空闲空间只有 17M;
B:经过分析决定迁移表空间 TS_DAT_DTFX 的数据文件到 /oradata02/devprodb 路径下;

查询表空间的数据文件

SQL> 
SQL> col tablespace_name for a20
SQL> col file_id for 9999
SQL> col file_name for a50
SQL> select t.TABLESPACE_NAME,
       t.FILE_ID,
       t.FILE_NAME,
       round(t.BYTES / 1024 / 1024 / 1024, 2) as f_gb
  from dba_data_files t
 where t.TABLESPACE_NAME = 'TS_DAT_DTFX';
  2    3    4    5    6  
TABLESPACE_NAME      FILE_ID FILE_NAME						      F_GB
-------------------- ------- -------------------------------------------------- ----------
TS_DAT_DTFX		 367 /oradata01/devprodb/ts_dat_dtfx01.dbf			30
TS_DAT_DTFX		 368 /oradata01/devprodb/ts_dat_dtfx02.dbf			30
TS_DAT_DTFX		 369 /oradata01/devprodb/ts_dat_dtfx03.dbf			30
TS_DAT_DTFX		 370 /oradata01/devprodb/ts_dat_dtfx04.dbf			30
TS_DAT_DTFX		 371 /oradata01/devprodb/ts_dat_dtfx05.dbf			20
TS_DAT_DTFX		 424 /oradata01/devprodb/ts_dat_dtfx06.dbf			30

6 rows selected.

SQL> 

查看服务器数据文件的位置

[oracle@server-devpro ~]$ 
[oracle@server-devpro ~]$ ls -lh /oradata01/devprodb/ |grep ts_dat_dtfx
-rw-r----- 1 oracle oinstall  31G May 31 15:33 ts_dat_dtfx01.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:05 ts_dat_dtfx02.dbf
-rw-r----- 1 oracle oinstall  31G May 31 14:35 ts_dat_dtfx03.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:10 ts_dat_dtfx04.dbf
-rw-r----- 1 oracle oinstall  21G May 31 15:33 ts_dat_dtfx05.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:33 ts_dat_dtfx06.dbf
[oracle@server-devpro ~]$ 

=================================================

(一)shuntown方式

1、停止数据库实例

[oracle@server-devpro ~]$ sqlplus / as sysdba
SQL> 
SQL> shutdown immediate
SQL> 

2、复制数据文件到新的路径

[oracle@server-devpro ~]$ 
[oracle@server-devpro ~]$ cp /oradata01/devprodb/ts_dat_dtfx* /oradata02/devprodb/
[oracle@server-devpro ~]$ 

3、以 mount 形式启动实例

[oracle@server-devpro ~]$ sqlplus / as sysdba
SQL> 
SQL> startup mount

4、数据文件重命名

SQL> 
alter database rename file '/oradata01/devprodb/ts_dat_dtfx01.dbf' to '/oradata02/devprodb/ts_dat_dtfx01.dbf';
alter database rename file '/oradata01/devprodb/ts_dat_dtfx02.dbf' to '/oradata02/devprodb/ts_dat_dtfx02.dbf';
alter database rename file '/oradata01/devprodb/ts_dat_dtfx03.dbf' to '/oradata02/devprodb/ts_dat_dtfx03.dbf';
alter database rename file '/oradata01/devprodb/ts_dat_dtfx04.dbf' to '/oradata02/devprodb/ts_dat_dtfx04.dbf';
alter database rename file '/oradata01/devprodb/ts_dat_dtfx05.dbf' to '/oradata02/devprodb/ts_dat_dtfx05.dbf';
alter database rename file '/oradata01/devprodb/ts_dat_dtfx06.dbf' to '/oradata02/devprodb/ts_dat_dtfx06.dbf';

5、启动数据库实例

SQL> 
SQL> alter database open;

=================================================

(二)offline、online方式

1、offline表空间

[oracle@server-devpro ~]$ sqlplus / as sysdba
SQL> 
SQL> alter tablespace TS_DAT_DTFX offline;

2、移动数据文件

SQL> 
SQL>! cp /oradata01/devprodb/ts_dat_dtfx* /oradata02/devprodb/
SQL> 
SQL>! ls -lh /oradata02/devprodb/ |grep ts_dat_dtfx
-rw-r----- 1 oracle oinstall  31G May 31 15:33 ts_dat_dtfx01.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:05 ts_dat_dtfx02.dbf
-rw-r----- 1 oracle oinstall  31G May 31 14:35 ts_dat_dtfx03.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:10 ts_dat_dtfx04.dbf
-rw-r----- 1 oracle oinstall  21G May 31 15:33 ts_dat_dtfx05.dbf
-rw-r----- 1 oracle oinstall  31G May 31 15:33 ts_dat_dtfx06.dbf

3、数据文件重命名

SQL> 
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx01.dbf' to '/oradata02/devprodb/ts_dat_dtfx01.dbf';
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx02.dbf' to '/oradata02/devprodb/ts_dat_dtfx02.dbf';
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx03.dbf' to '/oradata02/devprodb/ts_dat_dtfx03.dbf';
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx04.dbf' to '/oradata02/devprodb/ts_dat_dtfx04.dbf';
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx05.dbf' to '/oradata02/devprodb/ts_dat_dtfx05.dbf';
alter tablespace TS_DAT_DTFX rename datafile '/oradata01/devprodb/ts_dat_dtfx06.dbf' to '/oradata02/devprodb/ts_dat_dtfx06.dbf';
SQL> 

4、online表空间

SQL> 
SQL> alter tablespace TS_DAT_DTFX online;

至此两种数据文件迁移方法都已经完成;

================================================
验证数据文件是否迁移成功

SQL> 
SQL> select sysdate from dual;

SYSDATE
----------------------------
31-MAY-19

SQL> 
SQL> select t.TABLESPACE_NAME,
       t.FILE_ID,
       t.FILE_NAME,
       round(t.BYTES / 1024 / 1024 / 1024, 2) as f_gb
  from dba_data_files t
 where t.TABLESPACE_NAME = 'TS_DAT_DTFX';
  2    3    4    5    6  
TABLESPACE_NAME      FILE_ID FILE_NAME						      F_GB
-------------------- ------- -------------------------------------------------- ----------
TS_DAT_DTFX		 367 /oradata02/devprodb/ts_dat_dtfx01.dbf			30
TS_DAT_DTFX		 368 /oradata02/devprodb/ts_dat_dtfx02.dbf			30
TS_DAT_DTFX		 369 /oradata02/devprodb/ts_dat_dtfx03.dbf			30
TS_DAT_DTFX		 370 /oradata02/devprodb/ts_dat_dtfx04.dbf			30
TS_DAT_DTFX		 371 /oradata02/devprodb/ts_dat_dtfx05.dbf			20
TS_DAT_DTFX		 424 /oradata02/devprodb/ts_dat_dtfx06.dbf			30

6 rows selected.

SQL> 

服务器磁盘使用情况

[oracle@server-devpro ~]$ df -h
Filesystem                            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol00        1000G  284G  666G  30% /
tmpfs                                 505G   43M  505G   1% /dev/shm
/dev/sda1                             194M   64M  121M  35% /boot
/root/rhel-server-6.5-x86_64-dvd.iso  3.6G  3.6G     0 100% /media/rhel
/dev/mapper/oradata01vg-oradata01lv    12T   12T  170G  99% /oradata01
/dev/mapper/oradata02vg-oradata02lv    12T  620G   11T   6% /oradata02
[oracle@server-devpro ~]$

说明:
A:可以看到 /oradata01 路径下磁盘空闲空间为 170G;

最后删除原路劲下数据文件

[oracle@server-devpro ~]$ 
[oracle@server-devpro ~]$ rm -rf  /oradata01/devprodb/ts_dat_dtfx*
[oracle@server-devpro ~]$ 

================================ over ========================================

最后

以上就是干净网络最近收集整理的关于Oracle— datafile 迁移的全部内容,更多相关Oracle—内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部