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' ;