Oracle安装(CentOS8)

官方链接:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/index.html

https://oracle-base.com/articles/12c/articles-12c#database-12cr2-installations

https://oracle-base.com/articles/12c/oracle-db-12cr2-installation-on-oracle-linux-6-and-7

GUI安装

VMware

2G 2核

下载软件

略…

解压缩文件

1
unzip /mnt/hgfs/SharedFolders/linuxx64_12201_database.zip -d /opt

Hosts文件(跳过)

/etc/hosts 文件必须包含服务器的标准名称。

1
<IP-address>  <fully-qualified-machine-name>  <machine-name>

例子:

1
2
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.56.107 zhaolq.com zhaolq

/etc/hostname 中设置正确的主机名

1
zhaolq.com

Oracle安装先决条件

执行自动设置手动设置以完成基本先决条件。所有安装都需要附加设置

自动设置

如果计划使用 oracle-database-server-12cR2-preinstall 软件包执行所有必备安装程序,请发出以下命令。

1
# yum install oracle-database-server-12cR2-preinstall -y

值得进行完整更新,但这不是必须的。

1
# yum update -y

值得运行手动设置中列出的所有YUM命令。根据您选择的OS软件包组,可能还需要一些其他软件包。

手动设置

如果尚未使用 oracle-database-server-12cR2-preinstall 软件包执行所有先决条件,则需要手动执行以下安装任务。

修改内核参数

相关链接:

设置Linux内核参数 /etc/sysctl.conf

Linux 内核参数详解-KERNEL

将以下行添加到 /etc/sysctl.conf 文件或名为 /etc/sysctl.d/98-oracle.conf 的文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

从配置文件 /etc/sysctl.conf 加载内核参数设置:

1
2
3
/sbin/sysctl -p # 使"/etc/sysctl.conf"更改立即生效
# Or 具体取决于您编辑的文件。
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf

对Oracle用户设置限制并重启

相关链接

linux文件描述符文件/etc/security/limits.conf

/etc/security/limits.conf配置文件详解

修改 /etc/security/limits.conf 文件

1
2
3
4
5
6
7
8
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 soft memlock 134217728
oracle hard memlock 134217728

将以上内容添加到名为 /etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf 的文件中??????????????

安装依赖包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# OL6 and OL7 (RHEL6 and RHEL7)
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 libnsl -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

# Required for 12.1, not listed for 12.2
yum install gcc -y
yum install gcc-c++ -y
yum install libXext -y
#yum install libXext.i686 -y
yum install zlib-devel -y
#yum install zlib-devel.i686 -y

# OL6 only (RHEL6 only)
yum install e2fsprogs -y
#yum install e2fsprogs-libs -y
yum install libs -y
#yum install libxcb.i686 -y
yum install libxcb -y

附加设置

无论是手动还是自动设置,都必须执行以下步骤。

创建组和用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
groupadd -g 54321 oinstall # 创建用户组oinstall
groupadd -g 54322 dba # 创建用户组dba
groupadd -g 54323 oper # 创建用户组oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba

useradd -u 54321 -g oinstall -G dba,oper -m oracle # 创建oracle用户,指定用户ID,指定所属群组和附加群组

passwd oracle # 为oracle用户设置密码

id oracle # 查看新建的oracle用户
uid=1001(oracle) gid=1002(dba) groups=1002(dba)

Terminal方向键和Tab键不能用:

问题描述:用 useradd 命令新增了用户之后,发现在该新建用户下的命令终端,使用方向键无法调出历史命令,同时tab键也无法补全输入命令。

问题解决:在 /etc/passwd 中发现,该新建用户使用的 shell 为 /bin/sh ,而能正常使用的用户 shell 为 /bin/bash ,通过 ls -l /bin/sh 查看 /bin/sh 得知,在ubuntu系统中,/bin/sh 默认链接为 dash。因此,只需要在 /etc/passwd 中修改该用户对应的 shell 为 /bin/bash 即可解决该问题。

设置 selinux

安全增强式Linux - 维基百科

SELinux - CentOS Wiki

编辑 /etc/selinux/config

1
2
3
4
5
SELINUX=permissive # 设置 secure Linux 为宽松
SELINUX=disabled # 禁用

# 更改完成后,请重新启动服务器或运行以下命令。
setenforce Permissive

