一、环境准备

1. 挂载硬盘(这里只是举一个例子,具体的挂载目录需要自己定义)

数据库存储路径这里,要按照 服务器本身存储路径,一般情况下服务器的硬盘是已经被挂载上的。但是为了防止硬盘没有挂载,也为了查看各个目录存储空间的大小。可以使用下面这个命令进行查看。

  1. [root@localhost ~]# lsblk
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda 8:0 0 30G 0 disk
  4. ├─sda1 8:1 0 1G 0 part /boot
  5. └─sda2 8:2 0 29G 0 part
  6. ├─centos-root 253:0 0 27G 0 lvm /
  7. └─centos-swap 253:1 0 2G 0 lvm [SWAP]
  8. sdb 8:16 0 20G 0 disk
  9. sr0 11:0 1 4.2G 0 rom
  10. [root@localhost ~]#

注意:最后这个mountpoing的意思是挂载点 ,如果type类型是disk(硬盘)且没有挂载点。就证明这个硬盘还没有被挂载,需要你先去把硬盘给挂载上,在进行数据库存储路径的配置。

  1. [root@localhost ~]# mkdir /backup # 新建一个文件夹作为挂载点
  2. [root@localhost ~]# cd / # 移动至根目录下
  3. [root@localhost /]# ls # 这里已经有这个文件夹了
  4. backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var yumiso
  5. [root@localhost /]# mount /dev/sdb /backup # 挂载硬盘,下面会报错。是因为没有对硬盘进行格式化。
  6. mount: /dev/sdb is write-protected, mounting read-only
  7. mount: unknown filesystem type '(null)' # Mount:未知的文件系统类型'(null)'
  8. [root@localhost /]# mkfs.ext4 /dev/sdb # 对硬盘进行格式化(格式为ext4)
  9. mke2fs 1.42.9 (28-Dec-2013)
  10. /dev/sdb is entire device, not just one partition!
  11. Proceed anyway? (y,n) y # 这里选y
  12. Filesystem label=
  13. OS type: Linux
  14. Block size=4096 (log=2)
  15. Fragment size=4096 (log=2)
  16. Stride=0 blocks, Stripe width=0 blocks
  17. 1310720 inodes, 5242880 blocks
  18. 262144 blocks (5.00%) reserved for the super user
  19. First data block=0
  20. Maximum filesystem blocks=2153775104
  21. 160 block groups
  22. 32768 blocks per group, 32768 fragments per group
  23. 8192 inodes per group
  24. Superblock backups stored on blocks:
  25. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
  26. 4096000
  27. Allocating group tables: done
  28. Writing inode tables: done
  29. Creating journal (32768 blocks): done
  30. Writing superblocks and filesystem accounting information: done
  31. [root@localhost /]# mount /dev/sdb /backup # 这里在执行一次挂载命令就可以了
  32. [root@localhost /]# blkid /dev/sdb # 查看挂载硬盘的UUID,复制以下。写到下面的配置文件中,实现永久挂载。
  33. /dev/sdb: UUID="6384d556-f444-48ee-8f1d-5257f0c350aa" TYPE="ext4"
  34. 用于挂载信息的指定填写格式中,各字段所表示的意义
  35. 设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUIDUniversally Unique Identifier
  36. 挂载目录 指定要挂载到的目录,需在挂载前创建好
  37. 格式类型 指定文件系统的格式,比如Ext3Ext4XFSSWAPiso9660(此为光盘设备)等
  38. 权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
  39. 是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
  40. 是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
  41. 如果想将文件系统为Ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限
  42. 且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。
  43. [root@localhost ~]# vim /etc/fstab
  44. 在最后一行增加如下信息
  45. UUID=b8c4a45f-ed74-3089-fcdb-0273de904d6d /backup ext4 defaults 0 0

写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:

  1. [root@localhost /]# mount -a

df命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。
查看当前系统中设备的挂载情况,列出系统中正在使用的设备有哪些。

  1. [root@localhost /]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/mapper/centos-root 27G 9.5G 18G 36% /
  4. devtmpfs 899M 0 899M 0% /dev
  5. tmpfs 911M 0 911M 0% /dev/shm
  6. tmpfs 911M 9.6M 902M 2% /run
  7. tmpfs 911M 0 911M 0% /sys/fs/cgroup
  8. /dev/sda1 1014M 142M 873M 14% /boot
  9. tmpfs 183M 0 183M 0% /run/user/0
  10. /dev/sdb 20G 45M 19G 1% /backup # 现在硬盘就已经挂在到了挂载点上了。

