一、虚拟机配置
1、 虚拟机(VBox 4.3.12)
2、 配置虚拟机网卡网络,选择host-only,VirtualBox Host-Only Network网卡IP为设置为192.168.1.100
二、安装RedHat 5.3操作系统(序列号:9f3013459b745c13)
具体过程略,注意在自定义软件包那里选择现在配置,选取“开发工具”、“旧的开发工具”、“X工具”下所有包
三、系统环境配置
1.配置网卡
[root@zlm ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0,添加以下内容:
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=08:00:27:DA:1D:E9
IPADDR=192.168.1.199
NETMASK=255.255.255.0
NETWORK=192.168.1.0
DNS1=192.168.1.1
ONBOOT=yes
添加保存后需重启网络服务生效:
[root@zlm ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
2.修改hosts
[root@zlm ~]# vim /etc/hosts
去掉IPV6的内容,保证有127.0.0.1 localhost,在此基础上给主机另外分配一个ip地址,并取名
如,192.168.1.199 zlm
3.禁用sendmail服务,加快启动速度(可选)
[root@zlm ~]# chkconfig sendmail --list
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@zlm ~]# chkconfig sendmail off
[root@zlm ~]# chkconfig sendmail --list
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off
4.修改为默认以命令行方式启动
[root@zlm ~]# vim /etc/inittab
查找“id:3:initdefault:”这一行,将其修改为“id:5:initdefault:”后保存退出
5.验证Oracle需要的包是否已经安装
[root@zlm ~]# rpm -q gcc make binutils setarch glibc libaio libXp openmotif compat-db compat-gcc compat-gcc-c++ compat-libstdc++
gcc-4.1.2-44.el5
make-3.81-3.el5
binutils-2.17.50.0.6-9.el5
setarch-2.0-1.1
glibc-2.5-34
libaio-0.3.106-3.2
package libXp is not installed
package openmotif is not installed
package compat-db is not installed
package compat-gcc is not installed
package compat-gcc-c++ is not installed
package compat-libstdc++ is not installed
这里提示有6个包未安装,其实仅仅只是libXp、openmotif、compat-db没有被安装,显示“is not installed”,只是因为搜索不到而已(少了包名的一部分),包名是完全匹配的(除版本号以外)
可以用rpm来安装,也可以通过yum方式安装,yum安装需要配置yum源,配置文件在/etc/yum.repos.d/目录下
如果择用rpm的方式来安装,通常可以在安装盘的Server目录中找到所需要的包,如果安装盘找不到需要的包,可以去http://rpm.pbone.net/下载,该网站提供各种Linux系统下程序包下载,很实用
[root@zlm ~]# mount -t iso9660 /dev/cdrom /mnt/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@zlm ~]# cd /mnt/Server
[root@zlm Server]# rpm -ivh openmotif-2.3.1-2.el5.i386.rpm
warning: openmotif-2.3.1-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libXp.so.6 is needed by openmotif-2.3.1-2.el5.i386
由于包之间存在依赖关系,这里提示需要先装完libXp才能装openmotif
[root@zlm Server]# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm
warning: libXp-1.0.0-8.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:libXp ########################################### [100%]
[root@zlm Server]# rpm -ivh openmotif-2.3.1-2.el5.i386.rpm
warning: openmotif-2.3.1-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:openmotif ########################################### [100%]
配置本地源也很方便,创建一个源配置文件,并添加内容
[root@zlm Server]# touch /etc/yum.repos.d/public-yum-rhel5.repo
[root@zlm Server]# vim /etc/yum.repos.d/public-yum-rhel5.repo
[rhel5]
name = Red Hat Enterprise Linux 5.3 DVD
baseurl=file:///mnt/Server/
gpgcheck=0
enabled=1
配置完以后就可以直接yum install 安装需要的包了,而包之间没有依赖限制,会自动把有依赖性的包安装上
[root@zlm yum.repos.d]# yum install compat-db
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package compat-db.i386 0:4.2.52-5.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
compat-db i386 4.2.52-5.1 rhel5 1.7 M
Transaction Summary
================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 1.7 M
Is this ok [y/N]: n
Exiting on user Command
Complete!
[root@zlm yum.repos.d]#
[root@zlm yum.repos.d]# yum install compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Package compat-db-4.2.52-5.1.i386 already installed and lazlm version
Package compat-gcc-34-3.4.6-4.i386 already installed and lazlm version
Package compat-gcc-34-c++-3.4.6-4.i386 already installed and lazlm version
Package compat-libstdc++-33-3.2.3-61.i386 already installed and lazlm version
Nothing to do
[root@zlm yum.repos.d]#
提示compat-db、compat-gcc-34、compat-gcc-34-c++、compat-libstdc++-33这4个包已经装完了,这也就是为什么前面会列出并没有安装,因为用rpm -q查询必须完全匹配包的名字(除版本号)
再次确认一下,发现需要的这几个compat包确实已经安装好了
[root@zlm yum.repos.d]# rpm -qa |grep compat
avahi-compat-libdns_sd-0.6.16-1.el5
compat-glibc-headers-2.3.4-2.26
compat-gcc-34-3.4.6-4
compat-gcc-34-g77-3.4.6-4
compat-libstdc++-33-3.2.3-61
compat-libcom_err-1.0-7
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
compat-libf2c-34-3.4.6-4
compat-libstdc++-296-2.96-138
java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
java-1.4.2-gcj-compat-src-1.4.2.0-40jpp.115
compat-libgcc-296-2.96-138
compat-db-4.2.52-5.1
compat-gcc-34-c++-3.4.6-4
compat-glibc-2.3.4-2.26
[root@zlm yum.repos.d]#
注意,如果缺少libXp-1.0.0-8.1el5包,就提示以下错误:
[root@zlm database]#./runInstaller
...
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2007-09-25_10-54-49PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.<clinit>(Unknown Source)
at java.awt.Component.<clinit>(Unknown Source)
四、为Oracle 10g配置Linux
1.检查主机配置(10g要求1G以上内存,11g为1.5G)
--内存
[root@zlm ~]# grep MemTotal /proc/meminfo
MemTotal: 1035244 kB
--磁盘
[root@zlm ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7.7G 2.7G 4.6G 37% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/hdc 2.9G 2.9G 0 100% /mnt
2.创建oracle用户和用户组
[root@zlm ~]# groupadd oinstall
[root@zlm ~]# groupadd dba
[root@zlm ~]# useradd -g oinstall -G dba oracle
3.查看oracle用户信息并创建密码
[root@zlm ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
[root@zlm ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
4.创建安装目录和数据存放目录
[root@zlm ~]# mkdir -p /u01/app/oracle/product/10.2.0/db_1
[root@zlm ~]# chown -R oracle:oinstall /u01
[root@zlm ~]# chmod -R 775 /u01
5.配置Linux内核
[root@zlm ~]# cat >> /etc/sysctl.conf << EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF
Linux主要内核参数说明:
kernel.shmmax = 2147483648 --该参数定义了共享内存段的最大尺寸(以字节为单位)
SHMMAX available physical memory Defines the maximum allowable size of one shared memory segment. The SHMMAX setting should belarge enough to hold the entire SGA in one shared memory segment.A low setting can cause creation of multiple shared memory segments which may lead to performance degradation.
shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应该足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。
shmmax仅仅是在共享内存段被创建的时候用来比较的一个数字,当共享内存段被一个进程(Process)创建,操作系统检查是否被要求的共享内存段的值大于shmmax的值,如果是,那么将会抛出一个错误。这个时候系统会创建另外的一个或多个共享内存段满足进程的需求。一般来说,共享内存段个数和系统性能没有太直接的关系,也不会对性能产生太大的影响。但Steve Adams在他的小册子中说过,在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。这意味着如果你的程序不是经常Create Processes(以及Destroy Them),性能方面就不是考虑的问题。
当然Oralce的建议是希望一个大的共享内存段能容纳整个SGA,其值应>=sag_max_size初始化参数的大小,还要不小于物理内存的一半,这样在任何时候都不会有甚至轻微的性能下降的隐患。Oracle安装文档建议32bit Linux系统设置shmmax为32 bit最大的限制值(setting shmmax to the 32-bit number limit),也就是4G 。所以一般来说,1-4G 的物理内存,直接设置shmmax为最大物理内存即可,那么SGA肯定在一个共享内存段中,32 bit Linux系统物理内存大于4G的设置为4G即可。总之,32 bit的Linux操作系统,一般设置shmmax >= SGA(32 bit 系统是否支持到1.7G以上SGA 需要注意),缺省为32M,如果是64 bit的Linux操作系统,shmmax设置为>SGA_MAX_SIZE即可。
ipcs -sa 可以看到共享内存段个数
在11g中,如果SGA_TARGET设置了具体的值,那么共享内存段的个数会比设置SGA_TARGET=0,即采用MEMORY_TARGET参数值来管理SGA时用的共享内存段数要多,理论上讲,更少得内存段对于性能来说是要好一些的,所以11g也推荐设置MEMORY_TARGET参数来自动化管理SGA
kernel.shmmni = 4096 --设置系统范围内共享内存段的最大数量
shmmni 内核参数是共享内存段的最大数量(注意这个参数是shmmni,而shmmin 表示内存段最小大小 )。shmmni 缺省值4096 。此值也是在系统中可以启动的Oracle实例的最大数量,通常不需要更改,因为显然在生产环境下,一个服务器上同时启动的实例个数达不到这个数量。
kernel.shmall = 2097152 --表示系统任意时刻可以分配的所有共享内存段的总和的最大值(以页为单位)。
kernel.shmall 参数是控制共享内存页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB/4KB=4194304(页),也就是64 bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE 和SGA_TARGET为12G(75%左右,当然也可以是2G~14G 等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)。其值应不小于shmmax/page_size,缺省值就是2097152,如果服务器上运行的所有实例的SGA总和不超过8GB(通常系统可分配的共享内存的和最大值为8GB),通常不需要修改。反之,只有SGA用到的实际内存超过8G,才需要调大该参数,否则采用默认值kernel.shmall = 2097152即可。
kernel.sem = 250 32000100 128--表示设置的信号量(共享内存时,内存数据交互时会产生信号量)
fs.file-max = 65536--表示一个进程可以打开的文件句柄的最大数量
net.ipv4.ip_local_port_range = 1024 65000--专用服务器模式下与用户进程通信时分配给用户的端口区间
net.core.rmem_default = 262144--默认接收缓冲区大小
net.core.rmem_max = 262144--接收缓冲区最大值
net.core.wmem_default = 262144--默认的发送缓冲区大小
net.core.wmem_max = 262144--发送缓冲区最大值
以上四个值的设置是Oracle安装时推荐的(应在安装完后把最大值改为524288)
6. 使Linux内核设置生效
[root@zlm ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
7.设置shell限制
[root@zlm ~]# cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
[root@zlm ~]# cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
8.关闭防火墙
[root@zlm ~]# cat >> /etc/selinux/config << EOF
SELINUX=disabled
EOF
[root@zlm ~]# getenforce
Disabled
9.修改版本号(RHEL5.3无需做此步骤)
因为Oracle 10g官方只支持到RHEL5为止,所以需要在root用户下运行
[root@zlm ~]# vim /etc/redhat-release
将 Red Hat Enterprise Linux Server release 6 (Tikanga) 改为Red Hat Enterprise Linux Server release 5 (Tikanga)
10. 配置oracle用户环境变量
[root@zlm ~]# vim /home/oracle/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=ora10g
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
unset USERNAME
umask 22
umask用于指定在建立文件时预设的权限掩码,权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
设要生成的文件以-rw-r--r--这样的权限字出现,即真实权限用八进制表示为644,则被666基数减得022,022即掩码。使用umask 022。
注意:033效果与022一样,假设使用033掩码进行设置,则真实权限应为633即-rw-r-xr-x,但前提规定文件不生成x位,所以文件的权限最终将以rw-r--r--出现。
设要生成的目录权限以drwxr-xr-x这样的权限字出现,即真实权限用八进制表示为755,则被基数为777的权限字相减后,得掩码022。则使用umask 022进行设置。
总结
1. 文件基数为666,目录为777,即文件无设x位,目录可设x位。
2. chmod设哪个位,哪个位就有权限,而umask是设哪个位,则哪个位上就没权限。
12.使环境变量生效
[root@zlm ~]# source /home/oracle/.bash_profile
或者
[root@zlm ~]# . /home/oracle/.bash_profile
或者
[root@zlm ~]# su - oracle
[oracle@zlm ~]# exit
五、安装Oracle 10g数据库(推荐使用Xmanager的Xshell来安装)
1.将软件包copy到/tmp目录下,推荐使用Xmanager的Xftp
2.解压软件包
[root@zlm ~]# cd /tmp
[root@zlm tmp]# tar -zxvf 10201_database_linux32.tar.gz
[root@zlm tmp]# unzip 10201_database_linux32
[root@zlm tmp]# chown –R oracle:oinstall /tmp/database
[root@zlm tmp]# chmod –R 775 /tmp/database
[root@zlm tmp]# export DISPLAY=:0.0
[root@zlm tmp]# xhost +
access control disabled, clients can connect from any host
[root@zlm tmp]# su – oracle
[oracle@zlm ~]# cd /tmp/database
[oracle@zlm ~]# ./runInstaller
3.安装过程(略)
安装完成之后,再以root用户执行两个脚本就可以了
# /u01/app/oracle/oraInventory/orainstRoot.sh --指定oraInventory目录的所有者和权限
# /u01/app/oracle/product/10.2.0/db_1/root.sh --copy三个脚本到/usr/local/bin目录下(coraenv、oraenv、dbhome)
注意是root用户执行,而不是oracle用户
[root@zlm ~]# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete
[root@zlm ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
[root@zlm ~]#
4.验证组建是否安装成功
(1)切换到oracle用户进入SQL操作界面:
Sqlplus / as sysdba 或 sqlplus / nolog
SQL>
(2)查看是否可以进入Web管理界面(OEM)
执行命令:emctl status dbconsole
启动web界面:emctl start dbconsole
停止web界面:emctl stop dbconsole
默认安装完oracle之后就已经启动OEM
在浏览器输入以下地址可以分别进入OEM和iSQL*Plus
http://zlm:1158/em
iSQL*Plus URL:
http://zlm:5560/isqlplus
iSQL*Plus DBA URL:
http://zlm:5560/isqlplus/dba