Bootstrap

Linux下RedHat7.6/7.9安装Oracle12C与11G

本文部分操作流程借鉴Linux下安装Oracle12C详解,并在此基础上记录一些个人遇到的问题,同时对原文进行了扩展说明。
首先是最基本要求:物理内存至少1G,占用硬盘至少15G

一、oracle11g、12c下载

下载方法

二、准备工作

(一)关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service 
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 查看防火墙状态
systemctl status firewalld.service

(二)关闭selinux

#查看是否开启
sestatus
#临时关闭
setenforce 0
#永久关闭
vi /etc/selinux/config
#修改内容
SELINUX=disabled

(三) 安装必要包

12C

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 gcc -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

为了便于下载离线包

yum reinstall --dowloadonly --downloaddir=/opt/setup_packages install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel 

11g

yum -y install bc binutils elfutils-libelf gcc gcc-c++ glibc glibc.i686 glibc-devel  glibc-devel.i686  ksh libaio libaio-devel libaio-devel.i686 libcap libXrender libX11 libXau libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686  libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686  libxcb  libibverbs make policycoreutils  smartmontools sysstat xdpyinfo elfutils-libelf-devel compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel ksh libaio-devel numactl-devel unixODBC unixODBC-devel

(四)创建swap

参考安装oracle12c swap不足
官方文档推荐:RAM<16G,swap为RAM的1.5倍;16G<=RAM<=64G,swap=RAM; >64G,swap为RAM的一半
#以16G内存为例,如设置不够,修改报busy,按以下方法执行
[root@VM-0-4-centos bin]# dd if=/dev/zero of=/home/swap bs=1024 count=16384000
dd: failed to open ‘/home/swap’: Text file busy
[root@VM-0-4-centos bin]# ^C
[root@VM-0-4-centos bin]# swapoff -a
[root@VM-0-4-centos bin]# dd if=/dev/zero of=/home/swap bs=1024 count=16384000
16384000+0 records in
16384000+0 records out
16777216000 bytes (17 GB) copied, 124.01 s, 135 MB/s
[root@VM-0-4-centos bin]# mkswap /home/swap
Setting up swapspace version 1, size = 16383996 KiB
no label, UUID=43b2b531-f722-4778-ab1f-5b9c3e8c0392
[root@VM-0-4-centos bin]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@VM-0-4-centos bin]# free -m
total used free shared buff/cache available
Mem: 15884 1831 172 32 13881 13682
Swap: 15999 0 15999
[root@VM-0-4-centos bin]#

三、创建 oracle 分区(硬盘空间不足时)

# 查看硬盘及分区信息(启动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

四、创建 oracle 目录(结合第三步)

# 创建目录
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

五、创建oracle用户与用户组、目录权限

# 创建oinstall和dba组
# groupadd -g 为新组使用 GID
# 组ID (GID)就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

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
# 查看创建结果
id oracle
​uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper)

六、配置内核参数

内核参数是一个很重要的优化系统性能的配置项,比如配置信号量,I/O,共享内存等参数配置,参考官方文档进行详细配置,官方文档对这方面有很详细的说明。如果你和我一样只是安装个Oracle用来学习那只需要使用官方文档中建议的最低配置就行。新增/etc/sysctl.d/98-oracle.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

使配置生效

/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf

七、配置linux内核参数参数

为了提高Oracle软件性能,需要为Oracle用户添加以下shell配置:
在这里插入图片描述
为oracle用户设置Shell限制:为了优化性能,需要添加oracle用户的限制参数。进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。 (文中所需要的软件包加最下面微信免费获取)

#vim /etc/security/limits.conf //在文件末尾添加下面内容

vim /etc/security/limits.conf
oracle          soft    nproc           2047
oracle          hard    nproc           16384
oracle          soft    nofile          1024
oracle          hard    nofile          65536
oracle          soft    stack           10240
oracle          hard    stack           32768

八、设置shell配置文件

vim /etc/profile

添加以下内容,保存退出

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi      
fi

生效

source /etc/profile

九、设置创建的数据目录权限

