linux环境下oracle 11g 静默安装
编写人:黄宝康
1、编写目的
运维人士经常需要干一些环境搭建的事,对于linux下安装oracle,虽然说可以使用带图形界面的安装,只需要设置oracle的安装目录,设置sid名称,db_name实例名称,下一步下一步式的安装,涉及到的磁盘空间检查及相关依赖,如果不符合条件,图形界面都会给予相应提示,好处莫过于方便简单。但是运维的人碰到远程机器没有图形界面的linux系统,很有必要学会oracle的静默安装方式,掌握了此方法,不管是否有图形界面都可以安装成功,以达到一石二鸟的效果。
2、安装环境
Linux服务器:oracle linux 6.6 64位
Oracle服务器:Oracle11gR2 64位
3、系统要求
内存:必须高于1G的物理内存
交换空间:一般为内存的2倍,例如:1G的内存可以设置swap 分区为3G大小
硬盘:5G以上
4、正式安装
1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件,将以下内容加入追加到文件末尾。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2)修改/etc/pam.d/login 文件,将以下内容加入该文件。
注意,如果是linux64位,应该将lib改成lib64,否则重启linux系统的时候会报module is unknown错误,导致系统都登录不了
session required /lib/security/pam_limits.so
session required pam_limits.so
3)修改linux内核/etc/sysctl.conf文件,将以下内容加入该文件。
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
要使该文件修改立即生效,要执行sysctl -p命令
4)修改/etc/profile文件,设置oracle用户的的最大进程数
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
5)建立oracle用户及用户组,oracle产品规定,必须以oracle用户的身份进行安装。
创建用户,输入命令:
groupadd oinstall
groupadd dba
创建Oracle用户和密码,输入命令:
useradd -g oinstall -g dba -m oracle
passwd oracle
然后会让你输入密码,密码任意输入2次,但必须保持一致,回车确认
5)创建oracle安装目录,及数据文件存放目录位置,这里可自定义。在这里举例安装放在/u01/app/oracle目录
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory
6)设置目录所属主为oracle所有。
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oraInventory
7)安装依赖检查
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"
把上面提示的所有not installed的软件包,使用yum 安装,根据不同系统环境,每个人的可能不一样。不过直接执行下面语句,不管有没有安装,全部一并执行也可以(对照下就会发现只是把rpm -q改成了yum install,后面完全一样)。
yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel
由于pdksh软件包貌似在yum源里没有了,在我安装的时候独立在网上下载了pdksh的rpm包,然后使用rpm -ivh 包名安装,下载地址:http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm。如果没有出现我这个问题,可以略过这个独立安装。
8)配置oracle的环境变量,先切换oracle用户
输入:su - oracle
然后输入vi .bash_profile追加以下内容
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
解释:ORACLE_BASE环境变量为安装根目录,安装完之后会在ORACLE_HOME目录生成好多文件,ORACLE_SID为实例sid,可自定义。
9)开始安装
官网上下载linux版本的oracle11gR2,一共两个包linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip,使用ftp等方式上传到/home/oracle目录,并使用unzip命令进行解压。
解压完之后会生成database目录。(检查下database的所属用户信息 ll /home/oracle,一定要是oracle:oinstall,不是的话,使用如下命令修改chown -R oracle:oinstall /home/oracle/database)
构建静默安装的rsp响应文件,
[oracle@localhost ~]$ cd /home/oracle/database/response/
[oracle@localhost response]$ ls
dbca.rsp dbca.rsp.bak db_install.rsp db_install.rsp.bak netca.rsp netca.rsp.bak
我上面把之前的响应文件做了备份。
db_install.rsp文件内容如下:为节省篇幅,我把所有的注释删除了。
注意的地方:INVENTORY_LOCATION为你要安装的目录(前提条件要创建好,之前步骤已创建好该目录),并设置好ORACLE_HOME和ORACLE_BASE,及oracle.install.db.config.starterdb.SID,主要是这几个配置是自定义的。
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
然后执行静默安装的如下命令
./runInstaller -silent -force -noconfig -ignorePrereq -responseFile /home/oracle/database/response/db_install.rsp
以上命令会自动检查系统是否满足oracle11gR2的安装要求,如交换空间是否够,硬盘,内存等等。执行的时间会比较久,可以先去喝杯咖啡再听首音乐,如不出意外的情况下,会输出如下信息。
Execute Root Scripts in progress.
As a root user, execute the following script(s):
1. /u01/app/oracle/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/11.2.0.1/db_1/root.sh
根据要求,新开一个窗口,以root身份分别执行这两个脚本即可。
关于dbca.rsp文件,一种方式是修改好配置文件,然后使用命令短一点的方式执行,不过dbca命令也可以通过参数同样实现动态配置。所以一般使用第二种方式,加参数的方式。
dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbName orcl -sid orcl -sysPassword huangbaokang -systemPassword huangbaokang -datafileDestination /u01/app/oraData -characterSet UTF8 -automaticMemoryManagement true
一大推的百分号进度条之后,以上命令会创建一个sid:orcl,sys用户的密码为huangbaokang,数据文件存放/u01/app/oraData目录,数据库编码UTF8,关于更多的配置,查看更多的dbca资料。
如掌握删除数据库实例orcl方法:
dbca -silent -deleteDatabase -sourcedb orcl
最后一步配置监听listener
使用ntca命令进行
netca -silent -responsefile /home/oracle/database/response/netca.rsp
编辑生成的listenter.ora文件,追加
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) ))
5、数据库验证
su - oracle 切换oracle用户
sqlplus / as sysdba 登录sqlplus
startup 启动oracle
建用户和表空间命令
/*临时表空间*/
create temporary tablespace hbk_temp
tempfile '/u01/app/oraData/orcl/hbk_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*创建数据表空间 */
create tablespace hbk_data
logging
datafile '/u01/app/oraData/orcl/hbk_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*创建用户*/
create user hbk
identified by "hbk"
default tablespace hbk_data
temporary tablespace hbk_temp
profile DEFAULT;
grant connect to hbk;
grant dba to hbk;
grant exp_full_database to hbk;
grant imp_full_database to hbk;
grant resource to hbk;
grant unlimited tablespace to hbk;
exit 退出sqlplus
lsnrctl start命令启动监听
查看系统ip,使用ifconfig命令,用oracle sql developer等客户端进行连接验证,并注意防火墙问题。