Oracle19c重命名PDB

Oracle19c重命名PDB

𝓓𝓸𝓷 Lv6

重命名PDB,可以使用两种方法:

  • 克隆PDB

  • Rename PDB

一、克隆PDB
  • 创建目录

此步不是必须,克隆PDB的时候会自动创建大写目录名,强迫症小写患者,可以提前手动创建小写目录

1
创建testdev目录,D:\ORA19CDATA\test\testdev
  • 克隆
1
2
3
4
5
6
7
8

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
1
2
SQL> alter pluggable database  testuat close;  --关闭之后才能删除
SQL> drop pluggable database testuat including datafiles;
二、重命名PDB
1.Rename PDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

连接到:
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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脚本
1
2
3
4
5
6
7
8
9
10
11
12

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;

  • Title: Oracle19c重命名PDB
  • Author: 𝓓𝓸𝓷
  • Created at : 2024-06-06 18:15:33
  • Updated at : 2024-07-20 05:15:41
  • Link: https://www.zhangdong.me/oracle19c-rename-pdb.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论