CentOS安装Oracle 19C 数据库

一、下载19C数据库

数据库下载:打开下载官网

https://www.oracle.com/cn/database/technologies/oracle19c-linux-downloads.html

复制下载链接:

复制下载链接的时候,如果迅雷是打开了的话,会自动跳出下载窗口。

文件下载链接如下:

https://download.oracle.com/otn/linux/oracle19c/190000/LINUX.X64_193000_db_home.zip

二、安装前准备

1、换源(如需要)

备份原有的 repo 文件

sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup

换源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-reg.repo

清除缓存

sudo yum clean all

建立缓存

sudo yum makecache

2、更新软件

sudo yum update -y

3、安装必要包

sudo yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

4、配置内核参数

编辑 /etc/sysctl.conf文件 :

运行:vim /etc/sysctl.conf

添加以下内容:

复制代码
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

应用更改

sudo sysctl -p

5、配置用户限制

编辑 /etc/security/limits.conf 文件

运行命令:vim /etc/security/limits.conf

添加:

复制代码
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

6、配置PAM限制

编辑:/etc/pam.d/login

运行命令:vim /etc/pam.d/login

添加:

复制代码
session required pam_limits.so

7、创建用户和组、创建安装目录

创建用户和组

复制代码
创建组
sudo groupadd oinstall
sudo groupadd dbb
创建用户oracle并(-g)指定主组 oinstall 指定附加组(-G)dba
sudo useradd -g oinstall -G dba oracle
更改密码
sudo passwd oracle

创建以下目录并赋加权限

复制代码
#在根目录下新建文件
sudo mkdir -p /u01/app/oracle
sudo mkdir -p /u01/app/oraInventory
# 将/u01目录及其下所有文件和子目录的所有者为oracle,所属组为oinstall
sudo chown -R oracle:oinstall /u01
#赋予775权限
sudo chmod 775 /u01

8、配置Oracle用户环境变量

切换到ora用户

su - oracle

编辑 ~/.bash_profile

运行:vim ~/.bash_profile

添加:

复制代码
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

应用配置:

运行:source ~/.bash_profile

三、安装Oracle数据库

接下来的操作都在Oracle账号下执行

ssh工具下载链接:

https://www.hostbuf.com/t/988.html

1、将下载好的数据库安装包复制到 home 目录下

2、解压安装文件

进入home目录:cd /home

将 LINUX.X64_193000_db_home.zip 文件解压到/u01/app/oracle/product/19.3.0/dbhome_1

创建目录命令:sudo mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1

解压命令:sudo unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1

3、运行安装程序

添加执行权限

复制代码
# 添加执行权限
sudo chmod +x /u01/app/oracle/product/19.3.0/dbhome_1/runInstaller

# 确保整个目录的权限正确
sudo chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/dbhome_1
sudo chmod -R 755 /u01/app/oracle/product/19.3.0/dbhome_1

在home目录下新建并编辑 db_install.rsp 安装信息文件

vim /home/db_install.rsp

并添加以下内容:

复制代码
####################################################################
## Copyright(c) Oracle Corporation 1998,2019. All rights reserved.##
##                                                                ##
## Specify values for the variables listed below to customize     ##
## your installation.                                             ##
##                                                                ##
####################################################################

# Do not change the following system generated value.
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.3.0

# Installation Option
oracle.install.option=INSTALL_DB_SWONLY

# UNIX group name
UNIX_GROUP_NAME=oinstall

# Inventory location
INVENTORY_LOCATION=/u01/app/oraInventory

# Languages
SELECTED_LANGUAGES=en

# Oracle Home
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1

# Oracle Base
ORACLE_BASE=/u01/app/oracle

# Database edition
oracle.install.db.InstallEdition=EE

# Database role (OS groups)
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba

# Cluster nodes
oracle.install.db.CLUSTER_NODES=

# Security updates
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true

# Auto updates
oracle.installer.autoupdates.option=SKIP_UPDATES

进入dbhome_1目录

cd $ORACLE_HOME

运行安装命令:./runInstaller -silent -responseFile /home/db_install.rsp

显示如下信息为正在安装:

安装完成显示如下:

4、执行配置脚本

以 root 用户的身份执行以下脚本:

sudo /u01/app/oraInventory/orainstRoot.sh

sudo $ORACLE_HOME/root.sh

四、开放1521端口

使用firewall-cmd(firewalld)

开放1521端口用于远程连接数据库

1. 查看当前防火墙状态

复制代码
sudo systemctl status firewalld
如果防火墙未运行,启动并启用
复制代码
sudo systemctl start firewalld
sudo systemctl enable firewalld

2. 开放1521端口

开放1521端口,用于外部连接(如Windows连接数据库使用)

