CentOS7 Oracle12c 静默安装[亲测有效]

CentOS7 Oracle12c 静默安装[亲测有效]CentOS7 Oracle12c 静默安装 izaibuzai 2018-11-11 14:26:35 5598 收藏 11 分类专栏: CentOS7 Oracle 版权 参考: http://…

CentOS7 Oracle12c 静默安装

CentOS7 Oracle12c 静默安装
izaibuzai 2018-11-11 14:26:35 5598 收藏 11
分类专栏: CentOS7 Oracle
版权

参考:

http://blog.51cto.com/12790274/2062955

https://blog.csdn.net/github_39294367/article/details/77057149

https://blog.csdn.net/sinat_41525226/article/details/78909706

https://blog.csdn.net/dbagaoshou/article/details/78964122

一、准备工作:

1.VM虚拟机:

2.CentOS7 映像:

3.Oracle12c 安装包:

4.Linux系统远程工具

5.文本编辑工具

二、系统环境部署

1.新建虚拟机,这里设置的两个虚拟硬盘属于个人习惯,可以忽略,主要用于试验;

2.安装CentOS7系统,这里安装的是64位的系统

3.系统安装时选择的是最小安装,使用的时候连 ifconfig 也用不了,正好把回顾一遍 yum 安装相关知识

CentOS7 设置yum安装的本地资源为光盘资源

CentOS7 ifconfig命令无法使用的解决办法

CentOS7 修改设置静态IP和DNS

【注意】修改IP和主机名,要设置一下HOSTS配置文件,不然启动oracle监听和实例会比较慢

    [root@vs ~]# vi /etc/hosts
     
    # 增加信息格式如下:
    IP地址    主机名

三、安装Oracle数据库系统

1.检查oracle所需包 (以root身份操作)

rpm -q binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

 

2.安装oracle依赖包(以root身份操作)  

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

    # 也可以分段执行,避免遗漏
    yum install -y compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686
    yum install -y glibc*.i686 glibc-devel glibc-devel*.i686
    yum install -y ksh libaio*.i686 libaio-devel libaio-devel*.i686
    yum install -y libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686
    yum install -y libXtst libXtst*.i686 libgcc*.i686 libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686
    yum install -y libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel
    yum install -y gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

 

3.修改内核参数(参考的资料有这么一段,考虑到这个是系统性能优化的设置,所以没有做这一步)

    [root@Oracle ~]# vim /etc/sysctl.conf
     
    #修改或添加以下内容
    fs.aio-max-nr = 1048576  
    fs.file-max = 6815744               // 设置最大打开文件数  
    kernel.shmall = 16777216            // 共享内存的总量,8G内存设置:2097152*4k/1024/1024
    kernel.shmmax = 34359738360         // 最大共享内存的段大小,G换算成k计算
    kernel.shmmni = 4096                // 整个系统共享内存端的最大数  
    kernel.sem = 250 32000 100 128  
    net.ipv4.ip_local_port_range = 9000 65500        // 可使用的IPv4端口范围  
    net.core.rmem_default = 262144  
    net.core.rmem_max = 4194304  
    net.core.wmem_default = 262144  
    net.core.wmem_max = 1048576
     
    #
    [root@Oracle ~]# sysctl -p
     
    # 检查并生效
    [root@Oracle ~]# sysctl -a

4.创建用户组和用户(以root身份操作)

    [root@Oracle ~]# groupadd oinstall
    [root@Oracle ~]# groupadd dba
    [root@Oracle ~]# groupadd oper
    [root@Oracle ~]# useradd -g oinstall -G dba,oper oracle
    #修改用户密码
    [root@Oracle ~]# passwd oracle
    或
    [root@Oracle ~]# echo “123456” | passwd –stdin oracle

5.创建相关目录

    [root@Oracle ~]# mkdir /u01
    [root@Oracle ~]# mkdir -p /u01/app/oracle                 //oracle数据库安装目录
    [root@Oracle ~]# mkdir -p /u01/app/oraInventory           //oracle数据库配置文件目录
    [root@Oracle ~]# mkdir -p /u01/app/oracle/oradata         //存放数据库的数据目录
    [root@Oracle ~]# mkdir -p /u01/app/oracle/oradata_back    //存放数据库备份文件
    [root@Oracle ~]# chmod -R 775 /u01/app
    [root@Oracle ~]# chown -R oracle:oinstall /u01            //设置目录所有者为oinstall用户组的oracle用户

6.修改etc/profile

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

