CentOS7_Oracle12C 安装非容器数据库

Oracle12C 安装非容器数据库

1.安装环境准备

1.1 条件准备

  • Oracle安装包:linuxx64_12201_database.zip

  • SSH远程工具:Mobax

  • VM ware虚拟机:centos7.6(内存:2G, Swap: 3G 磁盘: 40G)

  • 网路环境:内网

  • 其他软件包:rlwrap-0.37-1.el6.x86_64.rpm

1.2 配置安装环境

使用MobaX以root用户登录虚拟机进行以下操作

  • 修改主机名

    [root@localhost ~]# hostnamectl set-hostname oracle 
    
  • 修改本地dns文件

    填写真实ip和主机名

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.100.66 oracle
    
  • 重新挂载系统光盘镜像

    img

  • 挂载光盘

    [root@oracle]# mount /dev/cdrom /mnt
    
    mount: /mnt: <u>WARNING</u>: device write-protected, mounted read-only.
    
  • 创建本地仓库

    [root@oracle]# mkdir /yums
    
  • 创建本地仓库

    
    [root@oracle mnt]# cp -r Packages /yums/
    [root@oracle mnt]# cp -r repodata /yums/
    [root@oracle /]# rm -rf /etc/yum.repos.d/*
    [root@oracle /]# vi /etc/yum.repos.d/BaseOS.repo
    [BaseOS]
    name=BaseOS
    baseurl=file:///yums
    gpgcheck=0
    enabled=1
    
    [root@oracle /]# yum makecache
    BaseOS                                          181 MB/s | 2.6 MB     00:00
    Metadata cache created.
    
* 安装ORACLE先决条件的软件包

  yum install -y bc
  yum install -y compat-libcap1*
  yum install -y compat-libcap*
  yum install -y binutils 
  yum install -y compat-libstdc++-33 
  yum install -y elfutils-libelf 
  yum install -y elfutils-libelf-devel 
  yum install -y gcc 
  yum install -y gcc-c++ 
  yum install -y glibc-2.5 
  yum install -y glibc-common 
  yum install -y glibc-devel 
  yum install -y glibc-headers 
  yum install -y ksh libaio 
  yum install -y libaio-devel 
  yum install -y libgcc 
  yum install -y libstdc++ 
  yum install -y libstdc++-devel 
  yum install -y make 
  yum install -y sysstat 
  yum install -y unixODBC 
  yum install -y unixODBC-devel
  yum install -y binutils*
  yum install -y compat-libstdc*
  yum install -y elfutils-libelf*
  yum install -y gcc*
  yum install -y glibc*
  yum install -y ksh*
  yum install -y libaio*
  yum install -y libgcc*
  yum install -y libstdc*
  yum install -y make*
  yum install -y sysstat*
  yum install -y libXp*
  yum install -y glibc-kernheaders
  yum install -y net-tools-*
  
  • 修改内核文件

    [root@oracle /]# vim /etc/sysctl.conf
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    kernel.shmmax = 1073741823
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586
    fs.file-max = 6815744
    kernel.shmall = 4294967296
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.ip_local_port_range = 9000 65500
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 1
    #net.core.somaxconn = 262144
    net.core.netdev_max_backlog = 262144
    net.ipv4.tcp_max_orphans = 262144
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.tcp_keepalive_probes = 6
    net.ipv4.tcp_keepalive_intvl = 5
    net.ipv4.tcp_timestamps = 0
    fs.aio-max-nr = 1048576
    net.ipv4.conf.all.rp_filter = 2
    
    [root@oracle /]# sysctl -p
    kernel.shmmax = 1073741823
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586
    fs.file-max = 6815744
    kernel.shmall = 4294967296
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.ip_local_port_range = 9000 65500
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 1
    net.core.netdev_max_backlog = 262144
    net.ipv4.tcp_max_orphans = 262144
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.tcp_keepalive_probes = 6
    net.ipv4.tcp_keepalive_intvl = 5
    net.ipv4.tcp_timestamps = 0
    fs.aio-max-nr = 1048576
    net.ipv4.conf.all.rp_filter = 2
    
* 修改系统限制文件