挂载错误之后可以使用umount命令,进行卸载,然后重新进行挂载。如果是写入到了配置文件中,也需要对配置文件进行修改。

  1. umount /dev/sdb

2. 把下面的资源上传到服务器,因为文件有点大。时间可能会久一点、

  • CentOS-7-x86_64-DVD-1810.iso (因为系统是Centos7.6,所以这里选择的和系统版本相同的、其他版本也可以)

    因为需要下载一些依赖,内网环境无法连接外网。所以需要上传镜像文件,用于配置本地yum源。

  • yum_source_change.sh 一个脚本文件,用于自动创建本地yum源配置文件

  • compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm centos7 系统中缺失的依赖
  • linux.x64_11gR2_database_1of2.zip
  • linux.x64_11gR2_database_2of2.zip 这两个都是安装oracle所需的资源包

    3. 使用root账户给脚本进行赋权操作(否则脚本没有被执行的权限,无法运行)。

    1. chmod u+x *.sh # 要先进入到脚本的存放目录下

    4. 运行脚本文件,构建本地yum源

    ```shell ./yum_source_change.sh 2 xxxx/centos.iso

说明:给两个运行参数 2表示执行yum源安装 xxx/centos.iso表示镜像文件全路径

例如我的就是:./yum_source_change.sh 2 /backup/CentOS-7-x86_64-DVD-1810.iso

回车执行,脚本会自动创建本地yum源

执行:df -h 进行查看挂载情况

/dev/loop0 4.3G 4.3G 0 100% /yumiso # 会发现下面多了一条信息,就表示yum源已经构建完成了

  1. <a name="I5rbz"></a>
  2. #### 5. 下载安装Oracle所需的rpm依赖包
  3. ```shell
  4. yum -y install 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

检查是否全部安装成功

  1. 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 | grep "not installed"

输出结果:

  1. package compat-libstdc++-33 is not installed

是因为centos 系统中缺少这个依赖、需要另外安装。

  1. rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

6.查看Swap分区空间(不能小于2G)

在添加swap分区之前我们可以了解下当前系统swap是否存在,可用:

  1. free h

7.添加swap分区

Oracle官方建议swap设置标准

  • ORACLE官方要求最小1GB的RAM,建议2GB或更大
  • SWAP与RAM的大小配置关系
    • RAM为1-2GB时,SWAP大小建议为RAM大小的1.5倍
    • RAM为2-16GB时,SWAP大小建议与RAM大小相等
    • RAM大于16GB时,SWAP大小建议为16GB

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):

  1. dd if=/dev/zero of=/home/swap bs=1M count=2048

if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。 bs=1M代表增加的模块大小,count=2048代表是2048个模块,也就是2G空间大小

  • count的计算公式: count = size * bs (size以MB为单位)
  1. 回车后,会执行2g的读写操作,系统会卡一段时间,耐心等待执行结果。

执行完毕,对交换文件格式化并转换为swap分区:

  1. mkswap /home/swap

挂载并激活分区:

  1. swapon /home/swap

执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:

  1. chmod -R 0600 /home/swap

这时候可以用 free –h 或 swapon –s命令查看新swap分区是否正常添加并激活使用。

如果需要关闭swap分区则执行

  • swapoff /home/swap

修改 fstab 配置,设置开机自动挂载该分区:

  1. vim /etc/fstab

在fstab文件末尾追加如下内容后:wq!保存即可:

  1. /home/swap swap swap default 0 0

或直接对fstab进行echo追加:

  1. echo "/home/swap swap swap defaults 0 0" >> /etc/fstab

8.修改CentOS系统标识 (由于Oracle默认不支持CentOS)

  1. vim /etc/redhat-release
  2. 删除CentOS Linux release 7.6.2009 (Core)(快捷键dd),改成redhat-7
  3. redhat-7

