Loading
1

Oracle数据库11gR2安装部署教程

本文目录
[隐藏]

前言

公司正好要装一台新的数据库,借这个机会就作一下记录,作为一个基础的数据库安装教程,我本人安装数据库时喜欢使用脚本手动建库,但是作为一个基础教程,脚本建库对于初学者来说太复杂,所以这里我选择使用DBCA建库,安装数据库的版本是11.2.0.4.0的,众所周知,Oracle数据库从11.2.0.3.0开始,补丁程序和完整安装包是一起的,即可以作为升级补丁使用,也可以直接作为完整的安装包使用,所以这个跟11.2.0.1.0在安装时没有多少区别,无非它多了一个upgrade的选项可以让你从其他低版本升级。

部署环境

操作系统:Red Hat Enterprise Linux AS release 4 (Nahant Update 4)  64bit (操作系统版本有点老,这个是台现成的服务器,不高兴重装系统了,就直接拿来用了,反正也是测试用)

Oracle数据库版本:Oracle Database Enterprise Edition 11.2.0.4.0 64bit

操作系统内存:4G

SGA分配:2G

PGA分配:1G

部署过程

创建相关系统用户和用户组

 oinstall是Oracle账户的主组,这个组是用来安装程序的,而dba和oper组是账户的附加组,dba组一般是用来管理数据库的,而oper组是操作数据库的组,这个组是可选的,在安装时如果没有检测到这个组,则默认使用dba组。这些组和账户的命名是Oracle的一个约定,也可以说是Oracle DBA的一种文化,这些命名并不是强制的,你同样可以使用其他的账户和组来安装数据库程序,但是这样做的话,换一个人来接手你的东西就有点摸不着头脑了。

创建相关安装目录

 “/u01”这个目录也是一样,属于Oracle的一个约定俗成,它通常是用来安装Oracle的相关应用程序的,而“/oradata”目录则是放数据库数据文件的,使用这样的规则来安装放置你的数据库相关程序文件,可以让其他接手的人一目了然,方便后续人员上手,当然这样放置也不是强制性的,并不是说你放到其他地方就无法安装了,这是一种约定、一种文化,既然你要干这行,就请融入这种文化,方便他人也是方便自己。

修改操作系统相关内核参数

使用vi打开/etc/sysctl.conf文件,在其尾部添加如下参数

 添加完保存退出后使用以下命令使参数生效

 你要问我这些需要修改的内核是怎么知道的,从哪得来的,答案很简单,除了vm.nr_hugepages=1040这个参数以外,其他参数都是从Oracle的联机文档“Oracle® Database Quick Installation Guide
11g Release 2 (11.2) for Linux x86-64
”中得来的,Oracle有完备的文档支持,你几乎可以在上面找到所有你想知道的关于Oracle产品的相关技术文档,所以联机文档是最好的学习资料,需要注意的是kernel.shmmax这个参数要大于你要设置的SGA的值,这个是共享内存段的最大值,这样你可以把你数据库的共享内存放在同一个内存段中,优化共享内存性能,如果放在多个内存段内会使数据库性能下降,而kernel.shmall这个参数需要比SGA/4096的值再大一点,否则在你启动数据库的时候会报内存不足。

vm.nr_hugepages这个参数是用来设置Linux操作系统的大页内存的,他的计算公式如下:

查看操作系统Hugepagesize的方法如下:

我的SGA准备分配2G,分配的Oracle的进程数为1500个 ,Hugepagesize为2048kB,所以通过计算得出的vm.nr_hugepages的值约为1038.64,设置的值要比计算出的值要大一点,所以我设置为1040。

