linux静默安装oracle
1 安装前环境:
操作系统:CetnOS6.4x64 最小化安装,已配置好网络IP:172.18.10.213,物理内存4GB,硬盘100GB。
已下载: linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
位于目录: /sharedisk/11G/
2 准备工作
root用户登录后
# yum install unzip //下载unzip,用来解压上述两个压缩文件
# cd /sharedisk/11G //切换当前目录到oracle压缩文件所在目录
# unzip linux.x64_11gR2_database_1of2.zip //解压
# unzip linux.x64_11gR2_database_2of2.zip
解压后新增一个/sharedisk/11G/database目录,里面是解压后的所有oracle安装文件。
在/etc/hosts文件中增加主机名(通过hostname获得)到回环IP的映射如下:
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.10.213 ora11g
# vi /etc/selinux/confg 设置 SELINUX=disabled
# setenforce 0 //关闭selinux
# service iptables stop //临时关闭防火墙
3 安装必须的包
# yum install nfs-utils //可以挂载nfs server
#yum install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel
4 准备安装用户及用户组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle //设置oracle密码
5 修改内核参数配置文件
# vi /etc/sysctl.conf 在文件最后增加(根据文档要求kernel.shmmax设成物理内存的一半最合理)
fs.aio-max-nr = 1048576
fs.file-max = 6553600
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
保存文件。
# /sbin/sysctl -p //让参数生效
6 修改用户的限制文件
# vi /etc/security/limits.conf 在文件后增加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
保存文件。
修改/etc/pam.d/login文件,增加如下:
session required /lib64/security/pam_limits.so //64位系统时,千万别写成错/lib/security/pam_limits.so //否则导致无法登录
session required pam_limits.so
修改/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
7 创建安装目录和设置文件权限
#mkdir -p /home/app/oracle/product/11.2.0 //数据库系统安装目录
#mkdir /home/app/oracle/oradata //数据库数据安装目录
#mkdir /home/app/oracle/inventory
#mkdir /home/app/oracle/fast_recovery_area
#chown -R oracle:oinstall /home/app/oracle
#chmod -R 775 /home/app/oracle
设置环境变量: 修改/home/oracle/.bash_profile文件,增加如下
# su - oracle
ORACLE_BASE=/home/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=ora11
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
8 编辑静默安装响应文件
# su - oracle
$ cp -R /home/database/response /home/oracle //复制一份模板
$ cd /home/oracle/response
$ vi db_install.rsp //开始修改这个安装响应文件,此文件只是安装数据库软件
需要设置的选项如下:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 //系统生成的,不要修改
oracle.install.option=INSTALL_DB_SWONLY //只安装软件,不安装启动数据库
ORACLE_HOSTNAME=ora11g //通过hostname命令获得
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/home/app/oracle/product/11.2.0
ORACLE_BASE=/home/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
DECLINE_SECURITY_UPDATES=true //一定要设置为true
9 根据响应文件安装oracle
$cd /home/database
$./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -IgnorePrereq
安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。打开另一个终端,执行
#tail -100f /home/app/oracle/inventory/logs/installActions......log
可以实时跟踪查看安装日志,了解安装的进度。
当出现如下提示,既安装成功:
be executed as the "root" user.
#!/bin/sh
#Root scripts to run
/home/app/oracle/inventory/orainstRoot.sh
/home/app/oracle/product/11.2.0/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
表示安装成功了。按照其提示操作。
$exit //退回到root
# sh /home/app/oracle/inventory/orainstRoot.sh
# sh /home/app/oracle/product/11.2.0/root.sh
10 静默配置监听
$netca /silent /responsefile /home/oracle/response/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /home/oracle/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/home/app/oracle/product/11.2.0/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
成功运行后,在/home/app/oracle/product/11.2.0/network/admin目录下生成sqlnet.ora和listener.ora两个文件。
通过netstat –tlnp 命令,看到 、如果无法启动检查日志文件,或修改linsten配置,然后lsnrclt手动启动
tcp 0 0 :::1521 :::* LISTEN 10760/tnslsnr
说明监听器已经在1521端口上开始工作了。
11 静默建立新库(同时也建立一个对应的实例)
修改/home/oracle/response/dbca.rsp,设置如下:
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0" //不能更改
OPERATION_TYPE = " createDatabase "
[CREATEDATABASE]
GDBNAME = "ora11" //数据库的名字
SID = "ora11" //对应的实例名字
TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件
SYSPASSWORD = "oracle" //SYS管理员密码
SYSTEMPASSWORD = "oracle" //SYSTEM管理员密码
DATAFILEDESTINATION = /home/app/oracle/oradata //数据文件存放目录
RECOVERYAREADESTINATION=/home/app/oracle/fast_recovery_area //恢复数据存放目录
CHARACTERSET = "ZHS16GBK" //字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
TOTALMEMORY = "3276" //oracle内存3276MB(allmem*80%)
静默建库命令如下
$dbca -silent -responseFile /home/oracle/response/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/home/app/oracle/cfgtoollogs/dbca/ora11/ora11.log" for further details.
查看日志文件
$ cat /home/app/oracle/cfgtoollogs/dbca/ora11/ora11.log
Copying database files
DBCA_PROGRESS : 1%
DBCA_PROGRESS : 3%
DBCA_PROGRESS : 11%
DBCA_PROGRESS : 18%
DBCA_PROGRESS : 26%
DBCA_PROGRESS : 37%
Creating and starting Oracle instance
DBCA_PROGRESS : 40%
DBCA_PROGRESS : 45%
DBCA_PROGRESS : 50%
DBCA_PROGRESS : 55%
DBCA_PROGRESS : 56%
DBCA_PROGRESS : 60%
DBCA_PROGRESS : 62%
Completing Database Creation
DBCA_PROGRESS : 66%
DBCA_PROGRESS : 70%
DBCA_PROGRESS : 73%
DBCA_PROGRESS : 85%
DBCA_PROGRESS : 96%
DBCA_PROGRESS : 100%
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/ora11.
Database Information:
Global Database Name:ora11
System Identifier(SID):ora11
建库后实例检查:
$ ps -ef | grep ora_ | grep -v grep
oracle 11279 1 0 12:04 ? 00:00:00 ora_pmon_ora11
oracle 11281 1 1 12:04 ? 00:00:02 ora_vktm_ora11
oracle 11285 1 0 12:04 ? 00:00:00 ora_gen0_ora11
oracle 11287 1 0 12:04 ? 00:00:00 ora_diag_ora11
oracle 11289 1 0 12:04 ? 00:00:00 ora_dbrm_ora11
oracle 11291 1 0 12:04 ? 00:00:00 ora_psp0_ora11
oracle 11293 1 0 12:04 ? 00:00:00 ora_dia0_ora11
oracle 11295 1 0 12:04 ? 00:00:00 ora_mman_ora11
oracle 11297 1 0 12:04 ? 00:00:00 ora_dbw0_ora11
oracle 11299 1 0 12:04 ? 00:00:00 ora_lgwr_ora11
oracle 11301 1 0 12:04 ? 00:00:01 ora_ckpt_ora11
oracle 11303 1 0 12:04 ? 00:00:00 ora_smon_ora11
oracle 11305 1 0 12:04 ? 00:00:00 ora_reco_ora11
oracle 11307 1 1 12:04 ? 00:00:02 ora_mmon_ora11
oracle 11309 1 0 12:04 ? 00:00:01 ora_mmnl_ora11
oracle 11311 1 0 12:04 ? 00:00:00 ora_d000_ora11
oracle 11313 1 0 12:04 ? 00:00:00 ora_s000_ora11
oracle 11323 1 0 12:04 ? 00:00:01 ora_qmnc_ora11
oracle 11340 1 0 12:04 ? 00:00:01 ora_cjq0_ora11
oracle 11342 1 0 12:04 ? 00:00:01 ora_q000_ora11
oracle 11344 1 0 12:04 ? 00:00:00 ora_q001_ora11
查看监听状态
$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26-AUG-2014 12:07:54
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 26-AUG-2014 11:11:10
Uptime 0 days 0 hr. 56 min. 44 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/ora11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora11g)(PORT=1521)))
Services Summary...
Service "ora11" has 1 instance(s).
Instance "ora11", status READY, has 1 handler(s) for this service...
Service "ora11XDB" has 1 instance(s).
Instance "ora11", status READY, has 1 handler(s) for this service...
The command completed successfully
12 修改数据库为归档模式(归档模式才能热备份,增量备份)
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Aug 26 13:37:34 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> execute utl_recomp.recomp_serial();
PL/SQL procedure successfully completed.
SQL> alter system archive log current;
System altered.
SQL> exit
13 修改oracle启动配置文件
$vi /etc/oratab
ora11:/home/app/oracle/product/11.2.0:Y
这样就可以通过dbstart 启动此实例,也可以通过dbshut关闭此实例了。
$ dbshut /home/app/oracle/product/11.2.0
Processing Database instance "ora11": log file /home/app/oracle/product/11.2.0/shutdown.log
此时所有oracle的进程关闭,监听器也停止。
$dbstart /home/app/oracle/product/11.2.0
Processing Database instance "ora11": log file /home/app/oracle/product/11.2.0/startup.log
此时监听器工作,hello实例运行,再次查看监听器状态。
$ lsnrctl status
开机启动方法:
方法1:
要想让oracle服务随着系统启动而自动启动,需要在/etc/rc.local文件中增加如下:
su - oracle -c "/home/app/oracle/product/11.2.0/bin/dbstart /home/app/oracle/product/11.2.0"
方法2:建立启动脚本
# vi /etc/rc.d/init.d/oracle
#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
#
# processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/home/app/oracle/product/11.2
ORACLE_USER=oracle
case "$1" in
'start')
if [ -f $LOCKFILE ]; then
echo $0 already running.
exit 1
fi
echo -n $"Starting Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch $LOCKFILE
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
exit 1
fi
echo -n $"Stopping Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f $LOCKFILE
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0
#service oracle on
----------------------------------------------------------------------------------------------
增加交换空间:
1. 查看当前分区情况
free -m
2. 增加 swap 大小, 2G 左右
dd if=/dev/zero of=/var/swap bs=1024 count=2048000
3. 设置交换文件
mkswap /var/swap
4. 立即激活启用交换分区
swapon /var/swap
5. 添加系统引导时自启动运行
vi /etc/fstab
添加一行
/var/swap swap swap defaults 0 0
6. 收回 swap 空间
swapoff /var/swap
7. 从文件系统中回收
rm /var/swap
-----------------------------------------------------------------------------------------
开启端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload
--------------------------------------------------------------------------------------
环境配置:
export JAVA_HOME=/usr/javak1.7.0_79
export JRE_HOME=/usr/javak1.7.0_79/jre
export ORACLE_HOME=/home/oracle_11/app/product/11.2.0home_1
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ORACLE_HOME/bin
export CLASSPATH=.:$JAVA_HOMEb/dt.jar:$JAVA_HOMEb/tools.jar:$JRE_HOMEb
export JAVA_HOME JRE_HOME PATH CLASSPATH ORACLE_HOME
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
--------------------
使环境变量生效
source 配置文件
如:#source /etc/profile
-----------------------------------------------------------------------