禁用防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld # 禁用,关闭开机自启

创建Oracle软件安装目录

创建数据库软件目录和数据文件存放目录,目录位置根据自己的情况来定,注意磁盘空间即可,这里把其放到 oracle 用户下:

1
2
3
mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01 # 或者 chmod ug+rwx /u01 && chmod o=rx /u01

创建脚本

创建脚本目录

1
mkdir /home/oracle/scripts

提示:使用 cat 命令创建脚本,所有 $ 字符都需转义。如果要手动创建这些文件,而不是使用 cat 命令,必须删除 $ 字符之前的 \ 字符。

Oracle环境变量脚本

创建一个名为 setEnv.sh 的环境文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=\$TMP

#export ORACLE_HOSTNAME=zhaolq.com
#export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_SID=orcl

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


# 以下为了解决客户端乱码,可忽略
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

/home/oracle/.bash_profile 文件的末尾添加对 setEnv.sh 文件的引用。

1
echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
数据库启动/停止脚本

创建可从启动/关闭服务调用的 start_all.shstop_all.sh 脚本,确保所有权和权限正确。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 启动脚本 start_all.sh
cat > /home/oracle/scripts/start_all.sh <<EOF
# !/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO # 是否询问ORACLE_SID选择,详情见oraenv文件。whereis oraenv
. oraenv
export ORAENV_ASK=YES

# dbstart会调用/etc/oratab文件。$ORACLE_HOME为了指定ORACLE_HOME_LISTNER变量,详情见dbstart文件。whereis dbstart
dbstart \$ORACLE_HOME
EOF

# 停止脚本 stop_all.sh
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

Oracle安装完成并编辑了 /etc/oratab 后,就可以使用 oracle 用户运行以下脚本来启动/停止数据库。

1
2
~/scripts/start_all.sh
~/scripts/stop_all.sh

可以在此处查看如何创建Linux服务以自动启动/停止数据库 (OL6, OL7) 。

安装GUI

略…

安装Oracle

1
2
$ cd /opt/database
$ ./runInstaller

安装界面中文乱码

方法一:使用英文字符集

1
2
3
4
5
6
7
8
9
10
# 系统字符集查看
echo $LANG
env | grep LANG
export | grep LANG
locale
locale --help
locale -a # 所有可用字符集

# 修改字符集的方式
export LANG=en_US.UTF-8 # 临时修改

方法二:安装中文字体

1
2
3
4
# 查看系统已安装的字体
fc-list
# 查看系统已安装的中文字体
fc-list :lang=zh

把 Windows 系统 C:\Windows\Fonts 目录下需要的中文字体文件复制到 CentOS 下的 /usr/share/fonts/chinese/ 目录下,然后执行以下命令安装字体:

1
2
3
4
5
6
7
8
9
10
su - root
/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o subtype=vmhgfs-fuse,allow_other
ls /mnt/hgfs/

mkdir /usr/share/fonts/chinese/
cp /mnt/hgfs/SharedFolders/simsun.ttc -d /usr/share/fonts/chinese/
cd /usr/share/fonts/chinese/ # 切换到新字体目录
mkfontscale # 在当前目录下生成fonts.scale文件
mkfontdir # 在当前目录下生成fonts.dir文件
fc-cache -fv # 重新建立字体缓存

修改/etc/oratab

该文件是在创建数据库实例时建立的,需要用root用户运行root.sh,如果忘记运行在自启动和关闭时会失败,错误信息:"/etc/oratab" is not accessible

它记录主机中有多少个数据库。

$ORACLE_HOME/bin 目录下的 $ORACLE_HOME/bin/dbstart$ORACLE_HOME/bin/dbshut 需要调用 /etc/oratab 文件,如果不存在,dbstartdbshut 将失败。

编辑 /etc/oratab 文件:

1
2
3
# 格式:$ORACLE_SID:$ORACLE_HOME:<N|Y>
# 说明:第一个区域的值是sid;第二个区域的值是数据库主目录;第三个区域的值Y或N,是能否使用dbstart和dbshut脚本启动和关闭数据库的开关。
orcl:/u01/app/oracle/product/12.2.0.1/db_1:Y

查看数据库是否启动

ipcs命令

