安装阿里云 YUM 源

https://opsx.alibaba.com/mirror?lang=zh-CN

一、安装Oracle数据库

1.安装 Oracle 预安装 RPM

  1. 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

  1. # 若未注册可用我的,勿做修改
  2.  
  3. 1161360442@qq.com
  4. Oracle123
  1. yum -y localinstall /tmp/oracle-database-ee-18c-1.0-.x86_64.rpm

二、创建和配置 Oracle 数据库

1.查看配置

  1. # 根据需要修改
  2. cat /etc/sysconfig/oracledb_ORCLCDB-18c.conf
  3.  
  4. #This is a configuration file to setup the Oracle Database.
  5. #It is used when running '/etc/init.d/oracledb_ORCLCDB configure'.
  6. #Please use this file to modify the default listener port and the
  7. #Oracle data location.
  8.  
  9. # LISTENER_PORT: Database listener
  10. # 侦听器的侦听端口
  11. LISTENER_PORT=
  12.  
  13. # ORACLE_DATA_LOCATION: Database oradata location
  14. # 数据存放位置
  15. ORACLE_DATA_LOCATION=/opt/oracle/oradata
  16.  
  17. # EM_EXPRESS_PORT: Oracle EM Express listener
  18. # Enterprise Manager 的侦听端口
  19. EM_EXPRESS_PORT=

2.创建 Oracle 数据库实例

