参考:Oracle 11g版本下载及安装超详细教程图解_oracle11g下载-优快云博客
参考:java中用spring boot连接oracle数据库_springboot连接oracle-优快云博客
前言
应业务需求,需要安装oracle数据库,那就按吧(按之前:就一个破软件我还不会按?按之后:我是小丑)。
安装oracle数据库的过程可谓是一波三折,安装了4次,终于算是能用程序连上了。
其中,测试了WinServer2016DC、WinServer2022DC、WinServer2012R2(建议使用)
遇到的问题有 监听服务起不来、安装过程假死。
文章较长,希望你能坚持到最后。
目录
一、基本环境准备
- 主机:ECS/VPS/虚拟机
- 安装包
http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_1of2.zip
http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_2of2.zip
可以使用迅雷下载(复制链接,打开迅雷)。
百度网盘
https://pan.baidu.com/s/1TY8SjCYg4TC-AHac2dRoTQ?pwd=ducv
提取码:ducv
或者联系我。
- 操作系统:Windows Server 2012 R2 Standard 64位
- 规格:8C16G
二、安装
1. 安装 .NET FRAMEWORK 3.5
至于为什么要装这个不清楚,但我在安装oracle的过程中自动安装且报错了,所以提前按一下。

打开 服务器管理器 -> 添加角色功能

点击 服务器选择 然后点击 功能

这里有必要说明一下,指定备用源路径可以大概理解为手动安装,可以自己下载 .NET FRAMEWORK 3.5 的包,然后通过这个安装。
暂时不需要手动安装,直接点击安装即可。(如果自动安装报错,那么请百度指 定备用源路径安装 的方式)
自动安装请保证Windows 更新(Windows Update)服务为启动状态。
![]()

.NET FRAMEWORK 3.5 安装完成,点击关闭即可。
2. 安装 oracle数据库
安装包解压后如下所示,需要将两个文件夹中的内容整合一下。

在D盘新建一个 oracle 文件夹,将 1of2 2of2中的 database 文件夹拷贝到一起。
如下所示:

右键 setup 以管理员身份运行(如机器配置较低可能需要多等一会)

选择 是

取消勾选 我希望...,下一步

选择 是

默认即可,下一步

我选择 服务器类,下一步

我选择 单实例数据库安装,下一步

选择 高级安装,下一步

默认即可,下一步
我选择 企业版,下一步

选择刚刚创建的oracle文件夹即可。

下一步
默认即可,下一步

建议修改为 orcl ,下一步

字符集修改为 使用Uni....,对于目标数据库要使用的内存,自行协商,下一步

默认即可,下一步

我选择默认,下一步

备份需要,自行协商,我选择不启用自动备份,下一步

设置口令时我选择 对所有账户使用相同的口令
需要注意口令如果是以数字开头的,那么安装过程中会报错,但应该不影响启动,但建议还是以字母开头。
我设置的口令为:Qaz$wsx1
下一步

点击 完成 ,开始安装。
注:WinServer 2022 DC 可能会卡在 8%(或其他地方-未测试),可能为假死状态,建议多试几次。

安装到最后的时候可能会出现这个错误,点击 确定 即可,一会再处理(三.4.处理)。

点击 口令管理

设置 SYS SYSTEM 的口令
我这里还是为:Qaz$wsx1
确定

点击确定即可。
三、命令行测试
1. 查询端口
打开cmd,查询oracle端口
netstat -ano | findstr 1521

2. 查询状态
lsnrctl status

3. sqlplus 命令测试
sqlplus system/Qaz$wsx1@orcl
然后再次输入用户名和口令。

4. 处理 ORA-12514 TNS:监听...... 问题(安装过程中报错问题处理)
按Win键,搜索Net,打开NetManager

把主机从IP换成主机名,下图为更换前的图片

cmd查询主机名
hostname
更换后

保存网络配置

lsnrctl stop
lsnrctl start

这里也有必要说一下,可能跟机器环境不同有的人用IP可以,有的用主机名可以,多试多查。
重新使用sqlplus命令测试。
sqlplus system/Qaz$wsx1@orcl
这次不用再次输入用户名和口令即可连接。

