-- 查看是否cdb,如果NO则是普通数据库,由enable_pluggable_database参数TRUE|FALSE 控制
SQL> select name,cdb from v$database;
NAME CDB
--------- ---
ORCL YES
-- 察看当前连接:
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
-- 切换容器
alter session set container=pdb1;
-- 查看pdbs
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1240419916 PDB$SEED READ ONLY
3 2066919739 PDB1 READ WRITE
-- 创建删除pdb
CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb2_admin IDENTIFIED BY oracle
STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M)
DEFAULT TABLESPACE pdb2_tbs
DATAFILE 'G:\app\oracle\oradata\orcl\pdb2\pdb2_data01.dbf' SIZE 25M AUTOEXTEND ON
PATH_PREFIX = 'G:\app\oracle\oradata\orcl\pdb2\'
FILE_NAME_CONVERT = ('G:\app\oracle\oradata\orcl\pdbseed\','G:\app\oracle\oradata\orcl\pdb2\');
插接式数据库已创建
DROP PLUGGABLE DATABASE PDB2 INCLUDING DATAFILES;
-- 打开/关闭pdb
-- 在cdb中跟pdb中有打开关闭略微差异,另外也可以看到权限不同查看的pdb个数不一样
SQL> alter session set container=cdb$root;
会话已更改。
SQL> alter pluggable database pdb1 close immediate;
插接式数据库已变更。
SQL> alter session set container=pdb1;
会话已更改。
SQL> alter database pdb1 open;
数据库已更改。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
3 2066919739 PDB1 READ WRITE
SQL> alter session set container=cdb$root;
会话已更改。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1240419916 PDB$SEED READ ONLY
3 2066919739 PDB1 READ WRITE
4 4180530913 PDB2 READ WRITE
--执行startup/shutdown
SQL> alter session set container=pdb4
2 ;
会话已更改。
SQL> shutdown immediate;
插接式数据库已关闭。
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
4 675327819 PDB4 MOUNTED
SQL> startup
插接式数据库已打开。
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
4 675327819 PDB4 READ WRITE
-- 所有pdb一起打开关闭,如果不指定pdb名称,则一次执行所有pdb操作,比如
alter pluggable database all open;
alter pluggable database all close immediate;
--用户操作,
-- 在cdb,pdb创建用户是不同的,如果在cdb创建一个用户,会在每个pdb中(除了pdb$seed)都对应创建相应的用户
-- 并且以C##开头,另外授权操作也需要独立进行,看看监听
C:\Users\Administrator>lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 22-3月 -2016 16:4
9:11
Copyright (c) 1991, 2014, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=loge-PC)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Produ
ction
启动日期 22-3月 -2016 14:42:02
正常运行时间 0 天 2 小时 7 分 11 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 G:\app\oracle\product\12.1.0\dbhome_1\network\admin\li
stener.ora
监听程序日志文件 G:\app\oracle\product\12.1.0\dbhome_1\log\diag\tnslsnr
\loge-PC\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=loge-PC)(PORT=1521)))
服务摘要..
服务 "orcl" 包含 1 个实例。
实例 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "pdb1" 包含 1 个实例。
实例 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
-- 参数修改,在cdb中修改,pdb会继承进去;如果在pdb中修改会覆盖pdb从cdb中继承的参数含义
-- plug功能
CREATE PLUGGABLE DATABASE pdb4 ADMIN USER pdb2_admin IDENTIFIED BY oracle
STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M)
DEFAULT TABLESPACE pdb4_tbs
DATAFILE 'G:\app\oracle\oradata\orcl\pdb4\pdb4_data01.dbf' SIZE 25M AUTOEXTEND ON
PATH_PREFIX = 'G:\app\oracle\oradata\orcl\pdb4\'
FILE_NAME_CONVERT = ('G:\app\oracle\oradata\orcl\pdbseed\','G:\app\oracle\oradata\orcl\pdb4\');
-- 创建文件夹pdb4_c cd G:\app\oracle\oradata\orcl ;mkdir pdb4_c
-- 执行
SQL> alter pluggable database pdb4 unplug into 'G:\app\pdb4.xml';
插接式数据库已变更。
SQL> drop pluggable database pdb4 ;
插接式数据库已删除。
SQL> create pluggable database pdb4 using 'G:\app\pdb4.xml' copy file_name_conve
rt=('G:\app\oracle\oradata\orcl\pdb4\','G:\app\oracle\oradata\orcl\pdb4_c\');
插接式数据库已创建。
SQL> select con_id,dbid,name,open_mode from v$database;
CON_ID DBID NAME OPEN_MODE
---------- ---------- --------- --------------------
0 1434174562 ORCL READ WRITE
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1240419916 PDB$SEED READ ONLY
3 2066919739 PDB1 READ WRITE
4 675327819 PDB4 MOUNTED
SQL> exec dbms_pdb.sync_pdb();
PL/SQL 过程已成功完成。
SQL> alter pluggable database pdb4 open;
插接式数据库已变更。
-- 可以看到迁移数据库功能的强大之处
-- 默认数据库启动后所有pdb都是关闭状态,可以使用触发器打开
SQL> edit
已写入 file afiedt.buf
1 create or replace trigger sys.after_startup after startup on database
2 begin
3 execute immediate 'alter pluggable database all open';
4* end after_startup;
SQL> /
触发器已创建
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 2466250752 bytes
Fixed Size 3048632 bytes
Variable Size 671091528 bytes
Database Buffers 1778384896 bytes
Redo Buffers 13725696 bytes
数据库装载完毕。
数据库已经打开。
SQL> select con_id,dbid,name,open_mode from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 1240419916 PDB$SEED READ ONLY
3 2066919739 PDB1 READ WRITE
4 675327819 PDB4 READ WRITE
一些概念:
Multitenant Environment:多租户环境
CDB(Container Database):数据库容器
PD(Pluggable Database):可插拔数据库