oracle 12c/19c 在線移動表空間數據文件(Online Datafile Move in Oracle Database 12/19c)


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環境。

 

 select file_name from dba_data_files;

 

 

 

如果是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';

 

 

雖然我的也是OMF文件系統,但是我沒有設置db_create_file_dest

 

 默認是重用數據文件(即原數據文件不保留,生成指定的文件名的數據文件),下面案例是估計加數據文件路徑或者是數據文件編號:

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

 

 數據文件全部移動到/oradata/ttfc/目錄下了,/u01空間也釋放了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM