linux 安装oracle 11gR2

安装Oracle11gR2

安装前期准备

下载软件
linux.x64_11gR2_database_2of2.zip
linux.x64_11gR2_database_1of2.zip
官网自行下载:下载地址

image.png

安装依赖库

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 根据实际版本选择。

安装完成后显示如下界面:

image.png

关键词“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"

结果如下图

image.png

执行 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

执行成功如下图所示:

image.png

添加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下一行)增加如下内容

image.png
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

备注:个人博客同步至。

你可能感兴趣的:(linux 安装oracle 11gR2)