大家好!我是互联网-小啊宇 ~主要从事运维相关工作。喜欢写博客来记录自己学习的点点滴滴,很高兴可以把每篇文章分享给面前的你,如果对你有帮助不妨点个关注。
✨这篇文章主要讲解Linux服务器如何搭建Oracle 12c数据库
官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/index.html
点开以后什么都不需要设置,进来之后就点完成
设置root账号密码
修改完成后:
ESC #退出编辑模式
:wq #保存并退出
重启网络
测试查看ip、联网情况
成功
官方安装文档
https://oracle-base.com/articles/12c/oracle-db-12cr2-installation-on-oracle-linux-6-and-7
首先下载安装包
Oracle 12C安装包
链接:https://pan.baidu.com/s/1GYgSF2gPhhHg94hsEfChcw
提取码:p8u4
hostname: ol7-122.localdomain
hosts: 192.168.1.10 ol7-122.localdomain ol7-122
[root@localhost ~]# vi /etc/hosts
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 查看防火墙状态
systemctl status firewalld.service
# 编辑文件
vi /etc/selinux/config
# 修改内容
SELINUX=disabled
使用 yum 批量安装依赖包,若执行一遍失败则继续执行第二遍(多次执行不会出现其他问题)
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install make -y
yum install nfs-utils -y
yum install net-tools -y
yum install smartmontools -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
检查是否安装成功(31个安装包)
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
我建议swap还是要重新创建一下,不然后面oracle典型安装得时候swap空间不足报警;
高级安装可以自定义内存大小;
下面以8G为例操作:(我设置得swap与运行内存相同)
如果你本来就又swap(不是0),也可以直接按下面的步骤进行,重新设置是没有问题的。
1、查看当前内存
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 733M 5.3G 33M 1.6G 6.5G
Swap: 5.0G 0B 5.0G
2、创建用于交换分区的文件:增加2G大小的交换分区,count等于想要的块大小 (1024000x8)
[root@localhost ~]# dd if=/dev/zero of=/home/swap bs=1024 count=8192000
记录了8192000+0 的读入
记录了8192000+0 的写出
8388608000字节(8.4 GB)已复制,26.9355 秒,311 MB/秒
3、设置交换分区文件
[root@localhost ~]# mkswap /home/swap
正在设置交换空间版本 1,大小 = 8191996 KiB
无标签,UUID=e4a6e8b2-dedf-4075-a0a4-d96e1d0d8fbf
4、立即启用交换分区文件
[root@localhost ~]# swapon /home/swap
swapon: /home/swap:不安全的权限 0644,建议使用 0600。
5、再查看内存情况,swap就出来了(下方的12G是把原来的5G加上了,都操作完重启之后5G就没了)
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 740M 126M 31M 6.8G 6.5G
Swap: 12G 2.0M 12G
如果想使得开机自启动,想要修改文件/etc/fastb 修改swap行
#
# /etc/fstab
# Created by anaconda on Mon Dec 6 20:50:25 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=e4f255cc-23a0-49be-95a6-e8e80675aa9f /boot xfs defaults 0 0
/home/swap swap swap defaults 0 0
~
修改完之后重启
[root@localhost ~]# reboot
[root@ol7-122 ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 402M 6.8G 16M 407M 6.9G
Swap: 7.8G 0B 7.8G
如果你操作系统原有分区都合适,这步可以忽略
# 查看硬盘及分区信息(启动Disk开头的就是硬盘,Device开头的就是分区)
fdisk -l
# 创建分区(/dev/sdb 是硬盘,是你需要创建分区的硬盘,创建分区后会生成 /dev/sdb1,如果本来有sdb1,则会出现sdb2)
fdisk /dev/sdb
# 格式化新创建的分区
mkfs.xfs /dev/sdb1
# 将分区添加到 /etc/fstab 文件中,使之开机自动挂载(编辑保存 fstab 文件后不会立即生效)
vim /etc/fstab
/dev/sdb1 /u01 xfs defaults 0 0
# 创建目录
mkdir /u01
# 重新加载文件 /etc/fstab 所有内容。该操作会忽略所有已经完成的操作,所以多次执行,只会有第一次能看到效果。
mount -a
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 12G 8.7G 57% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 2.0G 179M 1.9G 9% /boot
/dev/mapper/centos-home 10G 33M 10G 1% /home
tmpfs 781M 4.0K 781M 1% /run/user/42
tmpfs 781M 52K 781M 1% /run/user/0
/dev/sdb 20G 33M 20G 1% /u01
(我们在上面创建的桌面化虚拟机所以这步跳过;
如果最开始安装的是最小化的则需要安装桌面化)
方式一:针对最小化安装的系统
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 升级系统
yum clean all && yum update -y
# 安装桌面环境(两个组包必须,不然安装oracle会出现卡死现象)
yum groupinstall "GNOME Desktop" "Server with GUI" -y
# 安装完毕设置开机启动桌面环境
systemctl set-default graphical.target
方式2 : 预装系统时勾选桌面环境功能
# 创建oinstall和dba组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
# 创建oracle用户
useradd -u 54321 -g oinstall -G dba,oper oracle
# 设置oracle密码
passwd oracle
# 查看创建结果
[root@ol7-122 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) 组=54321(oinstall),54322(dba),54323(oper)
配置内核参数(这些参数根据你机器的配置不同,有些参数需要再次修改,在安装oralce过程中的check那一步,会给出提示,按要求逐个修改对应的推荐值即可)
[root@ol7-122 ~]# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
[root@ol7-122 ~]# sysctl -p
# 配置ulimit参数
vi /etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
# 设置上面创建的数据目录权限
mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01
reboot
Oracle 12C安装包
链接:https://pan.baidu.com/s/1GYgSF2gPhhHg94hsEfChcw
提取码:p8u4
mkdir /home/oracle/scripts
cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=\$TMP
export ORACLE_HOSTNAME=ol7-122.localdomain
export ORACLE_UNQNAME=zhufuc
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_SID=zhufuc
export PATH=/usr/sbin:/usr/local/bin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
# 执行命令使环境变量生效
source /home/oracle/.bash_profile
假设 oracle 文件已经下载到 /opt/linuxx64_12201_database.zip
使用图形化安装方式,你可以直接在原服务器上连接显示器安装,或者使用其他 ssh 远程安装(不带图形化的静默安找找度娘)。 如果使用
Xshell 这种工具安装(需要开启X11,可以参考:Xshell 显示图形化界面)
[root@ol7-122 ~]# cd /opt
[root@ol7-122 opt]# ls
linuxx64_12201_database.zip rh
[root@ol7-122 opt]# unzip linuxx64_12201_database.zip
给oracle用户安装目录的权限
[root@ol7-122 opt]# chown -R oracle:oinstall database/
[root@ol7-122 opt]# chmod -R 775 database/
[root@ol7-122 opt]# ll
总用量 3372752
drwxrwxr-x 7 oracle oinstall 117 1月 27 2017 database
-rw-r--r-- 1 root root 3453696911 12月 6 14:30 linuxx64_12201_database.zip
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
准备安装的时候
切记!切记!切记!
如果是虚拟机请切换用户重新登陆
如果是xshell也请切换用户重新连接
不要使用su - oracle 后面执行安装脚本会报错!
虚拟机切换用户:
[oracle@ol7-122 ~]$ cd /opt
[oracle@ol7-122 opt]$ ./database/runInstaller
正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 500 MB。 实际为 25677 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 7999 MB 通过
检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2021-12-06_02-40-45PM. 请稍候...
会进行检查,如果之前swap跟我一样设置了这里不会报swap空间不足!如果没有其他报错!则成功跳转下个界面。
如果选择典型安装,swap大小是根据你的运行内存大小而定!
如果选择高级安装,swap使用大小可以调整!
到这里就可以进行安装了!安装完就成功了!
我在创建虚拟机的时候磁盘没给够,所以我就不选择恢复区了。直接下一步
安装
根据提示操作使用root用户
[root@ol7-122 /]# /u01/app/oraInventory/orainstRoot.sh
更改权限/u01/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/u01/app/oraInventory 到 oinstall.
脚本的执行已完成。
[root@ol7-122 /]# /u01/app/oracle/product/12.2.0.1/db_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.2.0.1/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :
Oracle Trace File Analyzer (TFA - User Mode) is available at :
/u01/app/oracle/product/12.2.0.1/db_1/suptools/tfa/release/tfa_home/bin/tfactl
OR
Oracle Trace File Analyzer (TFA - Daemon Mode) can be installed by running this script :
/u01/app/oracle/product/12.2.0.1/db_1/suptools/tfa/release/tfa_home/install/roottfa.sh
脚本执行完毕后,点击确定继续安装。
如下图:
证明安装完毕,https://ol7-122.localdomain:5500/em
这个地址是Oracle的em地址,web界面
域名则对应的是你的Linux服务器IP
现在访问不了可能是浏览器不支持flash
其实原页面是这样的:
安装后
使用oracle用户编辑“ /etc/oratab”文件,将每个实例的重新启动标志设置为“ Y”。
zhufuc:/u01/app/oracle/product/12.2.0.1/db_1:Y
cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
EOF
cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
EOF
chown -R oracle.oinstall /home/oracle/scripts
chmod u+x /home/oracle/scripts/*.sh
注释:如果执行脚本报错dbstart、dbshut找不到命令
可直接使用命令操作
dbstart /u01/app/oracle/product/12.2.0.1/db_1
dbshut /u01/app/oracle/product/12.2.0.1/db_1
su - oracle
~/scripts/start_all.sh # 启动脚本
~/scripts/stop_all.sh # 停止脚本
# 使用 telnet 测试服务端口
telnet 127.0.0.1 1521
# 使用 sqlplus 登录数据库
sqlplus /nolog
conn / as sysdba
创建一个新服务以自动启动/停止Oracle数据库。这是假定Oracle数据库不使用Oracle重新启动和“start_all.sh”和“stop_all.sh”脚本已经存在
创建名为“ /lib/systemd/system/dbora.service”的服务文件。
vi /lib/systemd/system/dbora.service
[Unit]
Description=The Oracle Database Service
After=syslog.target network.target
[Service]
# systemd ignores PAM limits, so set any necessary limits in the service.
# Not really a bug, but a feature.
# https://bugzilla.redhat.com/show_bug.cgi?id=754285
LimitMEMLOCK=infinity
LimitNOFILE=65535
#Type=simple
# idle: similar to simple, the actual execution of the service binary is delayed
# until all jobs are finished, which avoids mixing the status output with shell output of services.
RemainAfterExit=yes
User=oracle
Group=oinstall
Restart=no
ExecStart=/bin/bash -c '/home/oracle/scripts/start_all.sh'
ExecStop=/bin/bash -c '/home/oracle/scripts/stop_all.sh'
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl stop dbora.service
systemctl start dbora.service
systemctl enable dbora.service
至此,Oracle 数据库安装结束。