Linux上安装oracle11gR2
一 操作系统
机器: 192.168.5.191
查看操作系统内核版本
以root用户登录,输入# cat /proc/version,可以看到当前系统是:Red Hat 4.4.6-3
二oracle相关软件
oracle11g下载地址:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
oracle 即时客户端(instant client)下载地址:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
oracle11gR2 官方安装向导for Linux x86-64:
http://docs.oracle.com/cd/E11882_01/install.112/e24326.pdf
三 硬件要求
1. 最小内存 1 GB of RAM
可用命令# grep MemTotal/proc/meminfo查看RAM大小
2. 虚拟内存容量
下表描述了RAM和交换空间的关系
Available RAM |
Swap Space Required |
Between 1 GB and 2 GB |
1.5 times the size of RAM |
Between 2 GB and 16 GB |
Equal to the size of RAM |
More than 16 GB |
16 GB |
可用命令# grep SwapTotal/proc/meminfo查看交换空间的大小
结合1和2可以看出,RAM约等于2GB,交换空间约等于4GB,满足条件。
ps:用# free命令可以看出RAM和交换空间的使用情况
3. 硬盘空间要求(Linux x86-64)
数据库软件硬盘空间需求:
Installation Type |
Requirement for Software Files (GB) |
Enterprise Edition(企业版) |
4.7 |
Standard Edition(标准版) |
4.6 |
数据文件硬盘空间需求:
Installation Type |
Requirement for Data Files (GB) |
Enterprise Edition(企业版) |
1.7 |
Standard Edition(标准版) |
1.5 |
可用命令# df –ah查看磁盘空间使用情况(df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况,命令参数a表示全部文件系统列表,h 表示以方便阅读方式显示)
四 软件要求
1. 操作系统要求
可用命令# cat/proc/version查看当前已安装版本
2. 内核要求
可用命令# uname –r查看当前内核版本
3. 软件包支持
根据官方安装文档中说明,不同的平台需要不同的软件包,这里仅以Oracle Linux 4and Red Hat Enterprise Linux 4为例(192.168.5.191是Red Hat 4):
当前操作系统是64位的,括号内备注32位的package无需安装。
可以用命令:yum install 软件包名称 进行安装
以第一个package为例,输入命令:# yum install binutils (注:无需yum install binutils-2.15.92.0.2,检测到哪个版本就安装哪个版本即可)
可以看到binutils已经安装了最新的版本,如果没有安装根据提示选择y安装即可。
五 创建oracle组、用户
以root用户登录,创建oracle安装组oinstall,数据库管理员组dba,及oracle用户
1. 创建组
# groupaddoinstall
# groupadd dba
创建组后在/etc/group文件中可以看到:
2. 创建用户
# useradd -goinstall -G dba oracle
(主组oinstall,其它组:dba 。g表示用户组,指定用户所属的用户组;G表示用户组,指定用户所属的附加组)
创建用户后在/etc/passwd中可以看到:
其中:oracle表示用户;x表示口令,Linux使用shadow技术,真正的加密后的用户口令字存放到/etc/shadow文件中,passwd中只存放一个特殊字符,x或者*;501是用户标识号;503是组标识号;/home/oracle表示用户的起始工作目录,它是用户在登录到系统之后所处的目录;/bin/bash是用户登录到系统后运行的命令解释器或某个特定的程序。
oracle用户登录后可以看到处在/home/oracle目录下。
3. 为oracle用户创建密码
使用命令# passwd oracle ,根据提示输入密码:
加密口令在/etc/shadow中可以看到:
六 配置内核参数和资源限制
1. 修改内核参数
以root用户登录,修改/etc/sysctl.conf文件,加上如下内容:
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 = 1048576
为使上述配置生效而不重启系统,执行如下命令:
# /sbin/sysctl –p (sysctl在/sbin目录下,执行命令时要知道命令的路径,若有配置环境变量可以不加路径直接执行。 -p表示从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载)
2. 修改用户限制
以root用户登录:修改 /etc/security/limits.conf 文件,加上如下参数:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
3.修改用户验证选项
以root用户登录:修改/etc/pam.d/login文件,加上如下参数:
session required pam_limits.so
4.修改用户配置文件
以root用户登录:修改/etc/profile文件,加上如下参数:
if [ $USER ="oracle" ]; then
if [ $SHELL = "/bin/ksh"]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
七 安装目录配置
创建oracle安装目录:
# mkdir -p /u01/app/
# mkdir -p /u01/oraInventory
创建oracle数据库存放目录:
# mkdir-p /u01/oradata
创建oracle备份目录:
# mkdir -p /backup/oracle/
赋予各个目录权限:
# chown-R oracle:oinstall /u01/oradata
# chown–R oracle:oinstall /u01/oraInventory
# chmod-R 775 /u01/app/
# chmod-R 775 /u01/oradata
# chmod–R 775 /u01/oraInventory
# chown-R oracle:oinstall /backup/oracle/
# chmod-R 775 /backup/oracle/
说明:chown将指定文件的拥有者改为指定的用户或组,-R表示处理指定目录以及其子目录下的所有文件。以chown -R oracle:oinstall /u01/oradata为例,表示将/u01/oradata及其目录下的所有文件改为oracle用户,oinstall组
可以看到u01目录下的三个文件夹都已改成所属oracle用户,oinstall组。
八 安装oracle11gR2
1. 安装包准备
将oracle11g两个zip文件上传至192.168.5.191 /home/oracle目录下(注意,两个zip文件要放在同一目录下,方便解压):
用命令# unzip ***.zip对这两个zip文件解压缩,解压缩后会自动生成database文件夹,两个zip文件都在database中。
看到官网文档上,安装前还需要配置环境变量。第一次安装对这个不太懂,需要的时候再配置环境变量。
2. 安装oracle数据库
切换至oracle用户(若已登录root用户,可使用# su – oracle命令切换至oracle用户)。
第一步:进入/home/oracle/database目录下,执行$ ./runInstaller
报错,提示:无法使用命令/usr/bin/xdpyinfo自动检查显示器颜色。请检查是否设置了DISPLAY变量。
解决方案:下载Xmanager,运行下面的 ,然后输入命令$ export DISPLAY=192.168.4.122:0.0(注:192.168.4.122是我本机ip,本机防火墙一定要关闭),再执行$ ./runInstaller就可以了。(附上参考资料链接:http://blog.csdn.net/xionglang7/article/details/12716823)
再次执行$ ./runInstaller可以看到,文字显示成乱码了。
解决方案:输入命令$ export LANG=en_US。原来显示的是中文,现在改成英文。
设置export DISPLAY=192.168.4.122:0.0和export LANG=en_US都是临时的,为了防止再次输入这两个,切换到root用户($ su - root)在/etc/profile中加入环境变量。(oracle用户对/etc/profile文件只有读的权限,无法修改,要切换到root用户)
添加之后用命令# source /etc/profile使其立即生效。修改之后再切换回oracle继续安装。
第二步:安装时弹出了如下错误:
解决方案:出现这种错误是因为主机名和/etc/hosts 文件中不一致,只需要把主机名和其IP 写入/etc/hosts 文件,就ok了。(附上参考资料链接:
http://www.linuxidc.com/Linux/2011-09/44130.htm)
查看主机名和和ip 地址关系:
主机名是1.yqrsyn.com
查看/etc/hosts文件:
这里我们修改一下主机名,Linux 下修改/etc/sysconfig/network 里的hostname 需要重启系统才能生效。
修改network 文件后,再使用hostname 命令指定一下主机名,就不用重启OS了。
1. 修改/etc/sysconfig/network文件,hostname修改为shujuku,修改后如下:
2. 使用hostname 命令修改主机名,该修改重启会失效,但在第一步我们已经修改过。所以失效也没关系
3. 修改hosts 文件
再次安装,顺利通过。
第三步:弹出安装页面
email和密码无需填写,填的话会弹出输入代理服务器相关信息页面。
因为我没有填写email地址,弹出了如下信息,默认yes;
选择安装方式,默认选择只安装数据库软件:
安装选项,单一实例安装:
安装语言选择:
选择数据库安装版本:
选择数据库安装路径:
选择inventory 目录(oraInventory存放的是Oracle软件安装的目录信息,Oralce的安装升级都需要用到这个目录):
由图可见缺少的都是32位的(i386),在前面安装软件包时只安装了64位的。
忽略(勾选Ignore ALL),点击Next:(这是64位的系统,缺少的32位安装包可忽略)
安装过程中提示需要运行脚本:
用root用户登录,运行/u01/app/product/11.2.0/dbhome_1/root.sh脚本,然后再返回这个窗口点击“OK”按钮。过程不再附图。
至此,安装完成。
九 安装监听器
使用oracle用户登录系统或在命令行窗口切换到oracle用户,执行
$ netca
又出错了。报错的原因是找不到这个命令,解决方案:要么配置环境变量,要么把命令的路径带上(或者切换到命令所在目录执行)。
第一步:设置环境变量(放在这里只是根据我的需要,有多教程中是放在第八项之前设置环境变量的)
输入命令$ vi .bash_profile,在文件中加上如下内容:
配置后输入命令$ source .bash_profile使其生效。再执行$ netca就会自动去/u01/app/product/11.2.0/dbhome_1/bin/目录下找这个命令了。
第二步:图形化安装
输入$ netca命令后弹出如下界面:
点击“Finish”完成配置。可以用lsnrctl start启动监听,lsnrctl status查看监听状态,lsnrctl stop停止监听
十 安装数据库程序
前面已经配置了oracle环境变量,可直接执行命令$ dbca(同样是以oracle用户登录执行),弹出了如下界面:
可以看到,通过dbca即可以创建数据库也可以删除数据库。
数据库名和SID输入:oracle191
配置四个内置超级管理员密码,建议统一密码,便于记忆用:
可以点击Save as an HTML file将概要保存起来(也可以不保存直接点击OK按钮)
输入地址,点击Save保存,然后返回摘要页面点击OK按钮
至此数据库实例创建完成。
在环境变量中加上ORACLE_SID。输入命令$ vi.bash_profile,在文件中加上下面一行:
$ source .bash_profile使其生效。
(ps:若需要启用EM,还需要配置ORACLE_UNQNAME=$ORACLE_SID,在.bash_profile文件中加上一行exportORACLE_UNQNAME=$ORACLE_SID)
贴出完整的环境变量附图,如下:
十一 启动数据库
1. Linux启动oracle顺序
01. su – oracle
02. sqlplus / as sysdba
03. SQL>startup
04. lsnrctl start
2. Linux关闭oracle顺序
01. su – oracle
02. lsnrctl stop
03. sqlplus / as sysdba
04. SQL>shutdownimmediate
05. SQL>quit
第一步:启动数据库(自检:下面截图中as前面少了空格,命令的原意是sqlplus username/password as sysdba)
错误原因:在oracle 11g中采用AMM内存管理,当MEMORY_TARGET的值大于/dev/shm时,就会报ORA-00845: MEMORY_TARGET not supported on this system错误。
解决方案:增加/dev/shm大小
01. 修改/dev/shm大小(由于mount命令只有root用户有权限执行,先切换到root用户)
(注:参考资料链接:http://www.2cto.com/database/201310/253667.html)
02. 调整之后再试一次:
出现了新的错误:ORA-01102。
错误原因:lk
解决方案:用fuser命令kill掉。
lkORACLE191文件位于/u01/app/product/11.2.0/dbhome_1/dbs目录下。
对该文件说明一下:数据库启动时,会生成lk
(注:附上参考资料链接:
http://blog.163.com/mcse_mcsa/blog/static/1652747232007330590517)
解决之后再试一次:
ok,已成功连接。
第二步:启动监听
输入命令$ lsnrctl start
可以看到监听已成功启动。
至此,可以用工具连接数据库了。
参考资料:
http://blog.csdn.net/yincg/article/details/8726690
http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html
http://docs.oracle.com/cd/E11882_01/install.112/e24326.pdf
http://my.oschina.net/bxxfighting/blog/382618?p=1
http://www.blogjava.net/icewee/archive/2013/01/30/394943.html
附:
Q1:groupadd命令前为什么要加/usr/sbin?
A1:加/usr/sbin/不是必需的。加上的话,shell会直接执行给定路径的可执行程序。不加的话,shell会在PATH变量里面记录的路径找一遍,找到这个命令的话就直接运行,找不到的话就提示你没有这个命令。
通过cat /usr/sbin可以看到sbin文件里有groupadd命令。
Q2 : 为什么要切换到oracle用户安装oracle服务器等?
A2 : 我们可以尝试一下以root用户安装
可以看到用root用户执行安装命令时报错。
这主要是出于linux的安全机制,root的权限太大了,新建一个oracle用户去操作比较安全。
Q3:为什么有的命令前是#,有的命令前是$?
A3:以root用户登录,提示符是#;以其他用户登录,提示符是$。文中在$后面显示的命令都是以oracle用户登录执行的。
Q4 : .bash_profile和profile的区别?
A4 : 01.位置:.bash_profile位于/home下的用户文件夹下,是隐藏文件。本文档中所涉及的环境下该文件位于/home/oracle目录下,通过ls –a可以查看到;profile在/etc目录下
02.权限:/etc/profile文件只对root及root属组用户可读可写,其他用户只有读权限;.bash_profile:适配于当前登录用户的权限。
03.作用:.bash_profile:每个用户都可使用该文件输入专供自己使用的shell信息;/etc/profile对所有用户生效,.bash_profile只对当前用户生效。
Q5 : 怎么查看实例名及其状态?
A5 : select instance_name,status from v$instance;(分号要输入的~)