Проект в PDB перерос изначально планируемые ресурсы и потребовалось перенести базу на новое место в пределах одной CDB. Новое дисковое пространство подключено, требуется перенести.
Для начала подготовить каталог для файлов PDB. В нашем случае все файлы будут храниться в одном каталоге /srv/u01/PDBS/FINDATA03/
Информация о файлах можно увидеть в системном представлении dba_data_files, которое доступно роли SYSDBA.
SELECT FILE_ID, TABLESPACE_NAME, FILE_NAME FROM dba_data_files;
Команды для переноса в новый каталог файлов сформируем так:
SELECT 'ALTER DATABASE MOVE DATAFILE '''||file_name||''''||' TO '||'''' ||'/srv/u01/PDBS/FINDATA03/'||SUBSTR(file_name, INSTR(file_name, '/', -1) +1) ||''''||';' SCRIPT FROM DBA_DATA_FILES;
Команды выполнить в SQLPLUS на сервере, или тут же в SQL Developer.
После переноса файлов PDB на прежнем месте останется TEMPORARY TABLESPACE. Его необходимо создать заново, сделать основным для PDB и удалить старое.
CREATE TEMPORARY TABLESPACE "TEMP01" TEMPFILE '/srv/u01/PDBS/FINDATA03/TEMP01_P1.dbf' SIZE 1073741824 AUTOEXTEND ON NEXT 1073741824 MAXSIZE 12288M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576; ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE TEMP01; -- перед удалением старого необходимо прекратить активные сессии, удалить его командой DROP TABLESPACE "TEMP" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;