重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 878|回复: 0

[Oracle] oracle 19c在线移动表空间数据文件

[复制链接]
发表于 2023-12-10 16:40:38 | 显示全部楼层 |阅读模式
11g时是无法在线移动数据文件的,12c增强了移动数据文件的功能,不仅可以更改路径,还可以给数据文件改名。在Oracle 12c之前,移动数据文件一直是脱机任务。可以采用RMAN来最大程度地减少停机时间,但是您无法将其完全删除。Oracle 12c对该ALTER DATABASE命令进行了增强,以使数据文件可以联机移动.

语法的文本描述如下所示:

ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file_number )
[ TO ( 'filename' | 'ASM_filename' ) ]
[ REUSE ] [ KEEP ]
keep 保留原有数据文件

reuse 重用数据文件

默认就是重用数据文件(不加keep或者reuse)

可以使用文件编号或名称指定源文件,而必须使用文件名指定目标文件。该REUSE关键字表示,即使它已经存在,新的文件应该被创建。该KEEP关键字指示数据文件的原件应保留。

当源文件是OMF文件时,KEEP不能使用该选项。如果目标文件是OMF文件,则TO可以省略该子句,并且将使用该DB_CREATE_FILE_DEST位置的OMF名称创建该文件。

该ALTER DATABASE MOVE DATAFILE语法不适用于临时文件,且你还要有权限。

背景:

由于/u01目录使用率过高,现在想把数据文件从 /u01移到 /oradata 目录下,oracle版本是19c (非pdb),linux 7.5环境。
3501465757913e365a.png

select file_name from dba_data_files;
7244165757921647b8.png

66536575793849bab.png
如果是PDB容器,那么移动数据文件的时候,需要先切换到对应的pdb.

ALTER SESSION SET container=pdbXXX;
set lin 200 pages 200
col file_name for a100
select file_name,file_id from dba_data_files where tablespace_name='NB_TBS_YOBET';
1616465757948e2105.png
虽然我的也是OMF文件系统,但是我没有设置db_create_file_dest
6187165757954a5804.png
默认是重用数据文件(即原数据文件不保留,生成指定的文件名的数据文件),下面案例是估计加数据文件路径或者是数据文件编号:

ALTER SESSION SET container=pdbXXX; --如果是PDB
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET01.dbf' to '/oradata/ttfc/NB_TBS_YOBET01.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET02.dbf' to '/oradata/ttfc/NB_TBS_YOBET020.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET03.dbf' to '/oradata/ttfc/NB_TBS_YOBET03.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET04.dbf' to '/oradata/ttfc/NB_TBS_YOBET04.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET05.dbf' to '/oradata/ttfc/NB_TBS_YOBET05.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET06.dbf' to '/oradata/ttfc/NB_TBS_YOBET06.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET07.dbf' to '/oradata/ttfc/NB_TBS_YOBET07.dbf';
ALTER DATABASE MOVE DATAFILE '/u01/app/oracle/oradata/ttfc/NB_TBS_YOBET08.dbf' to '/oradata/ttfc/NB_TBS_YOBET08.dbf';
ALTER DATABASE MOVE DATAFILE 17 to '/oradata/ttfc/NB_TBS_YOBET09.dbf';
ALTER DATABASE MOVE DATAFILE 18 to '/oradata/ttfc/NB_TBS_YOBET10.dbf';
ALTER DATABASE MOVE DATAFILE 22 to '/oradata/ttfc/NB_TBS_YOBET14.dbf';

查看alert日志,在进行数据文件move的时候,会切换日志文件以及检查点,生成RBA scn
150926575796294ca2.png

数据文件全部移动到/oradata/ttfc/目录下了,/u01空间也释放了。
6978465757980e0b08.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-18 19:28 , Processed in 0.136358 second(s), 24 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表