安装Oracle11gR2
安装前期准备
下载软件
linux.x64_11gR2_database_2of2.zip
linux.x64_11gR2_database_1of2.zip
官网自行下载:下载地址
安装依赖库
yum执行以下命令安装依赖
yum -y 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
注:安装依赖前可先进行yum源改为阿里云的,速度会快些。
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache
其中:Centos-6.repo 根据实际版本选择。
安装完成后显示如下界面:
关键词“Complete!”。
这时候先别高兴,仍需检查依赖是否完整安装。
执行如下命令:
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"
结果如下图
执行 yum -y install pdksh,发现yun源 没有相关安装包可用
通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
下载完成后,进入 /tmp/
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
执行成功如下图所示:
添加oracle用户组和用户
添加用户组、用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -d /home/oracle oracle
初始化oracle用户的密码
passwd oracle
控制台输入密码即可。
修改内核参数
先配置hostname
vi /etc/hosts
增加一列即可,如:
192.168.0.99 xjx-vps
修改内核参数
vi /etc/sysctl.conf
这台服务器内存为16G,以下为建议值(网上搜索参考)
fs.aio-max-nr = 1048576
fs.file-max = 6553600
kernel.shmall = 8388608
kernel.shmmax = 9663676416
kernel.shmmni = 4096
kernel.sem = 2010 285420 100 142
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
参数详解如下:
fs.aio-max-nr = 1048576 //同时可以拥有的的异步IO请求数目。1048576 即 1024*1024 也就是 1024K 个。
fs.file-max = 6553600 //系统允许打开的文件数。
kernel.shmall = 4194304 //设置共享内存总页数。这个值太小有可能导致数据库启动报错。这个是8G的值,如果大于8G需要调整。
计算公式为:内存(G)10241024*1024/4096,4096为getconf PAGE_SIZE得到分页大小。
kernel.shmmax = 2147483648 //Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。
这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,
因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。
kernel.shmmni = 4096 //设置系统级最大共享内存段数量。推荐最小值为4096。
kernel.sem = 610 86620 100 142 //从左到右分别为SEMMSL、SEMMNS、SEMOPM和SEMMNI。1)SEMMSL:设置每个信号灯组中信号灯最大数量,推荐的最小值是250。
对于系统中存在大量并发连接的系统,推荐将这个值设置为PROCESSES初始化参数加10。2)SEMMNS:设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSLSEMMNI)。事实上,如果SEMMNS的值超过了SEMMSLSEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSLSEMMNI。
Oracle推荐SEMMNS的设置不小于32000,假如数据库的PROCESSES参数设置为600,则SEMMNS的设置应为:
SQL> select (600+10)142 from dual;
(600+10)*142
86620
3)SEMOPM:设置每次系统调用可以同时执行的最大信号灯操作的数量。由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。Oracle验证的10.2和11.1的SEMOPM的配置为100。
4)SEMMNI:设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142。
net.ipv4.ip_local_port_range = 1024 65000 //ip_local_port_range表示端口的范围,为指定的内容
net.core.rmem_default = 262144 //表示接收套接字缓冲区大小的缺省值(以字节为单位)。
net.core.rmem_max = 4194304 //表示接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.wmem_default = 262144 //表示发送套接字缓冲区大小的缺省值(以字节为单位)。
net.core.wmem_max = 1048586 //表示发送套接字缓冲区大小的最大值(以字节为单位。
执行以下命令使内核生效
/sbin/sysctl -p
修改用户的限制文件
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
执行
vi /etc/pam.d/login
增加如下:
session required /lib64/security/pam_limits.so
session required pam_limits.so
执行
vi /etc/profile
(在unset -f pathmunge下一行)增加如下内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
创建目录及修改权限
执行以下命令
mkdir -p /home/oracle/app
mkdir -p /home/oracle/app/oracle
mkdir -p /home/oracle/app/oracle/product
mkdir -p /home/oracle/app/oracle/product/11.2.0
mkdir -p /home/oracle/app/oracle/product/11.2.0/dbhome_1
mkdir -p /home/oracle/backup //数据备份目录
mkdir -p /home/oracle/oraInventory //清单目录
chown -R oracle:oinstall /home/oracle/app
chown -R oracle:oinstall /home/oracle/backup
chown -R oracle:oinstall /home/oracle/oraInventory
chmod -R 775 /home/oracle/app
设置并刷新环境变量
执行以下命令(“-”,不能漏)
su - oracle
编辑profile
$ vi /home/oracle/.bash_profile
增加如下内容
umask 022
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
如果服务器有多网卡, 注意设置ORACLE_HOSTNAME为某网卡IP对应的主机名, 参照/etc/hosts文件.ORACLE_SID值后边也要使用
> # su - oracle
> $ vi ~/.bash_profile
umask 022
export ORACLE_HOSTNAME=xjx-server
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="UTF-8"
export LANG="UTF-8"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"//注意字符集和要和数据库还有导入dmp文件一样,否则乱码(默认为AMERICAN_AMERICA.ZHS16GBK,建议改成UTF-8)
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
执行生效
$ . ~/.bash_profile
安装oracle
解压oracle安装文件
cd /tmp/
unzip linux.x64_11gR2_database_2of2.zip -d /u01 (解压到/u01目录下,可选目录)
unzip linux.x64_11gR2_database_1of2 -d /u01
cd /u01/database
export DISTRIB=`pwd`
静默安装方法
cp -R /tmp/oracle/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
DECLINE_SECURITY_UPDATES=true
以下参数根据实际情况更改,一般也无需更改
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.customComponents=oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
各参数含义如下:
-silent 表示以静默方式安装,不会有任何提示
-force 允许安装到一个非空目录
-noconfig 表示不运行配置助手netca
-responseFile 表示使用哪个响应文件,必需使用绝对路径
oracle.install.responseFileVersion 响应文件模板的版本,该参数不要更改
oracle.install.option 安装选项,本例只安装oracle软件,该参数不要更改
DECLINE_SECURITY_UPDATES 是否需要在线安全更新,设置为false,该参数不要更改
ORACLE_HOSTNAME 安装主机名
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权限的组名
开始安装
./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp
安装期间可以使用tail命令监看oracle的安装日志
tail -f /tmp/oracle/inventory/logs/installActionsXXXX-xx-xx_*.log
安装完成,提示Successfully Setup Software.
su root
sh /tmp/oracle/inventory/orainstRoot.sh
sh /tmp/oracle/product/11.2.0/root.sh
配置静默监听
su - oracle
netca /silent/responsefile /tmp/oracle/netca.rsp
查看监听端口
netstat -tnulp | grep 1521
静默创建数据库
vi /db/etc/dbca.rsp
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/db/app/oracle/oradata
RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "1638"
执行静默建库
dbca -silent -responseFile /tmp/oracle/dbca.rsp
查看oracle实例进程
ps -ef | grep ora_ | grep -v grep
查看监听状态
lsnrctl status
登录sqlplus,查看实例状态
sqlplus / as sysdba
select status from v$instance;
--查看数据库编码
select userenv('language') from dual;
--查看数据库版本信息
select * from v$version;
--激活scott用户
alter user scott account unlock;
alter user scott identified by Xujunxian!@#.com;
--查看
select username,account_status from all_users;
设置oracle开机启动
编辑
vi /u01/app/oracle/product/11.2.0/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /u01/app/oracle/product/11.2.0/bin/dbshut
ORACLE_HOME_LISTNER=$ORACLE_HOME
> vi /etc/oratab
orcl:/u01/app/oracle/product/11.2.0:Y
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=/db/app/oracle/product/11.2.0
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
修改权限
cd /u01/app/oracle/product/11.2.0/bin/
chmod 6751 oracle
cd /var/tmp
> chown -R oracle:oinstall .oracle
开机启动oracle
systemctl enable oracle
备注:个人博客同步至。