背景:为了自主学习oracle,我在借鉴网上许多博主的解决办法后,成功完成了从搭建Centos7虚机到安装oracle19c。详细的操作步骤如下(踩到的雷点均已解决):
以Vmware workstation新建虚拟机为例,跳过前面的傻瓜式安装。
一、编辑虚拟机设置,选取下载好的虚拟机镜像。
我的虚拟机配置如下:
第一次安装启动虚拟机报错了。
打开虚拟机目录,编辑.vmx文件,将scsi0.present = "TRUE"改为scsi0.present = "FALSE"。
二、打开虚拟机,操作系统初始化配置。
这里就按照大家的使用习惯选择即可。我这里选择的是中文、有桌面的系统。
三、关闭相关服务。
①关闭NetworkManager.service。首先输入systemctl status NetworkManager查看NetworkManager.service的运行状态,然后输入service NetworkManager stop/systemctl stop NetworkManager来停止该服务,再次输入systemctl status NetworkManager查看服务运行状态,该服务就已停止。新建的虚拟机可输入systemctl disable NetworkManager使该服务无法开机自启。
禁用原因:由于network服务和NetworkManager服务经常会出现冲突,而且一般NetworkManager会比较先启动,所以为了防止NetworkManager的启动导致我们直接配置的网络环境失效,我们需要禁用它!Centos6中,生产环境下 我们一般都是手动配置网络,以静态地址为主不需要系统的网络管理工具,往往会出现在KDE环境中,因此,我们就会将它禁用掉。Centos7后的版本兼容性会更好,也可以使用NetworkManager配置网络。
②关闭防火墙。输入以下命令以停止防火墙服务: systemctl stop firewalld,输入以下命令以禁止防火墙开机自启动: systemctl disable firewalld,确认防火墙已成功关闭。您可以通过输入以下命令来检查防火墙状态: systemctl status firewalld。
禁用原因:Linux 系统使用 iptables 软件作为防火墙,默认规则并不符合我们的需求,需要清除这些规则,所以关闭防火墙然后自定义 iptables 规则。关闭防火墙可以增强虚拟机内部的网络安全性。
③关闭selinux。输入以下命令来修改selinux配置文件,vim /etc/sysconfig/selinux,将SELINUX=enforcing改为SELINUX=disabled。
输入/usr/sbin/sestatus查看selinux状态是否为disabled。
若修改未生效,可reboot或sync重启后再次查看。
禁用原因: 同样 seLinux 服务也是默认启用的,系统上的一些应用程序可能不支持这种安全机制。因此需要禁用或关闭 seLinux。
四、配置虚拟机网络。
这里我选择的是NAT模式。NAT模式的核心功能是将虚拟机的内部IP地址转换成宿主机的外部IP地址。
新建虚机时,将虚拟网卡还原为默认配置,选择Vnet8虚拟网卡,网络适配器模式选为NAT模式,打开虚机后会按照DHCP的方式实现NAT模式。
若想要使用静态IP来实现NAT模式,要找到该虚机的IP地址、网关和掩码,修改配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens*,
将光标移到BOOTPROTO将dhcp改为static 即设置为静态ip,将ONBOOT=no 改为ONBOOT=yes表示将网卡设置为随系统一起启动,在末尾加入一下几行(示例):
IPADDR=192.168.20.150(为虚机分配的静态ip)
NETMASK=225.225.225.0
GATEWAY=192.168.20.2(ip要和默认网关是同源网段)
DNS1=8.8.8.8
接下来重启网络service network restart,再测试 ping baidu.com 看是否可上外网。
五、修改ssh配置文件。
案例:vim /etc/ssh/sshd_config(ssh配置文件修改)
有些机子并没有配置sshd的服务,故也没/etc/init.d/sshd 文件,需先下载相关依赖包。
配置依赖包参考 14安装依赖包。
sshd_config重点关注:
PermitEmptyPasswords #是否允许密码为空的用户远程登录。默认为"no"
PermitRootLogin #是否允许ssh远程登录root帐号,建议为no
ClientAliveInterval 0 #客户端连接数做限制,根据需求设置
UseDNS #指定sshd是否应该对远程主机名进行方向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。个人建议改成no,否则可能会导致ssh连接很慢
[root@localhost ssh]# cat sshd_config
Port 52168 #连接端口改为52168
PermitRootLogin no #不允许ssh远程登录root帐号
PermitEmptyPasswords no #不允许密码为空的用户远程登录
UseDNS no #不进行解析
systemctl list-unit-files --type=service //查看服务列表
发现有名为sshd.service的服务
systemctl restart sshd.service #重启服务,使SSH服务端配置生效
亲测有效!
六、安装oracle:
打开Mobaxterm,建立好SSH连接后,下文便是安装oracle的详细步骤了。
七、环境准备:
查看操作系统版本的命令是:cat /etc/redhat-release
上传介质。下载完成后上传到操作系统的预安装目录中。
新建一个目录命名为setupfile:mkdir -p /setupfile
查看目录:ls /
八、上传介质:
以root的身份在系统根目录下建立一个空目录,mkdir -p /setupfile
将安装包通过拖拽的方式,利用MobaXterm的SFTP协议将安装包拉入该目录下。
九、建立用户:
建立必要的用户/用户组和目录。
释义:增加用户组 组id为5001,组名称为dba,依次类推。
利用id oracle 可以看到,/usr/sbin/useradd -u 54321 -g oinstall -G
dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle的作用是:
新建一个oracle用户,其uid为54321,主组为oinstall1附属组为dba,asmdba,backupdba,dgdba,kmdba,racdba,oper。
新建用户oracle后,为其设置密码
passwd oracle 为oracle设置密码
十、建立基础目录。建立数据库目录:
mkdir -p /u01/app/oracle/{oraInventory,product/19.2.0/db}
递归修改子目录,子文件。
chown -R oracle:oinstall /u01
chmod -R 775 /u01
十一、修改操作系统参数:
vim /etc/security/limits.conf
soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);
reboot 重启后生效
十二、修改内核参数:
vim /etc/sysctl.conf。
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr=1048576
(1)kernel.sem
以kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
(2)fs.file-max
fs.file-max参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
fs.file-max为512 乘以 processes。
如128个process,则file-max=512*128=65536。
(3)net.core.rmem_default
net.core.rmem_default参数表示套接字接收缓冲区大小的缺省值。
(4)net.core.rmem_max
net.core.rmem_max参数表示套接字接收缓冲区大小的最大值。
(5)net.core.wmem_default
net.core.wmem_default参数表示套接字发送缓冲区大小的缺省值。
(6)net.core.wmem _max
net.core.wmem _max参数表示套接字发送缓冲区大小的最大值。
(7)fs.aio-max-nr
fs.aio-max-nr参数限制并发未完成的请求,应该设置避免I/O子系统故障。
使用sysctl -p验证配置是否修改成功。
十三、安装依赖包:
首先需要配置yum源,参考 配置yum源
yum install tigervnc-server tigervnc vnc vnc-server -y
yum -y install compat-libcap1 -y
yum -y install libstdc++-devel -y
yum -y install gcc-c++ -y
yum -y install ksh-20120801 -y
yum -y install glibc-devel-2.17 -y
yum -y install libaio-devel -y
yum -y install compat-libstdc++-33-3.2.3 -y
yum -y install compat-libstdc++ -y
yum install -y readline readline-devel zlib zlib-devel
注:配置yum源
- 阿里云yum源
验证网络是否可以连接阿里云镜像
ping mirrors.aliyun.com
①备份原有源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
②下载国内yum源配置文件到/etc/yum.repos.d/CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 清理yum缓存,并生成新的缓存
yum clean all
yum clean all:这个命令用于清理 YUM 缓存。执行该命令后,YUM 会删除所有已下载的包和头文件缓存,以及任何已启用的插件数据和旧的内核数据。执行这个命令可以释放磁盘空间并删除旧的缓存数据。
yum makecache
yum makecache:这个命令用于重新生成 YUM 缓存。执行该命令后,YUM 会下载软件包清单和元数据,并将其缓存到本地。这样做可以加快后续的软件包查询和安装速度。执行 yum makecache 可以确保你使用的 YUM 源中的最新软件包信息被正确地缓存,以便快速查找和安装软件包。
- 手动本地yum源
①创建本地源文件夹:
mkdir -p /media/centos/
将iso文件手动拖拽至/setupfile下
②[root@localhost ~]# find / -name '*.iso'
/setupfile/CentOS-7-x86_64-DVD-2207-02.iso
③挂载镜像文件至指定的目录。
mount /setupfile/CentOS-7-x86_64-DVD-2207-02.iso /media/centos/
④备份原本地源。
cp -rf /etc/yum.repos.d /etc/yum.repos.d_$(date '+%Y%m%d_%H%M%S')
⑤删除默认原本地源。
rm -rf /etc/yum.repos.d/*
⑥配置本地源,创建Media.repo文件。
vi /etc/yum.repos.d/Media.repo
⑦配置如下内容:
[iso]
name=Media
baseurl=file:///media/centos/
gpgcheck=0
enabled=1
按ESC。输入:wq保存完成编写,且完成本地源的配置。
⑧加载本地yum源&测试
# 清除yum缓存
yum clean all
# 缓存本地yum源
yum makecache
# 测试yum本地源
yum list
相比于网址的yum源,本地yum源下载速度更快,但也存在着本地yum不全的问题。
对于安装oracle来说,本人更推荐本地yum源(所需的依赖包本地yum源都有)。
十四、配置oracle环境变量(很容易出现中文双引号,记得修改成英文双引号):
su – oracle 切换到oracle用户
vim .bash_profile 编写oracle用户的环境变量
export PATH
ORACLE_SID=o19c;export ORACLE_SID
ORACLE_UNQNAME=o19c1;export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db; export ORACLE_HOME
NLS_DATE_FORMAT=”YYYY:MM:DDHH24:MI:SS”; export NLS_DATE_FORMAT
NLS_LANG=”SIMPLIFIED CHINESE_CHINA.AL32UTF8”; export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:$JAVA_HOME/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=LD_LIBRARY_PATH:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=CLASSPATH:ORACLE_HOME/jlib
CLASSPATH=CLASSPATH:ORACLE_HOME/rdbms/jlib
CLASSPATH=CLASSPATH:ORACLE_HOME/network/jlib
export CLASSPATH
export TEMP=/tmp
export TMPDIR=/tmp
umask 000
#alias s=’rlwrap sqlplus / as sysdba’
#alias sqlplus=’rlwrap sqlplus’
在安装依赖前,先注释掉
在配环境变量的时候注意要按照自己的安装路径来写。
source .bash_profile 启用oracle环境配置
利用env查看oracle环境配置是否成功
十五、解压安装文件zip到/u01/app/oracle/product/19.3.0/db,并且对解压文件授权:
我犯了一个低级错误:unzip不能识别带空格的名字
我的方向却反了,我以为unzip不能解压大文件,故去寻找其他解压方法。
实际上,将oracle压缩包重命名(不带空格,如Oracle1.zip),即可直接解压。
cd /u01/app/oracle/product/19.3.0/db 切换到安装包所在的文件夹下:
unzip Oracle1.zip 解压安装包
chown oracle:oinstall -R * 给所有的解压文件赋权。
十六、服务器安装图形界面:
这里我采用了导师建议的方法,利用MobaXterm实现服务器安装图形化界面。
在我本机上:su – oracle
export DISPLAY=192.168.1.195:0.0
/u01/app/oracle/product/19.2.0/db/runInstaller
十七、图形界面安装oracle:
安装Oracle数据库
- 选择创建并配置单实例数据库
2.选择server class(服务器类)
3.选择企业版
4.这里前面都配好了
5.
6.选择OLTP
7.默认下一步(依照着oracle环境变量定义数据库名字)
8.可以保持默认的内存参数
9.这里我的内存不够大了,所以换到了其他位置。(我在mnt/data重新挂载了一块硬盘)
10.
11.启用恢复
问题:之前环境变量里配置的路径容量不足
解决办法:新加硬盘,重新挂载/mnt/data,将oracle安到这里
12.选择统一用户名密码。
13.默认权限
14.最后一步输入操作系统root的密码
15.根据检查结果做相应的调整
警告消除后,重新安装即可。
十八、启动数据库实例:
sqlplus / as sysdba 使用 sqlplus 登录连接数据库
startup startup 启动数据库实例
select status from v$instance; 查看数据库实例状态