7.修改/home/oracle/.bash_profile

    #oracle数据库安装目录
    ORACLE_BASE=/u01/app/oracle
    #oracle数据库路径
    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
    #oracle启动数据库实例名
    ORACLE_SID=orcl
    #添加系统环境变量
    PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    #添加系统环境变量
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
     
    # 该部分重要,后续错误一般是该步骤造成
    export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH

    # 使配置生效
    [root@Oracle ~]# source /home/oracle/.bash_profile

8.配置Java环境

    [root@Oracle ~]# java -version                     # 查看安装版本
    [root@Oracle ~]# yum remove openjdk                # 如果是系统自带的openjdk,则卸载
    [root@Oracle ~]# rpm -ivh jdk-8u191-linux-x64.rpm  # 安装自己下载的JDK

  这里要用到工具  ,把JDK安装包上传到虚拟机,oracle安装包也是用同样的方法上传,我是放到home目录下,用完就可以删掉。

9.解压oracle安装包,解压后路径:/u01/database

[root@Oracle ~]# unzip linuxx64_12201_database.zip -d /u01        # 没有unzip命令,则先安装unzip

10.修改应答文件,静默安装配置文件路径:/u01/database/response/db_install.rsp

    oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
    # 30行 安装类型,只装数据库软件
    oracle.install.option=INSTALL_DB_SWONLY
    # 35行 用户组
    UNIX_GROUP_NAME=oinstall
    # 42行 INVENTORY目录(不填就是默认值)
    INVENTORY_LOCATION=/u01/app/oraInventory
    # 46行 oracle目录
    ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
    # 51行 oracle基本目录
    ORACLE_BASE=/u01/app/oracle
    # 63行 oracle版本
    oracle.install.db.InstallEdition=EE
    # 80行
    oracle.install.db.OSDBA_GROUP=dba
    # 86行
    oracle.install.db.OSOPER_GROUP=oper
    # 91行
    oracle.install.db.OSBACKUPDBA_GROUP=dba
    # 96行
    oracle.install.db.OSDGDBA_GROUP=dba
    # 101行
    oracle.install.db.OSKMDBA_GROUP=dba
    # 106行
    oracle.install.db.OSRACDBA_GROUP=dba
    # 180行 数据库类型
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
    # 185行
    oracle.install.db.config.starterdb.globalDBName=orcl
    # 190行
    oracle.install.db.config.starterdb.SID=orcl
    # 216行
    oracle.install.db.config.starterdb.characterSet=AL32UTF8
    # 384行
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
    # 398行 设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)
    DECLINE_SECURITY_UPDATES=true

可以使用 SecureFxPortable 工具把 db_install.rsp 文件下载到本机,用 EditPlus 文本编辑工具修改,再上传替换,这样比较方便。

11.安装Oracle数据库软件(以oracle用户身份操作)

[oracle@vs database]$ ./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /u01/database/response/db_install.rsp

  可以边装边查看日志,日志文件路径在执行11的时候会给出

[oracle@vs OraInstall2018-11-12_12-40-15am]$ tail –f installActions2018-11-12_12-40-15AM.log

安装日志截图:

当出现上图提示时,可以在产品清单目录查看安装日志

[oracle@vs ~]$ tail –f/u01/app/oraInventory/logs/installActions2018-11-12_12-40-15AM.log

12.安装成功后会提示如下图命令,需要切换到root身份执行

    [root@vs ~]# /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@vs ~]# /u01/app/oracle/product/12.2.0/db_1/root.sh  
    Check /u01/app/oracle/product/12.2.0/db_1/install/root_Oracle_2017-04-15_20-56-27-813321685.log for the output of root script

13.配置监听,静默安装配置文件路径:/u01/database/response/netca.rsp

netca -silent -responsefile /u01/database/response/netca.rsp

   可以通过 netstat -tlnp 命令查看监听地址

    netstat -tlnp
    tcp  0   0 :::1521        :::*      LISTEN      5477/tnslsnr

