CentOS 7.4下安装Oracle 11.2.0.4数据库

在Linux下安装Oracle数据库是一件较为麻烦的事情。

由于Linux的安装过程中可能会选择不同的安装包,会导致Oracle安装过程中缺失或多一些软件包,很难一次性的安装成功。所以,本文详细记录了Oracle在Linux上的安装过程,以供参考。

本环境仅供软件开发和测试环境使用,并不适合用于生产环境。

Oracle官方支持的Linux发行版本有RedHat和Oracle Linux,所以,我们在CentOS(7.4)下安装Oracle(11gR2)时,还需要做一些特别的准备工作。

本文的CentOS 7.4使用官网上下载的CentOS-7-x86_64-DVD-1708.iso文件安装,安装时选择Server with GUI,并选择FTP Server。语言使用英语。

选择安装包

为了日常使用方便,执行命令systemctl set-default multi-user.target,让linux启动后,直接进入字符界面。

本文的Oracle数据库使用的是11.2.0.4(这个版本适配红帽7,官网免费下载的版本并不适用于红帽7)。

附下载地址,请使用迅雷下载即可。

https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_1of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_1of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_2of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_2of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_3of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_3of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_4of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_4of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_5of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_5of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_6of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_6of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_7of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_7of7.zip

1. 关闭防火墙

由于是开发测试环境,为了方便,将防火墙关闭。但是,在正式的生产环境,千万不要这样做。

首先执行命令systemctl status firewalld.service检查防火墙状态,

检查防火墙状态

然后,执行命令systemctl stop firewalld.service关闭防火墙。

当然,我们可以执行命令systemctl disable firewalld.service,禁用防火墙。

禁用防火墙

2. 关闭selinux

selinux提供了很多Linux的系统安全措施,演示系统中,将其关闭,方便操作。需要注意的是,在正式生产环境下,也千万不要这样做。

执行命令getenforce查看selinux的状态,初始安装的CentOS7是打开状态。

执行命令vi /etc/selinux/config,编辑文件,配置SELINUX=disabled,关闭selinux。

3. 为yum配置阿里源

在安装Oracle的过程中,需要安装一些依赖包。为了加快安装速度,最好将yum源更新为国内的,首推阿里yum源。

  1. 执行命令cd /etc/yum.repos.d/,然后执行命令wget http://mirrors.aliyun.com/repo/Centos-7.repo下载阿里yum源。

  2. 执行命令mv CentOS-Base.repo CentOS-Base.repo.bak备份现有源信息。

  3. 执行命令mv Centos-7.repo CentOS-Base.repo,使用上一步中下载回来的阿里yum源。

  4. 依次执行命令yum clean allyum makecacheyum update,更新yum源。

4. (可选)为虚拟机生成快照

为了保险起见,为虚拟机生成一份快照,避免后续安装出错,重头再来安装操作系统。

5. 创建数据库目录

创建Oracle数据库的安装目录到/opt下。

  1. 执行命令mkdir -p /opt/oracle,创建oracle安装目录;

  2. 执行命令mkdir -p /opt/oraInventory,创建oracle数据库配置文件目录;

  3. 执行命令chown -R oracle:oinstall /opt/oracle,设置oracle为目录的所有者;

  4. 执行命令chown -R oracle:oinstall /opt/oraInventory,设置oracle为目录的所有者。

6. 创建用户和用户组

Oracle安装过程中,需要使用固定的用户和用户组。

  1. 执行命令groupadd oinstall,创建oinstall用户组;

  2. 执行命令groupadd dba,创建dba用户组;

  3. 执行命令useradd -g oinstall -g dba -m oracle,创建oracle用户;

  4. 执行命令passwd oracle,为oracle用户设置密码,为了好记密码为123456;

  5. 执行命令id oracle,查看刚刚创建的oracle用户信息。

创建用户组及用户

执行命令vi /home/oracle/.bash_profile,添加如下内容,为oracle用户设置环境变量。

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

执行命令source /home/oracle/.bash_profile,让配置立即生效。

7. 对oracle用户设置限制

为了提高软件运行性能,需要对oracle用户设置限制。

执行命令vi /etc/security/limits.conf,添加如下内容:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

验证最新版的PAM 已经被加载,如果不存在的话,在 /etc/pam.d/login 文件中添加如下内容:

session required pam_limits.so

验证当前的ulimits,并启用。 这个可以通过很多方式来做, 在/etc/profile添加如下内容是推荐的方式:

if [ $USER = "oracle" ]; then  
    if [ $SHELL = "/bin/ksh" ]; then  
       ulimit -u 16384   
       ulimit -n 65536  
    else  
       ulimit -u 16384 -n 65536  
    fi  
fi

8. 修改OS系统标识

Oracle数据库支持在红帽和Oracle Linux上安装,不支持在CentOS上安装,所以需要修改OS系统标识为红帽。

