Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置

embedded/2024/12/23 3:43:58/

目录

  • 一. 前置条件
  • 二. Win10安装配置Oracle数据库
  • 三. Win10配置Oracle数据库可对外访问
    • 3.1 打开文件和打印机共享
    • 3.2 开放1521端口
  • 四. 端口与地址确认
    • 4.1 查看监听器的状态
    • 4.2 Win10查看1521端口是否被监听
    • 4.3 Ubuntu虚拟机测试与Win10虚拟机的连接
  • 五. Ubuntu虚拟机安装配置Sqlplus客户端
    • 5.1 获取Sqlplus客户端
    • 5.2 安装配置Sqlplus客户端
    • 5.3 libaio库配置
    • 5.4 解决乱码问题
  • 六. ORA-12541 数据库的监听器服务未启动


一. 前置条件

  • 虚拟机中有两个操作系统
    • Win10
    • Ubuntu-24.04.1
  • 在Win10的虚拟机中安装Oracle数据库
  • 本机通过ssh连接Ubuntu虚拟机,然后在虚拟机中连接Win10中的oracle

二. Win10安装配置Oracle数据库

2.1 数据库获取

  • Oracle Database Express Edition (XE) Downloads 官网
    • https://www.oracle.com/cn/database/technologies/xe-downloads.html
  • Oracle Database 21c Express Edition for Windows x64 下载链接
    • https://download.oracle.com/otn-pub/otn_software/db-express/OracleXE213_Win64.zip

2.2 数据库安装

⏹ 解压安装包之后,通过setup.exe一步步安装即可。
在这里插入图片描述
⏹ 安装的详细过程可参考这篇博客
https://www.cnblogs.com/Javaer1995/p/17485495.html

⏹默认情况下会安装在如下路径中

C:\app\用户名\product\21c\

2.3 数据库配置确认

⏹环境变量确认
在这里插入图片描述

⏹listener.ora和tnsnames.ora的确认

  • 路径
    • C:\app\用户名\product\21c\homes\OraDB21Home1\network\admin
  • 作用
    • 重要的网络配置文件,用于支持客户端与数据库之间的连接。
    • listener.ora 文件定义了数据库监听器的配置信息。监听器是一个服务器端进程,负责监听客户端的连接请求,并将请求转发给相应的数据库实例。
    • tnsnames.ora 文件在客户端侧用于定义数据库连接字符串的别名。它让用户通过简单的名称连接数据库,而不需要记住复杂的网络配置信息。
  • 💥注意点💥
    tnsnames.oralistener.ora中的配置和电脑名称又关联性,当电脑名称修改之后,不修改对应的配置文件,会无法访问oracle
    在这里插入图片描述

2.4 数据库访问

  • 账户名:system(oracle自带的系统账户)
  • 密码: oracle
sqlplus system/oracle@192.168.118.137

⏹可以看到成功登录oracle数据库

在这里插入图片描述


三. Win10配置Oracle数据库可对外访问

3.1 打开文件和打印机共享

⏹如下图所示,打开文件和打印机共享

  • 如果不打开的话,外部计算机无法通过ping命令访问到虚拟机

在这里插入图片描述

3.2 开放1521端口

⏹Oracle默认监听1521端口,开放1521端口,确保外部可以通过1521端口访问到Oracle数据库

  • 如下图所示,通过防火墙的高级设置,进入入站规则

在这里插入图片描述

⏹添加入站规则:

  • 在左侧点击 入站规则。
  • 在右侧点击 新建规则。
  • 在规则类型中选择 端口,然后点击 下一步。
  • 选择 TCP,并在“特定本地端口”中输入 1521。
  • 点击 下一步,选择 允许连接。
  • 点击 下一步,根据需求勾选 域、专用、公用。
  • 点击 下一步,为规则命名(例如“Oracle 1521 TCP”),然后完成。

在这里插入图片描述


四. 端口与地址确认

4.1 查看监听器的状态

# 查看监听器的状态
lsnrctl status
# 监听器没有启动的话,启动监听器
lsnrctl start

在这里插入图片描述

4.2 Win10查看1521端口是否被监听

netstat -an | findstr 1521

在这里插入图片描述

4.3 Ubuntu虚拟机测试与Win10虚拟机的连接

  • 查看与目标服务器IP地址是否能ping通
  • 查看是否能访问目标服务器的指定端口
