添加用户
添加 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 |