一直以来安装oracle数据库都是用的图形化界面, 也一直知道可以用命令行安装。 大概知道步骤,没亲自尝试, 这次有空试了一般。 还是很方便的。
ps. 由于bug问题,其实有一步还是不得不用图形界面,是操作系统太新的原因。如果是旧一点的,例如linux 6就没这个问题。
本文适合没有图形界面的机器或者不能远程图形访问的时候,使用ssh安装oracle 数据库。
以下是详细步骤, 供参考。
操作系统
Oracle Linux 7.9
数据库
11.2.0.4
详细步骤
准备安装环境
最小化安装 oracle linux 7.9
关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ; sed -i "s/SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
防火墙设置
firewall-cmd --zone=public --add-port=1521/tcp --permanent && firewall-cmd --reload
重启
#否则 id oracle 出现 uid=54321(oracle) ... context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
reboot
软件包和操作系统配置
参考 yum install https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum -y install GeoIP bind-libs bind-libs-lite bind-license bind-utils compat-libcap1 compat-libstdc++-33 geoipupdate glibc-devel glibc-headers gssproxy kernel-headers keyutils ksh libICE libSM libX11 libX11-common libXau libXext libXi libXinerama libXmu libXrandr libXrender libXt libXtst libXv libXxf86dga libXxf86misc libXxf86vm libaio-devel libbasicobjects libcollection libdmx libevent libini_config libnfsidmap libpath_utils libref_array libstdc++-devel libtirpc libverto-libevent libxcb lm_sensors-libs mailx net-tools nfs-utils psmisc quota quota-nls rpcbind smartmontools sysstat tcp_wrappers unzip xorg-x11-utils xorg-x11-xauth
yum -y install unzip xclock gcc gcc-c++ elfutils-libelf-devel
yum -y remove ksh
yum -y localinstall /software/pdksh-5.2.14-37.el5.x86_64.rpm
配置操作系统参数
cat >> /etc/sysctl.conf<<EOF
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
EOF
sysctl -p
cat >>/etc/security/limits.conf<<EOF
oracle hard nofile 65536
EOF
创建安装账号和安装目录
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
useradd -u 54321 -g oinstall -G dba,oper oracle
echo Oracle_123|passwd --stdin oracle
mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/
cat >> /home/oracle/.bash_profile <<EOF
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=\${PATH}:\$ORACLE_HOME/bin
EOF
准备开始安装
安装前确保 swap >= 8G 可以临时加
dd if=/dev/zero of=/tmp/swap bs=1M count=8192
mkswap /tmp/swap && chmod 600 /tmp/swap && swapon /tmp/swap
以oracle账户运行 先解压
cd /tmp/; unzip /software/p13390677_112040_Linux-x86-64_1of7.zip ; unzip /software/p13390677_112040_Linux-x86-64_2of7.zip
注意事项, 因为oracle 11.2.0.4 出现的 oracle linux 7 晚, 这儿有一个bug, 所以安装的时候并不能完全无图形界面, 如果是 linux 6 就可以完全没有图形界面安装。
很遗憾, 这儿需要图形界面,如果有人知道怎么避免,可以留言。
/tmp/database/runInstaller
中间安装到 86%的时候会报错, 报错内容和解决方法如下
Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'.
See '/u01/app/oraInventory/logs/installActions.....log' for details
解决方案: 保留安装过程,另外开启一个终端窗口,修改 $ORACLE_HOME/sysman/lib/ins_emagent.mk 将 176行 $(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
安装快结束时根据提示以root账号运行
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
接下来创建监听器和数据库就可以不用图形界面了
以oracle账户 配置 oracle监听服务
netca -silent -responseFile ${ORACLE_HOME}/assistants/netca/netca.rsp
以oracle账户 使用图形界面保存的脚本,执行静默创建数据库 根据提示输入 SYS/SYSTEM 密码 例如 Oracle_1qaz
cd scripts ; ./orcl.sh
orch.sh和其他用到的脚本是图形界面安装的时候保存的, 太长了,贴不出来 。 需要的话, 可以留言找我要。
cloneDBCreation.sql CloneRmanRestore.sql init.ora initorclTemp.ora lockAccount.sql orcl.sh orcl.sql postDBCreation.sql postScripts.sql rmanRestoreDatafiles.sql