实验小记之Linux上的Oracle11gR2单实例静默安装和建库

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

说明:本文的所有步骤不适用于生产环境,仅用于个人测试环境的快速部署和学习,下述操作过程在Oracle Linux 7.9上安装Oracle 11.2.0.4单实例为例。
1 安装环境检查

安装环境的检查可以参考官方文档Oracle Database Quick Installation Guide for Linux x86-64。由于是测试环境,本文仅检查:

  • 物理内存大于1G。使用free -m命令检查
  • /tmp目录大于200MB。使用df -h命令检查,默认/tmp目录在根分区中,会大于200MB
  • hosts文件有对应的IP和主机名解析。使用cat /etc/hosts检查
  • 安装和建库需要约10GB的空间。本文安装在/u01,未使用独立的分区,也隶属于根分区中,有40GB的空间。
2 安装环境准备

2.1 准备Oracle用户和目录

使用root用户创建软件安装目录/u01/app/oracle/product/11.2.0.4/db_1,创建oinstall、dba、oper用户组,创建oracle用户,并且为oracle用户设置密码。
  1. groupadd -g 1300 oinstall
  2. groupadd -g 1301 dba
  3. groupadd -g 1302 oper
  4. useradd -u 1300 -g oinstall -G dba,oper -s /bin/bash oracle
  5. mkdir -p /u01/app/oracle/product/11.2.0.4/db_1
  6. chown -R oracle.oinstall /u01
  7. passwd oracle
复制代码
2.2 检查和安装所需的RPM包


  • 使用rpm检查软件包是否已安装,如果未安装,则会提示is not installed。
  1. rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-db compat-libcap1 compat-libstdc++-33 control-center elfutils-libelf-devel gcc gcc-c++ glibc-common glibc glibc-devel glibc-headers ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libgomp libXp make sysstat unzip
复制代码

  • 配置本地yum源,确保/etc/yum.repos.d/目录下仅有oracle-linux-ol7.repo配置文件
  1. [root@oracle11g ~]# cat /etc/yum.repos.d/oracle-linux-ol7.repo
  2. [ol7_latest]
  3. name=Oracle Linux $releasever Latest ($basearch)
  4. baseurl=file:///media/OEL79
  5. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
  6. gpgcheck=1
  7. enabled=1
  8. [root@oracle11g ~]# df -h | grep OEL
  9. /dev/sr0             4.6G  4.6G     0 100% /media/OEL79
  10. [root@oracle11g ~]# yum makecache
  11. Loaded plugins: ulninfo
  12. ol7_latest                                                                                                     | 3.6 kB  00:00:00     
  13. Metadata Cache Created
复制代码

  • 使用yum安装软件包
  1. yum install binutils compat-db compat-libcap1 compat-libstdc++-33 control-center elfutils-libelf-devel gcc gcc-c++ glibc-common glibc glibc-devel glibc-headers ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libgomp libXp make sysstat unzip -y
复制代码
2.3 修改配置参数


  • 修改pam认证机制,加载pam_limits.so模块来限制系统资源的使用
  1. echo "session    required     pam_limits.so">>/etc/pam.d/login
复制代码

  • 配置oracle用户的资源限制,限制打开进程数量和文件数量
  1. echo "oracle           soft    nproc   2047
  2. oracle           hard    nproc   16384
  3. oracle           soft    nofile  1024
  4. oracle           hard    nofile  65536
  5. ">>/etc/security/limits.conf
复制代码

  • 修改profile,Linux中初始化shell时会使用该配置文件,当用户登录系统时,系统会首先加载/etc/profile文件,然后再加载用户个人的shell初始化文件,如~/.bash_profile等。
  1. echo "if [ \$USER = "oracle" ]; then
  2. if [ \$SHELL = "/bin/ksh" ]; then
  3. ulimit -p 16384
  4. ulimit -n 65536
  5. else
  6. ulimit -u 16384 -n 65536
  7. fi
  8. umask 022
  9. fi
  10. ">>/etc/profile
复制代码

  • 修改内核参数,限制信号量、端口、文件数量等
  1. echo "fs.aio-max-nr = 1048576
  2. fs.file-max = 6815744
  3. kernel.shmall = 15461882265  #16GB
  4. kernel.shmmax = 4294967295 #4GB
  5. kernel.shmmni = 4096
  6. kernel.sem = 250 32000 100 128
  7. net.ipv4.ip_local_port_range = 9000 65500
  8. net.core.rmem_default = 262144
  9. net.core.rmem_max = 4194304
  10. net.core.wmem_default = 262144
  11. net.core.wmem_max = 1048576
  12. ">>/etc/sysctl.conf
