Oracle19c重命名PDB
重命名PDB,可以使用两种方法:
1.克隆PDB
2.Rename PDB
一、克隆PDB
- 创建目录
此步不是必须,克隆PDB的时候会自动创建大写目录名,强迫症小写患者,可以提前手动创建小写目录
创建testdev目录,D:\ORA19CDATA\test\testdev
- 克隆
SQL> create pluggable database testdev from testuat file_name_convert=('D:\ORA19CDATA\test\testuat','D:\ORA19CDATA\test\testdev');
插接式数据库已创建。
SQL> alter pluggable database testdev open;
插接式数据库已变更。
- 删除旧的PDB
SQL> alter pluggable database testuat close;
SQL> drop pluggable database testuat including datafiles;
二、重命名PDB
1.Rename PDB
连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTUAT READ WRITE NO
SQL> alter pluggable database testuat rename global_name to testdev;
插接式数据库已变更。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTDEV READ WRITE NO
2.Move datafiles
Rename PDB后,数据文件的路径还是指向旧的testuat目录,强迫症患者可以通过move在线移动数据文件,Move datafile PDB必须online
SQL> alter session set container=testdev;
会话已更改。
SQL> select * from v$dbfile;
FILE# NAME CON_ID
---------- ----------------------------------------------------------------- ----------
22 D:\ORA19CDATA\test\TESTUAT\SYSTEM01.DBF 3
......
已选择 13 行。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TESTDEV READ WRITE NO
SQL> alter session set container=testdev;
会话已更改。
SQL> alter database move datafile 'D:\Ora19cData\test\testuat\TEST_DATA_D01.DBF' to 'D:\Ora19cData\test\testdev\TEST_DATA_D01.DBF';
数据库已更改。
......
待所有的数据文件move完后,再次检查确认路径:
SQL> select * from v$dbfile;
3.Rename tempfile
临时文件有两种方法移动:
1.手工创建一个临时文件到新的路径,删除旧的临时文件
2.Rename tempfile
SQL> alter database tempfile 'D:\ORA19CDATA\test\testuat\TEMP01.DBF' offline;
数据库已更改。
手工移动Tempfile: Copy 'D:\ORA19CDATA\test\testuat\TEMP01.DBF' to 'D:\Ora19cData\test\testdev\'
SQL> alter database rename file 'D:\ORA19CDATA\test\testuat\TEMP01.DBF' to 'D:\Ora19cData\test\testdev\TEMP01.DBF';
数据库已更改。
SQL> alter database tempfile 'D:\Ora19cData\test\testdev\TEMP01.DBF' online;
数据库已更改。
三、批量Move脚本
Windows:
select 'alter database move datafile '||''''||name||''''||' to ''D:\Ora19cData\test\testdev\'||substr(name, instr(name, '\', -1) + 1)||''';' from v$dbfile;
select 'alter database rename file '||''''||name||''''||' to ''D:\Ora19cData\test\testdev\'||substr(name, instr(name, '\', -1) + 1)||''';' from v$tempfile;
Linux:
select 'alter database move datafile '||''''||name||''''||' to ''/testdb/data/'||substr(name, instr(name, '/', -1) + 1)||''';' from v$dbfile;
select 'alter database rename file '||''''||name||''''||' to ''/testdb/data/'||substr(name, instr(name, '/', -1) + 1)||''';' from v$tempfile;