Oracle, перенос PDB на новый диск

Проект в 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;

Close Menu