Oracle 12C R2-新特性-多租户:PDB支持不同字符集
在12.2之前的版本中,PDB的字符集必须和root容器保持一致。很显然这样就限制了PDB的灵活性。这个限制在12.2中被取消,12.2中支持PDB的字符集可以和root容器字符集不同。
1 检查CDB字符集
可以看到CDB字符是AL32UTF8
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的PDB
dbca -silent -createDatabase / -templateName General_Purpose.dbc / -gdbname cdb3 -sid cdb3 -responseFile NO_VALUE / -characterSet WE8ISO8859P1 / -sysPassword OraPasswd1 / -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 / -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>
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>
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 字符集