千家信息网

基于Cent os7安装部署oracle 12c数据库

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,oracle数据库是一个相对庞大的应用软件,对服务器的系统类型,内存和交换分区、硬盘空间、内核参数、软件环境、用户环境等都有相应的要求。只有满足了必备的条件,才能确保oracle 12c安装成功,运行
千家信息网最后更新 2024年09月22日基于Cent os7安装部署oracle 12c数据库

oracle数据库是一个相对庞大的应用软件,对服务器的系统类型,内存和交换分区、硬盘空间、内核参数、软件环境、用户环境等都有相应的要求。只有满足了必备的条件,才能确保oracle 12c安装成功,运行稳定。

部署oracle 12c对系统的要求:

  • 防火墙需要放行相关流量,oracle默认端口号是5500;
  • SELinux必须关闭;
  • 内核选择3.10及以上版本;
  • 物理内存;必须高于1G,交换空间,当物理内存为1~2G 时,交换分区为物理内存的1.5\~2倍,当物理内存为2\~16G时,交换分区与物理内存大小一样就可以,当物理内存超过16G时,交换分区使用16GB就行了。
  • 至少需要20GB的磁盘空间,如果不单独给oracle创建分区,那么至少要保证根分区有15GB的可用磁盘空间

一、安装oracle 12c前准备

以上基本是硬件的要求,接下来开始为了可以部署oracle,还需要修改软件方面的参数。

先下载oracle的安装程序吧,我这里提供了一个oracle 12c的安装文件百度网盘链接,是oracle 12c的版本,也可以去oracle中文官方网站,它支持oracle安装文件的免费下载(需要注册账号,最新的版本是oracle 19c),找到所需的版本下载使用即可,我这里就安装12c了。

安装oracle数据库前,要求规划好主机名和IP。服务器的主机名、IP地址也应提前确定无误,一旦oracle数据库安装完成,建议不要再修改主机名,否则会导致数据库启动失败。一般需要执行以下操作:

[root@localhost ~]# hostnamectl set-hostname oracle       #修改主机名,并写入配置文件[root@localhost ~]# bash          #使主机名生效[root@oracle ~]# echo "192.168.1.1 oracle" >> /etc/hosts    #将本机主机名及IP对应写入/etc/hosts文件,以便解析#也可以通过DNS来解析,这里为了省事[root@oracle ~]# tail -1 /etc/hosts     #确认已添加192.168.1.1 oracle

oracle 12c的安装过程是在图形界面中进行,因此建议使用带有GNOME中文桌面环境的centos服务器,软件开发工具当然也是必不可少的,可以使用yum安装系统盘中的必要的软件环境,具体如下:

[root@oracle ~]# mount /dev/cdrom /media         #挂载系统盘#以下是配置本地yum源[root@oracle yum.repos.d]# cd /etc/yum.repos.d/[root@oracle yum.repos.d]# mkdir /yum.repo.bak[root@oracle yum.repos.d]# mv * /yum.repo.bak/[root@oracle yum.repos.d]# vim system.repo           #写入以下内容[oracle]baseurl=file:///mediagpgcheck=0[root@oracle yum.repos.d]# yum clean all            #清除yum缓存[root@oracle yum.repos.d]# cd#以下是安装一些开发工具[root@oracle ~]# yum  -y  install  binutils compat-libcap1 compat-libstdc++-33  gcc gcc-c++  glibc  glibc-devel ksh  libaio  libaio-devel       libgcc  libstdc++  libstdc++-devel libXi  libXtst  make  sysstat       unixODBC  unixODBC-devel[root@oracle ~]# vim /etc/sysctl.conf  #调整内核参数,主要是内存调度、端口范围、打开文件数、I/O请求等相关设置                ..........................#省略部分内容#在文件末尾写入以下参数fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 4294967295kernel.shmmni = 4096kernel.sem = 250  32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default  =  262144net.core.rmem_max = 4194304net.core.wmem_default  = 262144net.core.wmem_max = 1048576[root@oracle ~]# sysctl -p          #重新加载配置文件,确保输出的信息没有报错fs.aio-max-nr = 1048576 fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 4294967295kernel.shmmni = 4096kernel.sem = 250  32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576[root@oracle ~]# groupadd -g 54321 oinstall          #创建安装组[root@oracle ~]# groupadd -g 54322 dba          #创建管理组[root@oracle ~]# useradd -u 54321 -g oinstall -G dba oracle      #创建运行用户[root@oracle ~]# echo "123.comf" |  passwd --stdin oracle        #为该用户设置密码[root@oracle ~]# mkdir -p /u01/app/oracle          #创建基本目录[root@oracle ~]# chown -R oracle:oinstall /u01/app/     #更改属组[root@oracle ~]# chmod -R 755 /u01/app/oracle/      #更改权限[root@oracle ~]# vim /home/oracle/.bash_profile      #调整oracle用户的环境变量             ........................#省略部分内容#写入以下内容umask  022ORACLE_BASE=/u01/app/oracle         #定义基本目录ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/    #定义安装家目录ORACLE_SID=orcl    #定义数据库实例名称NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8     #确定使用何种语言环境PATH=$PATH:$ORACLE_HOME/binLANG=zh_CN.UTF-8export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SIDexport  DISPLAY=:0.0