复制代码
# 添加端口到永久规则
sudo firewall-cmd --zone=public --add-port=1521/tcp --permanent

# 重新加载防火墙配置(重启防火墙重新加载配置)
sudo firewall-cmd --reload

3. 验证端口是否开放

复制代码
# 查看所有开放端口
sudo firewall-cmd --zone=public --list-ports

# 或者查看完整配置
sudo firewall-cmd --zone=public --list-all
如果需要指定源IP
复制代码
# 允许特定IP访问1521端口
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="1521" accept'

# 重新加载
sudo firewall-cmd --reload

4、测试连接

本地测试
复制代码
# 查看监听端口
sudo netstat -tlnp | grep 1521
# 或
sudo ss -tlnp | grep 1521

# 测试本地连接
telnet localhost 1521
远程测试
复制代码
# 从另一台机器测试
telnet <服务器IP> 1521
# 或
nc -zv <服务器IP> 1521

连接成功如下

五、创建数据库(数据库实列)

1. 使用DBCA创建数据库

在Oracle账号下运行命令创建数据库

复制代码
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword YourSysPassword123 \
-systemPassword YourSystemPassword123 \
-createAsContainerDatabase false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination /u01/app/oracle/oradata \
-redoLogFileSize 50 \
-emConfiguration NONE \
-ignorePreReqs

等待创建完成

创建完成

2. 配置监听器

运行命令配置监听器

复制代码
netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp

配置成功如下图:

六、基本设置与命令的使用

验证安装检查数据库状态

复制代码
sqlplus / as sysdba
SQL> SELECT name, open_mode FROM v$database;
SQL> exit

检查监听器状态

复制代码
lsnrctl status

正常开启状态

启动/停止监听器

复制代码
# 启动
lsnrctl start

# 停止
lsnrctl stop

启动/停止数据库

复制代码
# 启动
sqlplus / as sysdba
SQL> startup

# 停止
SQL> shutdown immediate

创建(数据库和监听器)自启服务文件

创建前先在oracle账号下cd $ORACLE_HOME进入目录,使用pwd查看文件路径

查看后切换到root用户

su - root

方法一:创建监听器和数据库服务

创建监听器服务:

sudo vim /etc/systemd/system/oracle-listener.service

添加以下内容(注意:使用绝对路径):

复制代码
[Unit]
Description=Oracle Net Listener
After=network.target

