Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)
Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB)。本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)。
1. 配置CDB中的实例参数(ALTER SYSTEM)
配置CDB实例参数和配置非CDB实例参数没什么不一样。ALTER SYSTEM命令用来设置初始化参数,而有些数据库配置修改需要用ALTER DATABASE命令。
作为一个特权用户登录且连接到根容器时,任何ALTER SYSTEM命令默认都将作用于该根容器。这意味着如下两个命令在这种情况下是一样的。
ALTER SYSTEM SET parameter_name=value;
ALTER SYSTEM SET parameter_name=value CONTAINER=CURRENT;
除了默认操作,在根容器中改变初始化参数能用如下语法来作用到所有容器。
ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;
通过使用CONTAINER=ALL,指示PDBs继承根容器的确定参数。除非通过本地参数来覆盖同样的参数设置,随后根容器该确定参数的任何修改都会被PDBs继承。
通过在PDBs中发布本地ALTER SYSTEM命令,可以覆盖一些参数设置。
2. 在PDB中配置实例参数(ALTER SYSTEM)
在前面,我们提到了可以在根容器中使用带CONTAINER=ALL子句的ALTER SYSTEM命令来设置该根容器中所有PDBs的实例参数。即使当这些参数设置被继承时,也能通过PDB中的本地ALTER SYSTEM命令来覆盖这些设置。仅有一部分初始化参数能在PDB中修改,这些参数能通过如下查询获取。
COLUMN name FORMAT A35
COLUMN value FORMAT A35
SELECT name, value
FROM v$system_parameter
WHERE ispdb_modifiable = 'TRUE'
ORDER BY name;
为了修改本地PDB设置,需要确信已连接到了PDB的特权用户,或通过通用用户连接到该PDB。如前所述,如果没用CONTAINER子句,则修改当前容器的设置。因此,下面的ALTER SYSTEM 命令作用等价。
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = pdb1;
ALTER SYSTEM SET parameter_name=value;
ALTER SYSTEM SET parameter_name=value CONTAINER=CURRENT;
3. 修改CDB(ALTER DATABASE)
从CDB的角度,ALTER DATABASE命令和非CDB数据库类似。你只需知道正在做的修改的作用范围。有些应用于CDB的ALTER DATABASE命令将会影响CDB中的所有PDBs。而其他则只作用于CDB自己。
4. 修改PDB(ALTER PLUGGABLE DATABASE)
通过连接到相关容器和ALTER PLUGGABLE DATABASE命令,可以修改PBD。但为了向后兼容,ALTER DATABASE命令能进行大部分修改。毫无疑问,这些修改只是CDB或非CDB的一部分。
记住,为了修改PDB,你必须通过指向PDB的服务名直接连接到特权用户,或先连接到根容器,然后,切换到PDB容器。下面展示一些可用于PDB的修改。
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = pdb1;
-- PDB的默认版本
ALTER PLUGGABLE DATABASE DEFAULT EDITION = ora$base;
-- PDB的默认表空间类型
ALTER PLUGGABLE DATABASE SET DEFAULT BIGFILE TABLESPACE;
ALTER PLUGGABLE DATABASE SET DEFAULT SMALLFILE TABLESPACE;
-- PDB的默认表空间
ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE users;
ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE temp;
-- 改变全局名。这也会改变容器名和注册到监听的默认服务名
ALTER PLUGGABLE DATABASE OPEN RESTRICTED FORCE;
ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO pdb1a.localdomain;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN;
-- PDB的时区
ALTER PLUGGABLE DATABASE SET TIME_ZONE='GMT';
-- 使PDB数据文件离线/在线及做存储修改
ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' OFFLINE;
ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' ONLINE;
ALTER PLUGGABLE DATABASE DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf'
RESIZE 1G AUTOEXTEND ON NEXT 1M;
-- PDB的补充日志
ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER PLUGGABLE DATABASE DROP SUPPLEMENTAL LOG DATA;
此外,有机制可以控制PDB最大大小和可用共享临时空间的大小。
-- 限制PDB的总存储空间(数据文件和本地临时文件).
ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 5G);
-- 限制可用共享临时文件的大小
ALTER PLUGGABLE DATABASE STORAGE (MAX_SHARED_TEMP_SIZE 2G);
--组合以上两者
ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 5G MAX_SHARED_TEMP_SIZE 2G);
--移除限制
ALTER PLUGGABLE DATABASE STORAGE UNLIMITED;