查看脚本

  1. #!/bin/bash
  2. #
  3. # chkconfig:
  4. # Description: This script is responsible for taking care of configuring the Oracle Database and its associated services.
  5. #
  6. # processname: oracledb_ORCLCDB-18c
  7. # Red Hat or SuSE config: /etc/sysconfig/oracledb_ORCLCDB-18c
  8. #
  9.  
  10. # Set path if path not set
  11. case $PATH in
  12. "") PATH=/bin:/usr/bin:/sbin:/etc
  13. export PATH ;;
  14. esac
  15.  
  16. # Check if the root user is running this script
  17. if [ $(id -u) != "" ]
  18. then
  19. echo "You must be root user to run the configurations script. Login as root user and try again."
  20. exit
  21. fi
  22.  
  23. # Setting the required environment variables
  24. export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
  25.  
  26. export ORACLE_VERSION=18c
  27. export ORACLE_SID=ORCLCDB
  28. export TEMPLATE_NAME=General_Purpose.dbc
  29. export CHARSET=AL32UTF8
  30. export PDB_NAME=ORCLPDB1
  31. export LISTENER_NAME=LISTENER
  32. export NUMBER_OF_PDBS=
  33. export CREATE_AS_CDB=true
  34.  
  35. # General exports and vars
  36. export PATH=$ORACLE_HOME/bin:$PATH
  37. LSNR=$ORACLE_HOME/bin/lsnrctl
  38. SQLPLUS=$ORACLE_HOME/bin/sqlplus
  39. DBCA=$ORACLE_HOME/bin/dbca
  40. ORACLE_OWNER=oracle
  41. RETVAL=
  42. CONFIG_NAME="oracledb_$ORACLE_SID-$ORACLE_VERSION.conf"
  43. CONFIGURATION="/etc/sysconfig/$CONFIG_NAME"
  44.  
  45. # Commands
  46. if [ -z "$SU" ];then SU=/bin/su; fi
  47. if [ -z "$GREP" ]; then GREP=/usr/bin/grep; fi
  48. if [ ! -f "$GREP" ]; then GREP=/bin/grep; fi
  49.  
  50. # To start the DB
  51. start()
  52. {
  53. check_for_configuration
  54. RETVAL=$?
  55. if [ $RETVAL -eq ]
  56. then
  57. 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."
  58. exit
  59. fi
  60. # Check if the DB is already started
  61. pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
  62. if [ "$pmon" = "" ];
  63. then
  64.  
  65. # Unset the proxy env vars before calling sqlplus
  66. unset_proxy_vars
  67.  
  68. echo "Starting Oracle Net Listener."
  69. $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start $LISTENER_NAME" > /dev/null >&
  70. RETVAL=$?
  71. if [ $RETVAL -eq ]
  72. then
  73. echo "Oracle Net Listener started."
  74. fi
  75.  
  76. echo "Starting Oracle Database instance $ORACLE_SID."
  77. $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog << EOF
  78. connect / as sysdba
  79. startup
  80. alter pluggable database all open
  81. exit;
  82. EOF" > /dev/null 2>&1
  83. RETVAL1=$?
  84. if [ $RETVAL1 -eq ]
  85. then
  86. echo "Oracle Database instance $ORACLE_SID started."
  87. fi
  88. else
  89. echo "The Oracle Database instance $ORACLE_SID is already started."
  90. exit
  91. fi
  92.  
  93. echo
  94. if [ $RETVAL -eq ] && [ $RETVAL1 -eq ]
  95. then
  96. return
  97. else
  98. echo "Failed to start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr and Oracle Database using $ORACLE_HOME/bin/sqlplus."
  99. exit
  100. fi
  101. }
  102.  
  103. # To stop the DB
  104. stop()
  105. {
  106. check_for_configuration
  107. RETVAL=$?
  108. if [ $RETVAL -eq ]
  109. then
  110. 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."
  111. exit
  112. fi
  113. # Check if the DB is already stopped
  114. pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
  115. if [ "$pmon" = "" ]
  116. then
  117. echo "Oracle Database instance $ORACLE_SID is already stopped."
  118. exit
  119. else
  120.  
  121. # Unset the proxy env vars before calling sqlplus
  122. unset_proxy_vars
  123.  
  124. echo "Shutting down Oracle Database instance $ORACLE_SID."
  125. $SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog << EOF
  126. connect / as sysdba
  127. shutdown immediate
  128. exit;
  129. EOF" > /dev/null 2>&1
  130. RETVAL=$?
  131. if [ $RETVAL -eq ]
  132. then
  133. echo "Oracle Database instance $ORACLE_SID shut down."
  134. fi
  135.  
  136. echo "Stopping Oracle Net Listener."
  137. $SU -s /bin/bash $ORACLE_OWNER -c "$LSNR stop $LISTENER_NAME" > /dev/null >&
  138. RETVAL1=$?
  139. if [ $RETVAL1 -eq ]
  140. then
  141. echo "Oracle Net Listener stopped."
  142. fi
  143. fi
  144.  
  145. echo
  146. if [ $RETVAL -eq ] && [ $RETVAL1 -eq ]
  147. then
  148. return
  149. else
  150. echo "Failed to stop Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr and Oracle Database using $ORACLE_HOME/bin/sqlplus."
  151. exit
  152. fi
  153. }
  154.  
  155. # To call DBCA to configure the DB
  156. configure_perform()
  157. {
  158. # Unset the proxy env vars before calling dbca
  159. unset_proxy_vars
  160.  
  161. echo "Configuring Oracle Database $ORACLE_SID."
  162.  
  163. $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"
  164.  
  165. RETVAL=$?
  166.  
  167. echo
  168. if [ $RETVAL -eq ]
  169. then
  170. 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."
  171. return
  172. else
  173. echo "Database configuration failed."
  174. exit
  175. fi
  176. }
  177.  
  178. # Enh - Unsets the proxy env variables
  179. unset_proxy_vars()
  180. {
  181. if [ "$http_proxy" != "" ]
  182. then
  183. unset http_proxy
  184. fi
  185.  
  186. if [ "$HTTP_PROXY" != "" ]
  187. then
  188. unset HTTP_PROXY
  189. fi
  190.  
  191. if [ "$https_proxy" != "" ]
  192. then
  193. unset https_proxy
  194. fi
  195.  
  196. if [ "$HTTPS_PROXY" != "" ]
  197. then
  198. unset HTTPS_PROXY
  199. fi
  200. }
  201.  
  202. # Check if the DB is already configured
  203. check_for_configuration()
  204. {
  205. configfile=`$GREP --no-messages $ORACLE_SID:$ORACLE_HOME /etc/oratab` > /dev/null >&
  206. if [ "$configfile" = "" ]
  207. then
  208. return
  209. fi
  210. return
  211. }
  212.  
  213. read_config_file()
  214. {
  215. if [ -f "$CONFIGURATION" ]
  216. then
  217. . "$CONFIGURATION"
  218. else
  219. echo "The Oracle Database is not configured. Unable to read the configuration file '$CONFIGURATION'"
  220. exit ;
  221. fi
  222. }
  223.  
  224. # Entry point to configure the DB
  225. configure()
  226. {
  227. check_for_configuration
  228. RETVAL=$?
  229. if [ $RETVAL -eq ]
  230. then
  231. echo "Oracle Database instance $ORACLE_SID is already configured."
  232. exit
  233. fi
  234. read_config_file
  235. check_port_availability
  236. check_em_express_port_availability
  237. configure_perform
  238. }
  239.  
  240. check_port_availability()
  241. {
  242. port=`netstat -n --tcp --listen | $GREP :$LISTENER_PORT`
  243. if [ "$port" != "" ]
  244. then
  245. echo "Port $LISTENER_PORT appears to be in use by another application. Specify a different port in the configuration file '$CONFIGURATION'"
  246. exit ;
  247. fi
  248. }
  249.  
  250. # Validation method to check for port availability for Oracle EM Express
  251. check_em_express_port_availability()
  252. {
  253. port=`netstat -n --tcp --listen | $GREP :$EM_EXPRESS_PORT`
  254. if [ "$port" != "" ]
  255. then
  256. 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'"
  257. exit ;
  258. fi
  259. }
  260.  
  261. restart()
  262. {
  263. # Check if the DB is already stopped
  264. pmon=`ps -ef | egrep pmon_$ORACLE_SID'\>' | $GREP -v grep`
  265. if [ "$pmon" = "" ]
  266. then
  267. start
  268. else
  269. stop
  270. start
  271. fi
  272. }
  273.  
  274. case "$1" in
  275. start)
  276. start
  277. ;;
  278. stop)
  279. stop
  280. ;;
  281. configure)
  282. configure
  283. ;;
  284. restart)
  285. restart
  286. ;;
  287. *)
  288. echo $"Usage: $0 {start|stop|restart|configure}"
  289. exit
  290. ;;
  291. esac
  292.  
  293. exit

