oracle 提供了静默安装方法在不适用图形界面的情况下安装 oracle 软件 ,创建db,配置netca,快速完成oracle 的部署。
在以下情形中可以使用静默安装
a OUI 的 GUI 界面远程交互比较慢 .
b 数据库服务器无法使用图形界面访问.
c 批量部署oracle (标准环境统一情况下可以使用oracle 的relink ,这样更加快速).
本文主要讲述基本安装步骤,不涉及oracle 安装完成之后的运维规范: 监控,备份,定时日志清理,基础运维配置。
一 准备工作
1.linux检查安装包是否全
- rpm -q --queryformat \"%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils \
- compat-libstdc++-33 compat-db control-center elfutils-libelf elfutils-libelf-devel gcc \
- gcc-c++ glibc glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ \
- libstdc++-devel make sysstat unixODBC glibc-headers unixODBC-devel \
- oracleasm oracleasmlib oracleasm-support \
- pdksh sysstat xscreensaver | grep not | grep -v grep | awk '{print "yum install -y " $2 }'
注意:其中oracleasm oracleasmlib oracleasm-support可以去oracle官方asm lib网站下载
2.OS参数修改
a 修改/etc/sysctl.conf 文件 添加如下内容:
- fs.aio-max-nr = 1048576
- fs.file-max = 6815744
- kernel.shmall = 2097152
- kernel.shmmax = 48719476736
- kernel.shmmni = 4096
- kernel.sem = 250 32000 200 200
- net.ipv4.ip_local_port_range = 9000 65500
- net.core.rmem_default = 262144
- net.core.wmem_default = 262144
- net.core.wmem_max = 1048586
- net.core.rmem_max = 4194304
- /sbin/sysctl -p
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofile 65536
- 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
- umask 022
- fi
- groupadd -g 501 oinstall
- groupadd -g 502 dba
- groupadd -g 601 asmadmin
- groupadd -g 602 asmdba
- groupadd -g 603 asmoper
-
useradd -u 1101 -g oinstall -G dba oracle
- mkdir -p /opt/app/oracle
- chown -R oracle:oinstall /opt/app/oracle
- chmod -R 775 /opt
---oracle .bash_profile
- # .bash_profile
- # Get the aliases and functions
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- # User specific environment and startup programs
- PATH=$PATH:$HOME/bin:/opt/rac/oracle/opatch/OPatch
- export PATH
- umask 022
- export ORACLE_BASE=/opt/app/oracle
- export ORACLE_HOME=$ORACLE_BASE/11.2.0/product/db
- export ORACLE_SID=orcl
- export TNS_ADMIN=$ORACLE_HOME/network/admin
- export ORA_NLS10=$ORACLE_HOME/nls/data
- export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
- export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
- export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
- export PS1=$LOGNAME@`hostname`:'$PWD>'
- export SQLPATH=$ORACLE_HOME/sqlplus/admin:/home/oracle/admin/sql
- alias ohome="cd $ORACLE_HOME"
- alias tf="tail -f /opt/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log"
- alias sql='sqlplus "/"'
- alias sqln="sqlplus /nolog"
- alias rm='rm -i --'
- ulimit -u 16384 -n 63536 #linux
- esc="033["
- echo " "
- echo " "
- echo -e "${esc}31;1m******************************************************************${esc}0m"
- echo -e "${esc}31;1m***This is PRODUCT , Please be careful of your operation!***${esc}0m"
- echo -e "${esc}31;1m******************************************************************${esc}0m"
- echo " "
- echo " "
1 此步骤很重要,如果忽略1 ,最终会提示inventory 文件目录非空 导致静默安装失败 文章末尾会加以说明
vim /etc/oraInst.loc
-
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
- ./runInstaller -silent -debug -force -noconfig -IgnoreSysPreReqs \
- oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 \
- oracle.install.option=INSTALL_DB_SWONLY \
- DECLINE_SECURITY_UPDATES=true \
- UNIX_GROUP_NAME=oinstall \
- INVENTORY_LOCATION=/u01/app/oraInventory \
- SELECTED_LANGUAGES=en,zh_CN,zh_TW \
- ORACLE_HOME=/u01/app/oracle/product/11.2.0/db \
- ORACLE_BASE=/u01/app/oracle \
- oracle.install.db.InstallEdition=EE \
- oracle.install.db.isCustomInstall=false \
- oracle.install.db.DBA_GROUP=dba \
- oracle.install.db.OPER_GROUP=dba
安装完成之后 系统会提示我们用root用户运行如下两个脚本 。
- sh /u01/app/oracle/oraInventory/orainstRoot.sh
- sh /u01/app/oracle/product/11.2.0/db /root.sh
-silent 表示以静默方式安装,不会有任何提示
-force 表示允许安装到一个非空目录
-noconfig 表示不运行配置助手netca
-responseFile 表示使用哪个响应文件,必需使用绝对路径
oracle.install.responseFileVersion 响应文件模板的版本,该参数不要更改
oracle.install.option 安装模式选项,本例只安装oracle软件,该参数不要更改
DECLINE_SECURITY_UPDATES 是否需要在线安全更新,设置为false,该参数不要更改
UNIX_GROUP_NAME oracle 用户用于安装软件的组名
INVENTORY_LOCATION oracle 产品清单目录
SELECTED_LANGUAGES oracle 运行语言环境,一般包括引文和简繁体中文
ORACLE_HOME oracle安装目录
ORACLE_BASE oracle基础目录
oracle.install.db.InstallEdition 安装版本类型,一般是企业版
oracle.install.db.isCustomInstall 是否定制安装,默认Partitioning,OLAP,RAT都选上。根据自己的需要选择组件。
oracle.install.db.customComponents 定制安装组件列表:除了以上默认的,可加上Label Security和Database Vault
oracle.install.db.DBA_GROUP oracle 用户用于授予osdba权限的组名
oracle.install.db.OPER_GROUP oracle 用户用于授予osoper权限的组名
3 静默安装db
安装完成oracle软件之后还没创建db,我们可以继续使用静默方式创建数据库。
- dbca -silent -responseFile /u01/app/software/database/dbca.rsp
- [GENERAL]
- RESPONSEFILE_VERSION = "11.2.0"
- OPERATION_TYPE = "createDatabase"
- [CREATEDATABASE]
- GDBNAME = "orcl"
- SID = "orcl"
- TEMPLATENAME = "New_Database.dbt"
- SYSPASSWORD = "xxxxxxx"
- SYSTEMPASSWORD = "xxxxxxx"
- SYSMANPASSWORD = "xxxxxxx"
- DBSNMPPASSWORD = "xxxxxxx"
- DATAFILEDESTINATION ="/u01/app/oracle/oradata"
- STORAGETYPE=FS
- CHARACTERSET = "AL32UTF8"
- DATABASETYPE = "MULTIPURPOSE"
- AUTOMATICMEMORYMANAGEMENT = "FALSE"
- TOTALMEMORY =8192
4 配置网络监听
这一步我没有使用netca的默认方式,而是直接编辑了$ORACLE_HOME/network/admin/ 下的*.ora 文件。
根据需求编辑好了之后启动监听。
- lsnrctl start
三 遇到的问题
问题一 相信这个问题也是很多人也会遇到
- [FATAL] [INS-32035] Unable to create a new central inventory at the specified location.
- CAUSE: The central inventory location provided is not empty.
- ACTION: Please provide another location for the inventory, or clean up the current location.
使用root vim /etc/oraInst.doc 加入
- inventory_loc=/u01/app/oraInventory
- inst_group=oinstall
- [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
- CAUSE: The Central Inventory is located in the Oracle base.
- ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
如提示所言 Inventory 目录安装在了$ORACLE_BASE 目录下了,所以调整Inventory 目录不在$ORACLE_BASE 目录下,即可解决问题。
oraInventory 存放Oracle软件安装的目录信息,Oralce的安装和升级都需要用到这个目录,删除或丢失oraInventory目录的内容就会导致安装/升级失败。
Oracle官方文档对oraInventory的说明:
- All Oracle software installations rely on this directory.
- Ensure that you back it up regularly.
- Do not delete this directory unless you have completely removed
- all Oracle software from the system.
/etc/oraInst.loc (AIX and Linux Platform)
/var/opt/oracle/OraInst.loc (Solaris and HP-UX platform)
四 小结
说些题外话 因为项目的原因需要安装一套oracle 系统,谷歌,度娘 静默安装 等关键词,大多数文章基本都千篇一律。真不知道写文章的人是否真正安装成功?论坛上说学习称赞的人是否动手验证过?
纸上来得终觉浅 ,绝知此事要躬行。
做一个靠谱的人,更要做一个技术上靠谱的dba。