linux安装oracle19c

news/2025/2/9 6:19:30 标签: linux, oracle

安装

安装前检查配置:

挂载50g盘:

vgcreate oravg /dev/sdb

lvcreate -L 49.8G -n oralv oravg

lvscan

mkfs.xfs /dev/oravg/oralv

查看uuid
blkid

复制分区表
cp /etc/fstab /etc/fstab.bak

vi /etc/fstab

内容为:
/dev/oravg/oralv   /u01  xfs  defaults 0  0

cat /etc/fstab

挂载并查看
mount -a
df -Th

系统运行级别

runlevel

uname -m

grep MemTotal /proc/meminfo

cat /etc/redhat-release

df-h/tmp

free -h

df -h /u01

df -h /dev/shm

安装依赖

windows本地安装:

📎Xming-6-9-0-31-setup.rar

启动虚拟机,上传这两个文件:

📎compat-libstdc++-33-3.2.3-72.el7.x86_64 .rpm

一个是compat-libstdc++的包,这里oracle的包可以上传到/tmp

首先通过npm网络源安装以下依赖包:[安装前要配置yum网络镜像源,这里忽略配置过程]

例如yum install bc

bc
binutils
compat-libcap1
compat-libstdc++
dtrace-modules
dtrace-modules-headers
dtrace-modules-provider-headers
dtrace-utils
elfutils-libelf
elfutils-libelf-devel
fontconfig-devel
glibc
glibc-devel
ksh
libaio
libaio-devel
libdtrace-ctf-devel
libX11
libXau
libXi
libXtst
libXrender
libXrender-devel
libgcc
librdmacm-devel
libstdc++
libstdc++-devel
libxcb
make
smartmontools
sysstat

检查是否有缺失的:

yum install -y bc binutils compat-libcap1 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat

检查依赖包是否安装:

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
smartmontools \
sysstat

提示缺失compat-libstdc++,这里用上传安装包的安装上去:

ls
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

再次检查,提示没有no package,说明依赖包安装成功!

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat

创建用户和组

groupadd -g 54321 oinstall

groupadd -g 54322 dba

groupadd -g 54323 oper

useradd -u 54321 -g oinstall -G dba,oper oracle

检查组
id oracle

关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

关闭selinux

#临时关闭
setenforce 0
#永久关闭
vi /etc/selinux/config
SELINUX=enforcing
改成
SELINUX=disabled

创建目录

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

-- 给组,给目录权限
chown -R oracle:oinstall /u01/

chmod -R 775 /u01/

ls -l /u01

配置环境变量

在/home/oracle/.bash_profile文件中添加以下内容

su - oracle

vim /home/oracle/.bash_profile
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ora19c
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
umask 022

使命令生效:

source /home/oracle/.bash_profile

配置资源限制

su root
sed -i 's/*          soft    nproc     4096/*          soft    nproc     65535/' /etc/security/limits.d/20-nproc.conf

echo "
oracle  soft    nproc   65535
oracle  hard    nproc   65535
oracle  soft    nofile  65535
oracle  hard    nofile  65535

oracle  soft    stack  10240
oracle  hard    stack  32768

" >>/etc/security/limits.conf

配置pam

echo "session  required   pam_limits.so">>/etc/pam.d/login
echo "session  required   pam_limits.so">>/etc/pam.d/su

cat /etc/pam.d/login|grep pam_limits

配置ssh快速登录

vi /etc/ssh/sshd_config

UseDNS no

解压安装包

往/tmp下上传oralce安装包

su root
cd /tmp
ls -lh
给权限
chmod 777 LINUX.X64_193000_db_home.zip

解压:

su - oracle
cd /tmp
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

图形界面安装

使其他用户可以调用图形界面

设置隧道:

切换到root用户:

su root

xhost +

我电脑的ip地址为:192.168.3.148

su - oracle

export DISPLAY=192.168.3.148:0.0

$ORACLE_HOME/runInstaller

成功打开图形界面!

在图形界面安装

密码:123456

等待安装:

安装完毕!

创建监听器

su - oracle
$ORACLE_HOME/bin/netca

netca

创建数据库

su - oracle
dbca

等待安装:

使用sqlplus连接

su - oracle
sqlplus / as  sysdba

sqlplus system/123456

SQL> 
create user school identified by school123;

sqlplus system/123456
建立create session权限
GRANT CREATE SESSION TO school;
sqlplus school/school123

使用java进行连接测试

上传java安装包

📎jdk-8u191-linux-x64.tar.gz

📎jdk-8u221-linux-x64.tar.gz

安装java

mkdir /usr/java/

tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java/

配置环境变量

# 配置环境变量
echo '
export JAVA_HOME=/usr/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
' >> /etc/profile
# 生效环境变量
source /etc/profile

编写程序并执行

pwd

vi OracleConnectionExample.java

这里的servicename:

