参考内容:
docker安装oracle数据库史上最全步骤(带图文)
Mac下oracle数据库客户端
Docker安装Oracle
docker能安装oracle吗
Batch script for add a auto-increased primary key for exist table with records
Docker 安装 Oracle11g
注意:下列安装方式仅适用于x86
架构服务器,不适用于arm
架构服务器。
# 拉取 oracle11,镜像有点大,需要花一些时间
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 查看镜像是否拉取成功
docker images
# 给镜像重新打 tag,原来的名字太长了
docker tag registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g oracle11g:latest
# 启动 oracle11g 容器
docker run --name=oracle11g -itd -p 1521:1521
# 进入容器进行配置
docker exec -it oracle11g /bin/bash
# 切换到 root 用户,密码为:helowin
su root
# 编辑配置文件
编辑/etc/profile
,在其中增加如下内容:
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
编辑完成后,需要刷新上述环境变量才能使用。
# 刷新环境变量
source /etc/profile
# 创建软链接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
# 切换到 oracle 用户
su - oracle
# 登陆 sqlplus
sqlplus /nolog
conn /as sysdba
# 修改 system 用户密码
alter user system identified by system;
# 修改 sys 用户密码
alter user sys identified by system;
# 创建内部管理员账号
create user test identified by test;
# 将 dba 权限授权给内部管理员账号和密码
grant connect,resource,dba to test;
# 修改密码规则策略为密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
# 修改数据库最大连接数据
alter system set processes=1000 scope=spfile;
修改上述信息后,需要重新启动数据库才会生效。
conn /as sysdba
# 关闭数据库
shutdown immediate;
# 启动数据库
startup;
# 退出软链接
exit;
客户端连接 Oracle
以 Navicat 客户端为例,新建连接时按下图方式填写连接信息即可,密码即为system
。需要注意的是,在 Windows 下选择 SID 或是服务名均可连接成功,但是在 Mac 下需要选择 SID 方式才能连接成功。
Oracle 实现主键自增
Oracle 在创建表的时候,不能像 MySQL 那样选择主键直接自增,但是我们可以通过给表创建序列和触发器去实现自增。下文以创建 USER 表为例。
-- 删除原有 USER 表
DROP TABLE "TEST"."USER";
-- 创建 USER 表
CREATE TABLE "TEST"."USER" (
"id" NUMBER NOT NULL,
"gmt_create" DATE NOT NULL,
"gmt_modified" DATE NOT NULL,
"is_deleted" NUMBER NOT NULL,
"login" NVARCHAR2(255) NOT NULL,
"passwd" NVARCHAR2(255) NOT NULL,
"nick" NVARCHAR2(255) NOT NULL,
"phone" NVARCHAR2(255),
"head_img" NVARCHAR2(255),
"status" NVARCHAR2(255),
"remark" NCLOB
);
-- 删除原有序列
DROP SEQUENCE "TEST"."USER_SEQ";
-- 创建 USER_SEQ 序列,最小值为 1
CREATE SEQUENCE "TEST"."USER_SEQ"
-- 最小值为 1
MINVALUE 1
-- 最大值为 9999999999999999999999999999
MAXVALUE 9999999999999999999999999999
-- 每次增加 1
INCREMENT BY 1
-- 将 20 个序列值放入缓存
CACHE 20;
-- 创建触发器
CREATE TRIGGER "TEST"."USER_TRIGGER"
-- 在插入数据前执行
BEFORE INSERT ON "TEST"."USER"
-- 命名老数据为 OLD,新数据为 NEW
REFERENCING OLD AS "OLD" NEW AS "NEW"
-- 针对表的每一行都执行触发器
FOR EACH ROW
-- 将序列值赋值给 id
BEGIN
:NEW."id" := USER_SEQ.NEXTVAL;
END;
/
需要注意的是,上面的/
符号不能少。执行插入语句时可以发现,id
会自动增加。
INSERT INTO "TEST"."USER" ("gmt_create", "gmt_modified", "is_deleted", "login", "passwd", "nick", "phone", "head_img", "status", "remark") VALUES (TO_DATE('2023-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), TO_DATE('2023-04-01 17:04:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', 'user', '123', 'Jack', '1111', 'head.jpg', '激活', '测试');
Java Spring+Mybatis 使用 Oracle 及配置分页
application.properties
文件配置信息:
# mybatis
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@8127.0.0.1:1521:helowin
spring.datasource.username=system
spring.datasource.password=system
mybatis.mapper-locations=classpath*:mybatis/*.xml
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# pageHelper
pagehelper.helperDialect=oracle
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pom.xml
配置文件关键信息。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties>
<java.version>1.8</java.version>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.boot-version>2.1.3.RELEASE</spring.boot-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
</project>