将 PDBFRED 重命名为 PDBBURT。
对于 OP 的问题,因为他想进行交换,所以他将使用以下内容来构建一个过程:
- 将 PDB1 重命名为 PDB0
- 将 PDB2 重命名为 PDB1
- 将 PDB0 重命名为 PDB2
这尚未经过测试...基于MOS 的Doc ID 2439885.1:
从 CDB 检查 PDB 状态:
select name, open_mode, restricted from v$pdbs;
select name, con_id, dbid, con_uid, guid from v$containers order by con_id;
select service_id, name, network_name, creation_date, pdb, con_id from cdb_services;
假设我们要重命名PDBFRED
为PDBBURT
:
将 PDB 置于 RESTRICTED 模式以进行重命名操作:
alter pluggable database PDBFRED close;
alter pluggable database PDBFRED open restricted;
select name, open_mode, restricted from v$pdbs;
然后连接PDBFRED
并重命名它:
alter session set container=PDBFRED;
alter pluggable database rename global_name to PDBBURT;
非常重要:您必须关闭 PDB 并以读/写模式打开它,以便 Oracle 数据库完成将新 PDB 服务名称集成到 CDB 中。
关闭 PDB。
alter pluggable database close immediate;
以读/写模式打开 PDB。
alter pluggable database open;
连接到 CDB 并再次检查 PDB:
alter session set container=CDB$ROOT;
select name, open_mode, restricted from v$pdbs;
select name, con_id, dbid, con_uid, guid from v$containers order by con_id;
select service_id, name, network_name, creation_date, pdb, con_id from cdb_services;
PDB 的数据文件仍将使用原始名称,例如:
/u03/oradata/CDB1/PDBFRED
如果您想将文件移动到与 的名称匹配的新目录PDBBURT
,则必须手动创建新目录,然后使用 12c 数据库的 ONLINE MOVE 工具移动文件:
$ mkdir '/u03/oradata/CDB1/PDBBURT
然后移动每个数据文件(从中生成dba_data_files
):
SQL> alter database move datafile '/u03/oradata/CDB1/PDBFRED/system01.dbf' to '/u03/oradata/CDB1/PDBBURT/system01.dbf'
要重命名 Oracle 托管文件 (OMF),请遵循文档“如何重命名 Oracle 托管文件 (OMF)(文档 ID 191574.1)”。
但是,临时表空间的临时文件不能通过“在线移动”命令移动,因此您必须删除与临时表空间关联的临时文件并在新目录中重新创建一个新的临时文件。
SQL> alter database tempfile '/u03/oradata/CDB1/pdb1/temp01.dbf' drop including datafiles;
SQL> alter tablespace TEMP add tempfile '/u03/oradata/CDB1/PDBBURST/temp01.dbf' size 10M reuse;