Oracle数据库配置
驱动配置
jdbc仓库
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8
Maven配置(11g版本可用)
<ojdbc.version>23.2.0.0</ojdbc.version>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>${ojdbc.version}</version>
</dependency>
JDBC连接配置
pamirs:
datasource:
base:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@//127.0.0.1:1521/orcl
username: YOUR_SCHEMA_NAME
password: xxxxxx
Oracle默认为每个用户创建了一个与当前用户名同名的模式,每个用户应该只使用该模式(DBA用户除外),因此平台使用Oracle时应该通过username处指定与该模式同名的用户名来指定模式。(Oracle多数据源时每一个数据库创建一个用户)
创建用户时用户名应全大写。
连接url配置
官方文档
https://odbc.postgresql.org/docs/config-opt.html
url格式
jdbc:oracle:thin:@//ip:端口号/服务名或SID
每一个Oracle进程默认为一个Oracle数据库实例,使用服务名或sid登录该Oralce数据库实例。
一个Oracle sid 对应一个数据库实例,而一个服务名可以标识多个数据库实例。远程连接时推荐使用服务名进行连接。
可以在安装Oracle的机器上打开SQLPlus,用SYSTEM用户登录上去后使用SELECT SYS_CONTEXT('USERENV', 'INSTANCE_NAME') AS SID FROM DUAL;
查询登录使用的sid;
也可以使用SELECT VALUE AS SERVICE_NAME FROM V$PARAMETER WHERE NAME = 'service_names';
查询登录使用的服务名。
其他连接参数如需配置,可自行查阅相关资料进行调优。
方言配置
pamirs方言配置
pamirs:
dialect:
ds:
base:
type: Oracle
version: 11.2
major-version: 11g
pamirs:
type: Oracle
version: 11.2
major-version: 11g
plus:
configuration:
jdbc-type-for-null: "NULL"
using-model-as-property: true
using-statement-handler-dialect: true
mapper:
batch: useAffectRows
global:
table-pattern: '${table_30}'
column-pattern: '${column_30}'
数据库版本 | type | version | majorVersion |
---|---|---|---|
11g - 11.2.0.1.0 | Oracle | 11.2 | 11g |
12c - 12.2.0.1.0 | Oracle | 12.2 | 12c |
PS:由于方言开发环境为Oracle Database 11g Enterprise Edition Release 11.2.0.1.0版本,其他类似版本(11.2.x)原则上不会出现太大差异,如出现其他版本无法正常支持的,可在文档下方留言。
schedule方言配置
pamirs:
event:
enabled: true
schedule:
enabled: true
dialect:
type: Oracle
version: 11.2
major-version: 11g
其他配置
逻辑删除的值配置
pamirs:
mapper:
global:
table-info:
logic-delete-value: (CAST(SYSTIMESTAMP AS DATE) - TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS')) * 8640000000000
Oracle数据库用户初始化及授权
-- 以下命令均使用dba账户执行
-- 创建用户 ONE_TEST (用户名需全大写) 密码 123456
CREATE USER ONE_TEST IDENTIFIED BY 123456;
-- 解锁用户
ALTER USER ONE_TEST ACCOUNT UNLOCK;
-- 将用户的默认表空间设置为USERS,临时表空间设置为TEMP
ALTER USER ONE_TEST DEFAULT TABLESPACE USERS;
ALTER USER ONE_TEST TEMPORARY TABLESPACE TEMP;
-- 可以用以下命令查询某用户的表空间:
SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'ONE_TEST';
-- 授予用户连接、登录、创建开发数据库对象、系统表只读权限
GRANT CONNECT, CREATE SESSION, RESOURCE, SELECT_CATALOG_ROLE TO ONE_TEST;
-- 设置用户表空间不限制配额
ALTER USER ONE_TEST QUOTA UNLIMITED ON users;
-- 也可以使用如下命令限制配额为500M
ALTER USER ONE_TEST QUOTA 500M ON USERS;
-- 可以使用如下SQL查询某用户的配额限制
SELECT
USERNAME,
TABLESPACE_NAME,
MAX_BYTES,
CASE
WHEN MAX_BYTES = -1 THEN 'UNLIMITED'
ELSE TO_CHAR(ROUND(MAX_BYTES / 1024 / 1024, 2)) || ' MB'
END AS QUOTA
FROM
DBA_TS_QUOTAS
WHERE USERNAME = 'ONE_TEST'
以下依赖在Oracle环境下不需要且会出现冲突,业务工程内需要移除以下依赖
<dependency>
<groupId>pro.shushi.pamirs.core</groupId>
<artifactId>pamirs-auth-compatible</artifactId>
</dependency>
使用注意
-
Oracle 12.2 之前的版本默认标识符长度限制为30个ASCII字符,10个中文字符,因此模型的model_model、字段名统统不推荐超过15-20个英文字符,否则使用平台的标识符名称生成和截取策略可能会出现表名、列名重复的问题。
-
Oracle 列本身没有自增策略,11g版本也无法将序列绑定到列上,odbc 也无法在插入时获取自增列值,平台使用序列来模拟自增,但是会出现事务回滚时序列不回滚、删除列时无法自动删除序列等问题。因此使用Oracle数据库时在业务模型里不推荐使用列自增。
使用SELECT sequence_owner, sequence_name FROM all_sequences ;
查询当前用户可读模式下的所有序列。
Oinone社区 作者:Gesi原创文章,如若转载,请注明出处:https://doc.oinone.top/install/21381.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验