环境准备阶段
CentOS的版本:CentOS 7.9 2009
Oracle的版本:11.2.0.3.0
SSH工具:MobaXterm(最新版本即可)
配置初始化参数
1、下载Oracle安装包
如果本地有11g的安装包,则直接上传到/usr/local/src目录下,本地没有11g的包的话,找朋友或者其他人(找我也行)要一下,然后上传到/usr/local/src目录中。
2、创建Oracle用户及组
使用root用户登录到ssh远程窗口
[root@localhost ~]# su root
创建oinstall用户组
[root@localhost ~]# groupadd oinstall
创建dba用户组
[root@localhost ~]# groupadd dba
创建oracle用户并将用户加入到oinstall组和dba组中
[root@localhost ~]# useradd -g oinstall -g dba -m oracle
配置oracle用户的登录密码
[root@localhost ~]# passwd oracle
查看oracle用户的组权限
[root@localhost ~]# id oracle
3、创建Oracle存储目录
创建Oracle的安装目录以及数据存储目录。生产环境中,需要找一个磁盘空间比较大的目录。
创建安装oracle数据库的目录
[root@localhost ~]# mkdir -p /home/oracle
创建oracle产品清单目录
[root@localhost ~]# mkdir -p /home/oraInventory
oracle会将数据库的版本、注册等信息写入到此文件中。
创建oracle安装包的目录
[root@localhost ~]# mkdir -p /home/database
将这些目录及子目录授权给刚刚创建的oracle用户
[root@localhost home]# chown -R oracle:oinstall /home/oracle
[root@localhost home]# chown -R oracle:oinstall /home/oraInventory
[root@localhost home]# chown -R oracle:oinstall /home/database
4、修改OS系统标识
oracle默认是不支持CentOS系统的,我们需要将配置文件中的系统系统改为redhat才能够正常安装(因为CentOS就是redhat的下游发行版,现在上游发行版了)。
编辑redhat-7文件
[root@localhost home]# vim /etc/redhat-release
redhat-7
5、安装依赖包
在外网环境(能够访问百度直接下载资源)中可以直接访问配置源中指定的链接下载,但是在内网环境(无法访问百度直接下载资源)中需要YUM源或者手动上传依赖包安装。 如果需要配置本地YUM源,可以参考:配置本地YUM源
安装oracle需要的依赖包
[root@localhost home]# yum install binutils* compat* gcc* glibc* ksh* libaio* libgcc* libstdc* libXi* libXtst* make* sysstat* elfutils*
6、开放firewalld端口和禁用selinux
如果你的环境能够关闭防火墙也可以直接关闭防火墙,我这里开放1521的端口。
检查firewalld防火墙的状态
[root@localhost home]# systemctl status firewalld.service
默认情况下是有启动的(active (running)),如果状态不是active (running),则firewalld防火墙异常。
永久开放firewalld的1521端口
[root@localhost home]# firewall-cmd --permanent --zone=public --add-port=1521/tcp
oracle的默认端口是1521,如果数据库的端口不是1521,则开放相应的端口。
重启firewalld
[root@localhost home]# systemctl restart firewalld
禁用selinux
[root@localhost home]# setenforce 0
此命令会立即禁用selinux,但服务器重启后还是会启用selinux。
禁止selinux开机启动
[root@localhost home]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
将此处SELINUX=enforcing改为SELINUX=disabled,表示禁用selinux策略。
7、配置内核参数
配置内核参数文件
[root@localhost home]# vim /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
配置介绍:
- fs.file-max 最大打开文件数
- kernel.shmall 共享内存的总量,8G内存设置:2097152*4k/1024/1024
- kernel.shmmax 最大共享内存的段大小,一般设置为服务器的80%内存总大小
- net.ipv4.ip_local_port_range 可使用的ipv4端口范围
其他参数有时间再去研究,这里暂时先写这几个重要的。如果你的服务器只运行单个实例(数据库),我这里给出一个大概的建议值参考:
- 内存为12G
- kernel.shmall = 3145728
- kernel.shmmax = 12884901887
- 内存为16G
- kernel.shmall = 4194304
- kernel.shmmax = 17179869183
- 内存为32G
- kernel.shmall = 8388608
- kernel.shmmax = 34359738367
- 内存为64G
- kernel.shmall = 16777216
- kernel.shmmax = 68719476735
重加载参数文件
[root@localhost home]# sysctl -p
配置完参数别忘记重新加载一次文件,不然配置还是上一次的参数。
8、限制用户使用资源
编辑limits.conf文件
[root@localhost home]# vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
配置介绍:
- oracle soft nproc 单个用户可用进程数软限制
- oracle hard nproc 单个用户可用进程数硬限制
- oracle soft nofile 打开文件描述符软限制
- oracle hard nofile 打开文件描述符硬限制
9、配置用户环境变量
配置用户环境变量
[root@localhost home]# vim /home/oracle/.bash_profile
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/app/oracle/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
配置介绍:
- ORACLE_BASE 数据库基目录
- ORACLE_HOME 数据库安装目录
- ORACLE_SID 数据库SID
- ORACLE_TERM 窗口模式安装
- PATH 系统环境变量
- LD_LIBRARY_PATH 链接库环境变量
- LANG 避免乱码
- NLS_LANG 设置客户端的字符集
重加载环境变量
[root@localhost home]# source /home/oracle/.bash_profile
配置完参数别忘记重新加载,不然配置的环境变量不会生效。
10、解压包并授权
进入临时zip包目录
[root@localhost home]# cd /usr/local/src
解压zip包到安装包目录
[root@localhost src]# unzip Linux-x86-64_1of7 -d /home/database
[root@localhost src]# unzip Linux-x86-64_2of7 -d /home/database
再次授权安装包目录及子目录
[root@localhost src]# chown -R oracle:oinstall /home/database/database
安装Oracle软件
1、调用图形界面
使用Mobaxterm工具安装,使用它的好处是能够直接去调用图形节目,不需要再配置VNC等。 这里需要注意必须使用oracle用户连接,而不是用root切换。
进入安装包目录
[oracle@localhost ~]$ cd /home/database/database
开始安装
[oracle@localhost database]$ ./runInstaller
2、是否接收安全更新
如果你有My Oracle Support账号,则可以输入你的账号和密码,勾选上此选项,以便接收到最新的产品信息和安全更新信息;反之,则取消勾选,继续下一步即可。
3、是否下载此安装的软件更新
此步骤是询问你是否下载此安装包的软件更新,软件更新包括有对安装程序的系统检查的推荐更新、补丁更新(PSUs)和其他更新。它有三个选项:
- 使用My Oracle Support账号去下载更新(Use My Oracle Support credentials for download),此方式更新的前提是你的服务器必须能够访问到外网。
- 使用预先下载好的软件包更新(Use pre-downloaded software updates),此方式只需要指定你的更新包位置即可。
- 跳过软件更新(Skip software updates)
4、选择安装方式
你想要怎么安装,有三个选项给你选择:
- 安装数据库软件的同时创建好实例(Create and configure a database)
- 只安装数据库软件(Install database software only),安装数据库建议使用此选项,待数据库软件安装后,再创建实例。
- 更新当前的数据库(Upgrade an existing database)
5、选择数据库类型
你想要安装什么类型的数据库软件,有三个选项给你选择:
- 单实例数据库软件安装(Single instance database installation)
- RAC集群数据库软件安装(Oracle Real Application Clusters database installation)
- 单节点RAC集群数据库软件安装(Oracle RAC One Node database installation)
说实话,这一步我能给你的建议就是选择单实例安装,其他两个选项按此文档无法安装。
6、选择产品的语言
这里选择的语言并不代表数据库存储的语言,例如你没勾选简体中午,跟你数据库中能不能存储中文字符没有一点关系。建议只选择Englist即可。
7、选择数据库的版本
你想要安装数据库的版本,有三个选项选择:
- 企业版(Enterprise Edition),必须选这个,其他的版本比这个版本的功能少。
- 标准版(Standard Edition)
- 标准版1(Standard Edition)
8、指定数据库软件的目录
这里需要我们指定两个目录,分别是:
- Oracle基目录(Oracle Base),基目录中包括数据库软件、数据库运行日志、快速闪回区等
- Oracle软件目录(Software Location),软件目录,顾名思义,就是存储Oracle软件的目录,包括有监听配置文件、口令文件等。
通常情况下会自动显示我们配置的目录。如果这两个目录显示都是空的,则可能是由于/home/oracle/.bash_profile文件没有生效或配置错误。建议指定的目录与/home/oracle不同,因为/home/oracle属于用户根(家)目录。
9、指定产品清单目录
在此刻需要指定产品清单目录,以及产品清单目录的组。产品清单目录,主要是记录安装的数据库软件版本信息。如果你因为某些原因需要重新安装数据库软件,卸载时没有清理此目录的文件,那么在重新安装时很可能会无法安装。
10、选择组授权
在使用操作系统鉴定权限的方式创建数据库,需要有SYSDBA权限和SYSOPER权限,并且SYSOPER权限是SYSDBA权限的子集。因此,让你选择组名,有两个组可以选择:
- 数据库管理组(Database Administrator(OSDBA) Group)
- 数据库操作组(Database Operator(OSOPER) Group (Optional))
选择好组后,在OSDBA组的用户会授予SYSDBA权限,而在OSOPER组中的成员会授予SYSOPER权限。注意,安装数据库的用户必须是OSDBA组中的成员。
11、确认信息
在确认好系统的组后,就会进入到安装的最后一步,列出前面选择或配置的信息,让你再次确定。这些信息有磁盘空间、安装包目录、数据库版本、数据库基目录、数据库软件目录等,确定好没问题,就可以执行安装了。
12、执行配置脚本
在快安装完成的时候,会弹出一个框让你用root用户执行这些脚本。这些脚本是配置一些文件和权限,例如/etc/oratab这种,要在/etc/目录下创建文件,则必须使用root用户才能运行。
[root@localhost src]# /home/oraInventory/orainstRoot.sh
[root@localhost src]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
使用root命令执行完后,弹出框点完成(OK)即可。
13、安装完成数据库软件
经过一段时间的等待后,提示安装成功,就可以关闭(Close)界面了。
至此,数据库软件安装完毕。
安装监听
在安装完数据库软件后,我们就可以安装监听器了。监听器(Listencr)的作用主要是起到一个数据库服务和客户端交互的管理者。例如客户端发送一条请求,会先发送到监听器,由监听器确定连接串是否符合规则(监听可以配置大量的规则),符合就链接到数据库,不符合就拒绝连接。
1、启动网络配置助手
网络配置助手(Net Configuraion Assistant)是Oracle提供的一个用来管理网络服务的图形界面工具。我们可以使用它配置数据库的网络服务,诸如新增监听器、命名方法管理等。
[oracle@localhost database]$ netca
2、选择要执行的操作
网络配置助手(Net Configuraion Assistant)启动后,会问你想要执行什么操作,这些操作有:
- 监听器配置(Listener configuration)
- 命名方法配置(Naming Methods configuration)
- 本地网络服务名称配置(Local Net Service Name configuration)
- 目录使用配置(Directory Usage Configuraion)
这里,我们肯定会选择监听器配置。
2、新增监听器
到了监听器配置页面,会有四个选项:
- 增加(Add)
- 重新配置(Reconfigure)
- 删除(Delete)
- 重命名(Rename)
由于我们是刚安装好的数据库软件,肯定没有任何监听器的,所以直接选择新增监听器。
3、监听器命名
既然是新增监听器,肯定先给它起个名字。名称可以根据你的喜好随意设置,我这里直接就默认名称(LISTENER)了。
4、选择协议
这一步是选择监听器使用的协议,有TCPS、TCP和IPC三种,默认选项就可以。
5、选择端口号
选好协议后,开始配置监听器使用的端口号,有两种选项
- 使用标准端口号1521(Use the standard port number of 1521)
- 使用其它端口号(Use another port number)
如果没有特殊需求,选择默认端口1521即可。
6、确认是否还需要配置其他
配置好端口号后,会提示你是否还有其他配置,这里我们直接选择No即可。
7、监听器配置完成
到这里,监听器就配置完成了,直接下一步即可。
至此,监听器配置完毕,已经能够监听到数据库服务了。
8、退出网络配置助手
配置好监听器后,我们退出网络配置助手界面。
创建数据库
监听器配置好后,就可以开始安装数据库了,这里应该叫实例才对。
1、启动数据库配置助手
Oracle同样为安装数据库提供了一个界面化的工具,它就是数据库配置助手(Database Configuration Assistant)。有了它以后,我们在有提供图形界面服务的操作系统上安装实例只需要使用鼠标点点点就可以了。
[oracle@localhost database]$ dbca
2、选择执行的操作
数据库配置助手提供了四个选项给我们:
- 创建数据库(Create a Database)
- 配置数据库选项(Configure Database Options)
- 删除数据库(Delete a Database)
- 管理模板(Manage Templates)
这里我们肯定选择创建数据库的选项。
3、选择数据库类型
在这里需要确定你要创建的数据库类型,有三个选项:
- 一般事务型数据库(General Purpose or Transaction Processing),此类型的数据库用于在线事务处理(OLTP)系统,这类系统通常是事务小,但并发很高。
- 自定义数据库,顾名思义,自己定义数据库,可配置性比其他两种高,例如我们可以自己定义数据块的大小,其他两种都是默认的块,不能更改。
- 数据仓库型数据库(Data Warehouse),此类型的数据库用于在线分析处理(OLAP)系统,这类系统通常是事务大,每次执行一个事务都会造成大批的数据修改,耗时非常长,但执行的事务少,基本不会或很少存在并发的情况。
根据自己的实际需要选择,如果你不确定自己的系统是哪种类型,就选择一般事务型即可。
4、配置数据库标识符
在这里需要我们配置此数据库的标识符,需要配置两个:
- 全局数据库名(Global Database Name),此参数主要是用于RAC数据库中,通常设置为name.domain,就是数据库名加域名,非RAC环境与SID一致即可。
- SID(SID),实例名,主要作用是在当前系统上标识数据库的唯一名称
根据实际需要设置,我这里就直接设置“orcl”。
5、设置管理选项
Enterprise Manager是Oracle安装数据库时可选的一个服务,它提供了一个web界面,能够让我们看到数据库的CPU、表空间使用情况等信息,但耗费资源较大,不建议启用它。在生产环境中,要么使用其他软件管理,要么使用Oracle的Enterprise Manager Cloud Control管理。
Oracle 11G提供了自动管理维护任务的能力,例如优化器统计信息的收集和主动的顾问报告。这些任务都是在预定义的维护窗口中执行,并且维护窗口运行时会控制CPU的消耗,以避免影响到业务使用。这个维护窗口默认的运行时间是在工作日的晚上10点到凌晨2点,所有工作日都会有运行日志。
建议勾选此按钮,如果你不勾选,则必须在创建完数据库后手动配置维护窗口,否则数据库性能会受到影响。
6、设置管理员密码
这里需要你配置管理员的密码,有两个选项:
- 使用不同的密码(Use Different Administrative Passwords),选择此选项后,需要配置SYS和SYSTEM的密码
- 使用相同的密码(Use the Same Administrative Password for All Accounts),选择此选项后,会对SYS和SYSTEM用户都使用此密码。
7、配置数据库文件位置
此步骤需要指定数据文件的存储类型和位置,存储类型有:
- 文件系统(File System),此选项为默认。
- ASM,此选项需要服务器安装Oracle ASM。
存储位置有:
- 使用模板中定义的数据文件位置(Use Database File Locations from Template),选择此选项会将数据文件存储在ORACLE_SID/
- 使用公共位置存储所有数据文件(Use Common Location for All Database Files),选择此选项后,需要指定数据库文件存储位置。注意,此位置的权限oracle用户必拥有才行。
- 使用OMF管理数据文件(Use Oracle-Managed Files),选择此选项后,会将数据文件默认指定到$ORACLE_BASE/oradata下,Oracle会自动生成数据库文件名称。
除此之外,还可以设置多路重用Redo Logs和控制文件(Control Files),配置好目录后,Oracle会多写一份Redo Logs和控制文件到此目录中,增大容错能力。
无特殊需要,将存储类型设置为File System,将存储位置设置为默认即可。
8、恢复配置
这里需要指定快速闪回区的位置,快速闪回区是所有基于磁盘的自动备份的位置。例如RMAN、Enterprise Manager基于磁盘的自动备份。
为了数据保护和性能,Oracle建议将数据库文件和快速闪回区放在不同的磁盘上。
除此之外,此页面还有启用归档的选项,但不建议在这里直接启用,需要时使用命令启用并配置即可。
9、配置数据库内容
Oracle内置有一部分测试数据,此选项决定在安装时是否插入这些测试数据。这些测试数据存储在EXAMPLE表空间,大约130MB。
测试环境随意,生产环境不勾选此选项。
此页面提供两个选项,以确定是否在安装完数据库后执行SQL脚本:
- 不运行脚本(No scripts to run)
- 运行以下脚本(Run the following scripts)
根据实际需要勾选,没有SQL脚本就选项不允许脚本。
10、配置初始化参数
配置内存
在此需要我们配置Oracle数据库能够使用的内存大小,有两个选项:
- 典型(Typical),选择典型的话,只需要配置一个总大小,Oracle会自动分配SGA和PGA的大小。
- 自定义(Custom):使用自定义选项,则会有两个子选项:
- 自动共享内存管理(Automatic Shared Memory Management):使用自动共享内存管理,只需要配置SGA大小和PGA大小即可。
- 手动共享内存管理(Manual Shared Memory Management):使手动共享内存管理,则必须要配置各个组件的大小,组件有:共享池(Shared Pool)、缓冲区缓存(Buffer Cache)、Java池(Java Pool)、大池(Large Pool)、PGA大小(PGA Size)。
建议使用自定义中的自动共享内存管理方式,使用此方式的好处是方便,也不会影响大页的使用,而手动共享内存管理是Oracle早期版本会使用的一种方式。
配置数据库块和连接数
数据库块是Oracle中的最小的I/O单位,一旦数据库创建后就不能再改变,所以创建数据库时必须谨慎考虑。
除数据库块外,我们还需要设置Processes参数,它决定同时连接到数据库的最大操作系统用户进程数,这些进程数也包括Oracle后台进程。
数据库块一般情况下8192 Byte已经满足多数的系统,除大型数据库块,其他数据库不建议调整此大小。另外,如果要调整它,必须在最初选自定义建库;默认情况下的进程数肯定太小了,建议改到500以上,最好根据业务需要做出调整。
配置数据库的字符集
此界面配置数据库的字符集,有三个选项可选:
- 使用默认字符集(Use the default):此字符集是根据你的操作系统的语言设置的。
- 使用Unicode(AL32UTF8):使用通用UTF8字符集。
- 从列表中选择字符集(Choose from the list of character sets):默认情况下会勾选只列出推荐的字符集,如果没有你想要的,则将下面的选项给取消勾选。
建议字符集根据实际需要选择AL32UTF8和ZHS16GBK两种。如果你确定你的数据库中不会存储像维语、韩语等这种文字,则可以使用ZHS16GBK字符集,否则,请使用AL32UTF8。
除此之外,还有三个选项要选择:
- 国家字符集(National Character Set):此字符集只限制NVARCHAR2类型的字段,换句话说,上面设置的字符集不会影响到NVARCHAR2字段。
- 默认语言(Default Language):默认即可
- 默认领土(Default Territory):默认即可
非必要,这三个选项默认即可。
配置服务器运行的模式
Oracle中,数据库有两种运行模式,分别是:
- 专用服务器模式(Dedicated Server Mode):对于每个客户端连接,数据库都会分配一个资源,专门为该客户端服务。
- 共享服务器模式(Shared Server Mode):数据库分配一个资源池,几个客户连接会共享这些资源池。使用共享服务器模式时,还需要指定启动实例时要创建的服务器进程数。
建议先预估连接此数据库的客户端情况,如果客户端的连接数量很少,每次连接的时间长,则使用专用服务器模式;如果客户端的连接数量很多,使用共享服务器模式,能够高效的利用系统资源。
11、数据库存储配置
在此页面可以修改数据库的存储位置和大小,例如控制文件、表空间、数据文件等。
没有特殊需求可以直接下一步,最好检查一下;另外,如果之前使用的是OMF管理数据文件,则数据文件就没法再修改。
12、创建选项
有三个多选框可选:
- 创建数据库(Create Database):创建数据库
- 保存成模板(Save as a Database Template):将前面配置的数据库参数保存成模板,下次创建数据库时可以使用模板建库。
- 生成数据库创建脚本(Generate Database Creation Scripts):将创建数据库的步骤生成到脚本中,可以学习手动建库。
没特殊需求直接直接完成即可。
13、确认信息
做安装前的最后确认,我们可以再次查看安装的数据库的信息。例如全局数据库名、SID、存储类型、内存管理类型等。
14、完成安装
安装完成后,会告诉你除SYS和SYSTEM用户外,其他用户都是锁定的状态,我们可以通过密码管理(Password Management)来设置其他用户的密码和解锁用户。
建议直接退出,后面用到其他用户时,使用sql命令解锁即可。
至此,Oracle 11G数据库已经彻底安装完毕了。接下来我们简单配置一下Oracle的随开机启动,这样就不用每次重启后还要手动启动数据库。
配置自启动
1、修改oratab配置文件
将配置文件中的N改为Y,如果有多个实例,需要修改多个。
配置oratab文件
[root@localhost ~]# vim /etc/oratab
orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y
将值改为Y,就能够随服务器开机启动。
2、配置rc.local文件
配置可执行文件
[root@localhost ~]# vim /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
su oracle -lc "/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
3、授权此文件
这一步骤如果不做的话,肯定是无法开机启动的。
授权rc.local可执行权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
安装过程中的错误
1、报错agent nmhs
配置ins_emagent.mk文件
[root@localhost ~]# vim /home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
# emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
注意,这里是数字11,不是字母ll。