14.修改dbca.rsp文件,静默安装配置文件路径:/u01/database/response/dbca.rsp

    # 21行 不可更改
    responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
    # 32行 全局数据库名
    gdbName=orcl
    # 42行 系统标识符
    sid=orcl
    # 52行
    databaseConfigType=SI
    # 74行
    policyManaged=false
    # 88行
    createServerPool=false
    # 127行
    force=false
    # 163行 createAsContainerDatabase设为true表示创建容器数据库;false为普通数据库
    createAsContainerDatabase=false
    # 172行
    numberOfPDBs=1
    # 182行
    pdbName=orclpdb
    # 192行
    useLocalUndoForPDBs=true
    # 203行 库密码
    pdbAdminPassword=********
    # 223行
    templateName=/u01/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc
    # 233行 超级管理员密码
    sysPassword=********
    # 233行 管理员密码
    systemPassword=********
    # 273行
    emExpressPort=5500
    # 284行
    runCVUChecks=false
    # 313行
    omsPort=0
    # 341行
    dvConfiguration=false
    # 391行
    olsConfiguration=false
    # 401行
    datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
    # 411行
    datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
    # 421行
    recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
    # 431行
    storageType=FS
    # 468行 字符集创建库之后不可更改
    characterSet=AL32UTF8
    # 478行
    nationalCharacterSet=AL16UTF16
    # 488行
    registerWithDirService=false
    # 526行
    listeners=LISTENER
    # 546行
    variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1,SID=orcl
    # 555行
    initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_orcl,compatible=12.2.0,control_files=(“{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl”, “{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl”),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
    # 565行
    sampleSchema=false
    # 574行
    memoryPercentage=40
    # 584行
    databaseType=MULTIPURPOSE
    # 594行
    automaticMemoryManagement=false
    # 604行
    totalMemory=0

15.创建数据库实例,使用 dbca 命令(dbca是oracle命令,如果提示命令找不到,检查环境变量)

[oracle@oracle response]$ dbca -silent -createDatabase -responseFile  /u01/database/response/dbca.rsp

16.检查oracle进程状态

    ps -ef | grep ora_ | grep -v grep
    lsnrctl status

17.数据库实例的启动和关闭

    # 以 DBA 身份进入 sqlplus,查看数据库状态
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> select open_mode from v$database;             //查看数据库
    SQL> select status from v$instance;                //查看数据库实例
     
    # 以 DBA 身份进入 sqlplus,修改管理员用户密码
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> alter user sys identified by ********;        //改sys超级管理员密码
    SQL> alter user system identified by ********;     //改system管理员密码
     
    # 以 DBA 身份进入 sqlplus,启动数据库
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> startup
     
    # 以 DBA 身份进入 sqlplus,关闭数据库
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> shutdown abort
    或
    SQL> shutdown immediate

18.修改oracle启动配置文件

完成oracle12c数据库的安装后,相关服务器会自动启用,但并不表示下次开机后oracle服务器仍然可用。下面将介绍oracle的基本服务组件,以及如何编写服务脚本来控制oracle数据库系统的自动运行。

根据上面的安装过程,oracle的数据库软件将安装在变量ORACLE_HOME所指向的位置。例如 /u01/app/oracle/product/12.2.0/db_1/ ,而各种服务器组件程序(也包括sqlplus命令)正是位于其中的bin子目录下。

Oracle数据库的基本服务组件如下所述:(注:oracle服务组件最好以oracle用户身份运行如:su – oracle)

lsnrctl:监听器程序,用来提供数据库访问,默认监听TCP 1521端口。

dbstart、dbshut:数据库控制程序,用来启动、停止数据库实例。

emctl:管理器控制工具,用来控制OEM平台的开启与关闭,OEM平台通过1158端口提供HTTPS访问,5520端口提供TCP访问。

为了方便执行oracle的服务组件程序,建议对所有用户的环境配置作进一步的优化调整、补充PATH路径、oracle终端类型等变量设置。除此以外,还应该修改/etc/oratab配置文件,以便运行dbstart时自动启用数据库实例。

    # 修改oratab配置如下,这样就可以通过dbstart 启动实例,也可以通过dbshut关闭实例。
    [oracle@Oracle ~]$ vim /etc/oratab
     
    racl:/u01/app/oracle/product/12.2.0/db_1:Y  //把“N”改成“Y”
     
    # 此时所有oracle的进程关闭,监听器也停止。
    [oracle@Oracle ~]$ dbshut /u01/app/oracle/product/12.2.0/db_1/
     
    # 启动监听器和实例。
    [oracle@Oracle ~]$ dbstart /u01/app/oracle/product/12.2.0/db_1/
     
    # 修改 dbstart 和 dbshut,如下
    # 修改 #ORACLE_HOME_LISTNER=$1 为 ORACLE_HOME_LISTNER=$ORACLE_HOME
     
    # 在 root 用户下编辑 rc.local
    # dbstart 默认将 oratab 中参数为 Y 的所有库启动
    [root@Oracle ~]# vi /etc/rc.d/rc.local
     
    # 添加如下命令到 rc.local
    # 用oracle用户登录,运行dbstart启动数据库
    su – oracle -lc “/u01/app/oracle/product/12.2.0/db_1/bin/dbstart”
     
    # 设置执行权限,因为Oracle linux 7.x 默认rc.local是没有执行权限,需执行chmod自己增加
    [root@Oracle ~]# chmod +x /etc/rc.d/rc.local
     
    # 查看监听状态及数据库状态
    [oracle@Oracle ~]$ lsnrctl status
     
    # 启动监听
    [oracle@Oracle ~]$ lsnrctl start
     
    # 停止监听
    [oracle@Oracle ~]$ lsnrctl stop

19.防火墙开放端口(以root身份操作)

    # 开启端口
    [root@vs ~]# firewall-cmd –zone=public –add-port=1521/tcp –permanent
    # 重启防火墙 (一般我们在开放完新的端口后,需要重新启动防火墙)
    [root@vs ~]# firewall-cmd –reload

20.ORA-28040: 没有匹配的验证协议

  在 $ORACLE_HOME/network/admin/sqlnet.ora

  加入如下:

  SQLNET.ALLOWED_LOGON_VERSION=8

21.安装报错

[oracle@yb-oracle response]$ dbca -silent -createDatabase -responseFile /ora01/database/response/dbca.rsp
[FATAL] [DBT-11211] The Automatic Memory Management option is not allowed when the total physical memory is greater than 4GB.
   CAUSE: The current total physical memory is 15GB.

解决: automaticMemoryManagement=false

 [FATAL] [DBT-06103] The port (5,500) is already in use.
   ACTION: Specify a free port.

解决:hosts解析问题,eg:oracleip yb-oracle yb-oracle.example.com
————————————————
版权声明:本文为CSDN博主「izaibuzai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haopeng7816/java/article/details/83956623

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7455.html

(0)
上一篇 2023-03-20 10:00
下一篇 2023-03-20

相关推荐

  • redis scan命令遍历数据_scan redis

    redis scan命令遍历数据_scan redis1. 获取指定前缀的key 需求描述: Redis中有大量以xxx开头的key,在不使用keys命令的情况下,如何快速获取这些前缀的key 解决方案: redis自带的scan命令可以解决这个问题 2

    2023-05-29
    143
  • Python实现列表转字典

    Python实现列表转字典在Python编程中,将列表转换为字典是一个实用的技能。字典是Python中最常用的数据结构之一,列表是另一个重要的数据结构。将列表转换为字典是将数据从列表形式转换为字典形式的过程。字典表示键-值对的集合,每个键都是独特的、不可变的,作为字典的键可用于索引字典的值。

    2024-09-10
    26
  • Python函数初探:定义和调用

    Python函数初探:定义和调用Python函数是一组封装好的、可重用的、相互独立的代码块。具体来说,函数可以接收参数,执行一些代码,然后返回结果。在Python中定义和调用函数都非常简单,本文将从以下几个方面对Python函数进行详细的介绍。

    2024-02-07
    87
  • 两种运行Python程序的方法

    两种运行Python程序的方法Python作为一种高级编程语言,可用于多种任务——从数据分析到人工智能,从网页开发到自动化。Python社区也因此庞大,吸引了越来越多的程序员。当你开始使用Python时,你一定会问自己:如何运行Python程序?在本文中,我们将为您介绍两种常见的运行Python程序的方法。

    2024-09-15
    25
  • mysql数据库json类型数据_以下哪些是mysql数据类型

    mysql数据库json类型数据_以下哪些是mysql数据类型最右边的数组元素。MySQL支持last关键字,作为数组中最后一个元素的索引的同义词。last-N形式的表达式可用于相对寻址和范围定义,如下所示:如果不是针对数组计算路径,则求值结果与将该值包装在单…

    2023-04-06
    150
  • 深入理解Python中的map()函数

    深入理解Python中的map()函数Python中的map()函数是一种非常强大的函数,它可以作为列表、元组、字典等可迭代对象的内置函数。它接受一个函数和一个可迭代对象作为参数,然后将函数应用到可迭代对象中的每个元素,并返回一个包含结果的迭代器。map()函数是函数式编程的一个核心概念,具有简单、灵活、高效等优点。

    2024-08-19
    29
  • Spring 对象的获取,以及数据库连接应用

    Spring 对象的获取,以及数据库连接应用1.Spring IOC反射机制,需要调用无参构造器 springioc编写规则:接收方注入,需要定义set方法或带参的构造器 //利用反射创建对象(无参构造器),利用反射机制注入参数

    2023-03-15
    148
  • doevents的python的简单介绍

    doevents的python的简单介绍DoEvents的作用是转让控制权给系统。比如在执行十万次的加法减法运算时,如果不转让控制权,程序看起来就像死了一样,你也不能做任何事直到它结束。转让控制权以后,系统可以做别的事情。

    2023-11-30
    110

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注