文档结构
- 场景简介
- 迁移操作
- 数据文件迁移操作
- (一)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—内容请搜索靠谱客的其他文章。
发表评论 取消回复