CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例
安装阿里云 YUM 源
https://opsx.alibaba.com/mirror?lang=zh-CN
一、安装Oracle数据库
1.安装 Oracle 预安装 RPM
yum -y localinstall https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
2.安装 Oracle Database RPM
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
# 若未注册可用我的,勿做修改 1161360442@qq.com
Oracle123
yum -y localinstall /tmp/oracle-database-ee-18c-1.0-.x86_64.rpm

二、创建和配置 Oracle 数据库
1.查看配置
# 根据需要修改
cat /etc/sysconfig/oracledb_ORCLCDB-18c.conf #This is a configuration file to setup the Oracle Database.
#It is used when running '/etc/init.d/oracledb_ORCLCDB configure'.
#Please use this file to modify the default listener port and the
#Oracle data location. # LISTENER_PORT: Database listener
# 侦听器的侦听端口
LISTENER_PORT= # ORACLE_DATA_LOCATION: Database oradata location
# 数据存放位置
ORACLE_DATA_LOCATION=/opt/oracle/oradata # EM_EXPRESS_PORT: Oracle EM Express listener
# Enterprise Manager 的侦听端口
EM_EXPRESS_PORT=
2.创建 Oracle 数据库实例
查看脚本
#!/bin/bash
#
# chkconfig:
# Description: This script is responsible for taking care of configuring the Oracle Database and its associated services.
#
# processname: oracledb_ORCLCDB-18c
# Red Hat or SuSE config: /etc/sysconfig/oracledb_ORCLCDB-18c
# # Set path if path not set
case $PATH in
"") PATH=/bin:/usr/bin:/sbin:/etc
export PATH ;;
esac # Check if the root user is running this script
if [ $(id -u) != "" ]
then
echo "You must be root user to run the configurations script. Login as root user and try again."
exit
fi # Setting the required environment variables
export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1 export ORACLE_VERSION=18c
export ORACLE_SID=ORCLCDB
export TEMPLATE_NAME=General_Purpose.dbc
export CHARSET=AL32UTF8
export PDB_NAME=ORCLPDB1
export LISTENER_NAME=LISTENER
export NUMBER_OF_PDBS=
export CREATE_AS_CDB=true # General exports and vars
export PATH=$ORACLE_HOME/bin:$PATH
LSNR=$ORACLE_HOME/bin/lsnrctl
SQLPLUS=$ORACLE_HOME/bin/sqlplus
DBCA=$ORACLE_HOME/bin/dbca
ORACLE_OWNER=oracle
RETVAL=
CONFIG_NAME="oracledb_$ORACLE_SID-$ORACLE_VERSION.conf"
CONFIGURATION="/etc/sysconfig/$CONFIG_NAME" # Commands
if [ -z "$SU" ];then SU=/bin/su; fi
if [ -z "$GREP" ]; then GREP=/usr/bin/grep; fi
if [ ! -f "$GREP" ]; then GREP=/bin/grep; fi # To start the DB
start()
{
check_for_configuration
RETVAL=$?
if [ $RETVAL -eq ]
then
echo "The Oracle Database is not configured. You must run '/etc/init.d/oracledb_$ORACLE_SID-$ORACLE_VERSION configure' as the root user to configure the database."
exit
fi
# Check if the DB is already started
pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
if [ "$pmon" = "" ];
then # Unset the proxy env vars before calling sqlplus
unset_proxy_vars echo "Starting Oracle Net Listener."
$SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start $LISTENER_NAME" > /dev/null >&
RETVAL=$?
if [ $RETVAL -eq ]
then
echo "Oracle Net Listener started."
fi echo "Starting Oracle Database instance $ORACLE_SID."
$SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog << EOF
connect / as sysdba
startup
alter pluggable database all open
exit;
EOF" > /dev/null 2>&1
RETVAL1=$?
if [ $RETVAL1 -eq ]
then
echo "Oracle Database instance $ORACLE_SID started."
fi
else
echo "The Oracle Database instance $ORACLE_SID is already started."
exit
fi echo
if [ $RETVAL -eq ] && [ $RETVAL1 -eq ]
then
return
else
echo "Failed to start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr and Oracle Database using $ORACLE_HOME/bin/sqlplus."
exit
fi
} # To stop the DB
stop()
{
check_for_configuration
RETVAL=$?
if [ $RETVAL -eq ]
then
echo "The Oracle Database is not configured. You must run '/etc/init.d/oracledb_$ORACLE_SID-$ORACLE_VERSION configure' as the root user to configure the database."
exit
fi
# Check if the DB is already stopped
pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
if [ "$pmon" = "" ]
then
echo "Oracle Database instance $ORACLE_SID is already stopped."
exit
else # Unset the proxy env vars before calling sqlplus
unset_proxy_vars echo "Shutting down Oracle Database instance $ORACLE_SID."
$SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog << EOF
connect / as sysdba
shutdown immediate
exit;
EOF" > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq ]
then
echo "Oracle Database instance $ORACLE_SID shut down."
fi echo "Stopping Oracle Net Listener."
$SU -s /bin/bash $ORACLE_OWNER -c "$LSNR stop $LISTENER_NAME" > /dev/null >&
RETVAL1=$?
if [ $RETVAL1 -eq ]
then
echo "Oracle Net Listener stopped."
fi
fi echo
if [ $RETVAL -eq ] && [ $RETVAL1 -eq ]
then
return
else
echo "Failed to stop Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr and Oracle Database using $ORACLE_HOME/bin/sqlplus."
exit
fi
} # To call DBCA to configure the DB
configure_perform()
{
# Unset the proxy env vars before calling dbca
unset_proxy_vars echo "Configuring Oracle Database $ORACLE_SID." $SU -s /bin/bash $ORACLE_OWNER -c "$DBCA -silent -createDatabase -gdbName $ORACLE_SID -templateName $TEMPLATE_NAME -characterSet $CHARSET -createAsContainerDatabase $CREATE_AS_CDB -numberOfPDBs $NUMBER_OF_PDBS -pdbName $PDB_NAME -createListener $LISTENER_NAME:$LISTENER_PORT -datafileDestination $ORACLE_DATA_LOCATION -sid $ORACLE_SID -autoGeneratePasswords -emConfiguration DBEXPRESS -emExpressPort $EM_EXPRESS_PORT" RETVAL=$? echo
if [ $RETVAL -eq ]
then
echo "Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user."
return
else
echo "Database configuration failed."
exit
fi
} # Enh - Unsets the proxy env variables
unset_proxy_vars()
{
if [ "$http_proxy" != "" ]
then
unset http_proxy
fi if [ "$HTTP_PROXY" != "" ]
then
unset HTTP_PROXY
fi if [ "$https_proxy" != "" ]
then
unset https_proxy
fi if [ "$HTTPS_PROXY" != "" ]
then
unset HTTPS_PROXY
fi
} # Check if the DB is already configured
check_for_configuration()
{
configfile=`$GREP --no-messages $ORACLE_SID:$ORACLE_HOME /etc/oratab` > /dev/null >&
if [ "$configfile" = "" ]
then
return
fi
return
} read_config_file()
{
if [ -f "$CONFIGURATION" ]
then
. "$CONFIGURATION"
else
echo "The Oracle Database is not configured. Unable to read the configuration file '$CONFIGURATION'"
exit ;
fi
} # Entry point to configure the DB
configure()
{
check_for_configuration
RETVAL=$?
if [ $RETVAL -eq ]
then
echo "Oracle Database instance $ORACLE_SID is already configured."
exit
fi
read_config_file
check_port_availability
check_em_express_port_availability
configure_perform
} check_port_availability()
{
port=`netstat -n --tcp --listen | $GREP :$LISTENER_PORT`
if [ "$port" != "" ]
then
echo "Port $LISTENER_PORT appears to be in use by another application. Specify a different port in the configuration file '$CONFIGURATION'"
exit ;
fi
} # Validation method to check for port availability for Oracle EM Express
check_em_express_port_availability()
{
port=`netstat -n --tcp --listen | $GREP :$EM_EXPRESS_PORT`
if [ "$port" != "" ]
then
echo "Port $EM_EXPRESS_PORT appears to be in use by another application. Specify a different Oracle EM Express port in the configuration file '$CONFIGURATION'"
exit ;
fi
} restart()
{
# Check if the DB is already stopped
pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
if [ "$pmon" = "" ]
then
start
else
stop
start
fi
} case "$1" in
start)
start
;;
stop)
stop
;;
configure)
configure
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart|configure}"
exit
;;
esac exit
执行脚本
# 执行脚本之后将创建一个容器数据库(ORCLCDB)和一个可插拔数据库(ORCLPDB1),并且配置的默认监听端口是1521。注意 /opt 目录剩余空间大小
/etc/init.d/oracledb_ORCLCDB-18c configure