设置这个参数是为了配合Oracle数据库把SGA内存锁在内存中,而不会在内存不足时把SGA内存交换到SWAP分区,使数据库性能急剧下降,在Redhat 6.0以后你还需要在sysctl.conf中添加参数“vm.hugetlb_shm_group =54321”,这个“54321”是dba组的组id,这使该组的用户能使用大页内存,使用了这个参数,操作系统会在启动时就把这部分内存给预分配了,这部分内存不会被交换到SWAP分区,当然Oracle数据库要使用这部分内存还要设置其他参数,这个在之后会提到,由于是预分配,所以如果这部分内存已经被其他程序占了,那你使用sysctl -p命令也是无法把这部分内存给抢过来的,所以你必须重启服务器才能确保这些大页内存被全部分配。

重启服务器:

 重启之后查看能存信息,确认大页内存是否已经全部生效

 HugePages_Total为1040跟之前设置的值一致,Free也为1040说明没有程序使用大页内存。

修改系统资源限制

使用vi编辑文件/etc/security/limits.conf 修改系统资源限制,使其符合oracle的安装要求,在文件最后添加如下内容:

 除了oracle - memlock unlimited这条,其余也都来自Oracle的联机文档,oracle - memlock unlimited是使oracle账户对内存锁没有使用限制,这个参数在redhat6.0之前可用,6.0开始这个参数被弃用了,你需要像上面介绍的一样在sysctl.conf文件中添加vm.hugetlb_shm_group参数,来设置能够使用共享大页内存的用户组。

设置oracle账户的环境变量

切换到oracle账户,使用vi编辑oracle账户家目录下的.bash_profile文件,在文件最后添加如下内容:

上传数据库安装介质(p13390677_112040_Linux-x86-64_1of7.zip和p13390677_112040_Linux-x86-64_2of7.zip)到服务器解压,11.2.0.4.0的补丁总共有7个zip包,1和2是DB,3是grid,4是client,5是gateways,6是examples,7是deinstall

检查SeLinux和iptables是否关闭

由于这台机器是现成的,所以我并不知道他是否开启了这两个东西,我在安装系统时都是直接将这两个东西关闭,这个会影响Oracle数据库的安装,所以如果没有关闭请将它关闭

检查iptables,如果开着则将其关闭

 检查SeLinux,如果开着则将其关闭

 Disabled说明seLinux是被禁用的,如果你的显示是enforcing,那么说明是开启的,这时你可以使用setenforce 0命令将其设置为permissive模式,使你的账户操作不受限制,如果你要彻底禁用selinux,你可以使用vi编辑文件/etc/selinux/config,将SELINUX参数设置为disabled,然后重启服务器后就生效了,如下所示

开启vncserver到登陆图形界面

切换到root账户,使用以下命令开启vncserver,如果你没有安装,请自行安装,或使用其他图形界面工具:

 第一次运行vncserver会提示你输入一个密码来访问桌面,这个密码至少需要6个字符

Redhat6.0之前版本的vncserver需要修改开启账户家目录下的.vnc/xstartup文件,将其中的两个参数的注释给去掉,否则登陆后没有桌面,RedHat 6.0开始默认会打开桌面不需要修改参数

 将unset SESSION_MANAGER和exec /etc/X11/xinit/xinitrc两行前面的"#"注释去掉,变成如下:

 改完后你需要将之前启动的vncserver关闭,然后重新启动vncserver使配置生效:

 -kill参数是用来杀掉已经开启的vncserver,“:1”参数是杀掉哪个端口的vncserver,开启第一个端口就为1,第二个为2,以此类推

本地计算机使用vncviewer工具远程桌面登陆服务器

ask600_11gR2_install-01

输入你之前设置的密码点击ok登陆桌面

ask600_11gR2_install-02

 登陆远程桌面成功

ask600_11gR2_install-03

打开终端,输入xhost + 解除其他账户打开图形界面限制

ask600_11gR2_install-04

 

 安装Oracle数据库软件

切换到oracle账户,进入之前解压的目录,运行./runInstaller开始安装数据库软件

ask600_11gR2_install-05