oracle用户资源限制要求
进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证,然后修改/etc/security/limits.conf文件,使用户oracle能够打开的进程数、进程使用的文件数加大。如下:

[root@oracle ~]# vim /etc/pam.d/login           #修改PAM设置以便启用该认证           ......................#省略部分内容#在末尾写入以下两行:session   required  /lib/security/pam_limits.sosession   required  pam_limits.so[root@oracle ~]# vim /etc/security/limits.conf        #修改该文件           ......................#省略部分内容#在文件末尾写入以下内容:oracle   soft    nproc   2047             #进程数软限制oracle   hard    nproc   16384            #进程数硬限制oracle   soft   nofile   1024             #文件数软限制oracle   hard   nofile    65536           #文件数硬限制oracle   soft  stack    10240             #Oracle软堆栈限制[root@oracle ~]# vim /etc/profile      #添加如下内容到该文件末尾           ......................#省略部分内容#在文件末尾写入以下内容:if  [  $USER  = "oracle" ];then        if [ $SHELL = "/bin/ksh"  ];then                ulimit  -p  16384                ulimit   -n  65536        else                ulimit  -u  16384  -n  65536        fifi

不配置oracle用户资源的限制,也不会影响到oracle数据库的成功安装,但是,若有糟糕的SQL语句对服务器的资源无限占用,导致长时间对用户请求无响应,则建议提前限制oracle用户资源。

准备工作至此就完成了,需要重启系统,重启之后,最好再次检查之前的配置是否生效。建议不要做临时配置。

二、安装oracle 12c过程

[root@oracle ~]# mkdir /tmp/abc         #创建目录,/tmp目录下,oracle用户才可以读取到[root@oracle ~]# mount /dev/cdrom /media         #挂载我提供的oracle光盘镜像文件[root@oracle ~]# ls /media/             #确认oracle文件存在linuxx64_12201_database.zip[root@oracle ~]# cd /tmp/abc          #切换至/tmp/abc/目录下[root@oracle abc]# cp /media/linuxx64_12201_database.zip .  #将安装文件复制到当前目录下,文件有点大,请耐心等待[root@oracle abc]# unzip linuxx64_12201_database.zip    #解压该安装文件

oracle 12c的安装主要通过runInstaller脚本进行,访问网页welcome.html可以查看产品手册,其中包括产品说明、发行注记、安装指南等文档,为我们提供了极为丰富的帮助信息。

所有前置条件准备好以后,就可以正式开始安装了,如果当前的图形桌面环境是以其他用户的身份(如root)登录的,则还应添加授权以允许oracle使用图形终端。例如:"xhost + oracle@localhost"表示允许用户oracle从本机访问,执行"xhost +"表示取消所有限制。

以用户oracle的身份登录到centos 的图形桌面环境,启动database目录下的runInstaller脚本文件,具体操作如下(若安装oracle 19c则需要将存放oracle 19c的目录下都更改属主为oracle,如解压出来的oracle安装文件都位于/tmp/abc目录下,那么需要执行命令:chown -R oracle /tmp/abc,以便更改它的属主,否则会报错,这里安装的oracle 12c就不会出现这个问题。):

[root@oracle ~]# xhost +          #一定要以root用户在图形环境中操作[root@oracle ~]# su - oracle     #切换至oracle用户[oracle@oracle ~]$ cd /tmp/abc/database/         #切换至刚才解压出来的oracle安装文件目录[oracle@oracle database]$ ./runInstaller  #执行脚本进行安装,执行该脚本后,就会启动oracle图形化的安装程序

接下来的操作基本就是在图形化窗口上进行操作了,如下:

执行runInstaller脚本后打开的窗口如下:
1、

2、

3、

4、

5、
6、

7、

8、

9、

10、

11、

12、

13、

14、在安装过程中,会提示让使用root身份,执行下面的两个脚本,此时,切换一个工作区,使用root登录,将脚本名复制过去执行以下,即可!如下:

15、使用root身份执行上面图中提示的脚本:

[root@oracle ~]# /u01/app/oraInventory/orainstRoot.sh[root@oracle ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh  #执行第二个脚本时,会有两次交互界面,第一次直接按回车键即可;#第二次是要安装oracle跟踪文件分析器,可直接回车,也可输入"yes"进行安装

16、

17、安装成功,关闭即可

安装完成后,可以通过https://oracle服务器IP:5500/em ,实现访问EM(Enterprise Manager,企业管理器)database Express 平台,以便对oracle 12c的数据库进行简单管理,但访问EM database express平台,需要flase的支持。我这里使用的Windows客户端直接访问的(安装了flase),若使用Linux自带的火狐浏览器,可以下载我提供的Linux中的flase player插件,是个rpm格式的,直接执行命令rpm -ivh进行安装即可。

登录页面如下:

上图中提到的密码,就是在下面这个过程中定义的口令:

登录后的界面如下:

关于这个管理界面,就不多做介绍了,自行研究即可。

三、关于oracle的命令行界面操作

使用sqlplus命令可以在命令行界面访问oracle数据库,但是登录到数据库后,不可以使用上下键翻历史命令,如果想要解决,可以进行以下操作。

1、下载我提供的tar.gz软件包
2、挂载系统盘,然后执行以下命令:

[root@oracle ~]# yum -y install ncurses* readline*    #安装依赖包[root@oracle abc]# tar -zxvf rlwrap-0.30.tar.gz     #解压我提供的tar包[root@oracle abc]# cd rlwrap-0.30/             #进入解压后的目录[root@oracle rlwrap-0.30]# ./configure && make && make install       #编译安装[root@oracle ~]# vim /home/oracle/.bash_profile  #配置oracle用户的环境变量,以便方便使用rlwrap命令#经过以上配置,执行rlwrap + 原命令登录到oracle数据库,便可以使用上下键翻历史命令了[root@oracle ~]# su - oracle           #切换到oracle用户,才可以登录到oracle数据库上一次登录:三 9月 25 16:46:42 CST 2019[oracle@oracle ~]$ rlwrap sqlplus / as sysdba     #登录数据库

在上面的登录数据库命令中,是实现了sys以sysdba的身份连接到本机的oracle数据库,sys用户是oracle的最高管理员,以sys用户登录的时候一般要加上as sysdba,而其他用户则不需要,若以其他用户身份登录oracle数据库,可以执行命令:"[oracle@oracle ~]$ sqlplus system/oracle
"
进入SQL环境后的简单操作(在SQL>模式下,不区分大小写):

SQL> help index           #查看支持的指令列表SQL> show user            #查看当前的用户

四、oracle 12c数据库的创建

如果在安装oracle产品时不创建数据库,那么要使用oracle系统就必须先创建数据库。如果在安装oracle时选择建立数据库,也可以再创建第二个数据库(不过为了使oracle数据库充分利用系统资源,建议一个服务器上只创建一个数据库)。
创建数据库的方法有两种:通过图形化界面,或者采用"CREATE DATABASE"命令,这里说一下图形化界面创建数据库的方法:

[oracle@oracle database]$ dbca          #以oracle身份运行命令dbca,会弹出一个窗口

如果没有弹出窗口,可以参考前面的步骤,以root用户运行"xhost +"命令,再以oracle身份运行"export DISPLAY=:0.0"命令。

执行命令后会弹出以下窗口:



五、oracle 数据库的启动与关闭

oracle数据库的启动与关闭是日常工作之一。对于大多数oracle DBA来说,启动和关闭oracle数据库最常用的方式是在命令行方式下执行。

1、启动、关闭oracle数据库

要启动和关闭数据库,必须要以具有oracle管理员权限的用户登录,通常以具有SYSDBA权限的用户登录。

(1)数据库的启动

启动一个数据库需要三个步骤:①启动oracle实例(非装载阶段);②由实例装载数据库(装载阶段);③打开数据库(打开阶段)。

在startup命令中,可以使用不同的选项来控制数据库的不同启动步骤。

1)startup nomount(该命令不常用)
nomount选项仅仅启动一个oracle实例,读取init.ora初始化参数文件、启动后台进程、初始化SGA。当实例启动后,系统将显示一个SGA内存结构和大小的列表,如下:

[oracle@oracle ~]$ rlwrap sqlplus / as sysdba       #进入oracle数据库SQL> startup nomount             #执行该命令ORACLE 例程已经启动。Total System Global Area 1593835520 bytesFixed Size          8793256 bytesVariable Size        1023411032 bytesDatabase Buffers      553648128 bytesRedo Buffers            7983104 bytes

2)startup mount(某些时候会用到该命令)
startup mount 命令启动实例并且装载数据库,但是没有打开数据库。oracle系统读取控制文件中关于数据文件和重做日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重做日志及打开归档模式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。

