1、按照正常步骤安装好数据库后,此时存在一个CDB和一个PDB,通过lsnrctl status命令可以看监听是否正常及是否监听到PDB;
2、数据库起来后,缺省PDB为mount状态,通过执行alterPLUGGABLE databasepdb1 open;或者执行alterPLUGGABLE databaseallopen;来打开PDB数据库,通过执行alterPLUGGABLE databasepdb1 close;或者alterPLUGGABLE databaseallclose;来关闭PDB数据库;
3、登录PDB,首先必须在TNSNAMES文件中加入如下内容:
pdb1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = THINKED)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb1)
)
)
在设置了以上内容后,可以执行以下命令登录PDB:
$sqlplus sys/xifenfei@pdb1 assysdba
或者在以sysdba登录CDB后,执行以下命令:
sql>alter session set container=pdb1;
4、创建用户
创建用户默认的是container=all,在cdb中只能创建全局用户(c##开头),会在cdb和所有的pdb中创建该用户(但是pdb中的全局用户需要另外授权才能够在pdb中访问)。在pdb中创建的用户只能为本地用户。
按照以上内容理解一般我们日常使用的业务用户应该是建立在PDB下的。
5、用户授权
用户授权默认情况下是只会给当前container,在cdb中也可以指定container=all,对所有open的pdb且存在该用户都进行授权。
6、修改参数
在ROOT中修改参数,默认情况和指定container=all/current均是所有open的pdb都生效。
通过测试我们发现在独立修改pdb参数之时,其本质是在pdb_spfile$基表中插入或者修改相关记录。
通过对pdb_spfile$基表的分析,证明pdb中不同于root的参数是记录在root的PDB_SPFILE$基表中。整个CDB的工作原理是如果在PDB_SPFILE$中无相关参数记录,则继承cdb的参数文件中的值,如果PDB_SPFILE$中有记录则使用该值覆盖cdb参数文件值。
进一步的,删除pdb_spfile$基表中相应值来进行验证,pdb的参数值会自动继承cdb中的参数。
在oracle 12c中pdb数据库默认是不起来的,下面介绍一下pdb起关的一些常用命令。
默认状态:
SQL> show pdbs
CON_ID CON_NAMEOPEN MODERESTRICTED
2 PDB$SEEDREAD ONLYNO
3 PDB1MOUNTED
4 PDB2MOUNTED
全部开启pdb:
SQL>alter pluggable database allopen;
Pluggable database altered.
全部关闭pdb:
SQL> alter pluggable database all close immediate;
Pluggable database altered.
当然也可以对个别pdb库关闭或开启:
SQL> alter pluggable database PDB1 close immediate;
Pluggable database altered.
SQL> alter pluggable database PDB1 open;
Pluggable database altered.
怎么样让pdb随着instance起来而起来呢?需要写一个TRIGGER来拉动pdb
conn / as sysdba
CREATE TRIGGER open_all_pdb
AFTER STARTUP
ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdb;
/
7、ORACLE 12C的Enterprise Manager Database Express 12c相对于11G和10G的Enterprise Manager,从功能上说确实精简了很多,比如不支持在线查看AWR,不支持在线操作不备份,不支持对SCHEDULER的操作等等,减少了功能的同时也大大的降低了其使用难度,不用向以前以前还需要启动dbconsole,需要配置资料库等等一些繁琐的操作,还经常出现一些莫名其妙的问题不得不重建EM。预测几年之后EM Express的使用人说可能会增加(数据库升级到12C是一个因素,有些人毕竟不会购买GC)。在12C的Express版本中,默认情况下只需要在对应的pdb用户下执行如下操作即可启用EM Express设置http端口exec DBMS_XDB_CONFIG.SETHTTPPORT(http_port_number);
设置https端口exec DBMS_XDB_CONFIG.SETHTTPSPORT(https_port_number);
注意:Each container must use a unique port for EM Express,同时对于有些机器缺省带的IE8,在进行EM登录时会报错,出现不能登录的现象,一般升级到IE9就应该可以正常使用。