执行命令vi /etc/redhat-release,修改系统标识为redhat-7

9. 修改内核参数

部分参数,在Oracle安装过程中,可自动修复(使用root用户执行Oracle安装程序给出的修复脚本),但是有部分不能自动修复。

执行命令vi /etc/sysctl.conf

修改的内核参数如下:

kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
kernel.shmmax = 2079272960
kernel.shmmni = 4096
fs.aio-max-nr = 1048576

执行命令sysctl -p,使修改的内核参数生效。

10. 安装依赖的软件包

Oracle11gR2在CentOS7.4上安装,缺少如下19个包,需要执行命令yum install -y gcc libaio glibc.i686 compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf-devel glibc-devel glibc-headers gcc-c++ libaio-devel libaio-devel.i686 libgcc.i686 libstdc++ libstdc++.i686 unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686 ksh,来安装需要的19个依赖包。

针对pdksh找不到的问题,可安装ksh即可。据说oracle使用新的ksh了,但是检查脚本中还使用的是pdksh

缺少的依赖包

在ssh终端中安装完依赖的包后,再次检查环境,发现还有以下包缺失。其实是xxx(i386),CentOS7中已经使用i686的缘故,直接忽略,继续安装即可。

安装完依赖包

11. 安装Oracle

启动图形安装界面,按照提示安装,检查通不过的时候,请选择忽略即可。

进入Oracle数据库的安装文件目录,如/software/database,执行命令./runInstaller,启动Oracle数据库安装程序。

启动安装器

按照安装向导提示,一步一步的往下安装,需要注意的是使用中文一般要选ZHS16GBK,否则会出现乱码。

安装过程中

安装时到70%左右会出现一个错误

Error in invoking target 'agent nmhs' of makefile '/u01/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'

解决方案:保留安装过程,另外开启一个终端窗口,将ins_emagent.mk文件中的(MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL) -lnnz11,然后在安装过程中点击Retry即可。

在vim中,键入 / 执行查找,键入 i 切换到插入状态。

大约10分钟后,安装成功。

安装成功

为了方便后续备份数据的正确导出,也就是说0行数据的表结构也要导出,需要对新安装的Oracle做如下设置。在sqlplus中执行命令alter system set deferred_segment_creation=false;即可。

Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

12 启动关闭

用oracle用户登录系统,执行命令sqlplus / as sysdba,连接到数据库。

启动命令:startup

关闭命令:shutdown

启动监听器,在linux命令行下(不是在sqlplus)执行lsnrctl start命令。

附:常用Oracle语句

恢复数据:

CREATE OR REPLACE DIRECTORY DB_BAK AS '/software/ORA_BACKUP';

CREATE TABLESPACE RISKMON LOGGING DATAFILE '/opt/oracle/oradata/orcl/RISKMON.DBF' SIZE 256M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M;

CREATE USER RISKMON IDENTIFIED BY 123456 DEFAULT TABLESPACE RISKMON;

GRANT READ, WRITE ON DIRECTORY DB_BAK TO RISKMON;
GRANT IMP_FULL_DATABASE TO RISKMON;
GRANT DBA TO RISKMON;

IMPDP RISKMON/123456@ORCL DIRECTORY=DB_BAK DUMPFILE=RISKMON_RISKMON.DMP

导入语句:

IMPDP RISKMON/123456@ORCL DIRECTORY=DB_BAK DUMPFILE=GZPOC_RISKMON.DMP REMAP_SCHEMA=GZPOC:RISKMON REMAP_TABLESPACE=RISKMON:RISKMON

导出数据:

EXPDP RISKMON/123456@ORCL DIRECTORY=DB_BAK DUMPFILE=RISKMON_RISKMON.DMP SCHEMAS=RISKMON LOGFILE=RISKMON.LOG

其他操作:

--查询所有用户
SELECT USERNAME FROM DBA_USERS;

--删除用户
DROP USER GZPOC CASCADE;
    --删除了GZPOC,并删除了该用户下的SCHEMA OBJECTS,但是不会删除相应的TABLESPACE

--删除表空间
DROP TABLESPACE GZPOC_DATA INCLUDING CONTENTS AND DATAFILES;

--修改表空间名称
ALTER TABLESPACE RISK_DATA RENAME TO RISK;

--修改数据文件名称(如磁盘空间不够了,移动数据文件到另外一个磁盘上)
ALTER TABLESPACE RISK_DATA OFFLINE;
ALTER TABLESPACE RISK_DATA RENAME DATAFILE 'C:\ORACLE\APP\ORACLE\ORADATA\XE\GZPOC.DBF' TO 'D:\ORACLE\APP\ORACLE\ORADATA\XE\AUDIT.DBF';  
ALTER TABLESPACE RISK_DATA ONLINE; 

Kevin 2017年12月4日,成都。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容