首页 > 数据库 >Oracle 12C R2-新特性-多租户:PDB支持不同字符集

Oracle 12C R2-新特性-多租户:PDB支持不同字符集

时间:2022-09-29 12:02:36浏览次数:47  
标签:12C R2 CDB FORMAT 字符集 ALTER SQL Oracle 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

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

如果克隆有什么问题,可以通过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


标签:12C,R2,CDB,FORMAT,字符集,ALTER,SQL,Oracle,PDB
From: https://blog.51cto.com/u_12946336/5722440

相关文章