Oracle19c 多字符集支持的PDB

发布时间 2024-01-06 00:00:49作者: 济南小老虎

Oracle19c 多字符集支持的PDB


背景

想在一个数据库里面支持多种字符集
突然发现Oracle12c开始已经可以实现一个CDB下面可以有多个不同字符集的PDB了
所以想着今天验证一下. 

环境信息

银河麒麟V10SP3 + Oracle19.21.0.0

最开始默认安装了ZHS16GBK字符集的CDB和PDB

计划按照官方资料进行一下处理

第一步删除已有数据库实例

passwd oracle 设置密码
然后登录 oracle用户
dbca 删除已经有的数据库
然后再次执行dbcd

选择字符集是AL32UTF8 字符集

并且限制为PDB模式, 增加一个 PDB是 ORA19CUTF8
进行数据库的全新初始化.

新增PDB并且设置字符集

mkdir -p /opt/oracle/oradata/ORA19C/ORA19CGBK
sqlplus / as sysdba
alter pluggable database all close ;
alter pluggable database ora19cutf8 open read only ;
alter system set DB_CREATE_FILE_DEST='/opt/oracle/oradata/ORA19C/ORA19CGBK' ;
create pluggable database ORA19CGBK FROM ORA19CUTF8 ;

然后修改字符集
alter pluggable database all open ;
alter session set container=ORA19CGBK ;
alter system enable restricted session ; 
alter database character set INTERNAL_USE ZHS16GBK ; 
select value from nls_database_parameters where parameter='NLS_CHARACTERSET' ;

alter system disable restricted session ; 

增加上启动和部分设置

alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited ;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

CREATE TRIGGER open_all_pdbs
   AFTER STARTUP ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/

字符集确认

alter session set container=ORA19CGBK ;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET' ;
alter session set container=ORA19CUTF8 ;
select value from nls_database_parameters where parameter='NLS_CHARACTERSET' ;