复制代码
内核参数介绍:


  • fs.aio-max-nr = 1048576:控制系统异步输入输出操作(Asynchronous I/O)并发数的最大值,影响系统的数据传输效率和压力处理能力。
  • fs.file-max = 6815744:表示系统最大文件打开数量,默认是1024,可能会造成系统资源不足或进程无法打开文件等问题。
  • kernel.shmall = 15461882265:定义了系统使用的最大共享内存容量,以页面(4K)为单位,这里设置的是16GB。
  • kernel.shmmax = 4294967295:定义了用户进程可使用的共享内存大小,以字节为单位,这里设置的是4GB。
  • kernel.shmmni = 4096:定义了系统最大的共享内存区数量。
  • kernel.sem = 250 32000 100 128:设置内核信号量的值。后面的数字分别表示“信号量数组的数量”、“每个信号量数组中信号量的数目”、“系统所允许的信号量总数”和“一个信号量能带有的最大值”。
  • net.ipv4.ip_local_port_range = 9000 65500:设置本地端口范围。这里设置了本地端口的最小和最大值,限制要使用该端口的进程数量。
  • net.core.rmem_default = 262144:表示系统默认接收缓存区大小。
  • net.core.rmem_max = 4194304:表示系统中接收缓存区的最大数量,用来调节系统接收性能。
  • net.core.wmem_default = 262144:表示系统默认发送缓存区大小。
  • net.core.wmem_max = 1048576:表示系统中发送缓存区的最大数量,用来调节系统发送性能。

  • 配置oracle用户的环境变量,设置实例名为orcl、安装路径为/u01/app/oracle/product/11.2.0.4/db_1
  1. export ORACLE_SID=orcl
  2. export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
  3. echo "export ORACLE_SID=$ORACLE_SID
  4. export ORACLE_BASE=/u01/app/oracle
  5. export ORACLE_HOME=$ORACLE_HOME
  6. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
  7. export PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch
  8. export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
  9. umask 022
  10. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  11. export SQLPATH=$ORACLE_HOME/sqlplus/admin
  12. ">>/home/oracle/.bash_profile
复制代码
2.4 关闭selinux和防火墙
  1. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. systemctl disable firewalld --now
复制代码
完成上述操作后,需要重启操作系统才生效
  1. reboot
复制代码
2.5 准备软件安装包


  • 将安装包放在/tmp目录下
  1. unzip p13390677_112040_Linux-x86-64_1of7.zip
  2. unzip p13390677_112040_Linux-x86-64_2of7.zip
复制代码

  • 更改安装包的属组和用户为oinstall和oracle
  1. chown -R oracle.oinstall /tmp/database
复制代码
2.6 创建响应文件

需要留意的是UNIX_GROUP_NAME、INVENTORY_LOCATION、ORACLE_HOME、ORACLE_BASE,保持和前文的创建的用户名、安装路径一致。
  1. echo "oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
  2. oracle.install.option=INSTALL_DB_SWONLY
  3. ORACLE_HOSTNAME=DBProduce
  4. UNIX_GROUP_NAME=oinstall
  5. INVENTORY_LOCATION=/u01/app/oraInventory
  6. SELECTED_LANGUAGES=en,en_GB
  7. ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
  8. ORACLE_BASE=/u01/app/oracle
  9. oracle.install.db.InstallEdition=EE
  10. oracle.install.db.EEOptionsSelection=false
  11. oracle.install.db.optionalComponents=
  12. oracle.install.db.DBA_GROUP=dba
  13. oracle.install.db.OPER_GROUP=oper
  14. oracle.install.db.CLUSTER_NODES=
  15. oracle.install.db.isRACOneInstall=false
  16. oracle.install.db.racOneServiceName=
  17. oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
  18. oracle.install.db.config.starterdb.globalDBName=
  19. oracle.install.db.config.starterdb.SID=
  20. oracle.install.db.config.starterdb.characterSet=
  21. oracle.install.db.config.starterdb.memoryOption=false
  22. oracle.install.db.config.starterdb.memoryLimit=
  23. oracle.install.db.config.starterdb.installExampleSchemas=false
  24. oracle.install.db.config.starterdb.enableSecuritySettings=true
  25. oracle.install.db.config.starterdb.password.ALL=
  26. oracle.install.db.config.starterdb.password.SYS=
  27. oracle.install.db.config.starterdb.password.SYSTEM=
  28. oracle.install.db.config.starterdb.password.SYSMAN=
  29. oracle.install.db.config.starterdb.password.DBSNMP=
  30. oracle.install.db.config.starterdb.control=DB_CONTROL
  31. oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
  32. oracle.install.db.config.starterdb.automatedBackup.enable=false
  33. oracle.install.db.config.starterdb.automatedBackup.osuid=
  34. oracle.install.db.config.starterdb.automatedBackup.ospwd=
  35. oracle.install.db.config.starterdb.storageType=
  36. oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
  37. oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
  38. oracle.install.db.config.asm.diskGroup=
  39. oracle.install.db.config.asm.ASMSNMPPassword=
  40. MYORACLESUPPORT_USERNAME=
  41. MYORACLESUPPORT_PASSWORD=
  42. SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
  43. DECLINE_SECURITY_UPDATES=true
  44. PROXY_HOST=
  45. PROXY_PORT=
  46. PROXY_USER=
  47. PROXY_PWD=
  48. PROXY_REALM=
  49. COLLECTOR_SUPPORTHUB_URL=
  50. oracle.installer.autoupdates.option=SKIP_UPDATES
  51. oracle.installer.autoupdates.downloadUpdatesLoc=
  52. AUTOUPDATES_MYORACLESUPPORT_USERNAME=
  53. AUTOUPDATES_MYORACLESUPPORT_PASSWORD="/tmp/11gR2.rsp
