参考: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
希望可以帮到你!