基于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)))命令执行成功
-------- 本文至此结束,感谢阅读 --------