```bash
[root@oracle /]# vi /etc/security/limits.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
  • 限制使用进程数

    [root@oracle /]# vim /etc/pam.d/login
    session required /lib/security/pam_limits.so
    session required pam_limits.so
    
  • 修改环境变量

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

    [root@oracle /]# vim /etc/profile
    
    # By default, we want umask to get set. This sets it for login shell
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
        umask 002
    else
        umask 022
    fi
    
    for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
        if [ -r "$i" ]; then
            if [ "${-#*i}" != "$-" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done
    
    unset i
    unset -f pathmunge
    
    if [ -n "${BASH_VERSION-}" ] ; then
            if [ -f /etc/bashrc ] ; then
                    # Bash login shells run only /etc/profile
                    # Bash non-login shells run only /etc/bashrc
                    # Check for double sourcing is done in /etc/bashrc.
                    . /etc/bashrc
           fi
    fi
    if [ $USER = "oracle" ]; then
       if [ $SHELL = "/bin/ksh" ]; then
          ulimit -p 16384
          ulimit -n 65536
          else
          ulimit -u 16384 -n 65536
       fi
    fi
    
  • 创建用户和用户组

    groupadd oinstall

    groupadd dba

    groupadd oper

    useradd -g oinstall -G dba,oper oracle

    mkdir -p /u01/app/oracle

    mkdir -p /u01/oraInventory

    chown -R oracle.oinstall /u01

    chown -R oracle:oinstall /u01/app/oracle

    chmod -R 775 /u01/app/oracle

    [root@oracle /]# groupadd oinstall
    [root@oracle /]# groupadd dba
    [root@oracle /]# groupadd oper
    [root@oracle /]# useradd -g oinstall -G dba,oper oracle
    [root@oracle /]# mkdir -p /u01/app/oracle
    [root@oracle /]# mkdir -p /u01/oraInventory
    [root@oracle /]# chown -R oracle.oinstall /u01
    [root@oracle /]# chown -R oracle:oinstall /u01/app/oracle
    [root@oracle /]# chmod -R 775 /u01/app/oracle
    
  • 修改oracle用户密码

    passwd oracle

    [root@oracle /]# passwd oracle
    Changing password for user oracle.
    New password:
    BAD PASSWORD: The password is a palindrome
    Retype new password:
    passwd: all authentication tokens updated successfully.
    
  • 配置Oracle用户环境变量

    [oracle@oracle ~]$ su - oracle
    [oracle@oracle ~]$ vim .bash_profile
    

    export EDITOR=vi

    export TMP=/tmp

    export TMPDIR=$TMP

    export ORACLE_SID=orcl

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

    export INVENTORY_LOCATION=/u01/oraInventory

    export TNS_ADMIN=$ORACLE_HOME/network/admin

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    export
    NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

    export PATH=ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:PATH:$HOME/bin
    umask 022、

    [oracle@oracle ~]$ vim .bash_profile
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    export EDITOR=vi
    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_SID=orcl
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
    export INVENTORY_LOCATION=/u01/oraInventory
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export NLS_LANG="American_america.zhs16gbk"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
    export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
    umask 022
    [oracle@oracle ~]$ source .bash_profile
    
  • 上传Oracle压缩包到/u01下

2. 安装Oracle数据软件

2.1 安装准备

  • 解压缩安装包

    [root@oracle u01]# unzip linuxx64_12201_database.zip
    
  • 修改database文件目录权限

    [root@oracle u01]# chown -R oracle:oinstall database/
    
  • 切换到oracle用户安装数据库软件

    [oracle@oracle ~]$ cd /u01/database/
    [oracle@oracle database]$ export DISPLAY=192.168.100.6:0.0 
    [oracle@oracle database]$ ./runInstaller
    

    注:如果报一下错误,尝试以root用户安装xdpyinfo

    [oracle@oracle database]$ ./runInstaller
    Starting Oracle Universal Installer...
    
    Checking Temp space: must be greater than 500 MB.   Actual 9210 MB    Passed
    Checking swap space: must be greater than 150 MB.   Actual 1978 MB    Passed
    Checking monitor: must be configured to display at least 256 colors
        >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<
    
    Some requirement checks failed. You must fulfill these requirements before
    
    continuing with the installation,
    

    注:如果报以下错误,日志显示为缺少 libnsl.so.1,需安装libnsl.so.1

    img

    [oracle@oracle database]$ cat /tmp/OraInstall2022-11-12_03-04-59PM/oraInstall2022-11-12_03-04-59PM.err
    java.lang.UnsatisfiedLinkError: /tmp/OraInstall2022-11-12_03-04-59PM/oui/lib/linux64/liboraInstaller.so: libnsl.so.1: cannot open shared object file: No such file or directory
            at java.lang.ClassLoader$NativeLibrary.load(Native Method)
            at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
            at java.lang.Runtime.load0(Runtime.java:809)
            at java.lang.System.load(System.java:1086)
            at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:364)
            at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:128)
            at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreamsForLog(OiicPullSession.java:5382)
            at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreams(OiicPullSession.java:5482)
            at oracle.sysman.oii.oiic.OiicAPIInstaller.initInstallEnvironment(OiicAPIInstaller.java:506)
            at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:422)
            at oracle.install.ivw.db.driver.DBSetupDriver.load(DBSetupDriver.java:289)
            at oracle.install.commons.base.driver.common.Installer.run(Installer.java:516)
            at oracle.install.ivw.common.util.OracleInstaller.run(OracleInstaller.java:133)
            at oracle.install.ivw.db.driver.DBInstaller.run(DBInstaller.java:139)
            at oracle.install.commons.util.Application.startup(Application.java:1072)
            at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181)
            at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198)
            at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:566)
            at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:127)
            at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:165)
    ---# Begin Stacktrace #---------------------------
    ID: oracle.install.commons.util.exception.AbstractErrorAdvisor:8
    oracle.install.commons.base.driver.common.InstallerException: [INS-10102] Installer initialization failed.
            at oracle.install.commons.base.driver.common.Installer.run(Installer.java:534)
            at oracle.install.ivw.common.util.OracleInstaller.run(OracleInstaller.java:133)
            at oracle.install.ivw.db.driver.DBInstaller.run(DBInstaller.java:139)
            at oracle.install.commons.util.Application.startup(Application.java:1072)
            at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:181)
            at oracle.install.commons.flow.FlowApplication.startup(FlowApplication.java:198)
            at oracle.install.commons.base.driver.common.Installer.startup(Installer.java:566)
            at oracle.install.ivw.db.driver.DBInstaller.startup(DBInstaller.java:127)
            at oracle.install.ivw.db.driver.DBInstaller.main(DBInstaller.java:165)
    Caused by: oracle.install.commons.base.driver.common.SetupDriverException: [INS-10012] Setup driver initialization failed.
            at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:431)
            at oracle.install.ivw.db.driver.DBSetupDriver.load(DBSetupDriver.java:289)
            at oracle.install.commons.base.driver.common.Installer.run(Installer.java:516)
            ... 8 more
    Caused by: java.lang.UnsatisfiedLinkError: no oraInstaller in java.library.path
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
            at java.lang.Runtime.loadLibrary0(Runtime.java:870)
            at java.lang.System.loadLibrary(System.java:1122)
            at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:380)
            at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:128)
            at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreamsForLog(OiicPullSession.java:5382)
            at oracle.sysman.oii.oiic.OiicPullSession.createDuplicateStreams(OiicPullSession.java:5482)
            at oracle.sysman.oii.oiic.OiicAPIInstaller.initInstallEnvironment(OiicAPIInstaller.java:506)
            at oracle.install.driver.oui.OUIInstallDriver.load(OUIInstallDriver.java:422)
            ... 10 more
    
    ---# End Stacktrace #-----------------------------
    

    安装方法:

    [root@oracle ~]# dnf install libnsl
    

2.2 安装软件过程

img

img

点击“Yes”继续

img

img

img

img

img

img

img

img

img

img

root用户先后执行这两个脚本

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

Changing groupname of /u01/oraInventory to oinstall.
The execution of the script is complete.
[root@oracle ~]# /u01/app/oracle/product/12.2.0/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/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/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/db_1/suptools/tfa/release/tfa_home/install/roottfa.sh

[root@oracle ~]#

脚本会等待用户输入,一路按回车即可

img

点击“OK”继续下一步

img

安装成功,点击“Close”关闭即可

3. 创建监听程序

3.1创建监听过程

  • 输入netca创建监听器
[oracle@oracle ~]$ export DISPLAY=192.168.100.6:0.0
[oracle@oracle ~]$ netca
  • 创建过程

    一路点击“Next”即可

img

img

选择“No”, 可以根据需求决定是否创建另一个监听器。

点击“Finish

3. 创建数据库实例

3.1 创建过程

[oracle@oracle ~]$ dbca

注:先不创建快速恢复区,安装成功后,也可以再配置快速恢复区。

先选择ASMM,这个同样也可以通过参数修改

注:如果练习的话,可以选择示例schema

点击“Finish

安装完毕,点击“Close”即可

[oracle@oracle ~]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 13-NOV-2022 21:33:48

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                13-NOV-2022 20:33:34
Uptime                    0 days 1 hr. 0 min. 14 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

输入lsnrctl status,可以看到orcl实例已经注册到监听器上了。

切换root用户可以安装以下内容,解决在sqlplus中按上下键无法查看执行过的命令的问题

[root@oracle u01]$ yum -y install rlwrap-0.37-1.el6.x86_64.rpm

在oracle用户家目录中的.bash_profile中追加以下内容

[oracle@oracle ~]$ vim .bash_profile


alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

4.安装完毕

posted @ 2022-11-15 20:47  何以卿卿  阅读(400)  评论(0编辑  收藏  举报