Linux上安装Oracle的辛酸史
下个礼拜就要开始学习Oracle了,得嘞先在我的CentOS7上装一个(貌似听说Oracle装在Oracle Linux能得到更好的性能,不过懒得下Oracle Linux镜像,在CentOS7上装个试试先)。
创建oracle用户与相关用户组
为什么要把这部分作为第一步呢,主要是为了避免后面创建文件以及解压缩等一系列步骤中,要将文件所有者修改为oracle才能在安装过程中有足够的权限创建文件或子目录(Linux的权限既带来了安全,也带来了各种不便,稍一走神就忘了赋权限)。
[root@Holmofy ~]# groupadd oinstall
[root@Holmofy ~]# groupadd dba
[root@Holmofy ~]# useradd -g oinstall -G dba oracle
- 1
- 2
- 3
创建用户之后,可以使用
passwd oracle命令对oracle用户的密码进行设置或修改。
如果你之前有掉坑的经历,已经添加过用户了,可以使用id oracle命令核查oracle用户是否配置完善:看Oracle是否属于oinstall和dba用户组。
创建用户完成后,后面的工作大部分就用oracle用户去完成了,需要用到root权限再切换或者使用sudo命令(sudoers需要配置,这个不是本文的内容)。
下载安装包
软件包官网下载链接如下:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
官方提供的文档链接如下:
http://www.oracle.com/technetwork/database/enterprise-edition/documentation/index.html
注意一定要选择平台相同的安装包。如果你操作系统是64位的,下载的安装包是32位的,安装时会报交叉编译的错误信息:/lib/ld-linux.so.2: bad ELF interpreter。虽然有方法有解决方法,但是为了省去不必要的麻烦也为了程序的执行效率最好还是选择平台一致的安装包(走过的坑,你就不要再往下跳了>︿<)。
我这里选用的是x64的安装包:
使用unzip命令将其解压(直接解压就行),解压完成后会生成一个database文件夹:
解压完成后有个doc目录,该目录下有Oracle安装以及管理的各种文档(不过是英文的,而且安装文档中没有CentOS的技术支持,不过有RHEL的也一样可以照着操作):
检查硬件需求
毕竟Oracle是个大型软件,如果你的硬件给的不够,我劝你还是终止后面的步骤吧(铁定的安装失败)
1. 内存要求
至少1GB的RAM(小于1G的机器你还要它干啥)
可以使用以下命令查看内存大小:
# grep MemTotal /proc/meminfo
- 1
- 2
- 3
检查RAM与交换分区之间的要求:
| RAM | 需要交换空间的大小 |
|---|---|
| 1 GB和2 GB之间 | RAM大小的1.5倍 |
| 2 GB和16 GB之间 | 等于RAM的大小 |
| 超过16 GB | 16 GB |
使用一下命令查看交换分区大小:
shell
# grep SwapTotal /proc/meminfo
2. 硬盘要求
保证
/tmp目录只要有1GB可用空间
# df -h /tmp
- 1
- 2
- 3
确定可用硬盘空间满足以下要求:
| 安装类型 | 软件文件要求(GB) |
|---|---|
| 企业版 | 3.95 |
| 标准版 | 3.88 |
| 安装类型 | 数据文件要求(GB) |
|---|---|
| 企业版 | 1.7 |
| 标准版 | 1.5 |
可使用以下命令你给查看你系统可用硬盘空间
shell
# df -h
检查软件需求
1. 操作系统要求
官方文档中说11g版本Oracle安装包支持以下操作Linux发行版:
- Asianux 2.0
- Asianux 3.0
- Oracle Enterprise Linux 4.0 Update 7 或更新版本
- Oracle Enterprise Linux 5.0
- Red Hat Enterprise Linux 4.0 Update 7 或更新版本
- Red Hat Enterprise Linux 5.0
- SUSE Linux Enterprise Server 10.0
- SUSE Linux Enterprise Server 11.0
CentOS应该和RHEL一样对待,所以说这里要求并没有那么严格
2. 软件包依赖
注意这一步是重点了,安装失败很大一部分原因是包依赖的问题没有解决。
官方文档中对于RHEL5及以上版本的Linux发行版,要求需要以下的软件包(更高版本也行)
shell
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
你可以使用以下命令查看上面这些软件包的版本是否大于等于上面的要求:
# rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
- 1
如果符合都符合要求就没啥问题了,如果出现有未安装的软件包,比如我出现的这种情况:
[root@localhost ~]# rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
binutils-2.23.52.0.1-55.el7.x86_64
未安装软件包 compat-libstdc++
elfutils-libelf-0.163-3.el7.x86_64
未安装软件包 elfutils-libelf-devel
未安装软件包 elfutils-libelf-devel-static
gcc-4.8.5-4.el7.x86_64
gcc-c++-4.8.5-4.el7.x86_64
glibc-2.17-105.el7.x86_64
glibc-common-2.17-105.el7.x86_64
glibc-devel-2.17-105.el7.x86_64
glibc-headers-2.17-105.el7.x86_64
kernel-headers-3.10.0-327.el7.x86_64
未安装软件包 ksh
libaio-0.3.109-13.el7.x86_64
未安装软件包 libaio-devel
libgcc-4.8.5-4.el7.x86_64
libgomp-4.8.5-4.el7.x86_64
libstdc++-4.8.5-4.el7.x86_64
libstdc++-devel-4.8.5-4.el7.x86_64
make-3.82-21.el7.x86_64
sysstat-10.1.5-7.el7.x86_64
未安装软件包 unixODBC
未安装软件包 unixODBC-devel
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
我的建议是使用yum把这些软件包都更新一遍:
# yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
- 1
配置内核参数
以下命令都需要root用户权限执行
如果安装Oracle用于生产的话,内核参数是一个很重要的优化系统性能的配置项,比如配置信号量,I/O,共享内存等参数配置,这个建议参考官方文档进行详细配置,官方文档对这方面有很详细的说明。如果你和我一样只是安装个Oracle用来学习那只需要使用官方文档中建议的最低配置就行。具体可以在/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 = 1048586
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
为使上述配置生效而不重启系统,执行如下命令
# /sbin/sysctl -p
- 1
为oracle用户添加shell配置
为了提高Oracle软件性能,需要为Oracle用户添加以下shell配置:
| Shell Limit | 在limits.conf中的项 | 硬限制 |
|---|---|---|
| 打开文件描述符的最大数量 | nofile |
65536 |
| 单个用户可用的最大进程数 | nproc |
16384 |
| 进程堆栈段的最大大小 | stack |
10240 |
步骤如下:
- 在
/etc/security/limits.conf文件,添加以下参数:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
- 1
- 2
- 3
- 4
- 在
/etc/pam.d/login文件中添加一行:
session required pam_limits.so
- 1
在
/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- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
创建并配置环境变量
安装路径可以自选,我这里直接在根路径下创建了一个oracle目录,如果用于生产建议不要这么干,不方便以后的扩展。
注意权限
[root@localhost /]# mkdir /oracle/app
[root@localhost /]# chown -R oracle:oinstall /oracle
[root@localhost /]# chmod -R 775 /oracle
- 1
- 2
- 3
配置oracle用户环境变量:
1、使用su - oracle命令切换为oracle用户登录
2、使用任意文本编辑器打开Shell启动脚本,如:
vi .bash_profile
- 1
3、添加如下环境变量:
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/app
export ORACLE_SID=oracleSID
export PATH=$ORACLE_HOME/bin:$PATH
- 1
- 2
- 3
- 4
开始正式安装
进入到之前解压的安装包,运行runInstaller脚本开始安装
注意:一定要使用oracle用户登录图形界面,否则运行runInstaller会报错显示错误(因为后面使用图形化界面安装的,需要权限去运行图形界面程序)。
如果你弹出了以下界面,那么恭喜你离成功只有一半的距离了。
1、第一步用来配置更新以及技术支持的,把勾去掉直接下一步就行
2、 配置安装选项,这三个选项分别表示:①创建并配置一个新数据库,适用于新安装数据库的用户;②只安装数据库软件,适用于已有Oracle数据库数据用于数据迁移的;③升级已有数据库,适用于将老数据库升级成新数据库的用户。毫无疑问这里选择第一个选项。
3、第三步配置桌面版还是服务器版,桌面版是最小化配置,这里为了练习选择服务器版的配置。
4、第四步分布式网格配置,这里选择单实例服务器配置,如果要配置分布式服务的话可以参考前面说的安装文档,里面有详细的分布式服务安装过程。
5、这个我们为了达到练手的目的选择高级安装(典型安装基本都已经帮我们配置好了,有啥挑战性)
6、选择语言,这里我选择英文和简体中文。
7、第七步选择数据库版本,这里选择企业版
8、选择安装路径,这个已经在环境变量里配置过了
9、这个Inventory Directory目录用于记录Oracle的清单信息的,清单信息中包括Oracle的安装路径等信息。这里我选择在oracle的家目录下建一个目录存放这些安装信息。
10、第十步用于创建数据库的类型:
- 通用/事务处理:专为一般用途或交互较多的应用程序而设计。
- 数据仓库:对数据存储应用程序进行优化。
这里选择通用的就行。
11、配置数据库名,和Oracle服务ID号
注意数据库名一定要记住,以后进行程序开发会用到这个数据库名
12、十二步,这里需要配置一下字符集,将字符集设置成UTF-8,其他的不用修改(如果有特殊需求可以参考文档来配置)。
13、这一步用来配置系统信息邮件通知的,可以跳过
14、这一步用于配置数据存储的(数据文件存储位置),这里我们把数据存储在/oracle/oradata目录下。
15、十五步用于配置数据备份,这里我们只是用来学习不需要自动备份,实际生产肯定是要做备份的。
16、十六步配置账号密码,这里我将所有的默认用户统一使用相同的密码(如果密码太简单可能会报错,需要大小写数字都包含,需要精心设计一个密码)。
注意密码不能忘了,不管是数据库管理还是软件开发都会用到这个密码。
17、这一步用于配置数据库用户组的,只要安装前的配置工作完成了,这一步可以直接使用默认的。
18、这一步会检测交换分区大小、内核参数以及依赖包是否安装。只要前面准备工作都完成了,下面的错误可以直接忽略(比如它要求的软件包,我们的版本实际上比它要求的还高,所以这里的报错没必要理会它)。
19、这一步是对前面所有配置的一个总结,我们可以直接点击完成
20、只要前面的配置没问题,我们就可以安心的等待安装成功了
21、安装完成后,弹出下面这个界面,我们点击password management对数据库用户的密码进行一些配置
22、配置数据库用户密码
这里叫你运行使用root用户运行两个脚本,运行一下就可以了。
安装成功,此处应有掌声。
使用SQLplus查询scott表进行测试
如果SQLplus命令找不到,注意看一下环境变量是否配置正确,然后将oracle注销后再重新登录
大功告成
Linux上安装Oracle的辛酸史的更多相关文章
- linux上安装oracle
Linux上安装Oracle 10g: http://69520.blog.51cto.com/59520/91156
- [转载]linux上安装oracle
原文地址:linux上安装oracle作者:天涯恨客 1.创建oinstall组 [root@xieqing ~]# groupadd oinstall 创建dba组 [root@xieqing ~] ...
- 在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导
Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWa ...
- 在Linux上安装Oracle服务的操作步骤
如题,将我在云服务器上安装Oracle服务的惨痛经历分享出来,期间查找的资料踩过的坑无数,希望对大家能有帮助 闲话少叙,直接开始 首先,由于服务器比较差,需要先设置swap 查看是否设置swap虚拟内 ...
- 史上最详细最全的Linux上安装Oracle的教程-centos7
一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root #切换到root Password: [root@localhos ...
- Ubuntu Linux上安装oracle jdk
说明:由于很多系统不支持使用OpenJDK,因此在ubuntu下会需要安装Oracle JDK.而Oracle JDK的安装貌似没有提供apt方式,因此安装Oracle JDK的方式相对麻烦一些,我经 ...
- DBA_在Linux上安装Oracle Database11g数据库(案例)
2014-08-08 Created By BaoXinjian
- VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库
1.环境及安装前规划:虚拟机及OS如下 环境:VMware Wordstation ACE版 6.0.2 操作系统:OracleLinux-R5-U8-Server-i386-dvd 3.2G ...
- Linux上安装Oracle的教程-centos7
一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root #切换到root Password: [root@lo ...
随机推荐
- Java框架之Struts2(六)
一.OGNL表达式语言 Ognl Object Graphic Navigation Language(对象图导航语言),它是一种功能强大的表达式语言(Expression Language,简称为E ...
- 【github&&git】7、gitignore 修改不起作用
在git使用过程中有时会遇到修改了.gitignore文件,修改了之后发现,不能起作用,这是因为git存在缓存问题,所以做一下步骤即可: git rm -r --cached . git add . ...
- 微信小程序下拉框之二维数组或对象
在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的值.像我项目中,需要获取到的是它对应的Id,那么我们如何通过它的这个下标值返回你想要的值呢? 通过picker返回的索引值,去获取匹配你想获 ...
- 我的Java之旅 第四课 JAVA 语言语法 基础
1 整型 int num = 1_000_000; //从java 7开始支持的语法 ,只是让人更易读,java编绎器会去除 2 字符串 一定不能使用==运算 ...
- 使用Twitter异常检测框架遇到的坑
在Github上搜索“Anomaly Detection”,Twitter的异常检测框架(基于R语言)高居榜首,可见效果应该不错: 但是活跃度并不高,3-4年没人维护了: 因此在使用时难免会遇到一些坑 ...
- Android联网更新应用
UpdateInfo public class UpdateInfo { public String version;//服务器的最新版本值 public String apkUrl;//最新版本的路 ...
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 【Java入门提高篇】Day33 Java容器类详解(十五)PriorityQueue详解
今天要介绍的是基础容器类(为了与并发容器类区分开来而命名的名字)中的另一个成员——PriorityQueue,它的大名叫做优先级队列,想必即使没有用过也该有所耳闻吧,什么?没..没听过?emmm... ...
- git将本地项目推送到远程仓库
一.三个基本配置: Git全局设置 git config --global user.name "账户名称" git config --global user.email &quo ...
- [Linux.NET]在CentOS 7.x中编译方式安装Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄罗斯大型的 ...