添加用户
添加 oracle 用户并设置用户密码。
1 | adduser oracle |
添加 oinstall 和 dba 组。
1 | groupadd oinstall |
设置 oracle 用户的主组为 oinstall 附加组为 dba。
1 | usermod -g oinstall -G dba oracle |
新建目录并设置权限
新建 u01 目录。
1 | mkdir /u01 |
打开 /etc/fstab 文件,添加以下内容:
1 | /dev/sdb1 /u01 xfs defaults 0 0 |
重启或执行以下命令,将 sdb1 分区挂载到 u01 目录。
1 | mount -a |
新建 oracle 和 oraInventory 目录。
1 | mkdir -p /u01/app/oracle |
分别将它们指定为 dba 和 oinstall 组。
1 | chown -R oracle:dba /u01/app/oracle |
配置环境变量
打开 /home/oracle/.bash_profile 文件,配置环境变量。
1 | export ORACLE_BASE=/u01/app/oracle |
安装 Oracle Database 19c
从 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 选择 Linux x86-64 用迅雷下载 Oracle Database 19c,使用 WinSCP 上传到 Linux。新建 dbhome_1 目录并解压 LINUX.X64_193000_db_home.zip。
1 | mkdir -p /u01/app/oracle/product/19.3/dbhome_1 |
指定所有者和组。
1 | chown -R oracle:dba /u01/app/oracle |
使用 oracle 用户登录 CentOS 7 图形界面,打开终端执行以下命令运行 runInstaller 安装脚本。
1 | /u01/app/oracle/product/19.3/dbhome_1/runInstaller |
然后在弹出的安装界面参考以下步骤安装:
- 配置选项,选择“仅设置软件”;

- 数据库安装选项;

- 数据库版本;

- 安装位置;

- 创建产品清单;

- 操作系统组,数据库操作员组选择“dba”;

- Root 脚本执行,勾选“自动运行配置脚本”,使用“root”用户身份证明并输入口令;

- 先决条件检查,修补并再次检查,对于不可修复的需要手动修复后重新检查;

- 概要;

- 安装产品,点击“是”继续;

- 完成。

监听程序与本地 Net 服务名配置
执行以下命令配置监听程序与本地 Net 服务名:
1 | netca |
创建数据库
执行以下命令创建数据库:
1 | dbca |
设置开机自启动
打开 /etc/oratab 文件,将 orcl:/u01/app/oracle/product/19.3/dbhome_1:N 修改为 orcl:/u01/app/oracle/product/19.3/dbhome_1:Y。然后再打开 /etc/rc.d/rc.local 文件,添加以下内容:
1 | su oracle -lc "/u01/app/oracle/product/19.3/dbhome_1/bin/lsnrctl start" |
执行以下命令使 rc.local 文件具有可执行权限:
1 | chmod +x /etc/rc.d/rc.local |
开放端口
执行以下命令开放 1521 端口:
1 | firewall-cmd --zone=public --add-port=1521/tcp --permanent |
重新加载 firewalld,使规则立即生效。
1 | firewall-cmd --reload |
问题及解决方法
以下是安装时先决条件检查失败及未设置开机自启动会遇到的问题,对于 ORA-12541、ORA-12514 和 ORA-01034 问题,其实设置开机自启动后就可以不用理会了,写出来主要是一些时候方便参考。
先决条件检查失败
- 操作系统内核参数
shmmax
要确定共享内存段的最大大小,请运行:
1 | cat /proc/sys/kernel/shmmax |
shmmax 可以在 /proc/sys/kernel/shmmax 文件或执行以下命令(4x1024x1024x1024=4G)更改而无需重新启动。
1 | sysctl -w kernel.shmmax = 4294967296 |
要使更改永久生效,请将以下内容添加到 /etc/sysctl.conf 文件并重新启动。
1 | kernel.shmmax = 4294967296 |
- 交换空间大小
在分区时,如果合理分配交换分区就不会存在这个问题了,不过也可以通过添加交换文件的方式来增加交换空间大小。首先要生成 2G 的 swapfile 文件:
1 | dd if=/dev/zero of=swapfile bs=1M count=2048 |
将 swapfile 文件格式化为交换文件。
1 | mkswap swapfile |
启用交换文件。
1 | swapon swapfile |
在 /etc/fstab 文件添加以下内容,以便在重新启动时启用。
1 | /swapfile swap swap defaults 0 0 |
- 程序包
使用 yum 安装依赖的程序包。
ORA-12541: TNS:no listener
执行以下命令,启动监听。
1 | lsnrctl start |
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
打开 /u01/app/oracle/product/19.3/dbhome_1/network/admin/listener.ora 文件,添加以下内容:
1 | SID_LIST_LISTENER = |
ORA-01034: ORACLE not available
打开 SQL Plus,使用 sys 用户强制关闭,再启动数据库。
1 | sqlplus /nolog |