ping 目标服务器ip地址
telnet 目标服务器ip地址 1521

在这里插入图片描述


五. Ubuntu虚拟机安装配置Sqlplus客户端

5.1 获取Sqlplus客户端

  • 官方网站
    https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html
  • Sqlplus客户端安装包
    • ⏹instantclient-basic-linux.x64-21.16.0.0.0dbru.zip
      • https://download.oracle.com/otn_software/linux/instantclient/2116000/instantclient-basic-linux.x64-21.16.0.0.0dbru.zip
    • ⏹instantclient-sqlplus-linux.x64-21.16.0.0.0dbru.zip
      • https://download.oracle.com/otn_software/linux/instantclient/2116000/instantclient-sqlplus-linux.x64-21.16.0.0.0dbru.zip

在这里插入图片描述

5.2 安装配置Sqlplus客户端

⏹创建客户端所在的文件夹,将zip文件解压到指定的文件夹中

# 创建客户端所在的文件夹
mkdir -p /opt/oracle/instantclient# 将zip文件解压到指定的文件夹中
unzip instantclient-basic-linux*.zip -d /opt/oracle/instantclient
unzip instantclient-sqlplus-linux*.zip -d /opt/oracle/instantclient

⏹配置环境变量

  • 编辑.bashrc文件
vim ~/.bashrc
  • .bashrc末尾追加下面的内容
# oracle客户端的路径
export ORACLE_BASE=/opt/oracle/instantclient
# oracle客户端实例的路径
export ORACLE_HOME=$ORACLE_BASE/instantclient_21_16
# 动态库的路径
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH# 将$ORACLE_HOME加入PATH中,下面这种写法可以避免既存的PATH环境变量被覆盖
export PATH=$ORACLE_HOME:$PATH
  • 使配置生效
source ~/.bashrc

⏹配置远程连接,定义远程数据库服务

  • 创建tnsnames.ora文件
touch $ORACLE_HOME/network/admin/tnsnames.ora
  • 编辑如下内容到tnsnames.ora文件中
    • HOST:远程oracle的地址
    • SERVICE_NAME:远程oracle的实例
apluser@ubuntu24-01:~$ cat $ORACLE_HOME/network/admin/tnsnames.ora
ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.118.137)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE)))

5.3 libaio库配置

⏹按照上述配置完成之后,在控制台输入sqlplus,会出现如下错误,提示sqlplus运行缺少libaio.so.1

apluser@ubuntu24-01:~$ sqlplus
sqlplus: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

⏹在网上搜索了很多资料,基本上都会提示让安装如下库

sudo apt update
sudo apt install libaio1

⏹但在24.04.1 LTS的ubuntu安装时,出现了如下的错误

# 我的ubuntu版本
apluser@ubuntu24-01:~$ cat /etc/os-release | grep VERSION=
VERSION="24.04.1 LTS (Noble Numbat)"
# 实际安装时,出现了下面的错误
apluser@ubuntu24-01:~$ sudo apt install libaio1
[sudo] password for apluser:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package libaio1 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another sourceE: Package 'libaio1' has no installation candidate

⏹终于在下面这篇文章中找到了解决办法
https://askubuntu.com/questions/1511776/ubuntu-24-04-php-8-3-oci8-and-libaio-so-1

  • 安装libaio1t64
  • libaio.so.1t64创建链接,指向/libaio.so.1
sudo apt-get install libaio1t64
ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

5.4 解决乱码问题

😵按照如上配置之后,使用sqlplus愉快的连接oracle数据库,却发现存在如下如图所示的乱码问题

在这里插入图片描述

🤔如果 sqlplus 使用的字符集与服务器端的字符集不匹配,可能会导致乱码问题。

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';

在这里插入图片描述

👍通过如下设置,确保客户端的环境变量 NLS_LANG数据库NLS_CHARACTERSET 一致

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

😜可以看到乱码的问题最终得到了解决

在这里插入图片描述

🧐如果不想每次进入终端时都手动进行设置,可以配置到.bashrc文件中

echo "export NLS_LANG=AMERICAN_AMERICA.AL32UTF8" >> ~/.bashrc
source ~/.bashrc

六. ORA-12541 数据库的监听器服务未启动

😵 当Win10虚拟机重启之后,再一次连接数据库时,提示无监听服务