mkdir -p /u01/app
chown -R oracle:oinstall /u01
chmod -R 775 /u01

十、配置环境变量

su - oracle
vim ~/.bash_profile
#创建一个配置文件
PATH=$PATH:$HOME/.local/bin:$HOME/bin
 
export PATH
#Oracle
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"

执行命令使环境变量生效

source ~/.bash_profile

十一、解压oracle12c-linux-centos-x64.zip

#root
unzip oracle12c-linux-centos-x64.zip
chown -R oracle:oinstall database
su - oracle
cd /opt/database
#先安装图形工具(此步的用户要oracle用户直接登录,不能使用su - oracle,以上只是展示)
#为了防止弹窗无法正常显示,加上参数
./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

十二、安装图形化界面(如果没有图形界面)

(一)下载安装vncviewer

vncviewer下载地址
本文选择Standalone X64版本

(二)安装VNC server

需要放开5901端口

#新版vnc安装方法已被如下指令代替
yum install tigervnc-server

首次启动会要求设置密码,用来在客户端访问时使用,后面可以使用vncpasswd 修改


[root@VM-0-4-centos opt]# vncserver

You will require a password to access your desktops.

Password:
Password must be at least 6 characters - try again
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:

xauth:  file /root/.Xauthority does not exist
#记住此处生成的号码标识,代表几号gui窗口
New 'VM-0-4-centos:1 (root)' desktop is VM-0-4-centos:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/VM-0-4-centos:1.log

(三)与客户端vncviewer建立连接

查看是否安装Gnome桌面环境【vnc viewer连接黑屏可能没安装这个桌面环境】

yum grouplist

安装Gnome桌面环境

yum groupinstall "GNOME Desktop"

包很大有600多M

#重启
[root@VM-0-4-centos opt]# vncserver -kill :1
Killing Xvnc process ID 17662
#启动,对应如上的gui编号
[root@VM-0-4-centos opt]# vncserver :1

New 'VM-0-4-centos:1 (root)' desktop is VM-0-4-centos:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/VM-0-4-centos:1.log

点击客户端vncviewer左上角File,然后点击New Connection:
这里只需要填2个地方:
即VNC Server和Name(只是备注名)
VNC Server就是你需要访问的服务器的地址IP,注意:地址后面还要加上:1(对应服务端gui编号)(有时候连不上,我是换了一个2就可以了)
点击OK,创建连接
再只需双击这个连接,即可启动。
ps:如下即可配合客户端vnc打开窗口
使用vncserver –list 可查看启动了多少个桌面

十三、正式安装

客户端vncviewer打开终端执行

su - oracle
cd /opt/database/
./runInstaller

最经常遇到的就是报错 Could not execute auto check for display colors
在Linux/Unix类操作系统上的GUI应用程序使用X Window系统(X Window System),它旨在允许多个用户使用窗口化的应用程序通过网络访问计算机。 DISPLAY环境变量用来设置将图形显示到何处。直接登录图形界面或者登录命令行界面后使用startx启动图形,DISPLAY环境变量自动设置为:0:0,此时可以打开终端,输入图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上。

#此处尝试过DISPLAY=:0.0,死活都不弹出图形界面,改成:1.0后成功(oracle用户下也用:1.0)
[root@localhost ~]# export DISPLAY=:1.0
[root@localhost ~]# cd /usr/bin
#这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上.
[root@localhost ~]# xhost +
access control disabled, clients can connect from any host
#时钟测试
[root@hgLiao ~]# yum install xorg-x11-apps
#当出现Warning: Missing charsets in String to FontSet conversion时
#输入export LANG=C即可解决
[root@localhost ~]# export LANG=C
[root@localhost ~]# xclock

oracle对应的选择显示界面

[oracle@VM-0-4-centos database]$ export DISPLAY=:1.0
#为了防止出现弹窗不显示的BUG,加上参数
[oracle@VM-0-4-centos database]./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

成功启动图形化界面
相关步骤见
Linux下安装Oracle12C详解第13章

执行2个sh