四、Navicat测试
由于没用过pl/sql,所以就用navicat测试了。
- Navicat Premium 12
1. 本地测试
在数据库服务器下载navicat,本地连接测试。


- 连接名:随便写
- 连接类型:Basic
- 主机:localhost
- 端口:1521
- 服务名:orcl(大小写均可)
- 用户名:system/sys
- 密码:口令(Qaz$wsx1)
2. 远程测试
远程测试前需要
- 保证主机内防火墙放通1521(tcp)或者关闭防火墙(建议),测试后记得开启
- ECS/VPS 需要注意安全组和ACL规则放通1521(tcp)端口


打开navicat

- 连接名:随便写
- 连接类型:Basic
- 主机:公网IP
- 端口:1521
- 服务名:orcl(大小写均可)
- 用户名:system/sys
- 密码:口令(Qaz$wsx1)
没问题。
此处如果出现了navicat缺少oci.dll,请自行百度查询oci.dll相关问题。
五、创建表空间和用户
使用navicat连接到数据库,本地或远程亦可。
1. 新建一个表空间 oractest
CREATE TABLESPACE oractest
DATAFILE 'oractest.dbf'
SIZE 50M
AUTOEXTEND ON
NEXT 10M MAXSIZE UNLIMITED;

2. 查询所有的表空间
SELECT tablespace_name
FROM dba_tablespaces;

3. 创建一个用户
CREATE USER testuser
IDENTIFIED BY "Qaz$wsx1"
DEFAULT TABLESPACE oractest
QUOTA UNLIMITED ON oractest;

4. 给用户授权
GRANT CREATE SESSION, CREATE TABLE, CREATE PROCEDURE TO testuser

5. 新增的用户登录

6. 在 TESTUSER 模式下新建一张表

新建一个users表

新增一条数据

六、Java程序连接oracle数据库测试
能看到这还挺不容易的,那么多错误竟然都被你征服了。
1. 打开idea,新建项目


选择 Spring Web 和 Oracle Driver 驱动
暂时选不了springboot 2,一会手动改一下版本。
设置maven源略。
2. 修改pom文件,设置为springboot2,java版本8,修改jdbc驱动依赖,添加mybatis依赖。
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.orac</groupId>
<artifactId>testconn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>testconn</name>
<description>testconn</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--JDBC Dep-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.11.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Mybatis Dep-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder-jammy-base:latest</builder>
</image>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. 创建 Controller、Mapper,创建 application.yml
项目结构
只做测试,就不创建Service 和 Entity 了

application.yml
server:
port: 8080
spring:
datasource:
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@192.168.0.19:1521:orcl
username: testuser
password: Qaz$wsx1
mybatis:
mapper-locations: classpath:mapper/*.xml
TestConnMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.orac.testconn.mapper.TestConnMapper">
<select id="getNameById" resultType="String" parameterType="Long">
select "name" from TESTUSER."users" where "id" = #{id}
</select>
</mapper>
TestConnMapper.java
package com.orac.testconn.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TestConnMapper {
String getNameById(Long id);
}
TestConnController.java
package com.orac.testconn.controller;
import com.orac.testconn.mapper.TestConnMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestConnController {
@Autowired
private TestConnMapper testConnMapper;
@GetMapping("/getName/{id}")
public String getName(@PathVariable String id){
return testConnMapper.getNameById(Long.valueOf(id));
}
}
启动测试。

至此oracle数据库安装完成,程序测试完成。
结语
其实这些说难还是有点难度,要说简单其实也没啥。
虽然像是保姆级教程,但是每个人可能因为环境不同,操作方式不同,肯定每个人都会遇到不同的问题。多思考,多查资料,也不难。
由于笔者资历尚浅,文中可能有相关概念没有解释清楚,望大佬高抬贵手。
我为我生在一个开源的时代感到荣幸。
以上有关oracle的内容仅供学习交流使用,商用请移步 oracle 官方网站下载对应软件包。
Oracle | Cloud Applications and Cloud Platform
希望可以帮到你!
7436

被折叠的 条评论
为什么被折叠?



