oracle 12c 数据库管理 总结
新安了个12c的rac 环境,进去创建用户和表才发现,12c对数据库管理做了一些变更,再网上搜了一些文章,总结一下,方便以后使用。
oracle 12c引入了cdb与pdb的新特性,在oracle 12c数据库引入的多租用户环境(multitenant environment)中,允许一个数据库容器(cdb)承载多个可插拔数据库(pdb)。cdb全称为container database,中文翻译为数据库容器,pdb全称为pluggable database,即可插拔数据库。在oracle 12c之前,实例与数据库是一对一或多对一关系(rac):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入oracle 12c后,实例与数据库可以是一对多的关系。下面是官方文档关于cdb与pdb的关系图。
其实大家如果对sql server比较熟悉的话,这种cdb与pdb是不是感觉和sql server的单实例多数据库架构是一回事呢。像pdb$seed可以看成是master、msdb等系统数据库,pdbs可以看成用户创建的数据库。而可插拔的概念与sql server中的用户数据库的分离、附加其实就是那么一回事。看来oracle也“抄袭”了一把sql server的概念,只是改头换面的包装了一番。
oracle 单实例 从32位 迁移到 64位 方法
在centos 6.4下安装oracle 11gr2(x64)
oracle 11gr2 在vmware虚拟机中安装步骤
debian 下 安装 oracle 11g xe r2
oracle rac 11.2(12c)正确关闭顺序
cdb组件(components of a cdb)
一个cdb数据库容器包含了下面一些组件:
root组件
root又叫cdb$root, 存储着oracle提供的元数据和common user,元数据的一个例子是oracle提供的pl/sql包的源代码,,common user 是指在每个容器中都存在的用户。
seed组件
seed又叫pdb$seed,这个是你创建pdbs数据库的模板,你不能在seed中添加或修改一个对象。一个cdb中有且只能有一个seed. 这个感念,个人感觉非常类似sql server中的model数据库。
pdbs
cdb中可以有一个或多个pdbs,pdbs向后兼容,可以像以前在数据库中那样操作 pdbs,这里指大多数常规操作。
这些组件中的每一个都可以被称为一个容器。因此,root(根)是一个容器,seed(种子)是一个容器,每个pdb是一个容器。每个容器在cdb中都有一个独一无二的的id和名称。
1)连接到cdb数据库
连接到cdb数据库容器非常简单,跟以前连接数据库是一样的
[oracle@get-orasvr02 ~]$ sqlplus / as sysdba
sql*plus: release 12.1.0.1.0 production on sun oct 20 23:41:36 2013copyright (c) 1982, 2013, oracle.
all rights reserved.connected to an idle instance.
sql>
[oracle@getorasvr02 ~]$ sqlplus sys/password as sysdba
sql*plus: release 12.1.0.1.0 production on sun oct 20 23:43:17 2013copyright (c) 1982, 2013, oracle.
all rights reserved.connected to an idle instance.
sql>
2)查看数据库是否为cdb
sql> select name, decode(cdb, 'yes', 'multitenant option enabled', 'regular 12c database: ') multitenant option , open_mode, con_id from v$database;
name multitenant option open_mode con_id
--------- ----------------------------- -------------------- ----------
epps multitenant option enabled read write 0
yes表示该数据库是cdb,如果是no表示是no-cdb(普通数据库)
3)查看当前容器(container)
3.1
sql> show con_name
con_name
------------------------------
cdb$root
sql> select sys_context('userenv', 'con_name') container db from dual;
container db
----------------------------------------------------
cdb$root
sql>
4)查看cdb容器中的pdbs信息
查看cdb中有多少个pluggable database
sql> select con_id, dbid, guid, name , open_mode from v$pdbs;
con_id dbid guid name open_mode
---------- ---------- -------------------------------- ------------------------------ ---------
2 4071321146 e89e8da2866e3157e043de07a8c09238 pdb$seed read only 3 1930201447 e89e9418b882350ce043de07a8c092b6 pdbepps mounted
sql>
5)启动pdb数据库
方式1:
sql> alter pluggable database pdbepps open;
pluggable database altered.
sql> select con_id, dbid, guid, name , open_mode from v$pdbs;
con_id dbid guid name open_mode
---------- ---------- -------------------------------- ------------------------------ ----------
2 4071321146 e89e8da2866e3157e043de07a8c09238 pdb$seed read only 3 1930201447 e89e9418b882350ce043de07a8c092b6 pdbepps read write
方式2: