基于 CentOS 6.5 搭建 Oracle 11g 数据库
2021/5/8 19:25:48
本文主要是介绍基于 CentOS 6.5 搭建 Oracle 11g 数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 一、安装前说明
- 1.1. 系统环境说明
- 1.2. 软件版本说明
- 二、准备工作
- 2.1. 数据库目录规划
- 2.2. 系统环境调试
- 2.2.1. 关闭系统防火墙
- 2.2.2. 关闭 SELinux
- 2.2.3. 添加主机名与 IP 地址映射
- 2.2.4. 安装 Oracle 软件所需依赖包
- 2.2.5. 创建 Oracle 的用户组和用户
- 2.2.6. 创建 Oracle 的目录
- 2.2.7. 配置内核参数
- 2.2.8. 配置软硬件资源限制
- 2.3. 配置 oracle 用户环境变量
- 2.4. 上传并解压软件包
- 2.5. 启用远程图形化工具
- 三、安装过程说明
- 3.1. 安装数据库软件
- 3.2. 创建数据库
- 3.3. 创建数据库监听
- 四、几条简单的 SQL 语句说明
- 4.1. 如何登录到数据库
- 4.2. 判断数据库是否正常运行
- 4.3. 判断数据库监听是否正常运行
- 4.4. 查看数据文件、日志文件和控制文件的存储位置
- 总结
前言
犹记得刚毕业那会儿,我的第一份工作就是 IDC 运维。那个时候我的老大丢给我们新人一个任务,就是在 Linux 环境里面去搭建 Oracle 数据库。虽然在学校里也学了一些 Unix 和 Oracle 的课程,但是总的来说,对 Linux 的认知,几乎可以说是小白;而 Oracle 也是基于 Windows 环境去学习的,对于如何在 Linux 环境里面去部署 Oracle,刚入职场的我一脸懵逼。
印象比较深刻的是,看一些论坛和博客,好多 Linux 的命令都不知道是干嘛的,更不要说去使用。最尬的一点是,连 Oracle 软件都不知道在哪里下载,该下哪个版本(当时就记得有好几个包,也不知道哪个是。。。),最后还是一位网友的百度云拯救了我。
如今一路走来,回想起当初,还是觉得很好笑。我并不是一名 DBA,但是对于做运维的人来说,很多时候你没得选,让你去搭建和使用 Oracle,你就得去学习怎么搭建、怎么使用。甚至慢慢的,似乎自己都分不清自己是做运维的还是 DBA。
哈哈,长话短说,趁着工作还不是很忙的时候,把之前的一些笔记和文档稍微整理下,分享一篇如何在 Linux 环境中搭建 Oracle 的文章。如有不当之处,欢迎指正!
一、安装前说明
1.1. 系统环境说明
- 操作系统版本:CentOS release 6.5 (Final)
- 系统内核版本:2.6.32-431.el6.x86_64
1.2. 软件版本说明
对于 Oracle 11g 这个大版本的数据库而言,11.2.0.4 版本是相对来说比较稳定、且使用比较广泛的。因此,本文是以安装 Oracle 11.2.0.4 版本为例进行展开的。
安装 Oracle 11.2.0.4 版本的数据库,我们需要准备以下两个软件包。这是被分片压缩的两个文件,使用时我们会将其放在同一个目录下,并将两个压缩包解压到当前目录。
- p13390677_112040_Linux-x86-64_1of7.zip
- p13390677_112040_Linux-x86-64_2of7.zip
二、准备工作
2.1. 数据库目录规划
这里为了与系统盘(sda)区分开,我单独挂载了一块 200GB 的磁盘(sdb)作为数据盘来使用,并将其格式化为 ext4 文件系统挂载到了 “/oradata” 目录。所以,后面与 Oracle 有关的文件我都会放在这个目录下。
对象 | 路径 | 作用 |
---|---|---|
无 | /oradata/orasoft | 存放 Oracle 的软件包 |
ORACLE_BASE | /oradata/app/oracle | Oracle 的基目录,需要在 .bash_profile 环境变量中指定 |
ORACLE_HOME | /oradata/app/oracle/product/11.2.0 | Oracle 的家目录,需要在 .bash_profile 环境变量中指定 |
2.2. 系统环境调试
2.2.1. 关闭系统防火墙
[root@ora11 ~]# service iptables stop //关闭防火墙。 [root@ora11 ~]# chkconfig iptables off //禁用防火墙自启动服务。 [root@ora11 ~]# chkconfig --list |grep iptable
2.2.2. 关闭 SELinux
[root@ora11 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@ora11 ~]# cat /etc/selinux/config |grep -vE "^#|^$" SELINUX=disabled SELINUXTYPE=targeted [root@ora11 ~]# reboot //需要重启系统才能生效。
2.2.3. 添加主机名与 IP 地址映射
[root@ora11 ~]# echo "172.16.201.147 ora11" >> /etc/hosts //主机名尽量不要有特殊字符。
2.2.4. 安装 Oracle 软件所需依赖包
配置本地 yum 源,安装所需的依赖包。关于如何配置本地 yum 源,参考我的另一篇博客:基于 CentOS 7.6 配置本地 YUM 源
[root@ora11 ~]# yum -y install binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
关于有些依赖包无法使用 yum 安装:
将上面的 yum 命令再执行一次,终端屏幕上将会输出哪些包是没有安装上的。譬如,在我的环境里面,提示了 “No package compat-libstdc++ available”,即表示 compat-libstdc++
这个包没有安装上,我们需要进行单独安装。
首先,我们来检查下本地 yum 源里到底有没有提供这个包:
[root@ora11 ~]# yum search compat-libstdc++ --showduplicates //显然,本地 yum 源里面是有这个包的。 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile ============================================================================== N/S Matched: compat-libstdc++ ============================================================================== compat-libstdc++-296-2.96-144.el6.i686 : Compatibility 2.96-RH standard C++ libraries compat-libstdc++-33-3.2.3-69.el6.i686 : Compatibility standard C++ libraries compat-libstdc++-33-3.2.3-69.el6.x86_64 : Compatibility standard C++ libraries
那我们直接使用 yum 来进行安装:
[root@ora11 ~]# yum -y install compat-libstdc++
如果有些包本地 yum 源里确实没有提供,则需要我们自己去网上找到对应的包(有条件的建议使用 Google 去找,效率会比较高),然后使用 rpm 等命令进行安装。举个在 CentOS 7.6 安装 Oracle 11g 的例子。在 CentOS 7.6 系统里面,本地 yum 源就没有提供 compat-libstdc++
这个包,那就需要像下面这样进行操作:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm //前提是你的环境可以访问外网,否则还是老老实实下载、上传再安装。 rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
2.2.5. 创建 Oracle 的用户组和用户
[root@ora11 ~]# groupadd oinstall [root@ora11 ~]# groupadd dba [root@ora11 ~]# useradd -g oinstall -G dba oracle [root@ora11 ~]# id oracle uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba) [root@ora11 ~]# passwd oracle //需要为 oracle 用户设置密码。
2.2.6. 创建 Oracle 的目录
[root@ora11 ~]# mkdir /oradata/app //注意:关于 sdb 磁盘挂载到 /oradata 目录这个步骤我是没有写的,需要自己提前做。 [root@ora11 ~]# chown -R oracle:oinstall /oradata/app/ [root@ora11 ~]# chmod -R 775 /oradata/app/
2.2.7. 配置内核参数
特别声明:
实际生产环境里面,这些参数需要结合你分配的资源来进行设计,而不是一股脑的照搬下来!包括下面软硬件资源限制也是一样的。甚至,有些 DBA 为了去优化数据库的性能,还会添加一些大页的限制等等。
说这些只是为了表明一个问题,完全按照我博客里面这些参数去学习如何安装 Oracle 单实例数据库,应该是没什么问题的。但是,如果想更好的发挥出服务器的性能和数据库的性能,还需要了解这里面的参数是干嘛的,甚至还要学习一些其他的参数。
[root@ora11 ~]# vim /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 [root@ora11 ~]# sysctl -p //使内核参数立即生效。
2.2.8. 配置软硬件资源限制
[root@ora11 ~]# vim /etc/security/limits.conf //编辑资源限制文件,将下面的参数加入到文件中。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
2.3. 配置 oracle 用户环境变量
[root@ora11 ~]# vim /home/oracle/.bash_profile //编辑环境变量文件,将下面的参数加入到文件中。 export PATH unset USERNAME export ORACLE_BASE=/oradata/app/oracle export ORACLE_HOME=/oradata/app/oracle/product/11.2.0 export ORACLE_SID=orcl export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin [root@ora11 ~]# source /home/oracle/.bash_profile //使环境变量立即生效。
2.4. 上传并解压软件包
[root@ora11 ~]# mkdir /oradata/orasoft [root@ora11 ~]# ll /oradata/orasoft/ //上传 oracle 软件包。 -rw-r--r-- 1 root root 1395582860 May 8 10:44 p13390677_112040_Linux-x86-64_1of7.zip -rw-r--r-- 1 root root 1151304589 May 8 10:44 p13390677_112040_Linux-x86-64_2of7.zip [root@ora11 ~]# cd /oradata/orasoft/ [root@ora11 orasoft]# unzip /u01/orasoft/p13390677_112040_Linux-x86-64_1of7.zip [root@ora11 orasoft]# unzip /u01/orasoft/p13390677_112040_Linux-x86-64_2of7.zip [root@ora11 ~]# chown -R oracle:oinstall /oradata/orasoft/ [root@ora11 ~]# chmod -R 775 /oradata/orasoft/
2.5. 启用远程图形化工具
由于安装 Oracle 数据库是需要调出图形化界面的,而在现实环境中,我们一般很难进入到机房直接使用显示器。当然,也可以配置 VNC 去打开远程图形化界面,但是,根据我自己的使用经验,往往在安装到最后几步的时候界面会卡住。
如果是物理服务器,当然还可以通过 BMC 带外控制台去调用桌面图形化,但是如果是虚拟机环境的话,带外就没得用啦。
经过几番踩坑,我发现 Xmanager 套件里面提供的 Xstart 工具,还是非常好用的。无论是物理机还是虚拟机,都可以直接拿来使用,并且也无需配置什么 “xhost +”、“export DISPLAY” 啥的。哎,不过呢,需要单独装两个依赖包去支持下。
执行下面这条语句,检查你的环境里面是否安装了这两个包,如果已经有了,那么恭喜你可以直接使用 Xstart。
[root@ora11 ~]# rpm -qa |grep -iE "xterm|libxaw"
很遗憾,我的环境里面是没有的,所以我需要单独去安装这两个包:
[root@ora11 ~]# yum search xterm libXaw --showduplicates //本地 yum 源里面是有这两个包的,直接干就完了(多嘴一句,为了提高效率,也可以将这两个包提到前面安装数据库依赖包那里面去)。 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile =================================================================================== N/S Matched: xterm ==================================================================================== xterm-253-1.el6.x86_64 : Terminal emulator for the X Window System =================================================================================== N/S Matched: libXaw =================================================================================== libXaw-devel-1.0.11-2.el6.i686 : Development files for libXaw libXaw-devel-1.0.11-2.el6.x86_64 : Development files for libXaw libXaw-1.0.11-2.el6.i686 : X Athena Widget Set libXaw-1.0.11-2.el6.x86_64 : X Athena Widget Set [root@ora11 ~]# yum -y install xterm libXaw //直接使用 yum 安装。 [root@ora11 ~]# rpm -qa |grep -iE "xterm|libxaw" //谨慎的我在安装完包以后会习惯性检查下。 xterm-253-1.el6.x86_64 libXaw-1.0.11-2.el6.x86_64
现在我们来启用 Xstart 工具:
注意事项:
- 用户名要写成 oracle 用户,不要写成 root 用户;
- 命令写成:
/usr/bin/xterm -ls -display $DISPLAY
。
三、安装过程说明
3.1. 安装数据库软件
步骤1
:启动数据库安装程序。
步骤2
:取消复选框,点击 Next 进行下一步,弹窗告警直接点击 Yes 忽略。
步骤3
:选择 Skip software updates 跳过软件更新,点击 Next 进行下一步。
步骤4
:选择 Install database software only 仅安装数据库软件。
步骤5
:选择 Single instance database installation 安装单实例数据库,点击 Next 继续。
步骤6
:产品语言默认是英文,点击 Next 继续。
步骤7
:选择安装 Enterprise Edition 企业版,点击 Next 继续。
步骤8
:指定 Oracle Base 和 Software Location 的路径(一般来说会根据环境变量文件自动读取出来)。
步骤9
:创建 oraInventory 目录(环境变量中不需要写,安装过程中会自动创建)。
步骤10
:默认即可,点击 Next 继续。
步骤11
:安装前会有先决条件检查,一般都会提示一些告警或者错误(能解决尽量解决,不然安装会出问题)。
首先,可以点击 Fix & Check Again
解决一部分告警(这里说明下,为了操作简单,之前修改内核参数都是没有根据实际环境的资源配置进行修改的,所以这里会有很多关于内核参数的告警,当执行完 fix 以后,会自动进行调整)。
[root@ora11 ~]# sh /tmp/CVU_11.2.0.4.0_oracle/runfixup.sh //执行 fix 脚本。 Response file being used is :/tmp/CVU_11.2.0.4.0_oracle/fixup.response Enable file being used is :/tmp/CVU_11.2.0.4.0_oracle/fixup.enable Log file location: /tmp/CVU_11.2.0.4.0_oracle/orarun.log Setting Kernel Parameters... The value for shmmni in response file is not greater than value of shmmni for current session. Hence not changing it. The value for semmsl in response file is not greater than value of semmsl for current session. Hence not changing it. The value for semmns in response file is not greater than value of semmns for current session. Hence not changing it. The value for semmni in response file is not greater than value of semmni for current session. Hence not changing it. 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 fs.aio-max-nr = 1048576
此时可以发现关于内核参数的告警都清除了,还需要安装两个依赖包:
[root@ora11 ~]# yum -y install elfutils-libelf-devel //由于本地 yum 源有这个包,直接安装即可。 [root@ora11 ~]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm --nodeps --force //这个包可以从网上去下载下来,如果有提示依赖关系,加上后面的 nodeps 和 force 参数即可。
最后,再次点击 Check Again
,会发现所有的告警都解决了;点击 Install 继续。
步骤12
:安装进度条。
步骤13
:按照弹框中的要求以 root 用户去执行下面两个脚本(脚本执行完以后记得返回点击 OK
)。
[root@ora11 ~]# sh /oradata/app/oraInventory/orainstRoot.sh [root@ora11 ~]# sh /oradata/app/oracle/product/11.2.0/root.sh
步骤14
:至此,数据库软件安装成功。
3.2. 创建数据库
步骤1
:在 Xstart 窗口执行 dbca
命令调用创建 DB 的程序,点击 Next 继续。
步骤2
:选择 Create a Database 创建数据库,点击 Next 继续。
步骤3
:默认 General Purpose or Transaction Processing,点击 Next 继续。
步骤4
:根据环境变量中的 ORACLE_SID 名填写此处的全局数据库名称和 SID 字段。
步骤5
:取消 Configure Enterprise Manager 复选框,点击 Next 继续。
步骤6
:选择为所有的账户使用相同的密码,出现不符合密码复杂度的警告,可以点击 Yes 继续。
步骤7
:默认即可(在这里可以选择使用文件系统还是 ASM 方式来存储数据文件,并指定数据文件存储路径)。
步骤8
:默认闪回空间的大小是 4GB;没有备份的需求可以不启用 Archiving 归档。
步骤9
:默认,点击 Next 继续。
步骤10
:在这里我只修改了字符集,设置为简体中文(也可以调整 SGA、PGA 的大小等)。
步骤11
:点击 Next 继续。
步骤12
:点击 Finish 继续,在后面的弹框中点击 OK。
步骤13
:显示数据库创建的进度条。
步骤14
:数据库创建成功,点击弹框中的 Exit 退出。
3.3. 创建数据库监听
在 Xstart 窗口执行 netca
命令调用创建监听的程序。监听的配置比较简单,如果不需要修改默认的 1521 监听端口,几乎是一路 Next 下去,这里就不做过多的叙述了。
四、几条简单的 SQL 语句说明
4.1. 如何登录到数据库
[root@ora11 ~]# su - oracle [oracle@ora11 ~]$ sqlplus / as sysdba //登录数据库。 SQL*Plus: Release 11.2.0.4.0 Production on Sat May 8 14:23:40 2021 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
4.2. 判断数据库是否正常运行
根据 ora_pmon 进程判断当前数据库是否在运行
[root@ora11 ~]# ps -ef |grep ora_pmon oracle 35654 1 0 14:00 ? 00:00:00 ora_pmon_orcl //表示数据库当前正在运行。 root 35870 30301 0 14:18 pts/2 00:00:00 grep ora_pmon
通过 SQL 查询判断当前数据库是否在运行
SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE //当前数据库可读可写,即意味着正常运行。 SQL> select status from v$instance; STATUS ------------ OPEN //当前数据库实例是 OPEN 状态,即意味着正常运行。
4.3. 判断数据库监听是否正常运行
根据监听端口(Oralce 默认监听端口是 1521)来判断监听是否在运行
[root@ora11 ~]# netstat -anp |grep 1521 tcp 0 0 172.16.201.147:14055 172.16.201.147:1521 ESTABLISHED 35654/ora_pmon_orcl tcp 0 0 :::1521 :::* LISTEN 35822/tnslsnr tcp 0 0 ::ffff:172.16.201.147:1521 ::ffff:172.16.201.147:14055 ESTABLISHED 35822/tnslsnr tcp 0 0 ::ffff:172.16.201.147:1521 ::ffff:172.16.201.147:14325 TIME_WAIT - unix 2 [ ACC ] STREAM LISTENING 132514 35822/tnslsnr /var/tmp/.oracle/sEXTPROC1521 [root@ora11 ~]# lsof -i:1521 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME oracle 35654 oracle 12u IPv4 132677 0t0 TCP ora11:14055->ora11:ncube-lm (ESTABLISHED) tnslsnr 35822 oracle 8u IPv6 132508 0t0 TCP *:ncube-lm (LISTEN) tnslsnr 35822 oracle 13u IPv6 132678 0t0 TCP ora11:ncube-lm->ora11:14055 (ESTABLISHED)
通过查询监听状态来判断当前数据库监听是否在运行
[oracle@ora11 ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-MAY-2021 14:25:08 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora11)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 08-MAY-2021 14:13:07 Uptime 0 days 0 hr. 12 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /oradata/app/oracle/product/11.2.0/network/admin/listener.ora Listener Log File /oradata/app/oracle/diag/tnslsnr/ora11/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora11)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... //表示监听正常。 Service "orclXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
4.4. 查看数据文件、日志文件和控制文件的存储位置
通过 SQL 查询数据文件存储位置
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /oradata/app/oracle/oradata/orcl/system01.dbf /oradata/app/oracle/oradata/orcl/sysaux01.dbf /oradata/app/oracle/oradata/orcl/undotbs01.dbf /oradata/app/oracle/oradata/orcl/users01.dbf
通过 SQL 查询日志文件存储位置
SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /oradata/app/oracle/oradata/orcl/redo03.log /oradata/app/oracle/oradata/orcl/redo02.log /oradata/app/oracle/oradata/orcl/redo01.log
通过 SQL 查询控制文件存储位置
SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /oradata/app/oracle/oradata/orcl/control01.ctl /oradata/app/oracle/fast_recovery_area/orcl/control02.ctl
总结
对于完全没有接触过 Linux 和 Oracle 的人来说,去做这样一件事情,我觉得还是有一定难度的。当然,如果为了更系统的去学习 Oracle 的部署安装、调试,建议可以去 Oracle 官网找一些官方技术文档,那里面会写得很详细。
这样一篇博客写下来,其实还是挺费时费力的,但是我思来想去,还是觉得花一些精力分享出来会比较好。一方面是对自己的一个知识总结;另一方面,随着云计算和大数据的潮流,以及去 IOE 和国产化的步伐,现在接触的产品和技术会越来越多,很长一段时间可能都不会去接触 Oracle 数据库,写一写 Oracle 相关的文章,权当留个纪念啦。
这篇关于基于 CentOS 6.5 搭建 Oracle 11g 数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18Nacos安装入门教程
- 2024-11-18Nacos安装入门:轻松掌握Nacos服务注册与配置管理
- 2024-11-18Nacos配置中心入门:新手必读教程
- 2024-11-18Nacos配置中心入门教程
- 2024-11-18RocketMQ IM和业务服务沟通入门教程
- 2024-11-18Rocketmq安装入门
- 2024-11-18RocketMq原理入门:简单教程让你快速上手
- 2024-11-18ShardingJDBC分库分表配置入门详解
- 2024-11-18ShardingJdbc数据分库分表查询入门教程
- 2024-11-18如何用Ollama在CPU和GPU上部署大模型llama3(小白也能懂的教程)