美文网首页数据库
Centos7安装oracle12c

Centos7安装oracle12c

作者: 刘大坝 | 来源:发表于2022-08-26 17:39 被阅读0次

    1.安装必要软件包

    yum install      binutil* -y
    yum install      compat* -y
    yum install      gcc* -y
    yum install      glibc* -y
    yum install      ksh* -y
    yum install      libaio* -y
    yum install      libgcc* -y
    yum install      libstd* -y
    yum install      libXi* -y
    yum install      libXtst* -y
    yum install      make* -y
    yum install      sysstat* -y
    

    2.创建Oracle用户和用户组

    [root@localhost ~]# groupadd dba
    [root@localhost ~]# groupadd oinstall
    [root@localhost ~]# useradd -g oinstall -G dba oracle
    [root@localhost ~]# passwd oracle
    
    image.png

    3.创建安装目录

    [root@localhost ~]# mkdir -p /u01/app/oracle
    [root@localhost ~]# chown -R oracle:oinstall /u01/app/oracle
    [root@localhost ~]# chmod -R 775 /u01/app/oracle
    
    ##同样把/u01 和/u01/app/也授权给oracle
     [root@localhost ~]#chown  -R oracle:oinstall /u01/
     [root@localhost ~]#chown   -R oracle:oinstall /u01/app/
    
    image.png

    4.CentOS7关闭防火墙和selinux

    [root@localhost app]# setenforce 0
    [root@localhost app]# /usr/sbin/sestatus
    
    image.png
    [root@localhost app]# systemctl stop firewalld
    [root@localhost app]# systemctl disable firewalld
    [root@localhost app]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: man:firewalld(1)
    [root@localhost app]# vi /etc/selinux/config
    
    image.png

    reboot重启

    [root@localhost app]# reboot
    

    查看结果:

    [root@localhost app]#/usr/sbin/sestatus
    [root@localhost app]#/usr/sbin/getenforce
    
    image.png

    5.修改系统内核参数

    修改前先备份一下/etc/sysctl.conf

    修改前先备份一下/etc/sysctl.conf
    [root@localhost ~]# cp /etc/sysctl.conf /etc/sysctl.conf.bak
    

    /etc/sysctl.conf文档下方增加上以下内容:

    kernel.shmmax = 18446744073692774399
    kernel.shmall = 18446744073692774399
    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 = 1048576
    net.ipv4.ip_local_port_range =32768    60999
    fs.file-max=6815744
    fs.aio-max-nr=1048576
    

    修改完成后保存,然后运行sysctl -p命令使之生效。

    [root@localhost ~]# sysctl -p 
    
    image.png

    6.扩大swap交换空间

    若出现以下报错,则是swap空间不足,需要扩大交换空间

    This is a prerequisite condition to test whether sufficient total swap space is available on the system. (more details)
    Expected Value
    : 15.64GB (1.6403472E7KB)  16400000
    Actual Value
    : 4.87GB (5111800.0KB)
    

    解决步骤

    1、使用dd命令创建一个swap分区
    
    2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
    
    3、格式化刚才创建的分区
    
    4、# mkswap /home/swap
    
    5、再使用swapon命令把这个文件分区变成swap分区
    
    6、#swapon /home/swap
    
    7、(关闭SWAP分区的命令为:#swapoff /home/swap)
    
    8、再用free -m 查看已经扩容的了swap分区。
    
    9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
    
    10、在文件末尾加上 /home/swap swap swap default 0 0
    
    11、这样就算重启系统,swap分区也不用手动挂载了
    
    12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令  #echo  "swapon  /home/swap" >> /etc/inittab
    
    13、然后在看 vi 看下 /etc/inittab
    
    14、最后一行是swapon  /home/swap,这样就万事大吉了。
    

    完整操作如下:

    [root@localhost app]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        1.9G     0  1.9G   0% /dev
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    tmpfs           1.9G   17M  1.9G   1% /run
    tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/sda1        40G   12G   29G  30% /
    overlay          40G   12G   29G  30% /var/lib/docker/overlay2/234b1b34bb70c1b60fe7bca6640e8012186f3c078600a3e20006819f9ef2398e/merged
    overlay          40G   12G   29G  30% /var/lib/docker/overlay2/e8b54eefa1b4c1d6483a3835eafd731f07799c73a83a340f3b763978c100a9bb/merged
    tmpfs           379M     0  379M   0% /run/user/0
    [root@localhost app]# dd if=/dev/zero of=/home/swap bs=1024 count=16400000
    16400000+0 records in
    16400000+0 records out
    16793600000 bytes (17 GB) copied, 161.571 s, 104 MB/s
    [root@localhost app]# mkswap /home/swap
    Setting up swapspace version 1, size = 16399996 KiB
    no label, UUID=45b9c854-486b-4cf9-a012-4c8c887350ca
    [root@localhost app]# swapon /home/swap
    swapon: /home/swap: insecure permissions 0644, 0600 suggested.
    [root@localhost app]# free -m 
                  total        used        free      shared  buff/cache   available
    Mem:           3789         580         132          11        3076        2929
    Swap:         18063          55       18008
    [root@localhost app]# /home/swap swap swap default 0 0
    -bash: /home/swap: Permission denied
    [root@localhost app]# echo   "swapon  /home/swap" >> /etc/inittab 
    [root@localhost app]# 
    
    image.png

    7.设置用户限制

    编辑 /etc/security/limits.conf

    [root@localhost app]# vi /etc/security/limits.conf
    

    /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 10240
    Add the following line to the "/etc/pam.d/login" file,
    if it does not already exist.
    session required /lib/security/pam_limits.so
    session required pam_limits.so
    Add the following to
    /etc/profile if Oracle user will use the bash shell.
    if [ $USER = "oracle" ]; then
        ulimit -u 16384
        ulimit -n 65536
    fi
    
    image.png

    8. 配置环境变量

    首先切换到oracle账户su - oracle (特别注意:一定要加横杠) ,编辑修改主目录下 .bash_profile

    [root@localhost security]# su - oracle
    [oracle@localhost ~]$ pwd
    /home/oracle
    
    image.png

    编辑.bash_profile文件,增加如下内容:

    TMP=/tmp; export TMP
    TMPDIR=$TMP; export TMPDIR
    
    ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1; export ORACLE_HOME
    ORACLE_SID=epps; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    PATH=/usr/sbin:$PATH; export PATH
    PATH=$ORACLE_HOME/bin:$PATH; export PATH
    
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
    
    if [ $USER = "oracle" ]; then
     if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
     else
        ulimit -u 16384 -n 65536
     fi
    fi
    

    执行 source .bash_profile 使配置生效

    [root@localhost security]# source .bash_profile
    

    8.上传oracle12c安装文件

    用root用户上传文件到目录/home/oracle/, 并修改权限

    [root@localhost security]# chown oracle:oinstall linuxamd64_12102_database_*
    
    image.png

    切换到oracle用户,解压安装包

    #切换到ORACLE用户
    [root@localhost oracle]# su - oracle
    Last login: Wed Nov 17 10:36:35 UTC 2021 on pts/0
    [oracle@localhost ~]$
    #解压第一个文件压缩包
    [oracle@localhost ~]$ unzip linuxamd64_12102_database_1of2.zip 
    #在解压完第一个压缩包后再来解压第二个压缩包
    [oracle@localhost ~]$ unzip linuxamd64_12102_database_2of2.zip
    

    文件解压完后都放在database文件中
    创建一个目录,把zip包放起来


    image.png

    9.安装Xme30.exe 软件

    从阿里云盘下载,然后在自己的电脑上安装


    image.png

    下载之后按照步骤一步一步安装即可

    注册lic


    image.png

    点开Xbrowser之后,点击Help -> About Xbrowser -> Enter Product Key, 录入压缩包license.txt中的注册码即可


    image.png
    启动工具 Xmanager-Passive
    image.png

    如果出现错误:failed to get the installation date from the system registry
    解决办法如下:

    出现了这个问题后,各种可能的想法都想到了,但是,一直得不到解决,后来查到了这样一种办法 
    1.打开Xbrowser
    
    2.打开Help, 选择About Browser
    
    3.点击Enter Product Key
    
    Name : 3ddown.com
    
    Organization: none
    
    Serial:080807-116451-999766
    
    就OK了
    
    呵呵,Xmanager不让贴上去,就辛苦大家用手敲上去了。
    

    10. 安装oracle

    查看安装文件的权限信息

    image.png

    查看我们自己的pc的ip地址


    image.png

    确保安装oracle的机器可以ping 通我们自己的pc


    image.png

    启动调用自己pc的图形管理工具(也就是上一步安装的Xme30)并启动安装

    [oracle@localhost database]$ export DISPLAY=192.168.1.35:0.0
    
    image.png

    启动之后注意观察,依次会出现如下图像界面


    image.png image.png

    取消勾选I wish to receive ...

    image.png image.png image.png image.png image.png
    /u01/app/oracle
    /u01/app/oracle/product/12.1.0/db_1
    
    image.png image.png image.png image.png

    出现此情况是/u01 /u01/app的权限导致的


    image.png

    处理步骤:逐步赋权

     chown oracle:oinstall /u01/
     chown oracle:oinstall /u01/app/
    
    image.png

    点击OK ,再点击下图的NEXT 按钮


    image.png

    出现如下问题:

    image.png

    问题原因是swap空间不足导致,需要扩大交换空间

    This is a prerequisite condition to test whether sufficient total swap space is available on the system. (more details)
    Expected Value
    : 15.64GB (1.6403472E7KB)  16400000
    Actual Value
    : 4.87GB (5111800.0KB)
    
    问题原因是没有swap空间不足导致,需要扩大交换空间
    
    解决:1、使用dd命令创建一个swap分区
    
    2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
    
    3、格式化刚才创建的分区
    
    4、# mkswap /home/swap
    
    5、再使用swapon命令把这个文件分区变成swap分区
    
    6、#swapon /home/swap
    
    7、(关闭SWAP分区的命令为:#swapoff /home/swap)
    
    8、再用free -m 查看已经扩容的了swap分区。
    
    9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
    
    10、在文件末尾加上 /home/swap swap swap default 0 0
    
    11、这样就算重启系统,swap分区也不用手动挂载了
    
    12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令  #echo  "swapon  /home/swap" >> /etc/inittab
    
    13、然后在看 vi 看下 /etc/inittab
    
    14、最后一行是swapon  /home/swap,这样就万事大吉了
    

    完整操作如下

    [root@localhost app]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        1.9G     0  1.9G   0% /dev
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    tmpfs           1.9G   17M  1.9G   1% /run
    tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/sda1        40G   12G   29G  30% /
    overlay          40G   12G   29G  30% /var/lib/docker/overlay2/234b1b34bb70c1b60fe7bca6640e8012186f3c078600a3e20006819f9ef2398e/merged
    overlay          40G   12G   29G  30% /var/lib/docker/overlay2/e8b54eefa1b4c1d6483a3835eafd731f07799c73a83a340f3b763978c100a9bb/merged
    tmpfs           379M     0  379M   0% /run/user/0
    [root@localhost app]# dd if=/dev/zero of=/home/swap bs=1024 count=16400000
    16400000+0 records in
    16400000+0 records out
    16793600000 bytes (17 GB) copied, 161.571 s, 104 MB/s
    [root@localhost app]# mkswap /home/swap
    Setting up swapspace version 1, size = 16399996 KiB
    no label, UUID=45b9c854-486b-4cf9-a012-4c8c887350ca
    [root@localhost app]# swapon /home/swap
    swapon: /home/swap: insecure permissions 0644, 0600 suggested.
    [root@localhost app]# free -m 
                  total        used        free      shared  buff/cache   available
    Mem:           3789         580         132          11        3076        2929
    Swap:         18063          55       18008
    [root@localhost app]# /home/swap swap swap default 0 0
    -bash: /home/swap: Permission denied
    [root@localhost app]# echo   "swapon  /home/swap" >> /etc/inittab 
    [root@localhost app]# 
    
    image.png

    然后Check Again


    image.png image.png

    开始漫长的等待


    image.png image.png
    [root@localhost u01]# /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@localhost u01]# /u01/app/oracle/product/12.1.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.1.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.
    
    image.png

    最后安装成功


    image.png

    11.配置listener

    (如果重启服务器了,启动Oracle的顺序是先启动监听:lsnrctl start)
    还是在oracle用户~目录下,通过netca调用图形化配置(如果重启过客户端需要先执行命令:export DISPLAY=192.168.1.73:0.0)
    先打开


    image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png

    12.安装数据库实例

    还是在oracle用户~目录下 执行dbca 命令调用 数据库实例 图形安装界面

    image.png

    稍等,出现如下图像


    image.png image.png

    点击Next

    image.png

    创建数据库密码:Oracle12c,

    image.png image.png image.png image.png image.png image.png

    13.解决数据库启动问题

    切换用户

    su - oracle

    然后连接

    sqlplus / as sysdba

    启动oralce

    startup
    启动报错,如图


    image.png

    解决:
    把/u01/app/oracle/admin/orcl/pfile下的init.ora.XXXXXXXXX文件 拷贝到
    /u01/app/oracle/product/12.1.0/db_1/dbs/,并重命名为initepps.ora

    [oracle@localhost pfile]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.10172021113749 /u01/app/oracle/product/12.1.0/db_1/dbs/
    
    [oracle@localhost pfile]$ cd  /u01/app/oracle/product/12.1.0/db_1/dbs/
    [oracle@localhost dbs]$ ll
    total 28
    -rw-rw---- 1 oracle oinstall 1544 Nov 17 11:41 hc_orcl.dat
    -rw-r--r-- 1 oracle oinstall 2992 Feb  3  2012 init.ora
    -rw-r----- 1 oracle oinstall 1893 Nov 17 11:56 init.ora.10172021113749
    -rw-r----- 1 oracle oinstall   24 Nov 17 11:28 lkORCL
    -rw-r----- 1 oracle oinstall 7680 Nov 17 11:37 orapworcl
    -rw-r----- 1 oracle oinstall 3584 Nov 17 11:56 spfileorcl.ora
    [oracle@localhost dbs]$ mv init.ora.10172021113749 initepps.ora
    

    然后再报错:ORA-00845 MEMORY_TARGET not supported on this system 解决方法

    修改文件 /etc/fstab 将tmpfs 修改成以下值(修改后要重启系统):
     tmpfs            /dev/shm        tmpfs  defaults,size=14G        0 0
    
    image.png

    如果直接修改/etc/fstab,通过重启reboot 让参数生效。

    注意:这个size 的大小需要设置为整数。

    df -h 在查查修改后的/dev/shm的大小

    image.png

    再次启动切换到su - oracle
    然后连接sqlplus / as sysdba
    然后修改默认设置信息:

    --修改密码规则策略为密码永不过期;
    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
    -- 修改system用户账号密码;
    alter user system identified by system;
    -- 修改sys用户账号密码;
    alter user sys identified by sys; 
    --修改数据库最大连接数据;
    alter system set processes=100 scope=spfile; 
    
    image.png image.png

    14.设置数据库字符集

    首先通过sqlplus / as sysdba登录,查看当前字符集

    select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
    
    image.png

    默认字符集不是我们需要的
    我们要设置为AL32UTF8
    设置步骤如下:
    第一 先关闭数据库:
    shutdown immediate;
    第二 启动数据库到mount状态
    startup mount;

    image.png

    第三 限制session
    alter system enable restricted session;


    image.png

    第四 查看相关参数并修改

    show parameter job_queue_processes;  
    设置为0
    alter system set job_queue_processes=0;
    
    show parameter aq_tm_processes; 
    也设置为0
    alter system set aq_tm_processes=0;
    
    image.png
    image.png

    第五 打开数据库

    alter database open;
    
    image.png

    第六 修改字符集

    alter database character set internal_use AL32UTF8;
    
    image.png

    第七 修改完成之后,将相关参数还原

    alter system set job_queue_processes=1000;
    alter system set aq_tm_processes=1;
    

    第八 重启数据库

    14. 配置Local Net...

    先试试15步,用PL/SQL能不能连接,不能再配置
    配置中请注意如下两个参数:
    Global service name -----> orcl.oracle.com
    Sid ------>orcl

    image.png
    还是在oracle用户~目录下,通过netca调用图形化配置 image.png image.png image.png image.png image.png image.png image.png image.png image.png

    配置完成后,/u01/app/oracle/product/12.1.0/db_1/network/admin下多出两个文件

    image.png
    然后在oracle用户下启动监听器
    lsnrctl start
    lsnrctl stop
    lsnrctl reload
    
    sqlplus / as sysdba
    

    一定要在oracle用户下重启监听(特别注意:切换到oracle的时候,一定要加横杠)
    启动服务 startup ;


    image.png

    (关闭oracle : shutdown immediate)

    操作过程如下图:


    image.png image.png

    启动oracle报错:


    image.png

    找不到initepps.orga
    解决:
    把/u01/app/oracle/admin/orcl/pfile下的init.ora.10172021113749 拷贝到
    /u01/app/oracle/product/12.1.0/db_1/dbs/

    [oracle@localhost pfile]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.10172021113749 /u01/app/oracle/product/12.1.0/db_1/dbs/
    [oracle@localhost pfile]$ cd  /u01/app/oracle/product/12.1.0/db_1/dbs/
    [oracle@localhost dbs]$ ll
    total 28
    -rw-rw---- 1 oracle oinstall 1544 Nov 17 11:41 hc_orcl.dat
    -rw-r--r-- 1 oracle oinstall 2992 Feb  3  2012 init.ora
    -rw-r----- 1 oracle oinstall 1893 Nov 17 11:56 init.ora.10172021113749
    -rw-r----- 1 oracle oinstall   24 Nov 17 11:28 lkORCL
    -rw-r----- 1 oracle oinstall 7680 Nov 17 11:37 orapworcl
    -rw-r----- 1 oracle oinstall 3584 Nov 17 11:56 spfileorcl.ora
    [oracle@localhost dbs]$ mv init.ora.10172021113749 initepps.ora
    
    image.png

    15.远程连接oracle(PL/SQL Developer)

    我的阿里云下载客户端:

    image.png

    解压后,在根目录,创建文件tnsnames.ora

    内容为:

    ichannel@192_168 =
        (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT = 1521)))
                       (CONNECT_DATA = (SERVICE_NAME = orcl.oracle.com))
    )
    
    image.png

    打开PL/SQL Developer

    image.png

    一定要配置本机的4个环境变量:

    变量名:ORACLE_HOME
    变量值:D:\soft\instantclient_11_2
                
    变量名:TNS_ADMIN
    变量值:D:\soft\instantclient_11_2
                
    变量名:NLS_LANG
    变量值:AMERICAN_AMERICA.AL32UTF8
                
    修改Path变量:在后面添加 D:\soft\instantclient_11_2
    

    16.配置数据库自启动

    (还未最后验证成功)
    第一步:修改/u01/app/oracle/product/12.1.0/db_1/bin/dbstart
    ORACLE_HOME_LISTNER=$1改为ORACLE_HOME_LISTNER=$ORACLE_HOME

    image.png
    第二步:修改/etc/oratab,启动数据库时启动实例
    image.png

    第三步:编辑/etc/rc.d/rc.local启动文件,并授权
    因为在centos7中rc.local已经被逐渐废弃,在其文件中也说明建议使用systemd。我这里将就下,修改完rc.local后为其添加执行(x)权限,重启后才能执行成功。

    vi /etc/rc.d/rc.local
    

    文件末尾添加如下两行

    su - oracle -lc /u01/app/oracle/product/12.1.0/db_1/bin/dbstart
    su - oracle -lc "/u01/app/oracle/product/12.1.0/db_1/bin/lsnrctl start"
    

    注意:第二个命令有空格,所以要用引号

    授权:chmod +x /etc/rc.d/rc.local
    

    重启主机,查看数据库和监听是否自启动

    ps -ef | grep orcl
    lsnrctl status
    ps -ef | grep LISTEN | grep -v grep
    

    17.创建用户表空间

    -- 创建用户 用户名必须以c##开头

    create user c##wangcen identified by wangcen;
    
    image.png image.png

    -- 创建表空间
    -- tablespace_wangcen 是表空间的名称
    -- /u01/oracle/data/ 数据文件存放路径(必须提前创建好)
    -- wangcen_data.dbf 数据文件

    create tablespace  tablespace_wangcen  datafile '/u01/oracle/data/wangcen_data.dbf' size 1024M;
    
    image.png

    18.服务器重启后如何启动oracle

    分两步:

    1 先切换到oracle用户su - oracle

    2启动监听器 lsnrctl start

    3 登录 sqlplus / as sysdb

    然后执行 startup

    完成。

    关闭oracle:shutdown immediate;

    另附其他版本安装教程:

    https://www.cnblogs.com/xuzhaoyang/p/11264557.html

    相关文章

      网友评论

        本文标题:Centos7安装oracle12c

        本文链接:https://www.haomeiwen.com/subject/mratnrtx.html