数据库管理-第182期 23ai:惊喜的全功能缓存True Cache-2安装部署(20240505)
作者:胖头鱼的鱼缸(尹海文) Oracle ACE Associate: Database(Oracle与MySQL) PostgreSQL ACE Partner 10年数据库行业经验,现主要从事数据库服务工作 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,OceanBase观察团成员 圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著 名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。 除授权转载并标明出处外,均为“非法”抄袭
上一期讲了True Cache的基础概念,本期除了True Cache配置外还包含操作系统配置以及单实例数据库安装。再次说明演示版本同之前DG_PDB版本一样为特殊版本。
1 主机配置
关于主机操作系统的安装过程这里依然省略。
2 操作系统配置
2.1 基础配置
#关闭防火墙systemctl stop firewalld.service systemctl disable firewalld.service #关闭SELinuxsed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config setenforce 0 #配置tmpfs echo "tmpfs /dev/shm tmpfs defaults,size=`head -1 /proc/meminfo | tr -s ' ' | cut -d ' ' -f2`k 0 0">> /etc/fstab systemctl daemon-reload mount -o remount /dev/shm
2.2 配置hosts
cat >> /etc/hosts <<EOF 10.10.10.231 db01 10.10.10.232 db02 10.10.10.233 db03 EOF
2.3 安装preinstall RPM包
#这里忽略yum源配置,如离线部署则需要配置本地yum源 #针对Oracle Database 23ai在OracleLinux 9的preinstall RPM包下载地址为: # #RPM包名称为:oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm yum -y install oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm
2.4 创建目录
mkdir /u01/app/oracle/product/23.0.0/dbhome_1 -p chown oracle:oinstall /u01 -R
2.5 配置环境变量
su - oracle cat >> .bash_profile <<EOF export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 export ORACLE_SID=PRIMCDB export PATH=\$ORACLE_HOME/bin:$PATH export DISPLAY=:0 EOF #其余节点SID分别为TCCDB1,TCCDB2cat >> .bash_profile <<EOF export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 export ORACLE_SID=TCCDB1 export PATH=\$ORACLE_HOME/bin:$PATH export DISPLAY=:0 EOF cat >> .bash_profile <<EOF export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 export ORACLE_SID=TCCDB2 export PATH=\$ORACLE_HOME/bin:$PATH export DISPLAY=:0 EOF
3 部署数据库
3.1 部署DB软件
Oracle Database 23ai单实例软件部署方式同19c、21c一致,这里不做过多展示。
3.2 创建监听
netca#过程略
3.3 创建数据库
dbca #过程略
注:从21c开始Oracle数据库部署必须采用CDB模式
CDB名称为PRIMCDB,PDB名称为PRIMPDB1。 数据库数据文件存储位置为:{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}。 开启FRA及归档模式。
3.4 验证数据库
sql / as sysdba #这里也“重新”引入一下从12.2开始加入的新的数据库连接工具,sql可以上下翻页并且自适应列宽度和页长度,但是需要数据库启动才能连接,无法进行startup操作
select banner_full from v$version;select con_id,name,open_mode from v$containers;

3.5 部署sample schemas
详见Oracle在GitHub上页面:https://github.com/oracle-samples/db-sample-schemas
本次在PRIMPDB1中部署sample schemas中的HR、SH、CO,部署步骤省略。

4 部署True Cache
4.1 先决条件
4.2 使用DBCA创建True Cache
这里和之前搭ADG一样还是不大喜欢用dbca来创建True Cache,相关内容可以通过下面网址进行查看,这里不做演示了:
https://docs.oracle.com/en/database/oracle/oracle-database/23/odbtc/configuring-true-cache-oracle-dbca.html
4.3 手工创建True Cache
4.3.1 配置tnsname
需要在主库和True Cache节点都配置相同的tnsname,$ORACLE_HOME/network/admin/tnsnames.ora:
# True Cache network nameTCCDB1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db02)(PORT = 1521)) ) (CONNECT_DATA = (SID = TCCDB1) ) ) TCCDB2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db03)(PORT = 1521)) ) (CONNECT_DATA = (SID = TCCDB2) ) ) # True Cache database application service namePROD_TC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db02)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = db03)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PROD_TC) ) ) # Primary database network namePRIMCDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521)) ) (CONNECT_DATA = (SID = PRIMCDB) ) ) # Primary database application service namePROD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PROD) ) ) listener_primary = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT=1521)) ) listener_true_cache = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db02)(PORT=1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = db03)(PORT=1521)) )
4.3.2 True Cache节点配置监听
db02,$ORACLE_HOME/network/admin/listener.ora:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TCCDB1) (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1) (SID_NAME = TCCDB1) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db02)(PORT = 1521)) )
db03,$ORACLE_HOME/network/admin/listener.ora:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TCCDB2) (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1) (SID_NAME = TCCDB2) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db03)(PORT = 1521)) )
4.3.3 拷贝密码文件
这里需要将主库的密码文件(如果使用还需要拷贝wallet)至True Cache节点。
scp $ORACLE_HOME/dbs/orapwPRIMCDB db02:$ORACLE_HOME/dbs/orapwTCCDB1 scp $ORACLE_HOME/dbs/orapwPRIMCDB db03:$ORACLE_HOME/dbs/orapwTCCDB2
4.3.4 准备True Cache的pfile
db02,$ORACLE_HOME/dbs/initTCCDB1.ora
true_cache=trueenable_pluggable_database=truedb_name=PRIMCDB db_unique_name=TCCDB1 db_files=200 sga_target=4G fal_server=PRIMCDB fal_client=TCCDB1 instance_name=TCCDB1 db_create_file_dest=/u01/app/oracle/oradata local_listener=listener remote_listener=listener_primary
db03,$ORACLE_HOME/dbs/initTCCDB2.ora
true_cache=trueenable_pluggable_database=truedb_name=PRIMCDB db_unique_name=TCCDB2 db_files=200 sga_target=4G fal_server=PRIMCDB fal_client=TCCDB2 instance_name=TCCDB2 db_create_file_dest=/u01/app/oracle/oradata local_listener=listener remote_listener=listener_primary
4.3.7 创建目录
在db02和db03创建物理文件目录:
mkdir /u01/app/oracle/oradata
4.3.6 创建并启动True Cache
db02和db03操作:
sqlplus / as sysdba
startup nomount --验证密码文件位置 SELECT file_name FROM v$passwordfile_info; --创建比启动True Cache CREATE TRUE CACHE;

至此没有报错,两台True Cache都以搭建完成。
总结
本期演示了如何部署单实例数据库以及搭建True Cache的过程,但到现在True Cache功能还不可用,下一期将进行后续配置。 老规矩,知道写了些啥。