执行脚本

  1. # 执行脚本之后将创建一个容器数据库(ORCLCDB)和一个可插拔数据库(ORCLPDB1),并且配置的默认监听端口是1521。注意 /opt 目录剩余空间大小
  2. /etc/init.d/oracledb_ORCLCDB-18c configure

查看 oratab

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

三、使用

  1. # 作用与 /etc/profile 一样
  2. vim /etc/profile.d/oracle.sh
  3.  
  4. export ORACLE_BASE=/opt/oracle/oradata
  5. export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
  6. export PATH=$ORACLE_HOME/bin:$PATH
  7. export ORACLE_SID=ORCLCDB
  8. export NLS_LANG=american_america.AL32UTF8
  9.  
  10. # 刷新环境变量
  11. source /etc/profile.d/oracle.sh

相关命令

  1. # 监听端口查看
  2. netstat -nultp | grep -E '1521|5500'
  3.  
  4. # 监听
  5. lsnrctl start
  6. lsnrctl stop
  7. lsnrctl stat
  8.  
  9. # 数据库
  10. dbstart $ORACLE_HOME
  11. dbshut $ORACLE_HOME

连接到 oracle 数据库

  1. # 切换到 oracle 用户,root 用户下无法连接
  2. su - oracle
  3.  
  4. # 启动监听
  5. lsnrctl start
  6.  
  7. # 以 sysdba 身份登录
  8. sqlplus / as sysdba

修改数据库密码

  1. -- 启动数据库
  2. startup;
  3.  
  4. -- 配置 system sys 账户的密码
  5. alter user system identified by oracle;
  6. alter user sys identified by oracle;
  7.  
  8. -- 版本查询
  9. select banner from sys.v_$version;
  10.  
  11. -- 查看所有用户
  12. select username from dba_users;

查看 em 界面,Oracle 18c 默认会开启 Enterprise Manager Database Express,修改完sys密码之后,就可以访问:https://IP:5500/em,忽略 https 证书错误,允许 Flash 加载

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

四、添加开机自启动

1.新建环境参数

  1. vim /etc/sysconfig/ORCLCDB.oracledb
  2.  
  3. ORACLE_BASE=/opt/oracle/oradata
  4. ORACLE_HOME=/opt/oracle/product/18c/dbhome_1
  5. ORACLE_SID=ORCLCDB

2.新建监听服务

  1. vim /usr/lib/systemd/system/ORCLCDB@lsnrctl.service
  2.  
  3. [Unit]
  4. Description=Oracle Net Listener
  5. After=network.target
  6.  
  7. [Service]
  8. Type=forking
  9. EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
  10. ExecStart=/opt/oracle/product/18c/dbhome_1/bin/lsnrctl start
  11. ExecStop=/opt/oracle/product/18c/dbhome_1/bin/lsnrctl stop
  12. User=oracle
  13.  
  14. [Install]
  15. WantedBy=multi-user.target

3.新建数据库服务

  1. vim /usr/lib/systemd/system/ORCLCDB@oracledb.service
  2.  
  3. [Unit]
  4. Description=Oracle Database service
  5. After=network.target lsnrctl.service
  6.  
  7. [Service]
  8. Type=forking
  9. EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
  10. ExecStart=/opt/oracle/product/18c/dbhome_1/bin/dbstart $ORACLE_HOME
  11. ExecStop=/opt/oracle/product/18c/dbhome_1/bin/dbshut $ORACLE_HOME
  12. User=oracle
  13.  
  14. [Install]
  15. WantedBy=multi-user.target

4.设置服务自启动

  1. # 刷新服务
  2. systemctl daemon-reload
  3.  
  4. # 设置开机自启动
  5. systemctl enable ORCLCDB@lsnrctl ORCLCDB@oracledb