复制代码
3 执行静默安装


  • 使用oracle用户,执行./runInstaller,注意-responseFile要用绝对路径
  1. cd /tmp/database
  2. ./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile /tmp/11gR2.rsp
复制代码

  • 安装过程输出
  1. Starting Oracle Universal Installer...
  2. Checking Temp space: must be greater than 120 MB.   Actual 28865 MB    Passed
  3. Checking swap space: must be greater than 150 MB.   Actual 3967 MB    Passed
  4. Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-05-06_03-53-30AM. Please wait ...You can find the log of this install session at:
  5. /u01/app/oraInventory/logs/installActions2023-05-06_03-53-30AM.log
  6. Prepare in progress.
  7. ..................................................   9% Done.
  8. Prepare successful.
  9. Copy files in progress.
  10. ..................................................   14% Done.
  11. ..................................................   20% Done.
  12. ..................................................   26% Done.
  13. ..................................................   31% Done.
  14. ..................................................   36% Done.
  15. ..................................................   41% Done.
  16. ..................................................   46% Done.
  17. ..................................................   51% Done.
  18. ..................................................   56% Done.
  19. ..................................................   63% Done.
  20. ..................................................   68% Done.
  21. ..................................................   73% Done.
  22. ..................................................   78% Done.
  23. ..................................................   83% Done.
  24. ..............................
  25. Copy files successful.
  26. Link binaries in progress.
  27. ..........
  28. Link binaries successful.
  29. Setup files in progress.
  30. ..................................................   88% Done.
  31. ..................................................   94% Done.
  32. Setup files successful.
  33. The installation of Oracle Database 11g was successful.
  34. Please check '/u01/app/oraInventory/logs/silentInstall2023-05-06_03-53-30AM.log' for more details.
  35. Execute Root Scripts in progress.
  36. As a root user, execute the following script(s):
  37.         1. /u01/app/oraInventory/orainstRoot.sh
  38.         2. /u01/app/oracle/product/11.2.0.4/db_1/root.sh
  39. ..................................................   100% Done.
  40. Execute Root Scripts successful.
  41. Successfully Setup Software.
复制代码
4 安装后配置

使用root用户来之执行配置脚本
  1. /u01/app/oraInventory/orainstRoot.sh
  2. /u01/app/oracle/product/11.2.0.4/db_1/root.sh
复制代码
5 执行静默建库