在这里插入图片描述

😓通过sysdba进入数据库之后,通过show parameter service_names;进行查询,可以看到并没有任何service。

PS C:\Windows\system32> sqlplus / as sysdbaSQL*Plus: Release 21.0.0.0.0 - Production on 星期日 1222 15:41:25 2024
Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle.  All rights reserved.连接到:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0SQL>
SQL> set markup csv on
SQL>
SQL> show parameter service_names;"NAME","TYPE","VALUE"
"service_names","string"
SQL>

😓通过lsnrctl status来查看状态,也会提示无监听状态。
并且通过netstat -an | findstr 1521也显示1521的端口根本就没有被监听。

在这里插入图片描述

🧐如下图所示,在管理员权限下,执行lsnrctl start,开启监听即可。

在这里插入图片描述

😜此时再一次通过sysdba登录数据库查看service,可以看到XE服务已经被开启。

PS C:\Windows\system32> sqlplus / as sysdbaSQL*Plus: Release 21.0.0.0.0 - Production on 星期日 1222 15:41:25 2024
Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle.  All rights reserved.连接到:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0SQL>
SQL> set markup csv on
SQL>
SQL> show parameter service_names;"NAME","TYPE","VALUE"
"service_names","string","XE"
SQL>

http://www.ppmy.cn/embedded/147969.html

相关文章

.Net Core框架创建一个Windows服务类型的应用程序

在NuGet中的包管理中添加两个包 System.ServiceProcess.ServiceController Microsoft.Extensions.Hosting.WindowsServices 在Program.cs中添加.UseWindowsService(),另外还需要设置管理员身份运行 Program.cs代码如下 public class Program {public static void…

BUUCTF-[SUCTF 2019]CheckIn -[WP]

进入环境、文件上传 先上传一句话 不能上传php后缀文件 改成图片后缀 <?被过滤 修改一下代码&#xff0c;上传 <script languagephp>eval($_POST[a]);</script> 返回exif_imagetype类型不对 exif_imagetype这个是php中的一个内置函数 用于判断一个给定文件…

信号处理:傅里叶变换与离散傅里叶变换

傅里叶变换&#xff08;Fourier Transform&#xff0c;FT&#xff09;和离散傅里叶变换&#xff08;Discrete Fourier Transform&#xff0c;DFT&#xff09;之间的关系在于它们处理的对象和应用场景不同&#xff0c;但本质上它们是相同的数学思想的两种实现形式。 关系与区别…

将VSCode配置成Goland的视觉效果

各种开发语言有其擅长的IDE作为开发工具&#xff0c;建议C/C首选Visual Studio&#xff0c;Go首选Goland&#xff0c;Java首选IDEA。当然如果习惯VSCode&#xff0c;或者使用的语言比较多&#xff0c;不想切换各种IDE&#xff0c;那就首选VSCode。 笔者开发Go项目有两三年了&a…

深入解析 `DataFrame.groupby` 和 `agg` 的用法及使用场景

深入解析 DataFrame.groupby 和 agg 的用法及使用场景 1. groupby 的基本用法语法&#xff1a;示例&#xff1a; 2. agg 的基本用法语法&#xff1a;示例&#xff1a; 3. first、sum、lambda 的用法3.1 first示例&#xff1a; 3.2 sum示例&#xff1a; 3.3 lambda示例&#xff…

获取显示器(主/副屏)友好名称(FriendlyName)

在开发涉及多显示器的应用程序时&#xff0c;获取显示器的友好名称&#xff08;Friendly Name&#xff09;是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法&#xff0c;了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…

网络安全概论——网络安全基础

一、网络安全引言 信息安全的四个属性&#xff08;信息安全的基本目标 &#xff09; 保密性:信息不会被泄露给非授权用户完整性&#xff1a;保证数据的一致性可用性&#xff1a;合法用户不会被拒绝服务合法使用&#xff1a;不会被非授权用户或以非授权的方式使用 二、网络安…

Docker实战

Docker 介绍 开始之前,还是简单介绍一下 Docker,更多 Docker 概念介绍可以看前一篇文章Docker 核心概念总结。 什么是 Docker? 说实话关于 Docker 是什么并不太好说,下面我通过四点向你说明 Docker 到底是个什么东西。 Docker 是世界领先的软件容器平台,基于 Go 语言 进…