[root@phoyclxag38kkwuf home]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@hgLiao ~]# /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] : 
yes
Installing Oracle Trace File Analyzer (TFA).
Log File: /u01/app/oracle/product/12.2.0.1/db_1/install/root_hgLiao_2023-04-21_17-24-33-332468918.log
Finished installing Oracle Trace File Analyzer (TFA)
[root@hgLiao ~]# 

为了更好的理解oracle安装过程,我们将数据库安装与数据库创建分开
安装数据库

相关报错:

1、报错的日志文件中提示INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’
网上说换从其他系统中复制一个过来,但是我复制失败,系统不识别,把原文件重命名一次,再改回原名字libstdc++.so.5就可以了就可以了
2.
在这里插入图片描述
重新安装gcc相关包,特别是cpp-*
3.
在这里插入图片描述

按报错路径打开文件,加入红色部分并保存退出
在这里插入图片描述
4.
在这里插入图片描述
按报错路径打开文件,加入红色部分并保存退出(lnnz11)
在这里插入图片描述

十四、监听器

[oracle@hgLiao ~]$ netca

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果出现报错,是由于/etc/hosts表里IP或主机名问题导致。

[root@hgLiao ~]# cat /etc/hostname
hgLiao
[root@hgLiao ~]# vim /etc/hosts
#对比环境变量中的$ORACLE_HOST的值是否一致

在这里插入图片描述
修改hosts文件后退出安装程序,重新netca
在这里插入图片描述
在这里插入图片描述

十五、dbca

注:11g的dbca参考此处RedHat7.9安装Oracle11g
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据需要设置Global database name(也是SID),不勾选Create as Container database,创建完数据库后要设置ORACLE_SID变量为这个SID,注意,大小写敏感!“Global database name”作为注册时的service name与SID不同,客户端连接时指定service name
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此步可能报错[DBT-06103] The port (5,500) is already in use.实际任何端口都不行,问题出在hostname上
vim /etc/hosts 添加如下最后一行

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.30   phoyclxag38kkwuf.novalocal phoyclxag38kkwuf

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
安装比较慢
在这里插入图片描述
配置不高的服务器运行相当缓慢
数据库建完会自动启动,设置ORACL_SID为之前填写的SID,然后就可以sqlplus / as sysdba登录了。

十二、TNS配置(服务端)

[oracle@phoyclxag38kkwuf bin]$ netmgr

已经自动设置好了
在这里插入图片描述

十三、服务端与客户端(配置plsqldev)

服务端需要配置listener.ora,tnsnames.ora
客户端要配置tnsnames.ora(只要把服务端的tns复制过来,HOST改为服务端IP即可)
主要步骤就是:下载plsql与oracle client ,特别注意位数要相同,一般都是32位
配置3个环境变量,配置plsql库文件
我的服务端参考

[oracle@phoyclxag38kkwuf admin]$ pwd
/u01/app/oracle/product/12.2.0.1/db_1/network/admin
[oracle@phoyclxag38kkwuf admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora

listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

tnsnames.ora

LISTENER_ASSETS =
  (ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))


ASSETS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = phoyclxagxxxx.novalocal)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = assets)
    )
  )

我的客户端参考

cyun_assets =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 117.xx.xx.181)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = assets)
    )
  )

在这里插入图片描述
至此安装完成

十四 防火墙相关(需要放开1521商品,plsql工具才可以访问)

1、查看防火墙状态

systemctl status firewalld

2、如果不是显示active状态,需要打开防火墙

systemctl start firewalld

3、查看所有已开放的临时端口(默认为空)

firewall-cmd --list-ports

4、 查看所有永久开放的端口(默认为空)

firewall-cmd --list-ports --permanent

5、 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)

firewall-cmd --add-port=223/tcp

6、 添加永久开放的端口(例如:223端口)

firewall-cmd --add-port=223/tcp --permanent
需要重启防火墙生效

7、关闭临时端口
firewall-cmd --remove-port=80/tcp

8、 关闭永久端口

firewll-cmd --remove-port=80/tcp --permanent

9、 配置结束后需要输入重载命令并重启防火墙以生效配置

firewall-cmd --reload

systemctl restart firewalld

;