上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。
前两天在PVE环境上搭建了oracle12C 的RAC环境(详见另一篇博文“ProxmoxVE 之 安装oracle12C rac集群”),安装完成了grid集群环境的安装以及oracle数据库软件的安装,具备了创建数据库的条件。现在在这个RAC环境上使用dbca创建数据库CDB和PDB。
相关规划如下:
a、存储规划:
1、 GRID集群组件磁盘组
+grid: 1个,用于OCR+VOTING DISK ,85G ,使用asmdiskc ,共享存储
2、 数据库安装磁盘组
+system:用于数据库基本表空间,控制文件,参数文件等,50G,使用asmdiskd ,共享存储
+recovery:用于归档与闪回日志空间,50G,使用asmdiske ,共享存储
+data:用户数据库业务表空间,50G,使用asmdiskf ,共享存储
b、IP规划:
oraclenode1:
publicip : ens18 :192.168.1.32
vip:192.168.1.36
privateip :ens19 :192.168.170.32
oraclenode2:
publicip : ens18 :192.168.1.33
vip:192.168.1.37
privateip :ens19 :192.168.170.33
scanip :192.168.1.38
c、软件版本:
操作系统:CentOS 7.2
数据库:ORACLE12c R2
集群管理软件:ORACLEGRID 12.2.0.1
d、主机名规划:
#public ip
192.168.1.32 oraclenode1
192.168.1.33 oraclenode2
#private ip
192.168.170.32 oraclenode1pri
192.168.170.32 oraclenode2pri
#vip ip
192.168.1.36 oraclenode1vip
192.168.1.37 oraclenode2vip
#scan ip
192.168.1.38 oraclenodescan
e、用户及用户组规划:
groupadd -g 60001 oinstall
groupadd -g 60002 dba
groupadd -g 60003 oper
groupadd -g 60004 backupdba
groupadd -g 60005 dgdba
groupadd -g 60006 kmdba
groupadd -g 60007 asmdba
groupadd -g 60008 asmoper
groupadd -g 60009 asmadmin
useradd -u 61001 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 61002 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
echo "grid" | passwd --stdin grid
echo "oracle" | passwd --stdin oracle
f、目录规划:
mkdir -p /data/oracle/app/grid
mkdir -p /data/oracle/app/12.2.0.1/grid
chown -R grid:oinstall /data/oracle
mkdir -p /data/oracle/app/oraInventory
chown -R grid:oinstall /data/oracle/app/oraInventory
mkdir -p /data/oracle/app/oracle
chown -R oracle:oinstall /data/oracle/app/oracle
chmod -R 775 /data/oracle
asm磁盘组安装:
登录grid账号,ssh grid@oraclenode1 -X ,运行 asmca ,按照规划创建asm磁盘组,其中grid磁盘组在配置grid的时候已经创建了,剩下system、recovery、data三个磁盘组需要创建:
创建完成之后:
上面显示4个asm磁盘组都已经创建完成。接下来安装CDB数据库和PDB数据库。
CDB数据库安装:
以oracle账号登录,ssh oracle@oraclenode1 -X ,运行 dbca :
上面这一步很重要,字符集一旦选定就不能改了。提前跟需求部门确定字符集,如果是数据库迁移,提前确定源数据库的字符集,使之一致。
使用统一的密码 : oracle
开始安装,耐心等待。。。。。
安装完成,如下:
使用grid登录,使用crsctl status res -t 命令查看状态如下:
[grid@oraclenode2 ~]$ crsctl status res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.ASMNET1LSNR_ASM.lsnr ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.DATA.dg ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.GRID.dg ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.LISTENER.lsnr ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.RECOVERY.dg ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.SYSTEM.dg ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.chad ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.net1.network ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE ora.ons ONLINE ONLINE oraclenode1 STABLE ONLINE ONLINE oraclenode2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE oraclenode1 STABLE ora.MGMTLSNR 1 ONLINE ONLINE oraclenode1 169.254.178.157 192. 168.170.32,STABLE ora.asm 1 ONLINE ONLINE oraclenode1 Started,STABLE 2 ONLINE ONLINE oraclenode2 Started,STABLE 3 OFFLINE OFFLINE STABLE ora.cvu 1 ONLINE ONLINE oraclenode1 STABLE ora.mgmtdb 1 ONLINE ONLINE oraclenode1 Open,STABLE ora.oraclenode1.vip 1 ONLINE ONLINE oraclenode1 STABLE ora.oraclenode2.vip 1 ONLINE ONLINE oraclenode2 STABLE ora.orcl.db 1 ONLINE ONLINE oraclenode1 Open,HOME=/data/orac le/app/oracle/produc t/12.2.0.1/db_1,STAB LE 2 ONLINE ONLINE oraclenode2 Open,HOME=/data/orac le/app/oracle/produc t/12.2.0.1/db_1,STAB LE ora.qosmserver 1 ONLINE ONLINE oraclenode1 STABLE ora.scan1.vip 1 ONLINE ONLINE oraclenode1 STABLE -------------------------------------------------------------------------------- [grid@oraclenode2 ~]$
现在就可以很开心的使用CDB和PDB了,相关的概念和常用操作具体可以参考这个网址:
https://blog.51cto.com/fengfeng688/1946278
需要注意的是,oracle和grid的环境变量中有一个SID,两个rac节点需要不一样,比如数据库安装的时候SID前缀设置为orcldb1 ,那么两个节点的$ORACLE_SID分别应该是:
orcldb11
orcldb12
grid的环境变量,$ORACLE_SID分别是:
ASMI
ASM2
如果SID没有设置对,查看集群资源的时候会看到db资源处于OPEN状态,但是使用oracle账号登录使用sqlplus进入数据库管理的时候会提示connect to an idle instance 。
CDB和PDB相关测试:
查看当前的容器: SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT 查看CDB中的PDB信息: SQL> select con_id, dbid, guid, name , open_mode from v$pdbs; CON_ID DBID GUID ---------- ---------- -------------------------------- NAME -------------------------------------------------------------------------------- OPEN_MODE -------------------- 2 2349385738 7F78C92375923F6DE0532001A8C0107F PDB$SEED READ ONLY 3 364970257 7F7A374E7B7E37F5E0532001A8C09EA4 ORCL_PDB1 READ WRITE CON_ID DBID GUID ---------- ---------- -------------------------------- NAME -------------------------------------------------------------------------------- OPEN_MODE -------------------- 创建一个测试pdb: SQL> create pluggable database test_pdb admin user admin identified by admin; Pluggable database created. 将一个pdb打开: SQL> alter pluggable database test_pdb open; Pluggable database altered. SQL> select con_id,dbid,con_uid,guid,name,open_mode,create_scn,total_size,block_size from v$pdbs; CON_ID DBID CON_UID GUID ---------- ---------- ---------- -------------------------------- NAME -------------------------------------------------------------------------------- OPEN_MODE CREATE_SCN TOTAL_SIZE BLOCK_SIZE -------------------- ---------- ---------- ---------- 2 2349385738 2349385738 7F78C92375923F6DE0532001A8C0107F PDB$SEED READ ONLY1408773 801112064 8192 3 364970257 364970257 7F7A374E7B7E37F5E0532001A8C09EA4 ORCL_PDB1 READ WRITE1467170 911212544 8192 CON_ID DBID CON_UID GUID ---------- ---------- ---------- -------------------------------- NAME -------------------------------------------------------------------------------- OPEN_MODE CREATE_SCN TOTAL_SIZE BLOCK_SIZE -------------------- ---------- ---------- ---------- 4 841599650 841599650 7F7A57321EE03A16E0532001A8C0E4B4 TEST_PDB READ WRITE1471014 801112064 8192 从一个pdb中克隆一个pdb: SQL> create pluggable database test2_pdb from test_pdb; Pluggable database created. SQL> alter pluggable database test2_pdb open; Pluggable database altered. 切换cdb和pdb线程: SQL> alter session set container=test_pdb; Session altered. SQL> alter session set container=cdb$root; Session altered. 关闭一个pdb: SQL> alter pluggable database test_pdb close; Pluggable database altered. 关闭所有的pdb: SQL> alter pluggable database all close; Pluggable database altered. 拔出pdb并生成xml文件: SQL> alter pluggable database orcl_pdb1 unplug into '/home/oracle/orcl_pdb1.xml'; alter pluggable database orcl_pdb1 unplug into '/home/oracle/orcl_pdb1.xml' * ERROR at line 1: ORA-65025: Pluggable database ORCL_PDB1 is not closed on all instances. 上面报错,是因为在rac环境,需要在所有实例中关闭pdb,在另外一个节点oraclenode2中也关闭pdb后,在执行下面的语句: SQL> alter pluggable database orcl_pdb1 unplug into '/home/oracle/orcl_pdb1.xml'; Pluggable database altered. 删除pdb: SQL> drop pluggable database orcl_pdb1 keep datafiles; Pluggable database dropped. 在另一个节点oraclenode2上执行存储过程检查pdb兼容性: SQL> exec DBMS_PDB.Check_Plug_Compatibility(PDB_Descr_File=>'/home/oracle/orcl_pdb1.xml'); BEGIN DBMS_PDB.Check_Plug_Compatibility(PDB_Descr_File=>'/home/oracle/orcl_pdb1.xml'); END; * ERROR at line 1: ORA-06550: line 1, column 7: PLS-00221: 'CHECK_PLUG_COMPATIBILITY' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored 报错说没有Check_Plug_Compatibility这个存储过程,忽略,因为是同一套集群,版本是一致的。、 将xml文件拷贝到另一个节点oraclenode2上,并执行从xml中创建pdb: SQL> create pluggable database orcl_pdb1 using '/home/oracle/orcl_pdb1.xml' ; Pluggable database created. SQL> SQL> alter pluggable database orcl_pdb1 open; Pluggable database altered. SQL>
至此,CDB和PDB相关的简单测试完成。
总结:
在安装完成RAC集群的情况下,再安装数据库软件,安装数据库就显得比较简单了,主要难点还是在安装RAC集群grid上面 。
数据库的安装主要的工作应该是需要放在根据实际生产环境规划存储,规划数据文件,规划CDB和PDB,以及优化相关的数据库参数。安装本身来说是比较简单的,只需要在图形化界面中运行dbca一路根据规划进行安装即可。
在我自己的安装过程中,碰到一个问题是安装成功后发现sqlplus进去提示connect to an idle instance ,后面检查发现是oracle账号的$ORACLE_SID环境变量设置不正确导致的,调整正确后就正常了。
CDB和PDB还有客户端的连接使用这一块没有测试。
从方便性上现在还不能说有了PDB之后就更方便了,只能说有了PDB之后,对于更多复杂应用和更大型的数据库应用逻辑区分更清楚一些了,同一类的业务,可以新建一个CDB,在一个CDB中对每一个业务创建一个PDB。原来的数据库是通过用户schema来区分,现在直接通过pdb区分。另外数据导入导出方面没有经过测试,不知道PDB的拔出插入是不是比以前的expdp或者rman方式要效率高,只有在今后使用过程中通过实践来检验了。