lsnrctl status

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleConnectionExample {
    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:oracle:thin:@localhost:1521:ora19c";
        String username = "system";
        String password = "123456";

        try {
            // 加载Oracle驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);

            // 创建Statement对象
            Statement statement = connection.createStatement();

            // 执行SQL查询
            String sql = "SELECT * FROM v$version";
            ResultSet resultSet = statement.executeQuery(sql);

            // 处理查询结果
            while (resultSet.next()) {
                // 输出数据库版本
                String name = resultSet.getString("BANNER_FULL");
                System.out.println("version:" + name);
            }

            // 关闭资源
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行:

# 加载Oraclejdbc驱动并编译java代码

javac -cp $ORACLE_HOME/jdbc/lib/ojdbc8.jar OracleConnectionExample.java

# 执行java代码

java -cp /u01/app/oracle/product/19.0.0/dbhome_1/jdbc/lib/ojdbc8.jar:. OracleConnectionExample

navicat连接测试

解决重启后oracle未启动的问题?

当在 Linux 系统上安装完 Oracle 后测试连接正常,但重启 Linux 系统后无法连接 Oracle 数据库

1. 检查 Oracle 服务是否启动

Oracle 数据库服务在 Linux 系统重启后可能没有自动启动,需要手动启动或者配置为开机自启。

手动启动 Oracle 服务
  • 以 Oracle 用户登录系统:
su - oracle

  • 启动监听服务:
lsnrctl start

  • 启动数据库实例:
sqlplus / as sysdba
SQL> startup
SQL> exit

配置 Oracle 服务开机自启

编辑 /etc/oratab 文件,确保数据库实例对应的启动标志为 Y,例如:

ORCL:/u01/app/oracle/product/19.3.0/dbhome_1:Y

然后创建一个启动脚本 /etc/init.d/oracle,内容如下(根据实际情况修改 ORACLE_HOME 和 ORACLE_SID):

#!/bin/bash
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.

ORA_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORA_OWNER=oracle

if [ ! -f $ORA_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        # Remove "&" if you don't want startup as a background process.
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
        touch /var/lock/subsys/oracle
        echo "Oracle Start Successful"
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
        rm -f /var/lock/subsys/oracle
        echo "Oracle Stop Successful"
        ;;
    *)
        echo "Usage: `basename $0` {start|stop}"
        exit 1
esac
exit 0

赋予脚本执行权限:

chmod +x /etc/init.d/oracle

添加到系统服务并设置开机自启:

chkconfig --add oracle
chkconfig oracle on

2. 检查环境变量是否正确设置

在 Linux 系统重启后,Oracle 相关的环境变量可能没有正确加载。可以将环境变量配置到用户的 .bashrc/etc/profile 文件中。

编辑 ~/.bashrc 文件,添加以下内容(根据实际情况修改):

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCL

使配置生效:

source ~/.bashrc

3. 检查监听配置文件

监听配置文件 listener.ora 可能在重启后出现问题。该文件通常位于 $ORACLE_HOME/network/admin 目录下。

检查 listener.ora 文件内容是否正确,示例如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

确保 HOST 字段填写的是正确的主机名或 IP 地址。修改配置文件后,重启监听服务:

lsnrctl stop
lsnrctl start

4. 检查防火墙设置

防火墙可能会阻止对 Oracle 数据库端口(默认是 1521)的访问。可以临时关闭防火墙或者开放相应的端口。

临时关闭防火墙
systemctl stop firewalld
开放 1521 端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload

5. 检查数据库状态

使用以下命令检查数据库的状态:

sqlplus / as sysdba
SQL> select status from v$instance;

如果数据库状态不正常,可以根据具体情况进行相应的处理。


http://www.niftyadmin.cn/n/5845688.html

相关文章

Docker 容器 Elasticsearch 启动失败完整排查记录

背景 在服务器上运行 Docker 容器 es3,但 Elasticsearch 无法正常启动,运行 docker ps -a 发现 es3 处于 Exited (1) 状态,即进程异常退出。 本次排查从错误日志、容器挂载、权限问题、SELinux 影响、内核参数等多个方面入手,最…

webview_flutter的使用

目录 步骤示例代码 步骤 1.配置依赖。根目录下运行如下命令: flutter pub add webview_flutter 2.所需页面导入: import ‘package:webview_flutter/webview_flutter.dart’; 3.初始化WebViewController overridevoid initState() {super.initState();…

Verilog代码实例

Verilog语言学习! 文章目录 目录 文章目录 前言 一、基本逻辑门代码设计和仿真 1.1 反相器 1.2 与非门 1.3 四位与非门 二、组合逻辑代码设计和仿真 2.1 二选一逻辑 2.2 case语句实现多路选择逻辑 2.3 补码转换 2.4 7段数码管译码器 三、时序逻辑代码设计和仿真 3.1…

k8s常见面试题1

k8s常见面试题1 Kubernetes 基础知识核心组件及作用K8S生成pod过程Pod、Deployment、Service的区别保证Pod高可用ConfigMap vs Secret网络模型与Pod通信Ingress 与 Service 的主要区别什么是 Ingressk8s中为什么要做ServiceIngress 与 Service 的区别 资源配额 Kubernetes 实践…

Golang:精通sync/atomic 包的Atomic 操作

在本指南中,我们将探索sync/atomic包的细节,展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步,你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧! 理解Go中的原子操作 在快…

25/2/8 <机器人基础> 阻抗控制

1. 什么是阻抗控制? 阻抗控制旨在通过调节机器人与环境的相互作用,控制其动态行为。阻抗可以理解为一个力和位移之间的关系,涉及力、速度和位置的协同控制。 2. 阻抗控制的基本概念 力控制:根据感测的外力调节机械手的动作。位置…

【RandLA-Net】大场景语义分割网络RandLA-Net复现

【RandLA-Net】大场景语义分割网络RandLA-Net复现 文章目录 【RandLA-Net】大场景语义分割网络RandLA-Net复现0. 相关文章1. 实验条件2. 代码3. 数据集4. 环境搭建5. 训练模型6. 测试模型7. 可视化8. 参考博客 0. 相关文章 PointNet模型搭建 基于自建数据训练PointNet分割网络…

雷蛇曼巴无线版更换微动后左键失灵后续——丝血复活

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 上一期《雷蛇曼巴无线版更换左右键、侧键、DPI 键微动翻车记录》中,把鼠标所有的按键都更换了一遍,结果原本唯一正常的左键换完之后无法触发了。 经过评论区大哥指点,猜…