9.修改sysctl.conf内核参数

  1. vim /etc/sysctl.conf #修改文件
  2. # sysctl settings are defined through files in
  3. # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
  4. #
  5. # Vendors settings live in /usr/lib/sysctl.d/.
  6. # To override a whole file, create a new file with the same in
  7. # /etc/sysctl.d/ and put new settings there. To override
  8. # only specific settings, add a file with a lexically later
  9. # name in /etc/sysctl.d/ and put new settings there.
  10. #
  11. # For more information, see sysctl.conf(5) and sysctl.d(5).
  12. # 把下面这些参数复制进去
  13. fs.aio-max-nr = 1048576
  14. fs.file-max = 6815744
  15. kernel.shmmni = 4096
  16. kernel.sem = 250 32000 100 128
  17. kernel.shmall = 2097152
  18. kernel.shmmax = 2147483648
  19. net.ipv4.ip_local_port_range = 9000 65500
  20. net.ipv4.icmp_echo_ignore_broadcasts = 1
  21. net.ipv4.conf.all.rp_filter = 1
  22. net.core.rmem_default = 262144
  23. net.core.rmem_max= 4194304
  24. net.core.wmem_default= 262144
  25. net.core.wmem_max= 1048576

修改完后,启用新的配置

sysctl -p

二、安装步骤

1. 创建相应的用户和用户组

groupadd oinstall     # 创建安装Oracle程序用户组

groupadd dba          # 创建dba用户组

useradd -g dba -m oracle   # 创建用户Oracle并加入dba用户组

usermod -a -G oinstall oracle   # 将用户Oracle加入oinstall用户组

2. 修改用户Oracle的密码

passwd oracle

3.查看用户oracle的信息

id oracle        

uid=1000(oracle) gid=1001(dba) groups=1001(dba),1000(oinstall)

4. 创建相应的目录并修改目录权限

目录位置尽量选择比较大的硬盘上,

mkdir -p /backup/ocdata/oracle   # 创建Oracle主目录

mkdir -p /backup/ocdata/inventory # 创建Oracle配置目录

mkdir -p /backup/ocdata/src       # 创建Oracle压缩包解压目录

chown -R oracle:oinstall /backup/ocdata/oracle      # 修改目录权限

chown -R oracle:oinstall /backup/ocdata/inventory  

chown -R oracle:oinstall /backup/ocdata/src

5. 查看目录权限

ll /backup/ocdata

6.修改oracle用户的安全性能设置

vim /etc/security/limits.conf

添加内容如下:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

7.修改用户环境变量

vim /home/oracle/.bashrc

添加内容如下:
export PATH
export ORACLE_BASE=/backup/ocdata/oracle    # 是上面,创建Oracle主目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

8.激活/home/oracle/.bashrc

source /home/oracle/.bashrc

9.解压两个zip安装包并授权

unzip linux.x64_11gR2_database_1of2.zip -d /backup/ocdata/src/

unzip linux.x64_11gR2_database_2of2.zip -d /backup/ocdata/src/

chown -R oracle:oinstall /backup/ocdata/src/     # 授权

ll /backup/ocdata/src/    # 查看目录权限


注意:如果执行unzip解压命令的时候报错(未找到命令)

[root@hq009 backup]# unzip linux.x64_11gR2_database_1of2.zip -d /backup/ocdata/src/ -bash: unzip: command not found

这个时候表示系统里面还没有这个命令,需要先进行安装,再执行解压。

yum install unzip

安装完成后再执行上面的两个解压命令。

10.关闭selinux防火墙

vim /etc/selinux/config

修改SELINUX=disabled

11.重启机器

reboot

12.进入Oracle用户

su oracle

13.编辑数据库安装文件

vim /backup/ocdata/src/database/response/db_install.rsp   # 根据实际路径

14.按esc,输入/+参数名(例如oracle.install.option),根据以下值修改(要细心,一个也不能错!!!)
注意:按esc,输入/+参数名搜索不到可能是空格问题!参数输入时也要注意空格!!!

oracle.install.option=INSTALL_DB_SWONLY                # 安装类型
ORACLE_HOSTNAME=hq009                                    # 主机名称,用hostname查看主机名
UNIX_GROUP_NAME=oinstall                                   # 安装组
INVENTORY_LOCATION=/backup/ocdata/inventory                         # INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN                                # 选择语言
ORACLE_HOME=/backup/ocdata/oracle/product/11.2.0/db_1               # oracle_home
ORACLE_BASE=/backup/ocdata/oracle                                   # oracle_base
oracle.install.db.InstallEdition=EE                        # oracle版本
oracle.install.db.DBA_GROUP=dba                            # dba用户组
oracle.install.db.OPER_GROUP=oinstall                      # oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE    # 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl       # globalDBName
oracle.install.db.config.starterdb.SID=orcl                # SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8   # 默认数据库编码
oracle.install.db.config.starterdb.memoryLimit=800         # 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle     # 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true                              # 设置安全更新

