3-Oracle23 ai free True Cache podman实操

来源:这里教程网 时间:2026-03-03 22:08:23 作者:

 一、环境准备

  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%20Cache%20节点需安装相同版本的%20Oracle%20软件
    拉取官方镜像
podman%20pull%20container-registry.oracle.com/database/free:latest

二、网络配置(Oracle%20网络规范)

#%20创建%20macvlan%20网络
 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",
创建名为%20oracle_pwd%20的%20Secret,内容来自文件或标准输入
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=truecontainer-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-freeStarting 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%20exec%20-it%20pri-db-free%20\
sqlplus%20/%20as%20sysdba
>%20ALTER%20DATABASE%20ARCHIVELOG;
>%20ALTER%20SYSTEM%20SET%20LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/oradata/arch';

拷贝主库密码文件到true%20cache主机,

建议在启动%20tru-cc-free主机的时候,logs会报错,再拷贝。
podman%20cp%20pri-db-free:/opt/oracle/product/23ai/dbhomeFree/dbs/orapwFREE%20tru-cc-free:/var/tmp/

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

    启动true%20cache%20容器
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-freeStarting 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%20cache的service

Creating%20True%20Cache%20with%20DBCA

手册介绍:
Once%20the%20True%20Cache%20container%20turns%20healthy,%20create%20database%20application%20services%20(sales_tc%20and%20sales_pdb_tc)%20for%20the%20True%20Cache%20by%20running%20the%20following%20commands%20from%20the%20pri-db-free%20container:
podman%20exec%20-it%20pri-db-free%20bash
$ORACLE_HOME/bin/dbca%20-configureDatabase%20-configureTrueCacheInstanceService%20-sourceDB%20FREE%20
-trueCacheConnectString%20192.168.168.20:1521/FREE%20-trueCacheServiceName%20sales_tc%20-serviceName%20FREE%20
-sysPassword%20$(cat%20/run/secrets/oracle_pwd)%20-silent
$ORACLE_HOME/bin/dbca%20-configureDatabase%20-configureTrueCacheInstanceService%20-sourceDB%20FREE%20
-trueCacheConnectString%20192.168.168.20:1521/FREE%20-trueCacheServiceName%20sales_pdb_tc%20-serviceName%20FREEPDB1%20
-pdbName%20FREEPDB1%20-sysPassword%20$(cat%20/run/secrets/oracle_pwd)%20-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%20exec%20tru-cc-free%20./setPassword.sh%20QAZwsx123456

七、连接到%20Oracle%20Database%20Free

SQL

连接字符串格式:[username]@[hostname]:[port]/[DB%20service%20name]%20[AS%20SYSDBA] 要连接到每一个%20Pluggable%20Database%20(PDB),请使用:
sqlplus%20sys@localhost:1521/FREEPDB1%20as%20sysdba
要连接到%20Container%20Database%20(CDB),请使用:
sqlplus%20sys@localhost:1521/FREE%20as%20sysdba

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%20Cache 

--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

相关推荐