Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
CDB组件(Components of a CDB)
一个CDB数据库容器包含了下面一些组件:
ROOT组件
ROOT又叫CDB R O O T , 存 储 着 O R A C L E 提 供 的 元 数 据 和 C o m m o n U s e r , 元 数 据 的 一 个 例 子 是 O R A C L E 提 供 的 P L / S Q L 包 的 源 代 码 , C o m m o n U s e r 是 指 在 每 个 容 器 中 都 存 在 的 用 户 。 S E E D 组 件 S e e d 又 叫 P D B ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。 SEED组件 Seed又叫PDB ROOT,存储着ORACLE提供的元数据和CommonUser,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,CommonUser是指在每个容器中都存在的用户。 SEED组件 Seed又叫PDBSEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。
PDBS
CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDB
CentOS7@VMware12,分配资源:CPU:2颗,内存:4GB,硬盘空间:30GB
Oracle12C企业版64位
注意:CentOS6.5的话建议安装11g,不然的话各种不兼容。
linuxx64_12201_database.zip
• root身份安装依赖包:
yum -y install binutils compat-libcap1 compat-libstdc+±33 compat-libstdc+±33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++.i686 libstdc+±devel libstdc+±devel.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 libXp
• 建立用户和组:
groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
echo “password” | passwd --stdin oracle #oracle
用户的登录密码,后续登录要用,记着。
• 创建安装目录:
mkdir -p /home/oracle/app/oracle/product/12.2.0.1.0/dbhome_1
chown -R oracle:oinstall /home/oracle/app
chmod -R 775 /home/oracle/app
• 修改内核参数vi /etc/sysctl.conf,添加:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4098955264
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
改好后,使之生效:sysctl -p
• 改文件限制:vi /etc/security/limits.conf,添加:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
• 以及vi /etc/pam.d/login,添加:
session required pam_limits.so
• 修改ulimit:vi /etc/profile,添加:
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536a
else
ulimit -u 16384 -n 65536
fi
fi
• 修改环境变量。vi ~oracle/.bash_profile,添加:
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/12.2.0.1.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_BASE ORACLE_HOME ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH
export PATH
上述工作完成后,建议重启系统。
• 以oracle用户登录,开始安装:
解压zip
unzip linuxx64_12201_database.zip -d /usr/local
图形化界面进入/usr/local/database
执行
./runInstaller
• 然后就会出现安装界面,配置过程从略。需要注意的是字符集要选择unicode。
• 打开PDB数据库
sqlplus / as sysdba
startup
alter pluggable database ORCLPDB open;
alter session set container=ORCLPDB;
在CDB 下创建用户只能以C##或c## 开头
创建表空间及表空间下用户略。
若出现ORA-01017: invalid username/password; logon denied
可修改该用户下密码再次重试。
• 修改 tnsnames.ora 添加:
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JCPT-DEV)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
• 在sqlplus中测试能否连接
conn hiplog/hokaihiplog@ORCLPDB
Connected.
注意修改application.properties 的连接地址,以及iib ODBC的连接配置
• 修改oracle/product/12.2.0.1.0/dbhome_1/network/admin/sqlnet.ora 添加:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11