如何配置可以支持oracle数据库的系统
如何使用Typical Installation选项在本地安装oracle 数据库
如何为数据文件存储配置一个可以使用本地系统的通用目的oracle数据库
以下是在已经 是x系统的机器或已有x终端的机器上的操作,如果是其他没有x功能的请先安装x软件包
开启一个x终端
如果你不是在本机上安装oracle的话,你需要输入以下命令使远程机器开启x功能
# xhost [远程机器名]
以root身份登录操作
如果你不是以root用户登录的话,请打入以下命令来切换到root下
$ sudo sh
password:
#
最小硬件需求
内存 至少1GB
(查看内存大小命令 # grep MemTotal /proc/meminfo )
内存 1-2G 设置swap为内存的1.5倍
2-16G 设置swap大小跟内存大小一样
大于16G的 设置swap大小为16G
# grep SwapTotal /proc/meminfo //查看swap大小
# grep "model name" /proc/cpuinfo //查看cpu类型
oracle 11g的内存共享管理特性要求更多的共享内存(/dev/shm )和 文件描述符
共享内存至少取MEMORY_MAX_TARGET和 MEMORY_TARGET中的最大值
决定可用共享内存的命令为
# df -k /dev/shm/
系统架构
# uname -m
磁盘空间
/tmp 目录至少1GB空闲
安装类型 软件文件需要占用的磁盘空间(GB) 数据文件需要占用的磁盘空间(GB)
企业版本 4.35 1.68
标准版本 3.73 1.48
磁盘剩余空间查询命令
# df -h
软件需求
操作系统需求
oracle 11gr2需要的操作系统为
■ Asianux 2.0
■ Asianux 3.0
■ Oracle Enterprise Linux 4.0 Update 7 or later
■ Oracle Enterprise Linux 5.0
■ Red Hat Enterprise Linux 4.0 Update 7 or later
■ Red Hat Enterprise Linux 5.0
■ SUSE Linux Enterprise Server 10.0
■ SUSE Linux Enterprise Server 11.0
SELinux 也需要
内核需求
■
对于 Asianux 2, Oracle Enterprise Linux 4.0, Red Hat Enterprise Linux 4.0:
2.6.9 或以上
■
对于 Asianux 3, Oracle Enterprise Linux 5.0, Red Hat Enterprise Linux 5.0:
2.6.18 或以上
■
对于 SUSE 10:
2.6.16.21 或以上
■
在 SUSE Linux Enterprise Server 11 上:
2.6.27.19 或以上
内核版本查询命令 # uname -r
包需求
如果你使用LDAP管理配置管理机器的话,你想使用odisrvreg, oidca, or schemasync 脚本,
那么请安装Korn shell RPM包
Asianux 2, Oracle Enterprise Linux 4.0, 和 Red Hat Enterprise Linux 4.0需要安装以下列出的版本包(或以上版本)
binutils-2.15.92.0.2
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.97
elfutils-libelf-devel-0.97
expat-1.95.7
gcc-3.4.6
gcc-c++-3.4.6
glibc-2.3.4-2.41
glibc-2.3.4-2.41 (32 bit)
glibc-common-2.3.4
glibc-devel-2.3.4
glibc-headers-2.3.4
libaio-0.3.105
libaio-0.3.105 (32 bit)
libaio-devel-0.3.105
libaio-devel-0.3.105 (32 bit)
libgcc-3.4.6
libgcc-3.4.6 (32-bit)
libstdc++-3.4.6
libstdc++-3.4.6 (32 bit)
libstdc++-devel 3.4.6
make-3.80
pdksh-5.2.14
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
unixODBC-devel-2.2.11 (32 bit)
Asianux 3, Oracle Enterprise Linux 5.0, 和 Red Hat Enterprise Linux 5.0 需要安装下面的包(版本可以是更新的)
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
unixODBC-devel-2.2.11 (32 bit)
SUSE Linux Enterprise Server 10需要安装的包
binutils-2.16.91.0.5
compat-libstdc++-5.0.7
gcc-4.1.0
gcc-c++-4.1.2
glibc-2.5-24
glibc-devel-2.4
glibc-devel-32bit-2.4
ksh-93r-12.9
libaio-0.3.104
libaio-32bit-0.3.104
libaio-devel-0.3.104
libaio-devel-32bit-0.3.104
libelf-0.8.5
libgcc-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.80
sysstat-8.0.4
SUSE Linux Enterprise Server 11需要安装的包
binutils-2.19
gcc-4.3
gcc-32bit-4.3
gcc-c++-4.3
glibc-2.9
glibc-32bit-2.9
glibc-devel-2.9
glibc-devel-32bit-2.9
ksh-93t
libaio-0.3.104
libaio-32bit-0.3.104
libaio-devel-0.3.104
libaio-devel-32bit-0.3.104
libstdc++33-3.3.3
libstdc++33-32bit-3.3.3
libstdc++43-4.3.3_20081022
libstdc++43-32bit-4.3.3_20081022
libstdc++43-devel-4.3.3_20081022
libstdc++43-devel-32bit-4.3.3_20081022
libgcc43-4.3.3_20081022
libstdc++-devel-4.3
make-3.81
sysstat-8.1.5
可以通过该命令查询是否安装了某包
# rpm -q [包名]
编译需求
编译需要的包已在上述包需求中指定了,这里不赘述
其他软件需求
取决于你自己想要添加哪些组件了
■ Oracle ODBC Drivers
■ Oracle JDBC/OCI Drivers
■ Oracle Messaging Gateway
■ Browser Requirements
这个请参考oracle 官方安装文档
创建组和用户
■ The Oracle Inventory group (一般创建为oinstall组)
■ The OSDBA group (一般创建为dba)
■ The Oracle software owner (一般创建为oracle)
■ The OSOPER group (可选的.一般创建为 oper)
1.查看oinstall 组存在否,
# more /etc/oraInst.loc
如果显示了oinstall 组名,则该组已存在;
如果有oraInst.loc文件,输出显示如下
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
inst_group参数显示有oinstall,则该组已存在
2.查看dba
# grep dba /etc/group
有dba组名则存在
3.如果上述2不存在,可通过下命令添加
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
4. oracle 用户是否存在,并且要属于正确的组
# id oracle
应该大概显示如下(gid要是oinstall自己,dba为第二属组)
uid=440(oracle) gid=200(oinstall) groups=201(dba),202(oper)
5.如果上述oracle用户建立不正确,输入以下命令来修改
# /usr/sbin/usermod -g oinstall -G dba oracle
如果oracle用户不存在的话,则输入以下命令来创建
# /usr/sbin/useradd -g oinstall -G dba oracle
6.为oracle用户设置密码
# passwd oracle
配置内核参数
1.检查和修改内核参数值
检查下表显示的内核参数值,有没有被设成大于等于显示的最小值呢
下面就来介绍如何检查和设置这些值
(需要注意,这里只是限定了最小值,真实的生产环境中,请根据生产环境需要自行调节参数值来优化系统性能)
_______________________________________________________
参数 最小值 文件
semmsl 250 /proc/sys/kernel/sem
semmns 32000
semopm 100
semmni 128
————————————————————————————————
shmall 2097152 /proc/sys/kernel/shmall
————————————————————————————————
shmmax 4GB-1byte, /proc/sys/kernel/shmmax
物理内存大小 / 2,
二者中选最小的
—————————————————————————————————
shmmni 4096 /proc/sys/kernel/shmmni
—————————————————————————————————
file-max 512 * PROCESSES /proc/sys/fs/file-max
—————————————————————————————————
ip_local_ Minimum: 9000 /proc/sys/net/ipv4/ip_
port_range Maximum: 65500 local_port_range
——————————————————————————————————
rmem_ 262144 /proc/sys/net/core/rmem_default
default
——————————————————————————————————
wmem_max 1048576 /proc/sys/net/core/wmem_max
——————————————————————————————————
aio-max-nr Maximum: 1048576 /proc/sys/fs/aio-max-nr
——————————————————————————————————
检查
semmsl, semmns, # /sbin/sysctl -a | grep sem
semopm, and
semmni
shmall, shmmax, # /sbin/sysctl -a | grep shm
and shmmni
file-max # /sbin/sysctl -a | grep file-max
ip_local_port_ # /sbin/sysctl -a | grep ip_local_port_
range range
rmem_default # /sbin/sysctl -a | grep rmem_default
rmem_max # /sbin/sysctl -a | grep rmem_max
wmem_default # /sbin/sysctl -a | grep wmem_default
wmem_max # /sbin/sysctl -a | grep wmem_max
如何查到的内核参数值有跟推荐的值不一样的,则编辑/etc/sysctl.conf
像下面这样添加修改(kernel.sem中的当前四个值如果大于最小值,则不用改)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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
shmmax推荐最小值为0.5G,oracle建议你设为2G以达到最佳效果
一般系统重启后,这些参数值都会保存下来,但是 SUSE Linux Enterprise Server
系统上,输入以下命令已确保参数值保存下来
# /sbin/chkconfig boot.sysctl on
2. 上述值修改完后
# /sbin/sysctl -p
输入该命令进行更新并检查修改的值是否都改正确了
3. 输入 /sbin/sysctl -a 命令检查是否所有值都正确
4.SUSE 系统上还需要
# echo 501 > /proc/sys/vm/hugetlb_shm_group
(假设501为oinstall 组id)
跑完这条命令后再修改/etc/sysctl.conf 并且 执行# /sbin/chkconfig boot.sysctl on
保证开机时boot.sysctl自动执行
5.修改完/etc/sysctl.conf 后要么重启系统,要么sysctl -p 使得变量值在kernel内存中可用
为oracle用户设置shell限制
为了改善软件性能,你必须添加以下shell限制
——————————————————————
要添加这些shell限制条件:
1.将下列行添加到 /etc/security/limits.conf 文件
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2.在/etc/pam.d/login 文件中添加
session required pam_limits.so
3.根据oracle用户默认shell,在默认shell启动文件中做如下修改
对于boure,bash,korn shell, 添加如下行到/etc/profile (在suse系统中为/etc/profile.local)
-
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
对于c shell,在/etc/csh.login (suse系统中为/etc/csh.login.local):
-
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
endif
-
创建更下面相似的目录,并指定正确的用户,组及权限
oracle基本目录
可选的oracle数据文件目录
oracle基本目录需要3GB空闲空间,如果你不打算将oracle数据文件目录独立出来的话,
oracle基本目录就需要4GB空闲空间(这样就将数据目录也放到这个的下面了,真是生产环境中不推荐这么做)。
先df -h 查看系统剩余空间够不够,大体创建如下
# mkdir -p /mount_point/app/
# chown -R oracle:oinstall /mount_point/app/
# chmod -R 775 /mount_point/app/
举例:
# mkdir -p /u01/app/
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/
配置oracle用户环境
你要从oracle帐户来运行oracle universal Installer。在开始运行前,你必须为oracle用户配置环境。
你需要做:
在启动文件中设置默认文件mode umask 为022
设置DISPLAY环境变量
设置oracle用户环境:
1.开启一个新的终端,比如 x终端
2. 输入以下命令保证x window 应用可用在该系统上显示
$ xhost [需要安装oracle软件的主机名]
举例:
$ xhost somehost.us.example.com
本机:(xhost 后可更+符号 再加用户名或主机名)
# xhost +
$ su - oracle
$
//这样oracle下才可支持图形化界面的工具。
3.完成以下步骤之一:
如果终端会话没有连接到你想要安装oracle软件的系统上,那么请用oracle用户登陆到那个系统上
如果终端会话连接上了,则将用户切换到oracle
$ su - oracle
4.使用如下命令来查看oracle用户终端所使用的默认shell是什么
$ echo $SHELL
5.编辑shell启动文件
suse系统上的bash shell :
$ vi .profile
bourne shell(sh),bash shell on red hat(bash),korn shell(ksh):
$ vi .bash_profile
c shell (csh or tcsh):
vi .login
6. 在启动文件中添加
umask 022
7. 如果ORACLE_SID, ORACLE_HOME,ORACLE_BASE 这几个环境变量已有,则在文件中去掉它们
8. 保存文件退出
9. 运行该启动文件脚本
bash shell on redhat:
$ . ./.bash_profile
bourne shell , bash shell on suse, or korn shell:
$ . ./.profile
C shell:
% source ./.login
10. 如果你不是在本机安装软件的,那么请输入类似以下命令来指定x 应用显示到本地系统:
bourne,bash , korn shell:
$ DISPLAY=local_host:0.0 ; export DISPLAY
C SHELL:
% setenv DISPLAYlocal_host:0.0
这里local_host 为你要使用oracle Universal Installer的主机名或ip地址
11.如果发现/tmp空间不满足硬件需求中所要求的大小,那么你可用通过设置TMP 和 TMPDIR 环境变量来指定一个
满足空间大小的文件系统
a. df -k
b. sudo mkdir /mount_point/tmp
sudo chmod a+wr /mount_point/tmp
exit
c.bourne,bash,or korn shell:
$ TMP=/mount_point/tmp
$ TMPDIR=/mount_point/tmp
$ export TMP TMPDIR
C SHELL:
% setnv TMP /mount_point/tmp
% setnv TMPDIR /mount_point/tmp
12. 设置oracle_base , oracle_sid 环境变量
bourne,bash, korn shell:
$ ORACLE_BASE=/u01/app/oracle
$ ORACLE_SID=sales
$ export ORACLE_BASE ORACLE_SID
这些可以写到oracle账户下的.bash_profile中去,保存完后记得运行该启动文件脚本
$ unset ORACLE_HOME
$ unset TNS_ADMIN
C shell:
% setenv ORACLE_BASE /u01/app/oracle
% setenv ORACLE_SID sales
% unsetenv ORACLE_HOME
% unsetenv TNS_ADMIN
13. $ umask
显示22,022,或0022
$ env | more
安装oracle数据库
1. $ /mount_point/db/runInstaller (此为你下载的oracle软件包解压出来的东西,可以找到runInstaller)
安装过程中 (这里介绍基本的安装)
configure Security Updates 界面中可将打勾的去掉,然后不作其他任何修改点击Next跳过;
select Installation Option 界面中选择Create and Configure a Database , 再点击Next;
System Class -> Server Class -> Next ;
Grid Installation Options -> Single instance database installation -> Next;
Select Install Type -> Typical Installation -> Next;
Typical Install Configuration -> 其中的都默认就好,最后的Administative password, confirm password 请自行输入下 -> Next.
碰到密码警告不予理财继续;
Create Inventory -> Next;
Perform Prerequisite Checks -> 这里会做一些kernel参数,shell limits ,安装包的检查,如果你觉得有些包没有影响,不需要理睬,点击右上角的
ignore all -> 确认没有错误-> Next;
Summary -> Finish; 其中的save response file,可以保存下来,为一个应答文件,方便以后自动安装
Install production -> 正确安装后,点击ok, 如果报错,请检查问题。 最后再根据提示执行2个.sh脚本,再点击OK;
Finish -> Close.
=======================================================================================
本人用的是在rhel6.4上安装的oracle11.2
按照rhel5上所需包安装(32位的包本人都没安装),缺少一个compat-libstdc++-33-3.2.3,就从rhel5.5中取了一个过来安装
之后在安装过程中Perform Prerequisite Checks时,检查包有失败,一个是pdksh,还有其他都是要求i386的包的,觉得无关,这些都被我点击右上角的
ignore all跳过。
还有一个问题是
>>> Could not execute auto checkfor display colors using command /usr/bin/xdpyinfo. Check if the DISPLAYvariable is set. Failed<<<<
则可退出当前用户登录系统,切换到oracle登录进去。
如果你是ssh到远程ip上安装软件,请直接ssh到oracle下,不然会出现认证失败导致DISPLAY的问题。
最后安装无问题后,再修改oracle用户 shell启动文件 ~/.bash_profile ,添加library和执行文件的搜索路径,
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
修改完后 ,
$ . ~/.bash_profile
现在可以在终端下输入
$ sqlplus / as sysdba
问题三
当重启系统后,请先敲入lsnrctl stauts 检查你的listener是否开启
如没有开启 请先lsnrctl start
再sqlplus / as sysdba
进入之后
SQL> startup
给一个数据库实例
listener要自己手动启动的问题可能是解决以下2个小问题的方法(在确定自己包都已安装好,所要监听的host名也正确的话)
1. TNS-12541:TNS:no listener
listener问题请学习oracle net章节的知识