5.1 创建监听


  • 准备netca响应文件
  1. echo 'RESPONSEFILE_VERSION="11.2"
  2. CREATE_TYPE="CUSTOM"
  3. INSTALLED_COMPONENTS={"server","net8″,"javavm"}
  4. INSTALL_TYPE=""typical""
  5. LISTENER_NUMBER=1
  6. LISTENER_NAMES={"LISTENER"}
  7. LISTENER_PROTOCOLS={"TCP;1521"}
  8. LISTENER_START=""LISTENER""
  9. NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
  10. NSN_NUMBER=1
  11. NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
  12. NSN_SERVICE={"PLSExtProc"}
  13. NSN_PROTOCOLS={"TCP;HOSTNAME;1521"'>>/tmp/netca.rsp
复制代码

  • 执行静默安装,注意是/responsefile,而且响应文件要绝对路径
  1. netca /silent /responsefile /tmp/netca.rsp
复制代码

  • 配置成功后,输出如下:
  1. Parsing command line arguments:
  2.     Parameter "silent" = true
  3.     Parameter "responsefile" = /u01/install/netca.rsp
  4. Done parsing command line arguments.
  5. Oracle Net Services Configuration:
  6. Profile configuration complete.
  7. Oracle Net Services configuration successful. The exit code is 0
复制代码

  • 启动监听程序
  1. [oracle@oracle11g admin]$ lsnrctl start
  2. LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 06-MAY-2023 04:28:25
  3. Copyright (c) 1991, 2013, Oracle.  All rights reserved.
  4. Starting /u01/app/oracle/product/11.2.0.4/db_1/bin/tnslsnr: please wait...
  5. TNSLSNR for Linux: Version 11.2.0.4.0 - Production
  6. Log messages written to /u01/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
  7. Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
  8. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
  9. STATUS of the LISTENER
  10. ------------------------
  11. Alias                     LISTENER
  12. Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
  13. Start Date                06-MAY-2023 04:28:26
  14. Uptime                    0 days 0 hr. 0 min. 0 sec
  15. Trace Level               off
  16. Security                  ON: Local OS Authentication
  17. SNMP                      OFF
  18. Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
  19. Listening Endpoints Summary...
  20.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
复制代码
5.2 执行静默建库


  • 使用oracle用户执行dbca命令来完成静默建库,安装过程中会自动创建/u01/app/oracle/oradata目录,并拷贝数据文件和生成控制文件、日志文件,将所有密码设置为oracle11g。
  1. dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname orcl -sid orcl -responseFile NO_VALUE -characterSet ZHS16GBK -memoryPercentage 75 -emConfiguration LOCAL -datafiledestination /u01/app/oracle/oradata -sysPassword oracle11g -systemPassword oracle11g -dbsnmpPassword oracle11g -sysmanPassword oracle11g
复制代码

  • 建库过程输出
  1. Copying database files
  2. 1% complete
  3. 3% complete
  4. 11% complete
  5. 18% complete
  6. 26% complete
  7. 37% complete
  8. Creating and starting Oracle instance
  9. 40% complete
  10. 45% complete
  11. 50% complete
  12. 55% complete
  13. 56% complete
  14. 60% complete
  15. 62% complete
  16. Completing Database Creation
  17. 66% complete
  18. 70% complete
  19. 73% complete
  20. 85% complete
  21. 96% complete
  22. 100% complete
  23. Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
复制代码
6 安装完成后检查


  • 数据库实例的监听注册状态,确定是READY
  1. [oracle@oracle11g ~]$ lsnrctl stat
  2. LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 06-MAY-2023 04:35:48
  3. Copyright (c) 1991, 2013, Oracle.  All rights reserved.
  4. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
  5. STATUS of the LISTENER
  6. ------------------------
  7. Alias                     LISTENER
  8. Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
  9. Start Date                06-MAY-2023 04:28:26
  10. Uptime                    0 days 0 hr. 7 min. 22 sec
  11. Trace Level               off
  12. Security                  ON: Local OS Authentication
  13. SNMP                      OFF
  14. Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xml
  15. Listening Endpoints Summary...
  16.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
  17. Services Summary...
  18. Service "orcl" has 1 instance(s).
  19.   Instance "orcl", status READY, has 1 handler(s) for this service...
  20. Service "orclXDB" has 1 instance(s).
  21.   Instance "orcl", status READY, has 1 handler(s) for this service...
  22. The command completed successfully
复制代码

  • 登录数据库,检查数据库状态为OPEN
  1. [oracle@oracle11g ~]$ sqlplus  / as sysdba
  2. SQL*Plus: Release 11.2.0.4.0 Production on Sat May 6 04:36:58 2023
  3. Copyright (c) 1982, 2013, Oracle.  All rights reserved.
  4. Connected to:
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. SQL> select name,open_mode from v$database;
  8. NAME          OPEN_MODE
  9. --------- --------------------
  10. ORCL          READ WRITE
复制代码
至此,Oracle11gR2单实例静默安装和建库完成。
再次强调一遍,本文安装的环境仅适用于测试,生产环境的数据库安装,请遵循Oracle的最佳实践。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表