[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
Environment="ORACLE_SID=orcl"
Environment="PATH=/usr/local/bin:/usr/bin:/bin:/u01/app/oracle/product/19.3.0/dbhome_1/bin"

# 使用绝对路径!不要用 $ORACLE_HOME
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
创建数据库服务:

sudo vim /etc/systemd/system/oracle-db.service

复制代码
[Unit]
Description=Oracle Database Service
After=network.target oracle-listener.service
Wants=oracle-listener.service

[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
Environment="ORACLE_SID=orcl"
Environment="PATH=/usr/local/bin:/usr/bin:/bin:/u01/app/oracle/product/19.3.0/dbhome_1/bin"

# 使用绝对路径!
ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1
Restart=on-failure
RestartSec=30
TimeoutSec=300

[Install]
WantedBy=multi-user.target
设置自动启动
复制代码
# 重新加载 systemd
sudo systemctl daemon-reload

# 启用监听器服务
sudo systemctl enable oracle-listener.service

# 启用数据库服务
sudo systemctl enable oracle-db.service

# 启动监听器
sudo systemctl start oracle-listener.service

# 启动数据库
sudo systemctl start oracle-db.service

# 检查状态
sudo systemctl status oracle-listener.service
sudo systemctl status oracle-db.service

方法二:创建单个服务(监听器+数据库)

创建(监听器+数据库)服务文件:oracle.service

sudo vim /etc/systemd/system/oracle.service

复制代码
[Unit]
Description=Oracle Database and Listener
After=network.target

[Service]
Type=forking
User=oracle
Group=oinstall
Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1"
Environment="ORACLE_SID=orcl"
Environment="PATH=/usr/local/bin:/usr/bin:/bin:/u01/app/oracle/product/19.3.0/dbhome_1/bin"

# 创建启动脚本
ExecStart=/bin/bash -c '/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start && sleep 3 && /u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1'
# 创建停止脚本
ExecStop=/bin/bash -c '/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1 && sleep 3 && /u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl stop'

Restart=on-failure
RestartSec=30
TimeoutSec=300

[Install]
WantedBy=multi-user.target
设置自动启动
复制代码
# 重新加载 systemd
sudo systemctl daemon-reload

# 启用服务
sudo systemctl enable oracle.service

# 启动服务
sudo systemctl start oracle.service

# 检查状态
sudo systemctl status oracle.service

注:正常可用,设置好,重启正常自启数据库和监听器后,下面的检查修复可以不做。

检查配置是否正确

复制代码
# 检查服务文件语法
systemd-analyze verify /etc/systemd/system/oracle*.service

# 查看服务文件内容
cat /etc/systemd/system/oracle.service

# 检查服务状态
systemctl status oracle.service --no-pager

修复 /etc/oratab 配置

确保数据库允许自动启动(如果没有自动启动)

复制代码
# 检查 /etc/oratab
cat /etc/oratab

# 如果没有配置,添加
echo "orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y" | sudo tee -a /etc/oratab

七、远程连接和基本使用

用Navicat数据库软件连接Oracle数据库

打开软件后点击连接------Oracle

输入住址IP地址,用户名、密码,点测试连接,提示连接成功后,点确定就可以了。

之后双击连接就可以了

数据库基础命令

重置密码、创建用户、授予权限
复制代码
# 一
# 1、以oracle用户登录
su - oracle

# 2、使用操作系统认证连接到数据库
sqlplus / as sysdba

# 3、重置密码
SQL> ALTER USER 用户名 IDENTIFIED BY 新密码;
# 如
SQL> ALTER USER sys IDENTIFIED BY Oracle123;

#二
# 1、创建新用户
CREATE USER newuser IDENTIFIED BY 11111111;

# 2、授予权限
GRANT CONNECT, RESOURCE TO newuser;
GRANT CREATE SESSION TO newuser;
GRANT UNLIMITED TABLESPACE TO newuser;

# 然后使用sqlplus testuser/TestPass123连接数据库

# 三
# 注:用用命令终端登陆时,有些账号需要特定的身份登陆。如:SYS用户必须以SYSDBA或SYSOPER身份登录。
sqlplus sys/Oracle123 as sysdba

一、重置密码测试登陆

二、创建新用户测试登陆

三、注:用用命令终端登陆时,有些账号需要特定的身份登陆。如:SYS用户必须以SYSDBA或SYSOPER身份登录。

sqlplus sys/Oracle123 as sysdba

八、遇到的问题等等

在安装和使用时碰到的问题,在安装时如果出现报错安装失败等问题。可以先看提示,如果提示找不到问题可以看看安装日记,查找有用的信息。

如:

安装错误

一般错误,第一次安装不成功后,再次安装一般会出现以下错误

此时只需要进入 cd //u01/app/oraInventory 目录,运行 rm -r * 命令删除文件夹里面的所有文件及可

注:使用时遇到以下问题提示未找到命令

原因是

未找到命令 . . .(加载配置文件问题)

在系统开机后,我们用root账号登陆到系统桌面、root用ssh登陆,或者从root使用命令 su oracle 登陆,运行 sqlplus 命令提示未找到命令

这个就是因为系统没有自动加载 ~/.bash_profile 文件也就是在oracle账号下编辑修改的文件

需要本地登陆Oracle账号,远程ssh直接登陆Oracle账号,或者使用su - oracle 命令登陆(从新登陆)到Oracle账号才能使用。

su - oracle

ssh oracle@ip

本地登陆

安装报错查看日记找到的问题

监听器没启动

Navicat连接报错如下

运行命令启动监听器

lsnrctl start

数据库实例没有运行。

Navicat连接报错如下

复制代码
# 登陆数据库
sqlplus / as sysdba
# 检查数据库状态
SQL> select instance_name, status from v$instance;

# 如果未启动,启动数据库
SQL> startup
相关推荐
IT_Octopus2 小时前
AI 工程 生产级别向量数据库Milvus2.6.10性能测试报告
数据库·人工智能·milvus
JosieBook2 小时前
【数据库】时序数据库选型指南:从大数据角度解析IoTDB的优势
大数据·数据库·时序数据库
何中应2 小时前
CentOS7安装Git
运维·git·centos·开发工具
码农学院2 小时前
查找sql server 2014存储过程是否包含某个关键字
数据库
数据知道2 小时前
PostgreSQL:防止 WAL 文件撑爆磁盘的策略(WAL归档配置)
数据库·postgresql
dishugj2 小时前
【Oracle】MMNL占用内存过高问题,重启进程释放
数据库·oracle
运维行者_3 小时前
深入解析 Docker 监控:核心指标完整清单
运维·服务器·网络·数据库·docker·容器·eureka
礼拜天没时间.3 小时前
容器网络配置——从互联到自定义桥接
运维·网络·docker·容器·centos
Aloudata3 小时前
数据治理新解法:基于算子级血缘的主动元数据如何破解数仓重构难题?
大数据·数据库·数据治理·元数据·数据血缘