1
2
3
4
5
[oracle@centos8 ~]$ ipcs -a
[oracle@centos8 ~]$ lsnrctl status # 查看监听,可以看监听所对应的实例
[oracle@centos8 ~]$ ps -ef | grep -i ora_ # 查看Oracle相关进程
# 相关的后台进程从数据库里也是能查到,
SQL> select * FROM v$session WHERE type ='BACKGROUND';

也可以进到数据库里面看数据库当前状态 select status from v$instance; ,如果 status = open 就说明 oracle 服务已启动。

启动/停止数据库

可以使用上文的脚本启动,也可以使用以下命令启动:

1
2
3
4
5
6
7
8
9
[oracle@centos8 ~]$ echo $LANG
[oracle@centos8 ~]$ export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
[oracle@centos8 ~]$ sqlplus system/123456@orcl
[oracle@centos8 ~]$ sqlplus sys/123456@orcl as sysdba
[oracle@centos8 ~]$ sqlplus / as sysdba # dba组里的用户无需输入用户和口令,直接以sysdba的身份登陆数据库
SQL> startup # 启动数据库
SQL> show con_name # 查看容器名称或SID
SQL> select * from v$version; # 查看ORACLE版本
SQL> shutdown immediate # 关闭数据库

启动/停止监听器

1
2
3
4
[oracle@centos8 ~]$ ps -ef | grep tnslsnr # 查看Oracle Net Listener进程
lsnrctl status # 查看listener状态t
lsnrctl start
lsnrctl stop

配置工具

详解

1
2
3
dbca # 打开 Database Configuration Assistant (数据库配置助手)
netca # 打开 Net Configuration Assistant (网络配置助手)
netmgr # 打开 Net Manager

TNS配置文件

位置: /u01/app/oracle/product/12.2.0.1/db_1/network/admin

其他安装方式

静默安装

相关文章。

Docker 安装

官方Github: https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance

请先配置好 Docker 镜像加速器!

磁盘不小于 100G 。

1
2
3
4
5
6
7
8
9
10
11
12
# 构建映像
$ ./buildDockerImage.sh -v 12.2.0.1 -s -i

# 创建文件夹 /opt/oracle/oradata ;更改使用权限为所有使用者:"chmod 777 /opt/oracle" ; 了解chown
$ docker run --name oracle-12.2.0.1-se2 \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb \
-e ORACLE_PWD=123456 \
-e ORACLE_CHARACTERSET=ZHS16GBK \
-v /opt/oracle/oradata:/opt/oracle/oradata \ # 挂载工作空间,由于我们是全新安装,所以不需要挂载。
oracle/database:12.2.0.1-se2

2022整理

参考官网:https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/index.html

使用ROOT用户操作

使用ROOT用户进行以下操作。

安装依赖包

适用于红帽企业 Linux 8 的软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装以下软件包的最新发布版本:

yum install bc -y
yum install binutils -y
yum install elfutils-libelf -y
yum install elfutils-libelf-devel -y
yum install fontconfig-devel -y
yum install glibc -y
yum install glibc-devel -y
yum install ksh -y
yum install libaio -y
yum install libaio-devel -y
yum install libXrender -y
yum install libXrender-devel -y
yum install libX11 -y
yum install libXau -y
yum install libXi -y
yum install libXtst -y
yum install libgcc -y
yum install libnsl -y
yum install librdmacm -y
yum install libstdc++ -y
yum install libstdc++-devel -y
yum install libxcb -y
yum install libibverbs -y
yum install make -y
yum install policycoreutils -y
yum install policycoreutils-python-utils -y
yum install smartmontools -y
yum install sysstat -y


# 如果您打算使用 32 位客户端应用程序来访问 64 位服务器,那么您还必须安装(如果可用)此表中列出的最新 32 位版本的软件包。

下面安装包可能不在源中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
调用 makefile '/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/lib/ins_rdbms.mk' 的目标 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' 时出错。有关详细信息, 请参阅 '/tmp/InstallActions2022-08-30_09-35-50PM/installActions2022-08-30_09-35-50PM.log'。

日志中提示如下:
/usr/bin/ld: 找不到 /usr/lib64/libpthread_nonshared.a
原因:glibc升级到2.28版本之后不提供 /usr/lib64/libpthread_nonshared.a 这个静态链接库。glibc-devel包中有libpthread.a
查看软件版本:
rpm -q glibc
glibc-2.34-40.el9.x86_64

