无法通过Liquibase命令连接安装APEX的Oracle PDB求助
问题
本地安装了Oracle Database 21c(XE),并在可插拔数据库(PDB)XEPDB1中安装了Oracle APEX。完成Liquibase和SQLcl的安装后,成功登录到XEPDB1中的用户apexschema,但执行导出APEX代码的Liquibase命令时,Liquibase并未使用当前的PDB连接,而是尝试连接XE或ORCL服务,导致连接失败。
操作过程及错误信息
D:\Software\sqlcl-latest\sqlcl\bin>sql SQLcl: Release 23.1 Production on Mon May 01 14:13:37 2023 Copyright (c) 1982, 2023, Oracle. All rights reserved. Username? (''?) apexschema@xepdb1 Password? (**********?) *********** Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> lb generate-apex-object -applicationid 100 --Starting Liquibase at 14:14:17 (version 4.17.0 #0 built at 2022-11-02 21:48+0000) USER = apexschema URL = jdbc:oracle:oci8:@ Error Message = ORA-01017: invalid username/password; logon denied USER = apexschema URL = jdbc:oracle:thin:@localhost:1521/orcl Error Message = Listener refused the connection with the following error: ORA-12514, TNS:listener does not currently know of service requested in connect descriptor (CONNECTION_ID=6gv3AlqBTtaD1dBjIbKGxQ==) USER = apexschema URL = jdbc:oracle:thin:@localhost:1521/xe Error Message = ORA-01017: invalid username/password; logon denied SQL>
解决方案
问题根源是Liquibase没有自动继承SQLcl当前的PDB连接上下文,而是使用默认服务名尝试连接。可通过以下方式解决:
方式一:执行命令时显式指定连接参数
在lb generate-apex-object命令中直接指定指向XEPDB1的JDBC URL、用户名和密码:lb generate-apex-object -applicationid 100 -url jdbc:oracle:thin:@localhost:1521/XEPDB1 -username apexschema -password 你的密码方式二:预先设置Liquibase连接属性
在SQLcl中先配置好Liquibase的连接参数,再执行导出命令:-- 设置连接URL lb set-property url jdbc:oracle:thin:@localhost:1521/XEPDB1 -- 设置用户名 lb set-property username apexschema -- 设置密码 lb set-property password 你的密码 -- 执行导出命令 lb generate-apex-object -applicationid 100方式三:使用TNS别名连接
确保本地tnsnames.ora文件中添加XEPDB1的条目,示例如下:XEPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1) ) )之后直接用TNS别名作为URL参数:
lb generate-apex-object -applicationid 100 -url jdbc:oracle:thin:@XEPDB1 -username apexschema -password 你的密码
内容的提问来源于stack exchange,提问作者chk.buddi
相关产品推荐
相关产品推荐

