博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

发布管理-Oracle11g数据库安装指导书

Posted on 2015-09-25 08:29  徐正柱-  阅读(555)  评论(0编辑  收藏  举报

 

1   目的与范围

  l  本文目的是指导规范的Oracle数据库安装方式。

  l  本文范围适用在redhat linux 6上安装Oracle 11g R2数据库。

2   术语和定义

术语/定义

说明

术语/定义1

<说明内容>

 

 

 

 

 

3   角色和职责

角色

职责

应用运维工程师

Oracle数据库安装工作

 

 

 

 

 

 

4   Oracle数据库安装

4.1          安装前准备工作

4.1.1      创建操作系统oinstall,dba用户组,创建操作系统oracle用户。

groupadd dba

groupadd oinstall

useradd oracle -g oinstall -G dba

  设置oracle用户密码:

  passwd oracle

 

4.1.2      修改/etc/sysctl.conf内核参数,添加如下内容

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152   #8G

kernel.shmmax = 536870912   #512M

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

 

注:

  内核的 shmall 和 shmmax 参数 
    SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。
    SHMMIN= 最小的内存segment的大小
    SHMMNI= 整个系统的内存segment的总个数
    SHMSEG= 每个进程可以使用的内存segment的最大个数 配置信号灯( semphore )的参数:
    SEMMSL= 每个semphore set里面的semphore数量 -----> 这个设置大于你的process的个数吧,否则你不得不分多个semphore set,好像有process+n之说。
    SEMMNI= 整个系统的semphore set总数 SEMMNS=整个系统的semphore总数
    shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。
      例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

  1、 kernel.shmall表示可以使用的共享内存的总量页数(4K*2097152=8G),当SGA设置超过8G时需要调整为更大值;

            例如,每页4K,设置2097152页,总的共享内存大小:4K*2097152=8G

  2、 kernel.shmmax表示单个最大共享内存段大小 一般需要设置为超过SGA_TARGET大小;

 

SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些,按照oracle的说法, shmmax应该比sga或者memory_target 的值要大,要不然会影响性能!

 

SHMALL参数:设置共享内存总页数。这个值太小有可能导致数据库启动报错,推荐设置为物理内存大小除以分页大小,应当大于SGA大小.

 

 

 

 

 

shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

 

  # getconf PAGE_SIZE

通过getconf获取分页的大小,用来计算SHMALL的合理设置值: 4096

  SQL> select 32*1024*1024*1024/4096 from dual;

    32*1024*1024*1024/4096

          ---------------             

           8388608

 

使修改的内核参数生效:

  sysctl -p

  

11g中新增MEMORY_MAX_TARGET参数,此参数一出现就如在10g中第一次出现SGA_MAX_SIZE参数一样给人以耳目一新的感觉。memory_max_target是设定Oracle能占OS多大的内存空间,一个是Oracle SGA区最大能占多大内存空间。无疑在11g Oracle又向自动管理内存更进一步。 

10g的sga_max_size是动态分配Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer大小的,只是根据Oracle运行状况来重新分配SGA各内存块的大小。PGA在10g中需要单独设定.


11g MEMORY_MAX_TARGET参数包含两部分内存,一个System global area (SGA),另一个system global area(PGA)。很显然在11g中可已经将PGA和SGA一起动态管理了。

下面来看看在11g中Memory_target设置和不设置对SGA/PGA的影响:



A:如果Memory_target设置为非0值

    (下面有四种情况来对SGA和PGA的大小进行分配)

    1:sga_target和pga_aggregate_target已经设置大小如果Oracle中

已经设置了参数sga_target和pga_aggregate_target,则这两个参数将各自被分配为最小值最为它们的目标值。

Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和  

          memory_max_size一致。

      2:sga_target 设置大小,pga_aggregate_target 没有设置大小 

          那么pga_aggregate_target初始化值=memory_target-sga_target

      3:sga_target 没有设置大小,pga_aggregate_target 设置大小 

          那么sga_target初始化值=memory_target-pga_aggregate_target

      4:sga_target 和pga_aggregate_target 都没有设置大小Oracle 11g

中对这种sga_target和pga_aggregate_target都没有设定大小的情况下,Oracle将对这两个值没有最小值和默认值。Oracle将根据数据库运行状况进行分配大小。但在数据库启动是会有一个固定比例来分配:

         sga_target =memory_target *60%

         pga_aggregate_target=memory_target *40%



B:如果Memory_target没有设置或=0(在11g中默认为0)

    11g中默认为0则初始状态下取消了Memory_target的作用,完全和10g在内存管理上一致,完全向下兼容。
 
  (也有三种情况来对SGA和PGA的大小进行分配)   

       1:SGA_TARGET设置值,则自动调节SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool

           等内存空间的大小。PGA则依赖pga_aggregate_target的大小。sga 和pga不能自动增长和自动缩小。

2:SGA_target和PGA_AGGREGATE_TARGET 都没有设置

         SGA中的各组件大小都要明确设定,不能自动调整各组建大小。PGA不能自动增长和收缩。

      3: MEMORY_MAX_TARGET设置而MEMORY_TARGET =0 这种情况先和10g一样,不做说明





在11g中可以使用下面看各组件的值

SQL> show parameter target


NAME                                TYPE       VALUE
------------------------ ----------- ---------------------
archive_lag_target                  integer    0
db_flashback_retention_target       integer    1440
fast_start_io_target                integer    0
fast_start_mttr_target              integer    0
memory_max_target                   big integer 1024M
memory_target                       big integer 1024M
pga_aggregate_target                big integer 0
sga_target                          big integer 0


如果需要监视Memory_target的状况则可以使用下面三个动态试图:

   V$MEMORY_DYNAMIC_COMPONENTS
   V$MEMORY_RESIZE_OPS 
   v$memory_target_advice

使用下面Command来调节大小:

SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;
SQL>ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;
SGA与PGA
项目 数据关系 单位
系统CPU   n
物理内存Memory   4*1024 MB
memory_target   0.5*4*1024 0.5*Memory
sga_target   0.6*0.5*4*1024 0.6*memory_target
db_cache_size 0.6*0.6*0.5*4*1024 0.6*sga_target
shared_pool_size 32*n  
log_buffer    
sga_max_size     >=sga_target
pga_aggregate_target   0.4*0.5*4*1024 0.4*memory_target
memory_max_target     0.5*4*1024 1.0*memory_target
 
项目 数据关系 单位
系统CPU   n
物理内存Memory   4*1024  
memory_target   0 表示自动分配
sga_target   0.6*0.5*4*1024 0.6*memory_target
db_cache_size   自动分配,<=sga_target
shared_pool_size  
log_buffer  
sga_max_size     >=sga_target
pga_aggregate_target   0.4*0.5*4*1024 0.4*memory_target
memory_max_target     0.5*4*1024 1.0*memory_target
 
项目 数据关系 单位
系统CPU   n
物理内存Memory   4*1024  
memory_target   0 表示自动分配
sga_target     未指定
db_cache_size 0.6*0.6*0.5*4*1024 需要人工配置大小,<=sga_target
shared_pool_size 32*n
log_buffer  
sga_max_size     >=sga_target
pga_aggregate_target     未指定
memory_max_target       1.0*memory_target

 

 

连接内存:

项目 数值 单位
session 0.4 MB
server 4 MB
连接池大小 100  
共享服器数量 100
connections 5000
每个连接代理成本   35 KB
Example of Memory Usage for Dedicated Server, Shared Server,   and DRPC 池
•Memory Usage   of Dedicated Server  5000*(0.4MB+4MB) 22 GB
•Memory Usage   of Shared Server 5000*0.4MB+100*4MB  2.5 GB
•Memory Usage   of Database Resident Connection Pooling 100*(0.4MB+4MB)+(5000*35KB) 615 MB

4.1.3      修改/etc/security/limits.conf配置文件,添加如下内容

oracle   soft    nproc   2047

oracle   hard    nproc   16384

oracle   soft    nofile  1024

oracle   hard    nofile  65536

 

4.1.4      修改/etc/pam.d/login配置文件,添加如下内容

session    required     pam_limits.so

 

4.1.5      创建ORACLE_BASE ORACLE_HOME TMP目录,并赋相应权限

mkdir -p /u01/app/oracle/product/11.2.0/db_1

chown -R oracle:oinstall /u01/

chmod -R 775 /u01/

mkdir /tmp/oracle

chown -R oracle:oinstall /tmp/oracle

chmod -R 775 /tmp/oracle

 

4.1.6      修改oracle用户环境变量配置文件.bash_profile,添加如下内容

umask 022

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/Apache/perl/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

export ORACLE_OWNER=oracle

export ORACLE_SID=orcl

export ORACLE_TERM=xterm

unset USERNAME

注:ORACLE_SID为将要创建的数据库的SID名称

 

4.1.7      修改host文件

vi /etc/hosts

127.0.0.1       localhost.localdomain localhost

::1     localhost6.localdomain6 localhost6

<服务器IP>     <主机名>

4.1.8      检查需要安装的操作系统rpm包

     

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel
检查

      rpm -qa binutils-2.20.51.0.2-5.11.el6 \

compat-libcap1-1.10-1 \

compat-libstdc++-33-3.2.3-69.el6 \

compat-libstdc++-33-3.2.3-69.el6.i686 \

gcc-4.4.4-13.el6 \

gcc-c++-4.4.4-13.el6 \

glibc-2.12-1.7.el6 \

glibc-2.12-1.7.el6 \

glibc-devel-2.12-1.7.el6 \

glibc-devel-2.12-1.7.el6.i686 \

ksh \

libgcc-4.4.4-13.el6 \

libgcc-4.4.4-13.el6 \

libstdc++-4.4.4-13.el6 \

libstdc++-4.4.4-13.el6.i686 \

libstdc++-devel-4.4.4-13.el6 \

libstdc++-devel-4.4.4-13.el6.i686 \

libaio-0.3.107-10.el6 \

libaio-0.3.107-10.el6.i686 \

libaio-devel-0.3.107-10.el6 \

libaio-devel-0.3.107-10.el6.i686 \

make-3.81-19.el6 \

sysstat-9.0.4-11.el6

 

如缺少相关rpm包,使用如下方式安装:

yum install <rpm包名称>

 

4.2          安装oracle软件

4.2.1      准备工作

1、  解压安装文件至root根目录下的soft目录下

2、  赋予oracle用户执行权限

#cd soft

#chown -R oracle:oinstall database/

#mv database /home/oracle/

 

4.2.2      开始安装软件

启动图形化界面,如下操作在图形化界面操作:

#xhost +

#su - oracle

$cd database

$ ./runInstaller

若出现错误 如下:    

./runInstaller: /home/oracle/db/database/install/.oui: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

/tmp/OraInstall2016-08-24_10-44-04PM/jdk/jre/lib/i386/xawt/libmawt.so: libXext.so.6: cannot open shared object file: No such file or directory

  可以检查并安装:    

  # yum whatprovides ld-linux.so.2

     或 yum list available | grep libXext

  # yum install 包名(为上条命令返回的结果)

       如  yum  install   libXext.i686

 

检测少了如上所示的操作系统包,安装如下:

[root@dg1 RHEL_5.4 i386 DVD]# cd Server/

[root@dg1 Server]# ls|grep libaio

libaio-0.3.106-3.2.i386.rpm

libaio-devel-0.3.106-3.2.i386.rpm

[root@dg1 Server]# rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm

warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...        ########################################### [100%]

   1:libaio-devel   ########################################### [100%]

[root@dg1 Server]#

 

重新检测:

 

如上只剩内存大小警告,忽略即可。

 

注:先在root用户执行上图的两个脚本,再点OK按钮。

4.2.3      NETCA创建监听程序

  $netca

4.3          DBCA创建数据库

4.3.1      准备工作

创建数据库数据文件存放路径,并赋予属主为oracle用户:

[root@dg1 ~]# mkdir -p /data/oradata

[root@dg1 ~]# chown -R oracle:oinstall /data/

 

4.3.2      创建数据库

$dbca

注:如下数据库字符集的选择请参考《Oracle11g数据库安装规范》,字符集选择数据库创建之后,不可修改。

[oracle@dg1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sat Jul 6 18:28:12 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name,status from v$instance;     

 

INSTANCE_NAME    STATUS

---------------- ------------

orcl     OPEN

5   参考资料

  l  Oracle官方安装文档

背景:oracle用户曾安装过oracle数据库,后来删除,将另一台服务器的数据库迁移,迁移时先安装数据库系统时遇如下问题

[oracle@TEST144239 database]$ ./runInstaller
You do not have sufficient permissions to access the inventory '/u01/app/oraInventory'. Installation cannot continue. It is required that the primary group of the install user is same as the inventory owner group. Make sure that the install user is part of the inventory owner group and restart the installer.: No such file or directory

 

[root@TEST144239 database]# cat /etc/oraInst.loc
inventory_loc=/u01/app/oraInventory    #将此路径,改为新迁移的数据库的路径,可以查看迁移前的服务器上/etc/oraInst.loc文件中的配置
inst_group=oinstall