主机名称可以用hostnamectl set-hostname 进行修改

不放心的话,还可以修改vi /etc/sysconfig/network文件

15.安装oracle

以实际路径为准

/backup/ocdata/src/database/runInstaller -silent -responseFile /backup/ocdata/src/database/response/db_install.rsp -ignorePrereq

16.在另一个窗口输入命令如下:

/backup/ocdata/oracle/product/11.2.0/db_1/root.sh

执行完后,再回到之前窗口按下回车!!!!!!

出现下面的内容就表示安装成功了。

The following configuration scripts need to be executed as the "root" user. 
 #!/bin/sh 
 #Root scripts to run

/backup/ocdata/inventory/orainstRoot.sh
/backup/ocdata/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
         1. Open a terminal window 
         2. Log in as "root" 
         3. Run the scripts 
         4. Return to this window and hit "Enter" key to continue 

Successfully Setup Software.

17.编辑监听配置文件

vim /backup/ocdata/src/database/response/netca.rsp

18.按esc,输入/+参数名(例如INSTALL_TYPE),根据以下值修改(要细心,一个也不能错!!!)

INSTALL_TYPE=""custom""                               # 安装的类型
LISTENER_NUMBER=1                                     # 监听器数量
LISTENER_NAMES={"LISTENER"}                           # 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"}                       # 监听器使用的通讯协议列表
LISTENER_START=""LISTENER""                           # 监听器启动的名称

19.执行以下命令

/backup/ocdata/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /backup/ocdata/src/database/response/netca.rsp

20.编辑数据库实例文件

vim /backup/ocdata/src/database/response/dbca.rsp

21.按esc,输入/+参数名(例如RESPONSEFILE_VERSION),根据以下值修改(要细心,一个也不能错!!!)

RESPONSEFILE_VERSION ="11.2.0"                              // 不要变哦
OPERATION_TYPE ="createDatabase"                            // 操作为创建实例  
GDBNAME ="orcl"                                             // 数据库实例名
SID ="orcl"                                                 // 实例名字
TEMPLATENAME = "General_Purpose.dbc"                        // 建库用的模板文件
SYSPASSWORD = "oracle"                                      // SYS管理员密码
SYSTEMPASSWORD = "oracle"                                   // SYSTEM管理员密码
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION =/backup/ocdata/oracle/oradata                   // 数据文件存放目录
RECOVERYAREADESTINATION=/backup/ocdata/oracle/flash_recovery_area    // 恢复数据存放目录
CHARACTERSET ="AL32UTF8"                                    // 字符集
NATIONALCHARACTERSET= "AL16UTF16"                           // 字符集
TOTALMEMORY ="1638"                                         // 1638MB,物理内存2G*80%

22.执行以下命令

/backup/ocdata/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /backup/ocdata/src/database/response/dbca.rsp

iShot2022-06-28 16.18.30.png

23.查看实例是否运行

ps -ef | grep ora_ | grep -v grep

iShot2022-06-28 16.18.58.png

24.修改启动和关闭实例的程序

vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart

25.将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1

/backup/ocdata/oracle/product/11.2.0/db_1

iShot2022-06-28 16.20.14.png

vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbshut

33.2.同上,将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1

/backup/ocdata/oracle/product/11.2.0/db_1

26.修改/etc/oratab

vim /etc/oratab

iShot2022-06-28 16.21.31.png

27.启动实例

/backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart

28.开机启动Oracle(以下命令都是在root用户下!!!也就是第27步双击打开的窗口)

chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local

在文件最后追加以下内容:

su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart"

iShot2022-06-28 16.23.13.png

29.oracle用户窗口输入以下命令,进入oracle数据库

sqlplus / as sysdba

iShot2022-06-28 16.23.49.png

30.最后使用Navicat或者DataGrip连接的时候用户名为sys as sysdba

image.png