查看 oratab
# 记录每个数据库的信息,最后一个字母为是否在系统启动时启动
cat /etc/oratab

三、使用
# 作用与 /etc/profile 一样
vim /etc/profile.d/oracle.sh export ORACLE_BASE=/opt/oracle/oradata
export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCLCDB
export NLS_LANG=american_america.AL32UTF8 # 刷新环境变量
source /etc/profile.d/oracle.sh
相关命令
# 监听端口查看
netstat -nultp | grep -E '1521|5500' # 监听
lsnrctl start
lsnrctl stop
lsnrctl stat # 数据库
dbstart $ORACLE_HOME
dbshut $ORACLE_HOME
连接到 oracle 数据库
# 切换到 oracle 用户,root 用户下无法连接
su - oracle # 启动监听
lsnrctl start # 以 sysdba 身份登录
sqlplus / as sysdba
修改数据库密码
-- 启动数据库
startup; -- 配置 system 和 sys 账户的密码
alter user system identified by oracle;
alter user sys identified by oracle; -- 版本查询
select banner from sys.v_$version; -- 查看所有用户
select username from dba_users;
查看 em 界面,Oracle 18c 默认会开启 Enterprise Manager Database Express,修改完sys密码之后,就可以访问:https://IP:5500/em,忽略 https 证书错误,允许 Flash 加载