find /usr -name libpthread_nonshared.a
解决方案 https://installati.one/centos/8/compat-libpthread-nonshared/




yum install compat-libpthread-nonshared -y # 这个如果下载失败需要手动下载 CentOS AppStream x86_64 版本的软件包安装

su - root
/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o subtype=vmhgfs-fuse,allow_other
ls /mnt/hgfs/
rpm -hvi /mnt/hgfs/SharedFolders/compat-libpthread-nonshared-2.36.9000-7.fc38.x86_64.rpm

根据您的要求,安装以下软件包的最新发布版本:

1
2
3
4
5
yum install ipmiutil -y #(用于智能平台管理接口)
yum install libnsl2 -y #(仅用于 Oracle 数据库客户端)
yum install libnsl2-devel -y #(仅用于 Oracle 数据库客户端)
yum install net-tools -y #(用于 Oracle RAC 和 Oracle 集群件)
yum install nfs-utils -y #(用于 Oracle ACFS)

创建操作系统权限组

1
2
3
4
5
6
7
8
9
groupadd -g 54321 oinstall # 创建用户组oinstall
groupadd -g 54322 dba # 创建用户组dba
groupadd -g 54323 oper # 创建用户组oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54330 racdba

创建操作系统 Oracle 安装用户帐户

1
2
3
4
5
6
7
8
9
# 创建oracle用户ID为54321,指定所属群组和附加群组(主要组和次要组)
useradd -u 54321 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba -m oracle
# 把用户添加进入某个附加群组(多个逗号分隔)
usermod -a -G oper oracle

passwd oracle # 为oracle用户设置密码123456789

id oracle # 查看新建的oracle用户
uid=1001(oracle) gid=1002(dba) groups=1002(dba)

Oracle 软件安装用户的资源限制

修改 /etc/security/limits.conf 文件

1
2
3
4
5
6
7
8
oracle   soft   nofile    1024			# 文件数软限制
oracle hard nofile 65536 # 文件数硬限制
oracle soft nproc 2047 # 进程数软限制
oracle hard nproc 16384 # 进程数硬限制
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited

创建 Oracle 数据库文件目录

数据库文件目录,默认位置是 $ORACLE_BASE/oradata

1
2
3
mkdir -p /u01/oradata/
chown oracle:oinstall /u01/oradata/
chmod 775 /u01/oradata

恢复文件目录(快速恢复区),默认位置是 $ORACLE_BASE/fast_recovery_area

1
2
3
mkdir -p /u01/oradata/rcv_area
chown oracle:oinstall /u01/oradata/rcv_area
chmod 775 /u01/oradata/rcv_area

Oracle 建议您将快速恢复区保留在与数据库文件目录不同的物理磁盘上。如果包含 oradata 的磁盘因任何原因无法使用,此方法使您可以使用快速恢复区来检索数据。

创建 Oracle 基本目录和 Oracle 库存目录

创建 Oracle 基本目录和 Oracle 库存目录。为这些目录指定正确的所有者、组和权限。

1
2
3
4
5
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory # 产品清单目录,通常需要150KB的磁盘空间
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app

切换到oracle用户安装

请切换到oracle用户以安装oracle软件。

安装界面中文乱码

参考上文

安装

将 Oracle 数据库安装映像文件 ( db_home.zip) 解压缩到 Oracle 主目录

1
2
3
4
5
6
7
8
su - root

/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o subtype=vmhgfs-fuse,allow_other
ls /mnt/hgfs/

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
cd /u01/app/oracle/product/19.0.0/dbhome_1
unzip -q /mnt/hgfs/SharedFolders/LINUX.X64_193000_db_home.zip

从 Oracle 主目录,运行runInstaller命令以启动 Oracle 数据库设置向导。

1
2
3
4
5
6
7
8
9
10
11
# ctrl+d 退出root用户

export CV_ASSUME_DISTID=RHEL8.6
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller


# [INS-08101] 在以下状态下执行操作时出现意外错误: 'supportedOSCheck'
export CV_ASSUME_DISTID=RHEL8.6 # 临时修改
echo "export CV_ASSUME_DISTID=RHEL8.6" /home/oracle/.bash_profile # 永久修改
source /home/oracle/.bash_profile