在 12.1 中, PDB 的字符集与 root 容器必须保持一致,从 12.2 开始,同一个 CDB中的各个 PDB 字符集可以不相同。
在新创建 PDB 时不能指定 PDB 的字符集,如CDB为AL32UTF8。如果想让PDB字符集为ZHS16GBK,可以通过clone或plug in一个已有的ZHS16GBK字符集数据库或者其他的方式来进行。
oracle官方不建议采用直接修改字符集的方式,这样在生产环境中可能会出现各种问题。
但是我们这里为了测试方便采用直接修改的方式。
[oracle@oracle1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 1 14:19:02 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
SQL> alter session set container=p2;
Session altered.
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
Database altered.
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
System altered.
这里已经把pdb修改为了ZHS16GBK。