远程连接至 Oracle 数据库 (Navicat Premium)

四、添加开机自启动
1.新建环境参数
vim /etc/sysconfig/ORCLCDB.oracledb ORACLE_BASE=/opt/oracle/oradata
ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
ORACLE_SID=ORCLCDB
2.新建监听服务
vim /usr/lib/systemd/system/ORCLCDB@lsnrctl.service [Unit]
Description=Oracle Net Listener
After=network.target [Service]
Type=forking
EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
ExecStart=/opt/oracle/product/18c/dbhome_1/bin/lsnrctl start
ExecStop=/opt/oracle/product/18c/dbhome_1/bin/lsnrctl stop
User=oracle [Install]
WantedBy=multi-user.target
3.新建数据库服务
vim /usr/lib/systemd/system/ORCLCDB@oracledb.service [Unit]
Description=Oracle Database service
After=network.target lsnrctl.service [Service]
Type=forking
EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
ExecStart=/opt/oracle/product/18c/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/opt/oracle/product/18c/dbhome_1/bin/dbshut $ORACLE_HOME
User=oracle [Install]
WantedBy=multi-user.target
4.设置服务自启动
# 刷新服务
systemctl daemon-reload # 设置开机自启动
systemctl enable ORCLCDB@lsnrctl ORCLCDB@oracledb
5.设置数据库自启动
# 此文件由 root.sh 创建
# 格式为:$ORACLE_SID:$ORACLE_HOME:<N|Y>
# 第一个和第二个字段分别是数据库的系统标识符和主目录。 第三个字段为是否跟随 dbstart 命令启动数据库实例
# 不允许有相同 $ORACLE_SID 的条目
vim /etc/oratab ORCLCDB:/opt/oracle/product/18c/dbhome_1:Y
https://blog.csdn.net/hanzheng260561728/article/details/88202571
https://blog.csdn.net/vkingnew/article/details/83189454
CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例的更多相关文章
- Centos7上以RPM包方式安装Oracle 18c XE
Centos7上以RPM包方式安装Oracle 18c XE 安装阿里云 YUM 源 https://opsx.alibaba.com/mirror?lang=zh-CN 一.安装oracle数据库 ...
- CentOS7 图形化方式安装 Oracle 18c 单实例
下载 Oracle 数据库,zip 包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...
- MySQL在linux上的rpm包方式安装方法
1.下载上传mysql server和client rpm包: [root@faspdev mnt]# ls MySQL-client-5.5.53-1.el6.x86_64.rpm MySQL-se ...
- RPM包方式安装Oracle21c的方法
RPM包方式安装Oracle21c的方法 前言 北京时间2021.8.14 Oracle发布了最新的数据库版本Oracle21c, Oracle规划不再发布Oracle20c和Oracle22c, 直 ...
- MySQL使用RPM包方式安装
CentOS7安装MySQL的方法之RPM包方式
- Gitlab环境快速部署(RPM包方式安装)
之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老.下面介绍使用rpm包安装Gitlab,下载地址:https://m ...
- CentOS 6.5 RPM包方式安装 Mysql 5.6
1. 下载MySQL 5.6 下载页面:http://dev.mysql.com/downloads/mysql/此处选择“Red Hat Enterprise Linux 6 / Oracle Li ...
- CentOS7 图形化方式安装Oracle 18c 安装配置
下载 Oracle 数据库,zip 包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...
- CentOS7下源码包方式安装rabbitmq
1.先安装erlang http://www.cnblogs.com/justphp/p/6093880.html 2.下载rabbitmq rpm包: wget http://www.rabbitm ...
随机推荐
- BZOJ4519[Cqoi2016]不同的最小割——最小割树+map
题目描述 学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成 两个部分,如果结点s,t不在同一个部分中,则称这个划分是关于s,t的割.对于带权图来说,将 所有顶点处在 ...
- BZOJ2809 dispatching 【可并堆】
题目分析: yy一下就知道了,合并用可并堆少个log. 代码: #include<bits/stdc++.h> using namespace std; ; int n,m; int b[ ...
- Docker镜像的使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...
- 【XSY2668】排列统计 DP
题目描述 给你一个长度为\(n\)的排列\(a\),每次要选择两个数,交换这两个数(这两个数可以相同).总共要交换\(k\)次. 最后要统计数列中有多少位置\(i\)满足\(\max_{j\leq i ...
- [luogu3246][bzoj4540][HNOI2016]序列【莫队+单调栈】
题目描述 给定长度为n的序列:a1,a2,...,an,记为a[1:n].类似地,a[l:r](1<=l<=r<=N)是指序列:al,al+1,...,ar-1,ar.若1<= ...
- 【转】非常实用的高频PCB电路设计70问
1.如何选择PCB 板材? 选择PCB 板材必须在满足设计需求和可量产性及成本中间取得平衡点.设计需求包含电气和机构这两部分.通常在设计非常高速的 PCB 板子(大于 GHz 的频率)时这材质问题会比 ...
- Python面试指南
1.Python基本语法 1.@staticmethod 和 @classmethod Python中有三种方法,实例方法.类方法(@classmethod).静态方法(@staticmethod). ...
- 「JLOI2015」管道连接 解题报告
「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cct ...
- python学习day5 数据类型Ⅲ(字典)
day5 字典 回顾&补充 面试题 #数据类型判断a = 1 #intb = (1) #intc = ('1') #strd = (1,) #tuple int py2/py3 除法 强制转换 ...
- 51Nod--1295 XOR key (可持久化tire树)
题目链接 1295 XOR key 可持久化tire树模版题 数组一定要开够 不然数组不够的话就容易tle 吃了两次亏 #include<bits/stdc++.h> using name ...