启动安装程序后会进行一些检测,比如Temp space和swap space空间的大小是否满足最低要求,显示器是否满足至少256色的最低要求等,这些安装要求也都在Oracle的联机文档中有写明。

安装程序运行后会出现图形界面的安装向导,这里可以填写你的MOS账号为了在线更新,但一般我们这里不填,把勾去掉,然后点击Next

ask600_11gR2_install-06

 

 

 由于我们没有填写MOS账号,所以会弹出一个警告提示框问我们是否确定留空,点击Yes进入下一步

ask600_11gR2_install-07

 

这里选择Skip software updates,忽略软件更新,点击Next进入下一步

ask600_11gR2_install-08

 

这里有三个选项,第一个是安装软件并创建和配置一个数据库,就是在安装数据库软件的同时将数据库一并创建,第二个是只安装数据库软件,第三个是更新一个已经存在的数据库,第三个选项是补丁才有的,11.2.0.1.0是没有这个选项的,这里我们选择第二个选项,只安装数据库软件,安装完软件后我们使用dbca来建库

ask600_11gR2_install-09

 

这里会让我们选择是安装一个单实例数据库,还是安装RAC,又或者安装一个单节点的RAC,这里我们选择单实例数据库安装

ask600_11gR2_install-10

 

这里可以选择软件的语言,一般默认英语就行了,当然你也可以把简体中文加上,注意这里的语言只是软件的语言,并不是数据库的语言和字符

ask600_11gR2_install-11

 

选择安装版本,这里我们选择Enterprise Edition,他包含了Oracle数据库的所有功能,并且没有硬件限制,标准版和标准版one会缺少一些功能和对硬件上有一定限制,比如支持的CPU数量

ask600_11gR2_install-12

点击Select Options,你可以选择你需要安装的数据库组件,默认情况下,除了Oracle Lable Security和Oracle Database Vault option这两个用来控制用户访问的安全组件,其他的组件都是默认安装的

ask600_11gR2_install-13

 

选择完安装的组件后点击Next进入下一步,这里选择你所要安装数据库软件的BASE目录和HOME目录,这里两个路径就是之前设置在oracle账户环境变量文件.bash_profile中的ORALCE_BASE和ORACLE_HOME这两个变量的值,如果你设置了,他会自动读取这两个值

ask600_11gR2_install-14

 

这里选择数据库管理组和数据库操作组,默认情况下,如果你的oracle账户属于dba组和oper组,那么这里就会自动识别dba组为管理组,oper组为操作组,如果你没有设置oper这个组,那么dba组也会是操作组

ask600_11gR2_install-15

 

安装预检,这会检测你当前的操作系统的内核参数和程序安装依赖包是否满足要求,然后会出检测报告,如果有不满足的地方,会在报告中体现出来,你需要进行修复后继续安装

ask600_11gR2_install-16

 

这里检测出我的操作系统中有两个依赖包没有安装,我需要安装这些依赖包后点击Check Again重新检测,直至全部通过后点击下一步继续安装,网上有些文章、有些人在安装时不明白这是什么意思,或者觉得少一些东西忽略了它继续安装不是一样可以安装完成,所以就懒得去装,但这是不正确的,有些预检的条件的确是可以忽略,但是这是建立在你明确知道它是干什么用的,有明确的Oracle官方指导意见,你才可以忽略安装,否则你还是必须得把所有没有通过的检测修复后继续安装,因为你完全不知道如果忽略了会产生什么灾难性的后果,如果你只是自己测着玩,出现了奇奇怪怪的问题后大不了你就是重装一下,但是如果是生产数据库,你这样干等于是给自己埋了一个定时炸弹,出了问题怎么死的都不知道

ask600_11gR2_install-17

 安装完相应的依赖包后点击Check Again,确认所有的问题被修复后点击Install

ask600_11gR2_install-18

 

开始安装数据库软件

ask600_11gR2_install-19

 

安装过程到最后会弹出一个提示框,要你以root账户执行一个脚本

