美文网首页
centos7安装oracle12c

centos7安装oracle12c

作者: bobokaka | 来源:发表于2021-05-18 06:37 被阅读0次

    服务器系统为centos7.9 64位,物理内存大小为16GB,如果物理内存不一致的,请手动调整相关细节配置。

    Oracle数据库的安装比较麻烦,但一般分为以下几个步骤:

    • 下载Oracle
    • 配置系统环境(过程最为复杂)
    • 安装Oracle
    • 防火墙等的配置
      下载Oracle

    下载
    https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

    image.png
    image.png
    image.png
    image.png
    更新系统包。
    # yum update -y
    

    安装下载Oracle12C所需软件包

     yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh compat-libstdc++-33 libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make.x86_64 sysstat.x86_64 zip unzip  sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
    

    为Oracle创建一个用户组,名字是Oracle,并对该用户设置登录密码。

    # groupadd oinstall
    # groupadd dba
    -g 设置的是用户的主用户组,记录在/etc/passwd中。
    -G 设置的是用户附加组版,记录在/etc/group中。
    这样做的意义在于:
    1,当"usermod -g"切换到一个临时组,然后再切换回来的时候,不会把临时组的信息“遗留”在该用户设置中。
    2,权限更加明细,在11g安装中的一步,就会提示sysdba和sysoper的区别,放在不同的组,可以有效的提高安全性。
    新创建一个oracle用户,这初始属于oinstall组,且同时让他也属于dba组。
    # useradd -g oinstall -G dba oracle
    # passwd oracle
    www.163.com
    
    image.png

    修改host

    vim /etc/hosts
    
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle12c
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 oracle12c
    #外网ip
    192.168.8.103 oracle12c
    #不知道什么作用
    192.168.159.129 oracle12c
    

    将以下内容添加到/etc/sysctl.conf中。

    vim /etc/sysctl.conf
    
     #禁用包过滤功能
    net.ipv4.ip_forward = 0
    #启用源路由核查功能
    net.ipv4.conf.default.rp_filter = 1
    #禁用所有IP源路由
    net.ipv4.conf.default.accept_source_route = 0
    #使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
    kernel.sysrq = 0
    #控制core文件的文件名是否添加pid作为扩展
    kernel.core_uses_pid = 1
    #开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
    net.ipv4.tcp_syncookies = 1
    
     net.ipv4.tcp_max_syn_backlog = 65536
     net.core.netdev_max_backlog =  32768
     net.core.somaxconn = 32768
    #每个消息队列的大小(单位:字节)限制
    kernel.msgmnb = 65536
    #整个系统最大消息队列数量限制
    kernel.msgmax = 65536
    #单个共享内存段的大小(单位:字节)限制,计算公式16G*1024*1024*1024-1(字节)
    kernel.shmmax =  17179869183
    #所有内存大小(单位:页,1页 = 4Kb),计算公式(16G*1024*1024-1)/4KB (页)
    kernel.shmall = 4194303
    #系统范围内共享内存段的最大数量。该参数的默认值是 4096.此值也是在系统中可以启动的Oracle实例的最大数量,通常不需要更改,因为显然在生产环境下,一个服务器上同时启动的实例个数达不到这个数量.
    kernel.shmmni = 4096
    #250       SEMMSL    max semaphores per array     信号集容纳最大信号数量   
    #32000     SEMMNS    max semaphores system wide   所有信号的最大数量
    #32        SEMOPM    max ops per semop call       调用单个信号集中最大信号数量
    #128       SEMMNI    max number of arrays         信号集的最大值
    kernel.sem = 250 32000 100 128
    #timewait的数量,默认是180000
    net.ipv4.tcp_max_tw_buckets = 6000
    #开启有选择的应答
    net.ipv4.tcp_sack = 1
    #支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
    net.ipv4.tcp_window_scaling = 1
    #TCP读buffer
    net.ipv4.tcp_rmem = 4096 131072 1048576
    #TCP写buffer
    net.ipv4.tcp_wmem = 4096 131072 1048576
    #为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
    net.core.wmem_default = 8388608
    #为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
    net.core.wmem_max = 16777216
    #为TCP socket预留用于接收缓冲的内存默认值(单位:字节)
    net.core.rmem_default = 8388608
    #为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
    net.core.rmem_max = 16777216
    #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    net.core.netdev_max_backlog = 262144
    #web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
    net.core.somaxconn = 65500
    #系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)
    net.ipv4.tcp_max_orphans = 3276800
    #记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
    net.ipv4.tcp_max_syn_backlog = 262144
    #时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
    net.ipv4.tcp_timestamps = 0
    #为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
    net.ipv4.tcp_synack_retries = 2
    #在内核放弃建立连接之前发送SYN包的数量
    net.ipv4.tcp_syn_retries = 2
    # net.ipv4.tcp_tw_len = 1
    #开启TCP连接中time_wait sockets的快速回收
    net.ipv4.tcp_tw_recycle = 1
    #开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
    net.ipv4.tcp_tw_reuse = 1
    #1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    #如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
    net.ipv4.tcp_fin_timeout = 30
    #表示当keepalive起用的时候,TCP发送keepalive消息的频度(单位:秒)
    net.ipv4.tcp_keepalive_time = 120
    #对外连接端口范围
    net.ipv4.ip_local_port_range = 9000 65000
    #表示文件句柄的最大数量
    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    

    打开该文件使用的指令是vim /etc/sysctl.conf。vim的基本使用方法在文末会有介绍。

    接下来是使配置立即生效。

    /sbin/sysctl -p
    /sbin/sysctl -a
    

    将以下内容添加到/etc/security/limits.conf 中。该内容是最Oracle用户的一些限制。
    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 10240
    

    修改用户登录库文件

    vim /etc/pam.d/login
    
    在文件末尾添加下面2行内容
    session required /lib64/security/pam_limits.so
    session required pam_limits.so
    

    解压Oracle到/stage目录中,如果没有的话可以自动创建。

    unzip linuxx64_12201_database.zip -d /data/ttwis/ttwis_program/stage/
    

    创建一些其他目录,分配权限。

    mkdir -p /data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0
    mkdir -p /data/ttwis/ttwis_program/oracle/u01/app/oracle/oradata
    mkdir -p  /data/ttwis/ttwis_program/oracle/u01/app/oracle/inventory
    mkdir -p  /data/ttwis/ttwis_program/oracle/u01/app/oracle/fast_recovery_area::
    mkdir -p /data/ttwis/ttwis_program/oracle/u01
    mkdir -p /data/ttwis/ttwis_program/oracle/u02
    
    chown -R oracle:oinstall /data/ttwis/ttwis_program/oracle/u01
    chown -R oracle:oinstall /data/ttwis/ttwis_program/oracle/u02
    chmod -R 775 /data/ttwis/ttwis_program/oracle/u01
    chmod -R 775 /data/ttwis/ttwis_program/oracle/u02
    

    配置Oracle用户环境变量

    vim  .bash_profile
    
    # .bash_profile
    # Get the aliases and functions
    export PATH
    TMPDIR=$TMP;
    export TMPDIR
    ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle;
    export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1;
    export ORACLE_HOME
    ORACLE_SID=orcl;
    export ORACLE_SID
    PATH=$ORACLE_HOME/bin:$PATH;
    export PATH
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64;
    export LD_LIBRARY_PATH
    export NLS_LANG=AMERICAN_AMERICA.UTF8
    export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH NLS_LANG
    
    

    export NLS_LANG=AMERICAN_AMERICA.UTF8
    export LANG=en_US.UTF-8

    source .bash_profile
    

    NETWORKING=yes
    HOSTNAME=oracle12c

    修改用户登录环境变量
    vim .profile

    export PATH
    TMPDIR=$TMP;
    export TMPDIR
    ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle;
    export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1;
    export ORACLE_HOME
    ORACLE_SID=orcl;
    export ORACLE_SID
    PATH=$ORACLE_HOME/bin:$PATH;
    export PATH
    

    使修改的文件生效

    source .profile
    

    安装Oracle
    环境配置
    添加防火墙(不需要做,因为防火墙已经被永久关闭了)

     firewall-cmd –zone=public –add-port=1521/tcp –add-port=5500/tcp –add-port=5520/tcp –add-port=3938/tcp –permanent
    

    配置/etc/profile

    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
    
    
    export JAVA_HOME=/data/ttwis/ttwis_program/java8
    export JRE_HOME=/data/ttwis/ttwis_program/java8/jre
    export NGINX_HOME=/usr/local/nginx/sbin
    export MYSQL_HOME=/data/ttwis/ttwis_program/mysql-5.7.30
    export MONGODB_HOME=/data/ttwis/ttwis_program/mongodb
    export ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$NGINX_HOME:$MYSQL_HOME/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$NGINX_HOME:$MYSQL_HOME/bin:$MONGODB_HOME/bin:$ORACLE_HOME/bin
    
    source /etc/profile
    

    安装Oracle数据库。在这里最好重启一下电脑。使用Oracle用户登录。在终端输入

    cd /data/ttwis/ttwis_program/stage/database/
    ./runInstaller
    
    image.png
    image.png

    1、第一步用来配置更新以及技术支持的,把勾去掉直接下一步就行


    image.png

    2、配置安装选项,这三个选项分别表示:①创建并配置一个新数据库,适用于新安装数据库的用户;②只安装数据库软件,适用于已有Oracle数据库数据用于数据迁移的;③升级已有数据库,适用于将老数据库升级成新数据库的用户。毫无疑问这里选择第一个选项。


    image.png

    3、第三步配置桌面版还是服务器版,桌面版是最小化配置,这里选择服务器版的配置。


    image.png

    4、第四步分布式网格配置,这里选择单实例服务器配置,如果要配置分布式服务的话可以参考安装文档,里面有详细的分布式服务安装过程。


    image.png

    5、选择高级安装


    image.png

    6、第七步选择数据库版本,这里选择企业版


    image.png

    7、选择安装路径,这个已经在环境变量里配置过了


    image.png

    8、这个Inventory Directory目录用于记录Oracle的清单信息的,清单信息中包括Oracle的安装路径等信息。这里也默认路径即可。

    image.png

    9、创建数据库的类型:
    通用/事务处理:专为一般用途或交互较多的应用程序而设计。
    数据仓库:对数据存储应用程序进行优化。
    这里选择通用的就行。


    image.png

    10、配置数据库名,和Oracle服务ID号
    注意数据库名一定要记住,以后进行程序开发会用到这个数据库名


    image.png

    11、这里需要配置一下字符集,将字符集设置成UTF-8,其他的不用修改(如果有特殊需求可以参考文档来配置)。


    image.png

    下面默认即可:


    image.png

    12、配置数据存储的(数据文件存储位置),默认的位置就是自己想存放的位置

    image.png

    13、配置数据备份


    image.png

    设置管理工具

    14、配置账号密码,这里我将所有的默认用户统一使用相同的密码(如果密码太简单可能会报错,需要大小写数字都包含,需要精心设计一个密码)。
    Ttwis8852


    image.png

    15、这一步用于配置数据库用户组的,只要安装前的配置工作完成了,这一步可以直接使用默认的。


    image.png

    16、这一步会检测交换分区大小、内核参数以及依赖包是否安装。只要前面准备工作都完成了,下面的错误可以直接忽略(比如它要求的软件包,我们的版本实际上比它要求的还高,所以这里的报错没必要理会它)。


    image.png
    17、对前面所有配置的一个总结,我们可以直接点击完成
    image.png

    18、安心的等待安装成功


    image.png
    image.png
    /data/ttwis/ttwis_program/oracle/u01/app/oraInventory/orainstRoot.sh
    /data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/root.sh
    
    image.png

    第一行配置完成。


    image.png
    image.png

    新建文件夹:


    image.png
    再次运行:
    /data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/root.sh
    
    image.png image.png

    配置完成


    image.png

    等待,安装成功!

    查看端口

    netstat -nupl (UDP类型的端口)
    netstat -ntpl (TCP类型的端口)
    

    orclpdb
    登录指令

    sqlplus sys/dwh as sysdba;
    

    查看oracle版本

    select * from v$version;
    
    image.png

    启动数据库

    startup
    
    image.png
    show con_name;
    
    image.png

    查看CDB$ROOT下所有的pdbs

    select  name , open_mode from v$pdbs;
    
    image.png
    select con_id, dbid, guid, name , open_mode from v$pdbs;
    --v$pdbs为PDB信息视图,此处用了安装的时候的默认的可拔插的数据库ORCLPDB
    
    image.png
     alter session set container=ORCLPDB;  --切换到ORCLPDB容器
    alter session set container=LIVING_TJ;
    alter session set container=LIVING_XIANJD;
    
    image.png

    关闭pdb

    alter pluggable database orclpdb close;
    alter pluggable database orclpdb open;
    alter pluggable database LIVING_TJ open;
    alter pluggable database LIVING_XIANJD open;
    

    切换回CDB$ROOT

    alter session set container=cdb$root;
    

    打开SQL plus并且进行连接

    sqlplus /nolog
    

    使用超级管理员登录

    CONN sys/change_on_install AS SYSDBA ;
    

    创建c##ttwis 用户

    CREATE USER c##ttwis IDENTIFIED BY Ttwis2098;
    

    为用户授权

    GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO c##ttwis CONTAINER=ALL ;
    

    设置用户使用的表空间

    image.png

    启动数据库

    startup
    

    --创建表空间

    create tablespace LIVING_TJ datafile '/data/ttwis/ttwis_program/oracle/u01/app/oracle/oradata/orcl/orclpdb/LIVING_TJ.dbf' size 1024m autoextend on next 100m;
    
    

    datafile 表对应的·数据文件
    size表空间初始大小
    autoextend on 自动增长,表空间满后,自动增长
    next 一次自动增长的大小


    image.png

    创建数据库

    dbca
    

    查看Oracle 12c的版本
    select * from vversion; 通过ALTER SESSION SET CONTAINER 指定其他容器 select con_id,dbid,NAME,OPEN_MODE from vpdbs;
    将LIVING_XIANJD open:
    alter pluggable database LIVING_XIANJD open;
    alter pluggable database LIVING_TJ open;
    alter session set container=LIVING_TJ;
    查看当前使用容器
    select sys_context ('USERENV', 'CON_NAME') from dual;
    创建用户
    create user LIVING_XIANJD identified by Ttwis8852;
    create user LIVING_TJ identified by Ttwis8852;
    赋予所有权
    grant dba to LIVING_XIANJD ;
    grant dba to LIVING_TJ ;

    DROP USER c##ttwis CASCADE
    DROP TABLESPACE ttwis;
    drop user ttwis cascade;

    DROP TABLESPACE ttwis INCLUDING CONTENTS AND DATAFILES;

    数据库重启:

    先关闭
    sqlplus sys/ as sysdba;
    我们关闭CDB:
    SQL>shutdown immediate
    SQL>exit
    
    image.png
    lsnrctl stop
    lsnrctl start
    
    image.png
    sqlplus sys/ as sysdba;
    SQL>startup
    
    image.png

    Oracle 12C连接的坑
    /data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora

    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
    

    重设密码即可


    image.png

    相关文章

      网友评论

          本文标题:centos7安装oracle12c

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