Oracle 安装及 Spring 使用 Oracle

news2024/11/23 15:19:14

参考内容:

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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的甲醛检测器设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、设计的主要内容二、系统硬件设计三、软件设计4.1 程序结构流程图原理图 四、结论五、 文章目录 概要 本文将要提…

餐饮软件开发价格受到需求的影响!

随着科技的进步和互联网的普及&#xff0c;餐饮行业也逐渐实现了数字化转型&#xff0c;越来越多的餐厅开始引入餐饮软件来提升服务质量、提高效率、拓展销售渠道等。 而对于许多初创餐厅或餐饮企业来说&#xff0c;开发一款适合自己的餐饮软件的价格一直是他们关注的焦点&…

NtripShare Caster高精度定位CORS服务软件

NtripShare CORS是NtripShare GNSS系列软件中最早的软件系统&#xff0c;也是NtripShare名称的起源。 所谓GNSS CORS服务系统一般构成&#xff1a; 1&#xff09;基准站网&#xff1a;由若干个分布合理的GNSS 基准站组成&#xff1b; 2&#xff09;数据传输系统&#xff1a;…

基于springboot垃圾分类管理系统

基于springboot垃圾分类管理系统 摘要 垃圾分类管理系统是一个基于现代技术和数据管理方法的解决方案&#xff0c;旨在协助城市和社区更有效地管理垃圾分类。在这个系统中&#xff0c;Spring Boot框架充当了后端应用程序的构建工具&#xff0c;为其提供了高度灵活的特性。该系统…

运算符与运算表达式

运算符的结合性和优先级&#xff1a; 结合性&#xff1a; 所有的单目运算符、条件运算符、赋值运算符及扩展运算符&#xff0c;结合方向都是从右向左&#xff0c;其余运算符的结合方向是从左向右。 优先级&#xff1a; 初等运算符>单目运算符>算数运算符&#xff08;…

卡牌游戏类型定制开发微信卡牌小程序游戏

卡牌类型的游戏开发具有一些独特的特点和挑战&#xff0c;以下是一些主要的特点&#xff1a; 卡牌设计和平衡&#xff1a;卡牌游戏的核心是卡牌设计和平衡。开发团队需要设计各种卡牌&#xff0c;确保它们在游戏中相互平衡&#xff0c;以便提供有趣的游戏体验。卡牌的特性、效…

UE5 新特性 Nanite 开启

啥也不说&#xff0c;只能说&#xff0c;真的牛&#xff0c;在自己的项目上&#xff0c;从10几20的帧数&#xff0c;直接彪到了70 适用场景&#xff1a; 大场景&#xff0c;三角面足够多 在Project Setting里面 将这几个勾未true 勾上这个&#xff0c;放入场景即可

小程序如何设置自取模式下的服务方式

设置自取模式下的服务方式是非常重要的&#xff0c;尤其是对于到店自取和到店堂食这两种不同的服务模式。下面我们就来介绍一下如何在小程序中设置这两种服务方式。 在小程序管理员后台->配送设置处&#xff0c;在服务方式处&#xff0c;设置自取情况下的服务方式。默认是&…

变量环境、变量提升和暂时性死区

JavaScript中的提升 在JavaScript中&#xff0c;“Hoisting”&#xff08;提升&#xff09;是一种特性&#xff0c;它将变量和函数的声明移动到作用域的顶部。这意味着可以在声明之前使用这些变量和函数&#xff0c;而不会报错。 当JavaScript代码执行时&#xff0c;会经过两个…

计算机网络基础知识1

1、tcp三次握手&#xff1f; SYN&#xff0c;标志位&#xff0c;用于建立TCP连接的握手过程中的标志位。 ACK&#xff0c;确认位&#xff0c;用于说明整个包是确认报文。 TCP/IP协议是传输层的一个面向连接提供可靠安全的传输协议。第一次握手有客户端发起&#xff0c;客户端向…

超详细的厦门旅游攻略!暑期旅游特种兵必备

随着暑期的旅游越来越火爆&#xff0c;许多旅行社纷纷向大家推荐了许多热门景点&#xff0c;其中厦门旅游是许多人暑假首选的地点&#xff0c;你知道这些宣传图片或旅游攻略是如何制作出来的吗&#xff1f; 今天为大家推荐一款能够快速制作出厦门旅游攻略的软件——boardmix博思…

MySQL(流量包)

MySQL和SQL的区别是什么&#xff1f;之间是什么关系&#xff1f; SQL&#xff08;Structured Query Language&#xff09;是用于管理和操作关系型数据库&#xff08;RDBMS&#xff09;的标准语言。SQL还可以用于这些RDBMS&#xff1a;MySQL、Oracle、Microsoft SQL Server、Pos…

Manopt使用

本文记录一些黎曼流型的优化工具箱的使用 入手 安装 https://www.manopt.org/tutorial.html#gettingstarted

Node.js |(六)express框架 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;express使用&#x1f407;初体验&#x1f407;express路由⭐️路由的使用⭐️获取请求参数⭐️获取路由参数 &#x1f407;express响应设置&#x1f407;express中间…

面试题:你在工作中发现最有意义的bug?

软件测试面试中被问的问题有时候会是形形色色的&#xff0c;不会局限在你会哪些测试设计技术&#xff1f;测试流程是怎么样的&#xff1f; 就比如你会遇到这种问题&#xff1a;工作中最有意义的bug&#xff1f; 是不是有点懵&#xff1f;面试官问这个题目可不是真的关心你提过…

Android 常用 UI 组件

目录 ​编辑 1. View 和ViewGroup 2. Android UI 开发概述 2.1 界面布局开发 2.2 控件开发 2.3 AdapterView 与 Adapter 开发 2.4 UI 组件开发 2.5 自定义 View、图形图像和动画 1. View 和ViewGroup Android中所有的UI元素都是使用View和ViewGroup对象建立的,…

【工具】OCR方法|不用下载额外的软件,提取扫描中英文PDF的目录文本的最优解!(一)

需求&#xff1a; 1&#xff09;从PDF里快速提取目录&#xff1b; 2&#xff09;不想下载任何软件。 我提取出来的目录文本会用于嵌入到PDF中&#xff0c;向PDF批量添加目录的软件以及软件的使用方法可以看我上一篇文章&#xff1a;PDF批量插入目录。 以下是我自己能想到的方…

竞赛 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的驾…

【Python深入学习】- 书籍推荐|数据结构和算法介绍|内建集合数据类型

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:PYTHON学习系列专栏 &#x1f4ab;"没有罗马,那就自己创造罗马~" 若把编写代码比作行军打仗&#xff0c;那么要想称霸沙场&#xff0c;不能仅靠手中的利刃&#xff0c;还需深谙兵法。Python是一把利刃&…

oracle使用regexp_substr来拆分,CONNECT BY LEVEL查询卡死,速度慢的问题。

一、问题 oracle 使用regexp_substrCONNECT BY LEVEL来&#xff0c;根据特定字符拆分成多行。 &#xff08;注意这里我的数据是每个值都有“ ; ”&#xff0c;即使后面没有值&#xff0c;后面也会有个“ ; ”&#xff0c; 如果是正常的分隔符&#xff0c;sql 需要改成” LEVEL…