ask600_11gR2_install-20

 

以root用户开启终端,执行提示所要求的脚本,由于我这台机器之前装过Oracle,所以会出现环境变量覆盖的提示,如果是第一次安装则不会出现覆盖的提示,由于这台机器上之前装的是10G的版本,环境变量不一致,所以我选择覆盖,如果是一致的可以选择NO

ask600_11gR2_install-21

 

执行完脚本后,点击脚本执行提示框上的OK,Oracle数据库软件安装成功,点击Close退出安装向导

ask600_11gR2_install-22

 

DBCA建库

同样的,在之前的Oracle账户的终端会话下,执行dbca,启动数据库配置助手

ask600_11gR2_install-23

 

启动到dbca欢迎界面,然后点Next

ask600_11gR2_install-24

 

选择Create a Database,创建数据库,点击Next

ask600_11gR2_install-25

 

这里有3种模板供选择,General Purpose or Transaction Processing--通用目的或者事务处理,这个是最长用的,他既可用于在线事务处理也可用于数据仓库,Custom Database是自定义数据库,如果你不是非常了解和精通,不要选择这个,Data Warehouse顾名思义是用作数据仓库的,所以我们选择第一个通用目的或事务处理模板,然后点击Next,当然你也可以点击Show Details查看详细的配置

ask600_11gR2_install-26

输入Global Database Name和SID,SID要与你之前在oracle账户的环境变量文件中设置的ORACLE_SID变量值一致,Global Database Name一般与SID一致,除非你的数据库需要做全局定位,类似域名一样,比如jlm.ask600.com,jlm为SID,ask600.com为域,这样可以在全球范围内定位到你的数据库

ask600_11gR2_install-27

 

这里是配置OEM的,以及使用OEM做磁盘备份到恢复区域的,OEM其实使用的很少,由于是免费自带的,所以有不少BUG,还影响数据库性能,你也许觉得OEM图形界面点点就能达到你的目的,使用方便,但是作为一个DBA你首先应该抛弃图形界面,除非是grid control/cloud control,所以我们这里不做配置,把选项去掉

ask600_11gR2_install-28

 

点击Automatic Maintenance Tasks标签,这里是选择是否启用自动维护任务,这是11gR2的新特性,他会创建一个默认的维护窗口执行一些预设的默认的维护任务,但这个东西其实是有BUG的,如果你有一些定时任务,比如定时采集统计信息等,你可以自己创建维护窗口和定时任务,最好不要使用这个默认的东西,当然如果你硬要留着我也没辙,这里我选择不启用,把勾去掉,然后点击Next

ask600_11gR2_install-29

这是设置sys和system账户的密码,你可以选择两个账户使用不同的密码,也可以设置相同的密码,这里我选择设置相同的密码

ask600_11gR2_install-30

 

点击Next后会提示我设置的密码不符合Oracle建议的密码策略,问我是否继续,它的策略是至少8位字符,其中必须包含一个大写字符、一个小写字符和一个数字,尽管我不满足它建议的密码策略,但是我依然可以使用这一密码点击YES继续下一步

ask600_11gR2_install-31

 

选择使用何种存储方式和存放路径,11gR2开始Oracle在DBCA中已经不支持裸设备这个存储选项了,所以这里只有文件系统和ASM这两种存储方式,但是如果你是手动建库的话,裸设备还是依然支持的,这里我们选择文件系统,并且数据文件存放在/oradata这个文件夹中,他会在这个文件夹中创建一个以你数据库SID命名的文件夹,所有的文件(数据文件、日志文件、临时文件、控制文件等)会存放在这个文件夹中,第一个选项是使用模板的默认设置,第三个选项是使用OMF管理你的数据文件,点击Next

ask600_11gR2_install-32

这里让我们配置是否开启快速恢复区域,也就是闪回区,默认是勾着的,这里我们选择不开,把勾去掉,这里还可以配置归档,同样的我们不在这里开

