数据库作为数据存储单元,是应用系统开发、运行时必不可少的元素,而在实际项目中常用的数据库主要有Oracle、SQL Server、MySQL、PostgreSQL等,Oracle和SQL Server作为商业数据库,在数据量、性能和安全等方面相对更强大。在实际生产运行时,可以根据实际需要和使用情况进行数据库的选择。
公司产品开发时都是采用MySQL数据库,产品发布时候采用Oracle来做发版演示,实际项目也要对Oracle、PostgreSQL等数据库的支持,本次对Oracle的部署过程进行中梳理和记录,便于后续的环境搭建,供后续项目环境安装搭建参考。
Oracle作为市场上使用率最高的商业性数据库之一,在系统功能、架构等方面相对于MySQL要复杂许多,并且需要部署在Linux服务器上,所以需要准备相应的服务器环境。1.本次部署采用Linux服务器,系统为CentOS 7系统;2.数据库采用Oracle11g R2版本数据库;4.下载Oracle 11g R2版本的数据库安装包,Linux版本。系统采用CentOS系统,版本保证CentOS 7,可以采用虚拟机的方式:1.通过Vmware Workstation的虚拟机工具部署虚拟机,具体过程参考相关资料,这里不做具体说明;2.由于部署过程通过命令行的方式静默安装,所以可以不安装图形化界面;3.由于Oracle数据库需要很多软件依赖,建议服务器开启外网连接,能够更新相关软件依赖。在进行Oracle数据库安装前,需要建立相关的用户、目录,并且进行权限分配,避免安装时出现异常提示等问题。注:kernel.shmmax参数建议配置为内存的一半。1.切换oracle用户,并且进入root目录下:Linux服务器下Oracle数据库的部署方式可以分为两种:一是采用图形化的方式,通过安装命令调用Oracle安装页面,但是需要Linux服务器提供图形化界面;二是完全通过命令采用静默安装,不需要图形化界面,本次采用静默安装的方式。注:建议TOTALMEMORY 设置为总内存的80%。

测试通过后,说明Oracle数据库已经部署成功,但是在实际项目中,为了保证访问安全性,一般会隐藏Oracle默认的1521端口,一般是通过Nginx代理方式切换非常用端口进行访问。1.在nginx中添加stream配置进行端口代理:2.$nginx_home/conf/stream.d/oracle.conf:2.如果使用Nginx代理:开发Nginx代理后的端口。产品需要连接Oracle数据库,通过管理员账号建立Oracle用户和命名空间,分配权限和数据库。Oracle数据库安装完成后,通过相关的SQL命令对数据库进行相关功能测试,验证常用SQL语句。注:需要开启防火墙1521端口或者开启Nginx代理端口;1.Oracle安装初始化校验需要swap支持,需要开启swap或者添加临时swap:注:如果是和K8S同时部署,安装完成后需要关闭swap,避免影响K8S进程,关闭命令如下:2.登录Oracle数据库后,执行命令时提示:ORACLE not available,这是由于数据库实例未启动,执行startup启动数据库:3.登录Oracle数据库后,执行命令时提示:could not open parameter,一般发生在首次登录,需要手动添加数据库配置文件,命令如下:4.登录Oracle数据库后,执行命令时提示:cannot mount database in EXCLUSIVE mode,需要进行数据库目录挂载:2)切换root用户,kill相关pid释放文件lk<SID>文件:Oracle作为常用的数据库之一,在实际项目中会根据项目实际需求进行部署,所以在日常工作中,也要熟悉Oracle数据库的安装部署和常用命令,同时也要能对Oracle相关的SQL熟练掌握。本次部署采用的是Oracle 11gR2的版本,也是比较常用的版本之一,但是基于实际产品需要,是需要升级到12c版本,相对于11g,12c提供了新特性以支持varchar2、nvarchar2和raw的长度从之前的4K扩展到32K,以满足更大的数据存储而不是用CLOB。相对于11g版本,12c版本增加了多租户环境,并通过CDB和PDB进行环境规划,而用户也分成了公用用户和本地用户,所以无论是部署安装还是用户、数据库的配置都和11g有所区别,所以12c的升级需要进行对应调整。相对于MySQL数据库,Oracle数据库的结构和管理方式相对复杂,并且和MySQL区别比较大,MySQL数据库服务下直接就是数据库,而建立用户分配数据库权限就能进行数据库访问;而Oracle数据库下有数据库实例、用户、表空间等区分,Oracle数据库服务支持多实例,实例支持多用户,而用户和表空间可以相互关联,形成多对多的关系,所以Oracle数据库要做好规划和却分,以支持不同的产品和服务。由于产品在开发多数情况下采用MySQL数据库,所以产品本身适配MySQL数据库,而在进行Oracle数据库适配时一般使用本地数据库,部署Window版本,而本次主要是基于CentOS系统部署的服务器版本,相对而言,Linux下部署需要手动修改配置文件,配置过程相对繁琐,但同时对于相关命令、配置参数也有了更加清晰的了解,对于后续Oracle数据库配置以及优化也有一定的帮助。数据库作为应用系统运行的数据支撑,在开发、测试、实施过程中都是非常重要的,所以熟练掌握数据库的部署、测试、使用、优化是技术人员必备的技术能力之一,也是支撑项目交付的关键环节,所以在工作中要加强对数据库的学习和使用,充分掌握数据库的使用与维护,以满足日常工作的需要。