Solaris11下Oracle12C集成部署问题处理及优化
随着Oracle12C在企业级应用环境的不断扩大和升级部署,越来越的企业级传统应用项目逐步开始向Oracle12C进行迁移和流动。硬件及操作系统升级后也给Oracle12C的升级迁移带来了很多技术性挑战和考验。本文结合企业在新的Solaris11操作系统环境下集成安装Oracle 12.2 RAC环境的问题及日常优化进行总结,希望能给企业级用户在集成过程中减少一些集成难度。
- 隐含参数修改
1.1、Oracle12C特定I/O共享池设置。
当用户在Solaris11环境下安装完Oracle12C的双节点RAC环境并进行了最新补丁升级,使用DBCA命令创建数据库后,发现数据库并不能正常工作和使用,通过在GRID用户下使用命令“****scrctl status res –t“命令查看发现其它服务均正常,唯独db服务会随机性重启,导致数据库无法访问,查看Oracle的trace文件发现如下错误:
ORA-00600: internal error code, argument: [kmgsdrv_3], [7], [4],[0], [0], [0xFE81B82C0], [0x000000000], [1], [0], [], [], []
...
Dumping diagnostic data in directory=[cdmp_20151030101436],requested by (instance=1, osid=4294986232 (MMAN)),summary=[incident=4918476].
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
通过Oracle相关文档了解到,此问题可以通过在数据库参数文件中加入“_shared_io_pool_size=<granule_size>”参数来进行纠正和恢复。修改过程如下:
备份并修改当前ORACLE数据库spfile文件,登录ORACLE数据库并使用命令”****create pfile= ‘/home/oracle’ from spfile”,用户即可在用户目录下生成一个可以启动ORACLE的pfile文件。通过编辑器编辑该文件并加入如下内容:*._shared_io_pool_size=536870912,其中“536870912”代表的值可以通过将数据库启动到nomount状态下使用命令“****select bytes from v$sgainfo where name like 'Granule Size';”进行查看,用户可根据实际情况进行修改。之后用户可以通过pfile文件重新生成spfile文件并重启数据库。数据库进入稳定运行状态。
1.2、Solaris11系统shmmax参数设置。
在Solaris11下参数设置有别于其它类UNIX系统,安装完Oracle12C后因为按照应用要求,需要将SGA_TARGET参数修改为210G大小,修改后启动数据库实例时出现如下错误:
ORA-27125: unable to create shared memory segment
SVR4 Error: 22: Invalid argument
Additional information: 2560
Additional information: 506839040
Additional information: 8192
手工使用pfile参数引导系统发现同样报错,
经过联系ORACLE原厂工程师确认是系统共享内存设置不当引起的SGA超限问题,需要在操作系统中设置“shmmax”参数,并要确保“shmmax”值大于SGA_TARGET值范围。在Solaris11下分别以root用户执行如下命令:
/usr/sbin/projmod -U oracle -K "project.max-shm-memory=(priv,250g,deny)" user.oracle
以oracle用户执行如下命令:
/usr/sbin/projmod -U oracle -K "project.max-shm-memory=(priv,250g,deny)" user.oracle
之后从新启动Oracle12C双节点RAC数据库,系统正常运行。
- PDB****数据库字符集修改
从Oracle 12.2数据库开始,创建完成的同一CDB容器数据库中的各个PDB字符集可以不同,这样可以使数据库字符集具有更好的扩展性以及更适合应用系统的多语言环境部署,通常创建CDB会默认选择“AL32UTF8”字符集,之后可以通过命令方式将该字符集包含的子集字符集修改为PDB数据库字符集,但修改过程需要用户进行手工完成。以下以将PDB数据库字符集修改为“zhs16gbk”为例,过程如下:
2.1、关闭数据库并将数据库启动到mount状态,并使用如下命令“****alter system enable restricted session;”将数据库设置为受限访问模式,同时使用如下命令“****alter system set job_queue_processes=0;”“alter system set aq_tm_processes=0;”禁止数据库启动后台定时任务作业。
2.2、使用命令“****alter database open;”将数据库在受限方式下打开。通过以上操作保证数据库对外服务禁止。
2.3、使用命令“****alter pluggable database zhaq open RESTRICTED;”以限制方式打开插拔数据库(本例插拔数据库名为“zhaq”,用户应根据实际进行修改),准备进行该插拔数据库字符集修改。
2.4、使用命令“****alter session set container=zhaq;”将会话切换到插拔数据库中,使用命令“****alter database character set internal_use zhs16gbk;”对该插拔数据库字符集进行修改。完成后恢复数据库到正常模式,同时使用命令“****alter system set job_queue_processes=4000;”“alter system set aq_tm_processes=1”激活后台定时任务作业,“job_queue_processes”参数值用户应根据自己系统环境进行修改。
- 基础优化
3.1、Oracle12c安装后,在密码管理中依然延续了默认180天失效的策略,但多数情况下这一设置反而给用户以及应用系统带了不必要的麻烦。用户可以通过修改密码配置文件将该参数设置为永不过期,需要注意的是在Oracle12C中需要分别执行以下两条语句“****alter profile default limit PASSWORD_LIFE_TIME unlimited;”“alter profile ORA_STIG_PROFILE limit PASSWORD_LIFE_TIME unlimited;”进行该参数修改。同时使用分别执行一下两条语句“****alter profile default limit FAILED_LOGIN_ATTEMPTS 12;”“alter profile ORA_STIG_PROFILE limit FAILED_LOGIN_ATTEMPTS 12;”
3.2、使用命令*“***alter system set db_recovery_file_dest='+data' scope=spfile;**将回闪区目录指定给ASM进行管理。
3.3、Oracle12C安装完成后,默认情况下和低版本Oracle数据库RDBMS进行数据交互时,会出现兼容性问题,因此生产系统中应修改Oracle12C版本兼容参数来满足系统兼容性,通过使用命令“****vi $ORACLE_HOME/network/admin/sqlnet.ora”编辑该文件并添加如下内容:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
完成后Oracle12C即可以正常与甲骨文公司的其它低版本ORACLE数据库系统完成正常数据交互。
- 后记
系统集成作为很多较大信息系统建设项目的重要组成部分,其过程具有更多的工程化特点,系统组件间的搭配和组装,耦合部分的嵌套与装配都需要很多打磨和耐心仔细调试,尤其应用于高可靠、高可用、高安全性环境的系统集成更是如此,系统集成过程中更需要人的良好协作和沟通。
谢谢打赏,多少对我都是鼓励!!!