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 ...
随机推荐
- BZOJ4205卡牌配对——最大流+建图优化
题目描述 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不 ...
- Typora——安装Pandoc
安装 打开typora,帮助-> Install and Use Pandoc | 访问在线地址 https://support.typora.io/Install-and-Use-Pand ...
- M - 约会安排 HDU - 4553 线段树 (最长连续段)
中文题面 思路:维和两个区间 一个是女神区间 一个是基友区间 如果是基友要预约时间 直接在基友区间查询可满足的起点 (这里先判tree[1].m >=length也就是有没有这样的区间满足时 ...
- jsp大学课程hi实验:分页在线测评(session的使用)
project_1_updata_1_1.jsp <%@ page contentType="text/html;charset=utf-8" language=" ...
- 记一次Java调优案例分析
上周,一同学给我发来,他们那里的案例 一看就是新生代产生过多对象,肯定是批量或者循环操作导致的,导致新生代一直在进行回收导致. 如果是老生代出现这样的问题,大部分情况下是列表或者集合导致的. 因此我们 ...
- 一种HBase表数据迁移方法的优化
1.背景调研: 目前存在的hbase数据迁移主要分如下几类: 根据上图,可以看出: 其实主要分为两种方式:(1)hadoop层:因为hbase底层是基于hdfs存储的,所以可以通过把hdfs上的数据拷 ...
- hiho1258 Osu! Master
题目链接:http://hihocoder.com/problemset/problem/1258 题目大意:看能连击的次数 思路:水 看有多少个1和s就好了 #include <stdio.h ...
- Shell 对整个文件夹中的文件进行MD5校验 [转]
查看本地文件的 MD5 命令:md5sum FileName查看home目录下所有文件的 MD5 码:cd ~find /home -type f -print0 | xargs -0 md5sum ...
- 【CF850E】Random Elections(FWT)
[CF850E]Random Elections(FWT) 题面 洛谷 CF 题解 看懂题就是一眼题了... 显然三个人是等价的,所以只需要考虑一个人赢了另外两个人就好了. 那么在赢另外两个人的过程中 ...
- Asp.Net Output.Write()
string name="张三" <div> <label>@Output.Write(name)</label> </div> 在 ...