Oracle 12C R2-新特性-多租户:PDB支持不同字符集
在12.2之前的版本中,PDB的字符集必须和root容器保持一致。很显然这样就限制了PDB的灵活性。这个限制在12.2中被取消,12.2中支持PDB的字符集可以和root容器字符集不同。
https://www.cndba.cn/Expect-le/article/1754
1
检查CDB字符集
可以看到CDB字符是AL32UTF8
https://www.cndba.cn/Expect-le/article/1754
SQL>COLUMN parameter FORMAT A30
SQL>COLUMN value FORMAT A30
SQL>SELECT *
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET AL32UTF8
SQL>
2
创建一个源CDB和PDB
首先,我们必须使用WE8ISO8859P1字符集创建CDB,以便我们有合适的源CDB和PDB。 以下命令将创建一个名为cdb3的CDB,并带有一个名为pdb5的PDBhttps://www.cndba.cn/Expect-le/article/1754
dbca -silent -createDatabase /
-templateName General_Purpose.dbc /
-gdbname cdb3 -sid cdb3 -responseFile NO_VALUE /
-characterSet WE8ISO8859P1 /https://www.cndba.cn/Expect-le/article/1754https://www.cndba.cn/Expect-le/article/1754
-systemPassword OraPasswd1 /
-createAsContainerDatabase true /
-numberOfPDBs 1 /
-pdbName pdb5 /
-pdbAdminPassword OraPasswd1 /
-databaseType MULTIPURPOSE /
-automaticMemoryManagement false /
-totalMemory 2048 /
-storageType FS /
-datafileDestination "/u02/app/oracle/oradata/" /
-redoLogFileSize 50 /
https://www.cndba.cn/Expect-le/article/1754
-emConfiguration NONE /
-ignorePreReqs
我们使源CDB使用OMF管理方式,并切换到归档模式。
ALTER SYSTEM SET db_create_file_dest = '/u02/app/oracle/oradata';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ALTER PLUGGABLE DATABASE pdb5 OPEN;
--保存当前PDB的状态,下次重启自动到这个状态
ALTER PLUGGABLE DATABASE pdb5 SAVE STATE;
3
克隆一个PDB
为了证明PDB可以支持不同的字符集,我们需要克隆一个源PDB出来。就克隆刚刚创建的另一个CDB中的PDB。
3.1
通过dblink来克隆
SQL>CREATE PLUGGABLE DATABASE pdb5new FROM pdb5@clone_link;
3.2
查看当前PDB
SQL>SHOW PDBS
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB5NEW MOUNTED
SQL>
https://www.cndba.cn/Expect-le/article/1754
3.3
打开克隆的PDB
SQL>ALTER PLUGGABLE DATABASE pdb5new OPEN;
SQL>SHOW PDBS
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB5NEW READ WRITE NO
SQL>
如果克隆有什么问题,可以通过pdb_plug_in_violations视图查看具体信息。
该视图主要是展示了关于CDB和PDB之间不兼容的一些信息。
3.4
验证
可以看到PDB字符集是WE8ISO8859P1,CDB字符集是AL32UTF8。
3.4.1
查看CDB字符集
SQL>COLUMN parameter FORMAT A30
SQL>COLUMN value FORMAT A30
SQL>SELECT *
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET AL32UTF8
SQL>
https://www.cndba.cn/Expect-le/article/1754
3.4.2
查看PDB字符集
SQL>ALTER SESSION SET CONTAINER=pdb5new;
SQL>COLUMN parameter FORMAT A30
SQL>COLUMN value FORMAT A30
SQL>SELECT *
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET WE8ISO8859P1
SQL>
版权声明:本文为博主原创文章,未经博主允许不得转载。
PDB 字符集