部署Oracle 12c企业版数据库( 安装及使用)
在计算机信息安全领域中,数据库系统无疑有着举足轻重的地位。比如:SQLServer、MySQL、DB2、Oracle等,都是比较知名的数据库管理软件,由于Oracle数据库的安全性,所以在一些比较重要的场合被普遍使用,比如:电信、银行、政府部门等。
本次博文以Oracle12c数据库的64位企业版为例,学习如何在Centos操作系统中的安装和基本配置,包括安装的准备等。
博文大纲:
一、安装Oracle12c
二、创建Oracle12c数据库
三、Oracle12c数据库的启动与关闭
四、将Oracle数据库设置为开机自启动
一、安装Oracle12c
1.安装CentOS7操作系统的注意事项
由于本次安装Oracle12c软件是在CentOS7系统上实现的,那么首次安装CentOS7操作系统有几点要求:
- 防火墙的配置选项设置为禁用;
- SELinux设置为禁用;
- 默认安装设置为软件开发;
- 内核选择3.10.0-862.el7.x86_64及以上版本;
2.前置条件的准备
Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型、内存和交换分区、硬盘空阿金、内核参数、软件环境、用户环境等都有相应的要求。只要满足了这些必备的条件,才能确保Oracle12c安装成功并稳定运行。
(1)系统及配置要求
Oracle12c明确支持的Linux操作系统包括OracleLinux7、OracleLinux6、OracleLinux5、RedHatEnterpriseLinux7、RedHatEnterpriseLinux6、RedHatEnterpriseLinux5等,因为RedHatEnterprise和CentOS属于同步并行的操作系统,所以Oracle12c同样支持CentOS7、CentOS6、CentOS5操作系统。在其他Linux系统中安装时,个别软件或配置文件可能需要进行适当的调整。
[root@localhost~]#cat/etc/centos-release//查看系统版本信息 CentOSLinuxrelease7.5.1804(Core) [root@localhost~]#uname-r//查看系统内核信息 3.10.0-862.el7.x86_64
Linux操作系统要求:
- 物理内存:必须高于1GB,对于VMware虚拟机建议不少于2GB;
- 交换空间:物理内存为1~2GB时,交换分区为物理内存的1.5~2倍;物理内存为2~16GB时,交换分区于物理内存大小相同;物理内存超过16GB时,交换分区使用16GB就可以了;
如果交换分区空间不足的话,可以使用以下方式扩展交换分区
[root@localhost~]#ddif=/dev/zeroof=/swap_filebs=1024count=2097152 //这是扩展了2GB的交换分区,2097152除以1024等于2048,所以是2GB [root@localhost~]#mkswap/swap_file [root@localhost~]#swapon/swap_file //完成之后,再次查询就会发现交换分区多了2GB的空间
[root@localhost~]#grepMemTotal/proc/meminfo MemTotal:7992344kB [root@localhost~]#grepSwapTotal/proc/meminfo SwapTotal:18568716kB//交换分区空间及内存空间已经满足要求
对于Oracle12c数据库,若程序文件和数据文件安装在同一分区,则该分区硬盘空间的最要要求为企业级为6.4G,标准版6.1G;除此之外,还应确保/tmp目录的可用空间不少于1G。总的来说,建议安装Oracle12c准备至少15G的硬盘空间。
[root@localhost~]#df-hT/tmp//查看/tmp目录的磁盘使用情况 文件系统类型容量已用可用已用%挂载点 /dev/mapper/centos-rootxfs50G21G30G42%/ //很明显,满足了要求
安装Oracle数据库前,要求规划好主机名和IP。服务器的主机名、IP地址应提前确认无误,一旦Oracle数据库安装完成,建议不要轻易的修改主机名,否则会导致数据库启动失败。方法如下:
[root@localhost~]#sed-i'1coracle'/etc/hostname //设置主机名为oracle [root@localhost~]#echo-e"192.168.1.1oracle">>/etc/hosts //添加主机名与IP地址的对应关系
(2)软件环境要求
Oracle12c的安装过程通常是在图形界面中进行,因此建议使用已安装有GNOME中文桌面环境的CentOS服务器,软件开发工具当然是必不可少的,应使用yum方式安装以下必要的软件环境。
[root@localhost~]#yum-yinstallbinutilscompat-*gccgcc-c++glibcglibc-develksh\ libaiolibaio-devellibgcclibstdc++libstdc++-devellibXilibXtstmakesysstat\ unixODBCunixODBC-devel //使用本地光盘或者网络yum都可以
Oracle12c自身集成了Java运行环境,但安装界面对中文的支持并不完善,因此若希望使用中文的Oracle安装界面,建议提前安装好Java软件包。
(3)内核要求
为了确保数据库运行稳定,Oracle12c针对Linux内核参数,进程会话限制提出了一些要求,其中一部分设置可以在安装过程中自动检测并进行修复,但并一定很完整,所以最好的做法是根据安装文档提前进行配置。
内核参数调整体现在/etc/sysctl.conf文件中,主要包括与内存调度、端口范围、打开文件数、I/O请求等相关的一些设置,相关数值不可低于安装要求。如下:
[root@localhost~]#vim/etc/sysctl.conf ………………//省略部分内容,在末尾添加即可! fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.shmall=2097152 kernel.shmmax=4294967295 kernel.shmmni=4096 kernel.sem=25032000100128 net.ipv4.ip_local_port_range=900065500 net.core.rmem_max=4194304 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.wmem_max=1048576 [root@localhost~]#sysctl-p//重新加载配置文件
各参数详解:
- fs.aio-max-nr:此参数限制并发未完成的请求,应该设置避免I/O子系统故障;
- fs.file-max:该参数决定了系统中所允许的最大可以打开的文件数量;
- kernel.shmall:该参数控制可以使用的共享内存的总页数;.
- kernel.shmmax:是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。
- 建议:
- 32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。
- 64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为12GB物理内存,可取1210241024*1024-1=12884901887。
- kernel.shmmni:该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
- kernel.sem:
- 以kernel.sem=25032000100128为例:
- 250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
- 32000是参数semmns的值,表示系统内可允许的信号量最大数目。
- 100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
- 128是参数semmni的值,表示系统信号量集合总数。
- net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围;
- net.core.rmem_default:表示套接字接收缓冲区大小的缺省值;
- net.core.rmem_max:表示套接字接收缓冲区大小的最大值;
- net.core.wmem_default:表示套接字发送缓冲区大小的缺省值;
- net.core.wmem_max:表示套接字发送缓冲区大小的最大值;
(4)Oracle用户环境要求
Oracle12c需要固定的运行用户oracle、安装组oinstall、管理组dba,这些账号应提前创建好。用于存放Oracle程序及数据库文件的基本目录也应提前创建好。
[root@localhost~]#groupaddoinstall [root@localhost~]#groupadddba [root@localhost~]#useradd-goinstall-Gdbaoracle [root@localhost~]#echo'123456'|passwd--stdinoracle 更改用户oracle的密码。 passwd:所有的身份验证令牌已经成功更新。 [root@localhost~]#mkdir-p/u01/app/oracle [root@localhost~]#chown-Roracle:oinstall/u01/app [root@localhost~]#chmod-R775/u01/app/oracle
Oracle12c的安装任务应以运行用户oracle的身份执行,需适当调整oracle用户的环境配置以满足需求。
[root@localhost~]#vim/home/oracle/.bash_profile ………………//省略部分内容,在末尾添加即可! umask022 ORACLE_BASE=/u01/app/oracle#oracle基本目录 ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/#安装家目录 ORACLE_SID=orcl#定义数据库实例名称 NLS_LANG="SIMPLIFIEDCHINESE_CHINA".UTF8#是针对Oracle语言、地区、字符集的设置 PATH=$PATH:$ORACLE_HOME/bin LANG=zh_CN.UTF-8#LANG是针对Linux系统的语言、地区、字符集的设置。 DISPLAY=:0.0#在哪个终端可以使用图形 exportPATHLANGNLS_LANGORACLE_BASEORACLE_HOMEORACLE_SIDDISPLAY#将变量导出为全局变量
(5)oracle用户资源限制要求
进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证,然后修改/etc/security/limits.conf文件,使用户oracle能够打开的进程数、进程使用的文件数加大。
[root@localhost~]#vim/etc/pam.d/login ………………//省略部分内容,在末尾添加即可! sessionrequired/lib/security/pam_limits.so sessionrequiredpam_limits.so [root@localhost~]#vim/etc/security/limits.conf ………………//省略部分内容,在末尾添加即可! oraclesoftnproc2047#设置进程数软限制 oraclehardnproc16384#设置进程数硬限制 oraclesoftnofile1024#设置文件数软限制 oraclehardnofile65536#设置文件数硬限制 oraclesoftstack10240#Oracle软堆栈限制
配置oracle用户资源限制,不配置也不会影响oracle数据库的成功安装,但是考虑到若有糟糕的sql语句对服务器资源的无限占用,导致长时间对用户请求无响应,建议提前限制oracle用户资源。
[root@localhost~]#vim/etc/profile if[$USER="oracle"];then if[$SHELL="/bin/ksh"];then ulimit-p16384 ulimit-n65536 else ulimit-u16384-n65536 fi fi
准备工作完成后重新启动系统,重启之后,再次检查之前的配置是否生效。
3.Oracle12c安装过程
Oracle的中文官方网址是https://www.oracle.com/index.html可以自行进行下载,也可通过本人提供的Oracle安装包进行安装。
[root@oracle~]#cd/ [root@oracle/]#unzip/root/linuxx64_12201_database.zip //进入根目录对下载的Oracle软件包进行解压 [root@oracle/]#lsdatabase///解压之后生成database目录 installresponserpmrunInstallersshsetupstagewelcome.html
授权允许用户oracle使用图形终端,例如执行:xhost+oracle@localhost,表示允许用户oracle从本机访问,或者执行xhost+表示取消所有限制,这里执行xhost+即可。
[root@oracle/]#xhost+//一定要以root用户的身份在图形环境中操作 [root@oracle/]#su-oracle//切换到oracle用户 [oracle@oracle~]$cd/database/ [oracle@oracledatabase]$exportDISPLAY=:0.0设置DISPLAY环境变量 [oracle@oracledatabase]$./runInstaller//执行安装脚本
执行完成后会弹出图形化界面,进行以下操作:
[root@oracle~]#/u01/app/oraInventory/orainstRoot.sh [root@oracle~]#/u01/app/oracle/product/12.2.0/dbhome_1/root.sh //执行第二个脚本,遇到提示,一路回车即可!
[root@oracle~]#yum-yinstallncurses*readline*//安装软件包所需依赖 [root@oracle~]#tarzxfrlwrap-0.30.tar.gz.zip-C/usr/src [root@oracle~]#cd/usr/src/rlwrap-0.30/ [root@oraclerlwrap-0.30]#./configure&&make&&makeinstall //使用root身份进行编译安装,安装完成后即可使用! [oracle@oracle~]$rlwrapsqlplus"/assysdba" SQL*Plus:Release12.2.0.1.0Productionon星期二11月2610:51:442019 Copyright(c)1982,2016,Oracle.Allrightsreserved. 连接到: OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction SQL>
[oracle@oracle~]$vim/home/oracle/.bash_profile ………………//在末尾添加以下内容 aliassqlplus='rlwrapsqlplus' aliasrman='rlwraprman' //就是将命令创建别名而已
退出当前oracle用户,重新登录才可使用。
[oracle@oracle~]$sqlplussys/123456assysdba //使用命令行登录 SQL*Plus:Release12.2.0.1.0Productionon星期二11月2610:57:412019 Copyright(c)1982,2016,Oracle.Allrightsreserved. 连接到: OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction SQL>
或者
[oracle@oracle~]$sqlplus/nolog SQL*Plus:Release12.2.0.1.0Productionon星期二11月2610:59:102019 Copyright(c)1982,2016,Oracle.Allrightsreserved. SQL>connsys/123456assysdba 已连接。 //也可以使用这样方式登录Oracle数据库
二、创建Oracle12c数据库
如果在安装oracle产品时不创建数据库,那么要使用oracle系统就必须先创建数据库。如果在安装oracle时选择建立数据库,也可以再创建第二个数据库(不过为了使oracle数据库充分利用系统资源,建议一个服务器上只创建一个数据库)。
创建数据库的方法有两种:通过图形化界面,或者采用“CREATEDATABASE”命令,这里说一下图形化界面创建数据库的方法:
[oracle@oracle~]$dbca//使用oracle用户创建数据库 //执行这条命令就会弹出图形化界面创建数据库
如果没有弹出窗口,可以参考前面的步骤,以root用户运行“xhost+”命令,再以oracle身份运行“exportDISPLAY=:0.0”命令。
弹出的图形化界面如下:
三、Oracle12c数据库的启动与关闭
oracle数据库的启动与关闭是日常工作之一。对于大多数oracleDBA来说,启动和关闭oracle数据库最常用的方式是在命令行方式下执行。
1.启动、关闭Oracle数据库
要启动和关闭数据库,必须具有Oracle管理员权限的用户登录,通常以具有SYSDBA权限的用户登录。
(1)数据库的启动
启动一个数据库需要三个步骤:①启动oracle实例(非装载阶段);②由实例装载数据库(装载阶段);③打开数据库(打开阶段)。
在startup命令中,可以使用不同的选项来控制数据库的不同启动步骤。
1)startupnomount(该命令不常用)
nomount选项仅仅启动一个oracle实例,读取init.ora初始化参数文件、启动后台进程、初始化SGA。当实例启动后,系统将显示一个SGA内存结构和大小的列表,如下:
[oracle@oracle~]$sqlplus/assysdba//以oracle用户登录数据库 SQL*Plus:Release12.2.0.1.0Productionon星期二11月2611:18:362019 Copyright(c)1982,2016,Oracle.Allrightsreserved. 连接到: OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction SQL>startupnomount
2)startupmount(某些时候会用到该命令)
startupmount命令启动实例并且装载数据库,但是没有打开数据库。oracle系统读取控制文件中关于数据文件和重做日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重做日志及打开归档模式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出“数据库装载完毕”的提示。
SQL>alterdatabasemount; //由于上面已经执行了startupnomount命令,所以再更改它的状态,就需要使用该命令
3)startup(正常时使用的命令)
startup命令完成启动实例,装载数据库和打开数据库三个步骤。此时,数据库使数据文件和重做日志文件在线,通常还会请求一个或者多个回滚段;系统除了可以看到前面startupmount方式下的所有提示外,还会给出一个“数据库已经打开”的提示;数据库系统处于正常的工作状态,可以接收用户的请求。
如果采用startupnomount或者startupmount的数据库打开方式,必须采用alterdatabase命令来执行装载或打开数据库的操作。
前面两条命令都执行过了(startupnomount和alterdatabasemount),所以这里再执行下面命令,数据库就可以说是正确启动完成了。如下:
SQL>alterdatabaseopen;
正常来说,可以直接使用下面一条命令来正常启动数据库,如下:
SQL>startup//在数据库关闭状态下执行该命令,数据库会依次启动、装载、打开。 ORACLE例程已经启动。 TotalSystemGlobalArea1593835520bytes FixedSize8793256bytes VariableSize1023411032bytes DatabaseBuffers553648128bytes RedoBuffers7983104bytes 数据库装载完毕。 数据库已经打开。
(2)数据库的关闭
对于数据库的关闭,有四种不同的关闭选项。
1)shutdownnormal
shutdownnormal是shutdown命令的默认选项。也就是说,如果用户发出shutdown命令,即执行shutdownnormal命令。
发出该命令后,任何新的连接都将不再允许连接到数据库。在数据库关闭之前,oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。但需要注意的是,采用这种方式时,也许关闭一个数据库需要几天或更长的时间。
2)shutdownimmediate
shutdownimmediate是常用的一种关闭数据库的方式。若即想很快地关闭数据库,又想让数据库“干净”的关闭,则常采用这种方式。
发出该命令后,当前正在被oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,那么采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不会等待连接到数据库的所有用户退出系统,而会强行回滚当前所有的活动事务,然后断开所有的连接用户。
3)shutdowntransactional
shutdowntransactional命令常用来计划关闭数据库,它会等待当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。它所有活动的事务执行完成后,数据库将以和shutdownimmediate同样的方式关闭数据库。
4)shutdownabort
shutdownabort是关闭数据库方式的最后选择,是在没有任何办法关闭数据库的情况下不得不采用的方式,一般不要采用。在下列情况出现时可以考虑采用这种方式关闭数据库。
- 数据库处于一种非正常工作状态,不能用shutdownnormal或shutdownimmediate命令关闭数据库;
- 需要立即关闭数据库;
- 在启动数据库实例时遇到问题。
发出该命令后,所有正在运行的SQL语句将立即中止,所有未提交的事务将不回滚,oracle也不等待目前连接到数据库的用户退出系统;下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。
在关闭数据库时最好使用shutdownimmediate方式,因为这种方式安全且相对较快。不是万不得已不要使用shutdownabort方式,因为这种方式会造成数据丢失,并且恢复数据库也需要较长时间。
2.启动、关闭oracle监听进程
当oracle数据库实例启动完成后,为了使客户端用户能连接到oracle实例,DBA还需要在oracle所在的服务器上使用lsnrctl命令启动监听进程。如果数据库实例关闭,一般也要关闭监听进程。
(1)启动监听
启动监听是oracle用户在操作系统下执行的命令,可以直接在lsnrctl后加参数,也可在该命令提示符后进行操作,具体如下:
[oracle@oracle~]$lsnrctl//执行该命令 LSNRCTLforLinux:Version12.2.0.1.0-Productionon25-9月-201921:59:04 Copyright(c)1991,2016,Oracle.Allrightsreserved. 欢迎来到LSNRCTL,请键入"help"以获得信息。 LSNRCTL>start//启动监听 启动/u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr:请稍候... TNSLSNRforLinux:Version12.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 版本TNSLSNRforLinux:Version12.2.0.1.0-Production 启动日期25-9月-201921:59:12 正常运行时间0天0小时0分0秒 跟踪级别off 安全性ON:LocalOSAuthentication SNMPOFF 监听程序参数文件/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~]$lsnrctlstart//启动监听
(2)关闭监听
[oracle@oracle~]$lsnrctlstop//关闭监听 LSNRCTLforLinux:Version12.2.0.1.0-Productionon25-9月-201922:00:31 Copyright(c)1991,2016,Oracle.Allrightsreserved. 正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) 命令执行成功
四、将Oracle数据库设置为开机自启动
[root@oracle~]#vim/etc/oratab ………………//修改以下内容 orcl:/u01/app/oracle/product/12.2.0/dbhome_1:Y [root@oracle~]#vim/etc/rc.local su-oracle-c'dbstart'//启动数据库 su-oracle-c'lsnrctlstart'//启用监听进程 [root@oracle~]#chmod+x/etc/rc.d/rc.local //添加执行权限
重启之后,进行验证:
[root@oracle~]#netstat-anpt|grep5500//oracle数据库的监听端口 tcp600:::5500:::*LISTEN2144/tnslsnr [root@oracle~]#netstat-anpt|grep1521//oracle数据库监听进程 tcp00192.168.1.1:24251192.168.1.1:1521ESTABLISHED1816/ora_lreg_orcl tcp600:::1521:::*LISTEN2144/tnslsnr tcp600192.168.1.1:1521192.168.1.1:24251ESTABLISHED2144/tnslsnr tcp600192.168.1.1:1521192.168.1.1:24143TIME_WAIT-
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。