5.设置数据库自启动

  1. # 此文件由 root.sh 创建
  2. # 格式为:$ORACLE_SID:$ORACLE_HOME:<N|Y>
  3. # 第一个和第二个字段分别是数据库的系统标识符和主目录。 第三个字段为是否跟随 dbstart 命令启动数据库实例
  4. # 不允许有相同 $ORACLE_SID 的条目
  5. vim /etc/oratab
  6.  
  7. ORCLCDB:/opt/oracle/product/18c/dbhome_1:Y

https://docs.oracle.com/en/database/oracle/oracle-database/18/ladbi/running-rpm-packages-to-install-oracle-database.html#GUID-BB7C11E3-D385-4A2F-9EAF-75F4F0AACF02

https://blog.csdn.net/hanzheng260561728/article/details/88202571

https://blog.csdn.net/vkingnew/article/details/83189454

CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例的更多相关文章

  1. Centos7上以RPM包方式安装Oracle 18c XE

    Centos7上以RPM包方式安装Oracle 18c XE 安装阿里云 YUM 源 https://opsx.alibaba.com/mirror?lang=zh-CN 一.安装oracle数据库 ...

  2. CentOS7 图形化方式安装 Oracle 18c 单实例

    下载 Oracle 数据库,zip 包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...

  3. MySQL在linux上的rpm包方式安装方法

    1.下载上传mysql server和client rpm包: [root@faspdev mnt]# ls MySQL-client-5.5.53-1.el6.x86_64.rpm MySQL-se ...

  4. RPM包方式安装Oracle21c的方法

    RPM包方式安装Oracle21c的方法 前言 北京时间2021.8.14 Oracle发布了最新的数据库版本Oracle21c, Oracle规划不再发布Oracle20c和Oracle22c, 直 ...

  5. MySQL使用RPM包方式安装

        CentOS7安装MySQL的方法之RPM包方式        

  6. Gitlab环境快速部署(RPM包方式安装)

    之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老.下面介绍使用rpm包安装Gitlab,下载地址:https://m ...

  7. CentOS 6.5 RPM包方式安装 Mysql 5.6

    1. 下载MySQL 5.6 下载页面:http://dev.mysql.com/downloads/mysql/此处选择“Red Hat Enterprise Linux 6 / Oracle Li ...

  8. CentOS7 图形化方式安装Oracle 18c 安装配置

    下载 Oracle 数据库,zip 包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...

  9. CentOS7下源码包方式安装rabbitmq

    1.先安装erlang http://www.cnblogs.com/justphp/p/6093880.html 2.下载rabbitmq rpm包: wget http://www.rabbitm ...

随机推荐

  1. BZOJ4205卡牌配对——最大流+建图优化

    题目描述 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不 ...

  2. Typora——安装Pandoc

    安装 打开typora,帮助-> Install and Use Pandoc  |  访问在线地址 https://support.typora.io/Install-and-Use-Pand ...

  3. M - 约会安排 HDU - 4553 线段树 (最长连续段)

    中文题面 思路:维和两个区间  一个是女神区间 一个是基友区间  如果是基友要预约时间 直接在基友区间查询可满足的起点 (这里先判tree[1].m >=length也就是有没有这样的区间满足时 ...

  4. jsp大学课程hi实验:分页在线测评(session的使用)

    project_1_updata_1_1.jsp <%@ page contentType="text/html;charset=utf-8" language=" ...

  5. 记一次Java调优案例分析

    上周,一同学给我发来,他们那里的案例 一看就是新生代产生过多对象,肯定是批量或者循环操作导致的,导致新生代一直在进行回收导致. 如果是老生代出现这样的问题,大部分情况下是列表或者集合导致的. 因此我们 ...

  6. 一种HBase表数据迁移方法的优化

    1.背景调研: 目前存在的hbase数据迁移主要分如下几类: 根据上图,可以看出: 其实主要分为两种方式:(1)hadoop层:因为hbase底层是基于hdfs存储的,所以可以通过把hdfs上的数据拷 ...

  7. hiho1258 Osu! Master

    题目链接:http://hihocoder.com/problemset/problem/1258 题目大意:看能连击的次数 思路:水 看有多少个1和s就好了 #include <stdio.h ...

  8. Shell 对整个文件夹中的文件进行MD5校验 [转]

    查看本地文件的 MD5 命令:md5sum FileName查看home目录下所有文件的 MD5 码:cd ~find /home -type f -print0 | xargs -0 md5sum ...

  9. 【CF850E】Random Elections(FWT)

    [CF850E]Random Elections(FWT) 题面 洛谷 CF 题解 看懂题就是一眼题了... 显然三个人是等价的,所以只需要考虑一个人赢了另外两个人就好了. 那么在赢另外两个人的过程中 ...

  10. Asp.Net Output.Write()

    string name="张三" <div> <label>@Output.Write(name)</label> </div> 在 ...