ask600_11gR2_install-33

 

这里可以选择是否创建示例账户,比如scott、hr、oe等等,我这里不创建,你如果需要学习可以把勾勾上,旁边的Custom Scripts标签是让你可以添加一些自己的脚本在创建完数据库后执行,这个一般不用

ask600_11gR2_install-34

 

这里是设置内存的,默认情况下它会选择Typical,以物理内存40%的量来设置SGA+PGA的总内存,这是使用AMM自动内存管理,这个是11G的新特性,它可以使SGA与PGA的内存共享,当PGA内存不够用时会从SGA内存中划一部分内存给PGA使用,而SGA不够用时可以从PGA多余的内存中划拨使用,从而实现SGA和PGA内存的统一管理,这个内存管理方式涉及到一个参数memory_target,当这个参数大于0时,则启用AMM内存管理方式,但这种内存管理方式是无法使用linux的大页内存的,所以一般我们不用这种管理方式,还是使用10G的ASMM自动共享内存管理,所以这里我们选择Custom自定义,设置SGA内存为2G,PGA内存为1G,选择ASMM

ask600_11gR2_install-35

 

点击Size标签设置数据库的Processes的值,这个值影响到sessions的值,默认情况下sessions的值为(1.5*processes)+22,这里我设置1500,Block Size为默认的8192k,这个值在这里是无法修改的

ask600_11gR2_install-36

点击Character Sets设置数据库的字符集,这里我们选择AL32UTF8,你也可以从下面的列表中选择你需要的字符集,这个字符集最好考虑清楚,选择好后就不要修改,否则可能会产生不必要的乱码问题,其余的选项一般不需要更改

ask600_11gR2_install-37

 

点击Connection Mode设置数据库连接模式,默认的为Dedicated独占模式,这种模式将为每一个会话创建一个独占的进程,Shared模式类似windows中的线程,一个进程可以处理多个会话被多个会话共享使用,这种模式一般是用来应对具有大量连接的场景,一般情况下我们都是使用独占模式,你还可以点击下面的All Initialization Parameters来查看和设置数据库绝大多数的参数,但是一般我们不这样做,都是在建完库后使用命令修改我们需要的参数,设置完后就点击Next

ask600_11gR2_install-38

 

这里是设置控制文件、数据文件、日志文件的具体的存放路径和命名,以及一些控制文件参数的设定,默认的控制文件为2个,日志为3组,每组就一个成员,大小为50M,你可以在这里重新设置他们的大小和组数以及成员个数,当然你也可以在创建完数据库后再重建这些日志组,这里我多加了一个控制文件使控制文件为3个,日志每组再添加了一个成员,使每组日志为2个成员,并且日志大小为512M而不是50M,默认的日志的后缀为.log,为了防止其他人误以为是一般的日志而删除,我将日志的后缀改成rdo,这些设置你都可以按照你自己的需求进行个别处理,设置完成后点击Next

ask600_11gR2_install-39

 

这里选择Create Database,当然你也可以在创建数据库的同时以这种配置创建一个自定义的模板,你还可以将创建数据库的动作生成一个创建数据库的脚本,这个脚本可以用来手动建库,你可以学习它是怎么建库的,当然你可以选择不创建数据库,只创建模板或脚本,这里设置完成后,你就可以点Finish,开始安装数据库了

ask600_11gR2_install-40

 

点击Finish后会弹出一个创建数据库的汇总信息需要你确认,这里会显示你之前做的一些设置,确认后点Ok开始安装

ask600_11gR2_install-41

 

开始安装数据库

ask600_11gR2_install-42

 

安装完成后会弹出一个框提示数据库创建完成,点击Exit退出即可

ask600_11gR2_install-43

 

Netca配置监听器

同样的在原先dbca的终端会话中输入netca启动网络配置助手配置监听器,选择第一个Listener configuration配置监听器,然后点击Next