SQL> alter database mount; #由于上面已经执行了startup nomount命令,所以再更改它的状态,就需要使用该命令

3)startup(正常时使用的命令)
startup命令完成启动实例,装载数据库和打开数据库三个步骤。此时,数据库使数据文件和重做日志文件在线,通常还会请求一个或者多个回滚段;系统除了可以看到前面startup mount 方式下的所有提示外,还会给出一个"数据库已经打开"的提示;数据库系统处于正常的工作状态,可以接收用户的请求。

如果采用startup nomount或者startup mount的数据库打开方式,必须采用alter database命令来执行装载或打开数据库的操作。

前面两条命令都执行过了(startup nomount和alter database mount),所以这里再执行下面命令,数据库就可以说是正确启动完成了。如下:

SQL> alter database open;             #执行该命令

正常来说,可以直接使用下面一条命令来正常启动数据库,如下:

SQL> startup           #在数据库关闭状态下执行该命令,数据库会依次启动、装载、打开。ORACLE 例程已经启动。Total System Global Area 1593835520 bytesFixed Size          8793256 bytesVariable Size        1023411032 bytesDatabase Buffers      553648128 bytesRedo Buffers            7983104 bytes数据库装载完毕。数据库已经打开。

2、数据库的关闭

对于数据库的关闭,有四种不同的关闭选项。
1)shutdown normal
shutdown normal是shutdown命令的默认选项。也就是说,如果用户发出shutdown命令,即执行shutdown normal命令。
发出该命令后,任何新的连接都将不再允许连接到数据库。在数据库关闭之前,oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意的是,采用这种方式时,也许关闭一个数据库需要几天或更长的时间。

2)shutdown immediate
shutdown immediate是常用的一种关闭数据库的方式。若即想很快地关闭数据库,又想让数据库"干净"的关闭,则常采用这种方式。

发出该命令后,当前正在被oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,那么采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不会等待连接到数据库的所有用户退出系统,而会强行回滚当前所有的活动事务,然后断开所有的连接用户。

3)shutdown transactional
shutdown transactional 命令常用来计划关闭数据库,它会等待当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。它所有活动的事务执行完成后,数据库将以和shutdown immediate同样的方式关闭数据库。

4)shutdown abort
shutdown abort是关闭数据库方式的最后选择,是在没有任何办法关闭数据库的情况下不得不采用的方式,一般不要采用。在下列情况出现时可以考虑采用这种方式关闭数据库。

  • 数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate命令关闭数据库;
  • 需要立即关闭数据库;
  • 在启动数据库实例时遇到问题。

    发出该命令后,所有正在运行的SQL语句将立即中止,所有未提交的事务将不回滚,oracle也不等待目前连接到数据库的用户退出系统;下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。

在关闭数据库时最好使用shutdown immediate方式,因为这种方式安全且相对较快。不是万不得已不要使用shutdown abort 方式,因为这种方式会造成数据丢失,并且恢复数据库也需要较长时间。

3、启动、关闭oracle监听进程

当oracle数据库实例启动完成后,为了使客户端用户能连接到oracle实例,DBA还需要在oracle所在的服务器上使用lsnrctl命令启动监听进程。如果数据库实例关闭,一般也要关闭监听进程。

1)启动监听

启动监听是oracle用户在操作系统下执行的命令,可以直接在lsnrctl后加参数,也可在该命令提示符后进行操作,具体如下:

[oracle@oracle ~]$ lsnrctl              #执行该命令LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 21:59:04Copyright (c) 1991, 2016, Oracle.  All rights reserved.欢迎来到LSNRCTL, 请键入"help"以获得信息。LSNRCTL> start          #启动监听启动/u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr: 请稍候...TNSLSNR for Linux: Version 12.2.0.1.0 - Production系统参数文件为/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora写入/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))LISTENER 的 STATUS------------------------别名                      LISTENER版本                      TNSLSNR for Linux: Version 12.2.0.1.0 - Production启动日期                  25-9月 -2019 21:59:12正常运行时间              0 天 0 小时 0 分 0 秒跟踪级别                  off安全性                    ON: Local OS AuthenticationSNMP                      OFF监听程序参数文件          /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora监听程序日志文件          /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml监听端点概要...  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))监听程序不支持服务命令执行成功

也可以直接使用以下命令"来启动监听:

[oracle@oracle ~]$ lsnrctl start         #启动监听
2)关闭监听
[oracle@oracle ~]$ lsnrctl stop         #关闭监听LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 22:00:31Copyright (c) 1991, 2016, Oracle.  All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))命令执行成功

-------- 本文至此结束,感谢阅读 --------

0