3-Oracle23 ai free True Cache podman实操

一、环境准备​

  1. container模式在23.8.0.25.04这个版本有报错提示。最后校验,预计RPM上安装解决。
  2. 操作系统与目录规范--挂载目录报错,原因不知是不是现在的container已到了23.8.0.25.04有改变
--挂载本地磁盘到镜像的路径,在podman配置文件中
--将报错 -v /u01/app/oracle/oradata/tru-cc-free:/opt/oracle/oradata
# 创建符合 OFA 标准的目录
sudo mkdir -p /u01/app/oracle/oradata/{pri-db-free,tru-cc-free} 
sudo chmod 775 /u01/app/oracle/oradata/*
官方手册​:
主库必须为归档模式(ARCHIVELOG)
True Cache 节点需安装相同版本的 Oracle 软件
  1. 拉取官方镜像
podman pull container-registry.oracle.com/database/free:latest

二、网络配置(Oracle 网络规范)​

# 创建 macvlan 网络
 podman network create -d macvlan \ 
--subnet=192.168.168.0/24 \ 
--gateway=192.168.168.1 \ 
-o parent=ens-192 tc_net
--parent 参数需替换为宿主机实际物理网卡
检查tc-net
[root@OL95 oradata]#
podman inspect tc_net | grep -iw 'subnet'
"subnet": "192.168.168.0/24",
创建名为 oracle_pwd 的 Secret,内容来自文件或标准输入
echo "QAZwsx123456" > password.txt
podman secret create oracle_pwd password.txt

三、主库部署(pri-db-free)​--2025-06-01已验证,命令下是运行记录

podman run -td --name pri-db-free
--hostname pri-db-free
--net=tc_net
--ip 192.168.168.10
-p :1521
--add-host="tru-cc-free:192.168.168.20"
--secret=oracle_pwd
-e ENABLE_ARCHIVELOG=true
-e ENABLE_FORCE_LOGGING=true
container-registry.oracle.com/database/free:latest
​[root@OL95 oradata]#   podman run -d --name pri-db-free \
  --hostname pri-db-free \
  --network tc_net --ip 192.168.168.10 \
  -p 1521:1521 \
  --add-host="tru-cc-free:192.168.168.20" \
  -e ORACLE_PWD=QAZwsx123456 \
  -e ENABLE_ARCHIVELOG=true \
  -e ENABLE_FORCE_LOGGING=true \
  container-registry.oracle.com/database/free:latest
297bf1942d33a259a1514ff6ff6137f9c066a30d3adc26ff8ef9e6d45fafd1f3
[root@OL95 oradata]# podman logs -f pri-db-free
Starting Oracle Net Listener.
Oracle Net Listener started.
Starting Oracle Database instance FREE.
Oracle Database instance FREE started.

The Oracle base remains unchanged with value /opt/oracle

SQL*Plus: Release 23.0.0.0.0 - Production on Sun Jun 1 12:39:48 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04

SQL>
User altered.

SQL>
User altered.

SQL>
Session altered.

SQL>
User altered.

SQL> Disconnected from Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Completed: Pluggable database FREEPDB1 opened read write
Completed: ALTER DATABASE OPEN
2025-06-01T12:39:48.847180+00:00
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
2025-06-01T12:39:51.091870+00:00
FREEPDB1(3):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P288 (3989) VALUES LESS THAN (TIMESTAMP' 2025-06-02 00:00:00')
2025-06-01T12:40:43.660432+00:00
TABLE SYS.WRP$_REPORTS: ADDED AUTOLIST FRAGMENT SYS_P336 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED AUTOLIST FRAGMENT SYS_P337 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED AUTOLIST FRAGMENT SYS_P340 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
验证归档状态​:
[root@OL95 oradata]# podman exec -it pri-db-free sqlplus / as sysdba;
SELECT log_mode FROM v$database;
LOG_MODE
------------
ARCHIVELOG
容器内开启归档
podman exec -it pri-db-free \
sqlplus / as sysdba
> ALTER DATABASE ARCHIVELOG;
> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/oradata/arch';
拷贝主库密码文件到true cache主机​,
建议在启动 tru-cc-free主机的时候,logs会报错,再拷贝。
podman cp pri-db-free:/opt/oracle/product/23ai/dbhomeFree/dbs/orapwFREE tru-cc-free:/var/tmp/

四、True Cache 部署(tru-cc-free)​

  1. ​启动true cache 容器
podman run -td --name tru-cc-free \
--hostname tru-cc-free \
--net=tc_net \
--ip 192.168.168.20 \
-p :1521 \
--add-host="pri-db-free:192.168.168.10" \
--secret=oracle_pwd \
-e TRUE_CACHE=true \
-e PRIMARY_DB_PWD_FILE=/var/tmp/orapwFREE \
-e PRIMARY_DB_CONN_STR=192.168.168.10:1521/FREE \
container-registry.oracle.com/database/free:latest

运行记录

[root@OL95 oradata]# podman logs -f tru-cc-free
Starting Oracle Net Listener.
Oracle Net Listener started.
Starting Oracle Database instance FREE.
Oracle Database instance FREE started.

The Oracle base remains unchanged with value /opt/oracle

SQL*Plus: Release 23.0.0.0.0 - Production on Sun Jun 1 13:00:50 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04

SQL>
User altered.

SQL>
User altered.

SQL>
Session altered.

SQL>
User altered.

SQL> Disconnected from Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Completed: Pluggable database FREEPDB1 opened read write
Completed: ALTER DATABASE OPEN
2025-06-01T13:00:50.880130+00:00
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
2025-06-01T13:00:51.659941+00:00
FREEPDB1(3):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P288 (3989) VALUES LESS THAN (TIMESTAMP' 2025-06-02 00:00:00')
2025-06-01T13:00:59.355968+00:00
TABLE SYS.WRP$_REPORTS: ADDED AUTOLIST FRAGMENT SYS_P336 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED AUTOLIST FRAGMENT SYS_P337 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED AUTOLIST FRAGMENT SYS_P340 (2) VALUES (( 1471336774, TO_DATE(' 2025-05-26 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian') ))

五、生成true cache的service

Creating True Cache with DBCA
手册介绍:
Once the True Cache container turns healthy, create database application services (sales_tc and sales_pdb_tc) for the True Cache by running the following commands from the pri-db-free container:
podman exec -it pri-db-free bash
$ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE
-trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_tc -serviceName FREE
-sysPassword $(cat /run/secrets/oracle_pwd) -silent
$ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE
-trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_pdb_tc -serviceName FREEPDB1
-pdbName FREEPDB1 -sysPassword $(cat /run/secrets/oracle_pwd) -silent
bash-4.4$ $ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE \
>   -trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_tc -serviceName FREE \
>   -sysPassword $(cat /run/secrets/oracle_pwd) -silent

Session ID of the current execution is: 1
-----------------
Running Initialization job
Completed Initialization job
33% complete
-----------------
Running Validate_true_cache_instance_connection job
Completed Validate_true_cache_instance_connection job
37% complete
-----------------
Running Validate_dataguard job
Skipping. Job is detected as not applicable.
41% complete
-----------------
Running Validate_db_version job
Completed Validate_db_version job
44% complete
-----------------
Running Validate_true_cache_instance job
Completed Validate_true_cache_instance job
48% complete
-----------------
Running Validate_archive_log_mode job
Completed Validate_archive_log_mode job
52% complete
-----------------
Running Validate_pdb job
Skipping. Job is detected as not applicable.
56% complete
-----------------
Running Validate_primary_db_service job
Completed Validate_primary_db_service job
59% complete
-----------------
Running Validate_true_cache_db_service job
Completed Validate_true_cache_db_service job
63% complete
-----------------
Running Validate_true_cache_instance_open_mode job
Execution of Validate_true_cache_instance_open_mode failed
67% complete
[FATAL] [DBT-19953] True Cache is not in redo apply mode.
   CAUSE: True Cache should be in READ ONLY WITH APPLY mode

*** Executing jobs which need to be run always... ***

******** PLUGIN EXECUTION FAILED ********

DBCA resume command:dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE -trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_tc -serviceName FREE -sysPassword ******************* -silent -resume -sessionID 1

Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE0.log" for further details.
bash-4.4$
bash-4.4$ $ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE \
>   -trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_pdb_tc -serviceName FREEPDB1 \
>   -pdbName FREEPDB1 -sysPassword $(cat /run/secrets/oracle_pwd) -silent
Session ID of the current execution is: 2
-----------------
Running Initialization job
Completed Initialization job
33% complete
-----------------
Running Validate_true_cache_instance_connection job
Completed Validate_true_cache_instance_connection job
37% complete
-----------------
Running Validate_dataguard job
Skipping. Job is detected as not applicable.
41% complete
-----------------
Running Validate_db_version job
Completed Validate_db_version job
44% complete
-----------------
Running Validate_true_cache_instance job
Completed Validate_true_cache_instance job
48% complete
-----------------
Running Validate_archive_log_mode job
Completed Validate_archive_log_mode job
52% complete
-----------------
Running Validate_pdb job
Completed Validate_pdb job
56% complete
-----------------
Running Validate_primary_db_service job
Completed Validate_primary_db_service job
59% complete
-----------------
Running Validate_true_cache_db_service job
Completed Validate_true_cache_db_service job
63% complete
-----------------
Running Validate_true_cache_instance_open_mode job
Execution of Validate_true_cache_instance_open_mode failed
67% complete
[FATAL] [DBT-19953] True Cache is not in redo apply mode.
   CAUSE: True Cache should be in READ ONLY WITH APPLY mode

*** Executing jobs which need to be run always... ***

******** PLUGIN EXECUTION FAILED ********

DBCA resume command:dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB FREE -trueCacheConnectString 192.168.168.20:1521/FREE -trueCacheServiceName sales_pdb_tc -serviceName FREEPDB1 -pdbName FREEPDB1 -sysPassword ******************* -silent -resume -sessionID 2

Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE1.log" for further details.
bash-4.4$

六:生成FREEPB1/SEVICE

  podman run -td --name pri-db-free \
  --hostname pri-db-free \
  --net=tc_net \
  --ip 192.168.168.10 \
  -p :1521 \
  --secret=oracle_pwd \
  --add-host="tru-cc-free:192.168.168.20" \
  -e ENABLE_ARCHIVELOG=true \
  -e ENABLE_FORCE_LOGGING=true \
  container-registry.oracle.com/database/free:latest

podman run -td --name tru-cc-free \
--hostname tru-cc-free \
--net=tc_net \
--ip 192.168.168.20 \
-p :1521 \
--secret=oracle_pwd \
--add-host="pri-db-free:192.168.168.10" \
-e TRUE_CACHE=true \
-e PRIMARY_DB_CONN_STR=192.168.168.10:1521/FREE \
-e PDB_TC_SVCS="FREEPDB1:sales1:sales1_tc;FREEPDB1:sales2:sales2_tc;FREEPDB1:sales3:sales3_tc;FREEPDB1:sales4:sales4_tc" \
container-registry.oracle.com/database/free:latest
修改容器内的密码
podman exec tru-cc-free ./setPassword.sh QAZwsx123456

七、连接到 Oracle Database Free

SQL
  • 连接字符串格式:[username]@[hostname]:[port]/[DB service name] [AS SYSDBA]
  • 要连接到每一个 Pluggable Database (PDB),请使用:
sqlplus sys@localhost:1521/FREEPDB1 as sysdba
  • 要连接到 Container Database (CDB),请使用:
sqlplus sys@localhost:1521/FREE as sysdba
Java
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@localhost:1521/FREEPDB1"); // jdbc:oracle:thin@[hostname]:[port]/[DB service name]
ods.setUser("[Username]");
ods.setPassword("[Password]");
Connection conn = ods.getConnection();
 
PreparedStatement stmt = conn.prepareStatement("SELECT 'Hello World!' FROM dual");
ResultSet rslt = stmt.executeQuery();
while (rslt.next()) {
  System.out.println(rslt.getString(1));
}

八、检测 True Cache 

--container模式在23.8.0.25.04这个版本有
SQL> col service_id set A20
SQL> col service for A20
SQL> col name for A20
SQL> col true_cache_service for A30
SQL>  SELECT service_id, name, true_cache_service FROM v$active_services;

SERVICE_ID NAME                 TRUE_CACHE_SERVICE
---------- -------------------- ------------------------------
         3 freeXDB
         1 SYS$BACKGROUND
         2 SYS$USERS
         8 freepdb1
         4 free

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值