ask600_11gR2_install-44

 

选择Add,然后点击Next

ask600_11gR2_install-45

 

输入你要使用的监听器的名称,默认为LISTENER,如果有重名,你需要换一个监听名称,然后点击Next

ask600_11gR2_install-46

 

选择使用的网络协议,默认为TCP,你还可以用IPC,设置完后点击Next

ask600_11gR2_install-47

 

选择监听器使用的端口,默认为1521,你也可以选择其他的端口,设置完后点击Next

ask600_11gR2_install-48

 

询问你是否还要配置另一个监听器,我们只用这一个,所以选择No,然后点击Next

ask600_11gR2_install-49

 

提示监听器配置完成,点击Next回到向导选择界面,然后关闭即可

ask600_11gR2_install-50

 

lsnrctl status检测监听状态,lsnrctl stop关闭监听,lsnrctl start启动监听

 监听启动成功,并且实例已被注册到监听

开启归档日志

到上面为止其实数据库已经安装完成并可以访问使用,如果你需要开启归档,那么你需要进行以下配置。

创建归档日志存放目录,这个目录必须已经存在,设置归档路径参数不会创建相应目录

设置归档路径,有两种参数可用,一种是log_archive_dest,这个只能设置一个路径,并且当你设置了闪回区域路径db_recovery_file_dest参数时,这个参数会被覆盖,归档会使用闪回区域路径,另一种是log_archive_dest_n,这个参数可以使归档有多个路径存放,并且不会被闪回区域路径参数覆盖,我们设置log_archive_dest_n这个参数

 重新启动数据库到mount状态,开启数据库归档日志模式

 数据库归档设置完成并开启了归档模式,你可以通过切换日志来验证日志是否有归档产生

 注意:由于开启了归档日志模式,你的数据库会不停的产生归档,你需要考虑归档删除策略,以免把磁盘给撑爆导致数据无法写入,会使你的数据库无法连接,一般情况下归档都是在数据库备份后将已备份的归档一并删除,备份脚本你可以参考Oracle备份shell

开启数据库闪回功能

数据库的闪回功能是从10g开始的,你可以设置闪回日志的保留时间和限制闪回日志所使用的磁盘大小,这个功能可以使你将数据库快速的恢复到一个短期的过去的时间点的状态,挽回误操作的损失,虽然这个功能很棒,但是这个却不适合在生产库中使用,因为它需要写日志,这会让本身就I/O紧张的数据库更加的I/O吃紧,并且一般情况下生产数据库本身就应该控制严格,除了上线,其他都应该是正常的应用、业务带来的正常的操作,误操作的可能性很小,所以这个功能对于生产库来说所带来的好处可能要远远大于坏处。这个功能一般都是用在测试库或者开发库中,因为这些库的操作杂乱,权限都下放给开发或测试人员,操作失误或者测试完需要回退的可能性很高,在这种情况下闪回还是很有用的,避免了你重搞一遍的麻烦。

创建闪回日志存放的目录,这个目录跟归档日志路径一样不会因设置参数而自动创建

配置闪回日志的存放路径、闪回区域所能使用的磁盘大小,以及闪回日志的保留策略,这个策略默认值为1440,单位为分钟,也就是默认保留1天

 同样的,他需要在Mount状态下开启数据库闪回功能

 闪回功能开启完毕,同样的你需要注意的是,开启了数据库闪回会产生闪回日志,虽然他有保留策略,但是你得保证你所设置的闪回区域所能使用的大小要满足在这些时间内产生的日志的存放,不然空间用完,你的数据库将因为无法写入闪回日志而无法登陆。

到这里你的数据库就部署安装完毕了,当然你可以根据你的需要去调整一些数据库的参数来优化数据库的运行,不过默认的一些参数配置已基本能满足绝大多数的需求,你如果不确定,建议你不要修改。

 

 

 

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!