#星空云诊所#:云诊所-如何让Oracle数据库维护变得简单
大家都清楚Oracle数据库比SqlServer维护成本高很多,难度大很多,门槛也高很多,但星空现在很多项目中都会使用Oracle数据库,如何让后期维护变得更简单,下面就使用oracle数据库时需要特别注意的事项及在系统使用过程中如何去甄别是Oracle数据本身的报错呢而不是星空系统本身的报错?
一、 oracle数据库安装部署注意事项
1. 操作系统建议使用Linux操作系统,使用windows系统问题多
(1) Linux系统安全好、性能好、稳定好
(2) 比起其他操作系统,如:AIX、HP、WINDOWS等,ORACLE对LINUX系统的的支持力度最大,补丁最完全
(3) Linux版本建议选择Oracle Linux,Redhat Linux, Suse Linux,其他版本都没经过认证.
Linux系统安装注意事项
(1) Linux系统建议版本为:Oracle Linux(7.9)(官网有下载)
(2) 安装Linux时,建议选择使用英文语言,不要用中文,方便后期运维
(3) Linux 系统安装完成后,如果需要升级的需要先升级,确保系统正常运行后才可以安装数据库
2. Oracle 数据版本选择建议
(1) 11.2.0.4或12.1.0.2(暂不推荐12.2、18C、19C及后续版本)
(2) 企业版(标准版不满足需求)
(3) 单节点或 Rac 环境均可,推荐使用 Rac
备注说明:RAC 提供数据库的高可用(双机互备:服务器1宕掉,还有服务器2提供数据库 服务)
为什么不要推荐使用12.2.0.1版本呢?
(1) 金蝶云星空产品当前使用的 ODP.NET 驱动,也就是连接应用系统和数据库的接口程序,只在11204,12102版本认证过,高于此范围的,遇上故障的机会会增多
(2) 12.2.0.1,是12.2版本的初始发行版,对比18C(12.2.0.2),还是19C(12203),不论是BUG,还是性能,问题都是最多的,这个版本一般只用于学习、测试,不用于生产.
3. EM工具的安装
EM是数据库性能监控、SQL调优的利器,必须得安装它,当出现性能问题时也便于分析和解决问题,当总部专家支持时也需要通过EM工具进行分析,务必创建EM,并启动EM.
EM使用场景如下:
(1) 当系统出现性能问题时,需要分析数据库本身性能情况,查找性能引起的原因
(2) 需要监控SQL 执行情况时,使用EM非常方便,SQL执行情况非常清晰,一目了然
4. Oracle数据库安装完成后必须得安装补丁
(1)11.2.0.4 版本的补丁要求
建议打上这些补丁集,及小补丁(后续小补丁可能会有改动)
1) p28429134_112040_Linux-x86-64.zip -- GI 版本(20181016期,下同)。
p28204707_112040_Linux-x86-64.zip – 单节点。
p28440700_112040_Linux-x86-64.zip -- Ojvm。
2) 12646133,14078947,14275161,16016968,16086769_112041,16311211_11204171017, 17197563,17259786_11204160119(Post),17306264_11204170418,18405192 , 20033247,20048270,20250147,21050285_11204181016。
补丁更新注意事项:
1) 打补丁之前,须先阅读补丁自带的 Readme.html(txt)文件,按该文件要求操作。
2) 打完GI或者单节点的PSU补丁集后,再安装OJVM;安装完PSU+OJVM后,再打小补丁, 打小补丁时,需注意补丁版本与PSU版本的匹配度,小补丁的版本,必须是和PSU补丁集 同期,或者最接近PSU补丁期(必须小于PSU补丁期)。
如: 小补丁:21050285_11204181016 和补丁集 p28204707_112040_Linux-x86-64.zip同期, 而 17306264_11204170418 则是与该补丁集最接近的版本,会兼容。
(2)12.1.0.2 版本的补丁要求
安装完数据库软件后,建议打上这些补丁集,及小补丁:
1) p29698592_121020_Linux-x86-64.zip -- GI 版本(20190716期,下同)。 p29494060_121020_Linux-x86-64.zip -- 纯数据库版。
p29774383_121020_Linux-x86-64.zip -- OJVM。
2)19509982,21131203,21660388,22468781,22513913
特别说明:在上面的补丁列表里,没有打16756406这个补丁,是因为,该补丁已经包含在第 20190716期数据库 PSU 补丁集里。打了此 PSU 补丁集后,就无法/无需再打16756406这补丁
5. 对数据库集的要求
标准字符集:AL32UTF8
国家字符集:AL16UTF16
注意事项: 切勿选择错误字符集,一旦选择错误,建议删除、重建数据库。
二、 使用ORACLE 数据库过程中的数据库本身错误识别
当项目中操作出现如下图类似的报错,下图为实际某项目中出现过的报错,需要快速定位是Oracle数据库本身的错误,并不是星空产品的错误信息
使用Oracle数据库当星空出现一些莫名其妙的不太确定是否是星空产品标准产品或者是二开出现的错误提示时,可以从下面对照表中看错误信息是否是由于某些补丁未打造成的,如果是因为补丁未打造成的,则必须通过安装Oracle补丁来解决对应的问题。
具体参考如下:
数据库版本 | 对应补丁号 | 补丁解决对应的错误信息 |
11204 | 8857904 | ORA-04031 |
12646163 | ORA-00600:内部错误代码,参数:[qmcxeWSNQ1],[],[],[],[],[],[], | |
14078947 | Bug 14078947:SELECT FROM V$RMAN_STATUS VERY SLOW WHEN DATABASE IS OPEN | |
14275161 | ORA-600[rwoirw:check ret val] on CTAS with predicate move around | |
16016968 | 集群BUG,因打了补丁13955826引起 | |
16086769 | BUG 16086769 : ORA-600[13013] when executing a DML if the where clause includes an added column with a default value | |
16305657 | BUG 17474808:ORA-00600:[KGLPNMI_BAD_MIGRATION],FOLLOWED BY[18088] AND [1115] CRASH DB,,,ORA-600[kglpnmi_bad_miration] after upgrade to 11.2.0.4(文档ID 2342238.1), | |
16311211 | 重建索引后,监控属性丢失 | |
17197563 | 1. bug 17197563:ORA-600[kkmupsViewDestFro_4]from MERGE SQL with STAR transformation. 2. 数据库参数 star_transformation_enabled 被设置为TRUE 引发,改为默认值FALSE即可. | |
17306264 | 消耗完32765片回滚区间 | |
17325413 | Drop column with DEFAULT value and NOT NULL definition ends up with dropped Column Data still on Disk leading to Corruption (补丁包含在11204.4PSU) | |
18405192 | Create Table Fails with ORA-07445[evaopn3()+135](文档ID:1943615.1) | |
19692824 | LINUX7 上安装11204,使用EM时会遇上此BUG | |
20048270 | ORA-00979,not a GROUP BY expression | |
20250147 | 节点2的数据库实例因为LSM故障,无法启动(BUG 20250147 -ORA 600[KJXMGMB_NREQ:!BAT]. | |
21050285 | 采集数据字典表(SYS.X$KSOLSFTS ARE VERY SLOW)统计信息被卡 | |
12.1.0.2 | 16756406 | ORA-00600:internal error code,arrguments:[kpp_concatq:2],[10],[9],[8],[],[],[], |
22513913 | ||
19509982 | ||
21131203 | ||
21660388 | ORA-00600:[kmcmbf:pga ref],[OS PROCESS PRIVILEGES],[OX217C9A9C0] | |
22468781 | DBMS_STATUS.GATHER_FIXED_OBJECTS_STATS Hangs while querying X$KSQLFSQCE(Doc ID 2294247.1) |
三、 对于星空补丁在更新时如果有人使用会出现死锁问题的处理方法
在补丁更新前通知用户不能使用系统,否则会造成死锁,补丁更新进程会卡死(给出补丁更新的时间区间,预留足够时间,并强调一定不能使用系统),卡死界面如下图:
当出现死锁时的处理方法
(1) oracle 查询数据库锁及锁处理
1)数据库锁表查询语句:
SELECT SESS.SID, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME 被锁对象名, LO.LOCKED_MODE 锁模式, sess.LOGON_TIME 登录数据库时间,'ALTER SYSTEM KILL SESSION ''' || SESS.SID || ','||SESS.SERIAL#||'''' FREESQL
FROM V$LOCKED_OBJECT LO, DBA_OBJECTS AO, V$SESSION SESS
WHERE AO.OBJECT_ID = LO.OBJECT_ID AND LO.SESSION_ID = SESS.SID ORDER BY sid, sess.serial#;
可根据锁的时间推断是否死锁,是否需要清理
2)执行查询结果列最后一行的值,即可清除该锁
3)特殊情况:如果执行上面的语句出现报错
ora-00031:session marked for kill
则需在--数据库所在服务器--执行kill命令
处理方式:
a.数据库执行sql:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=1851
(最后的参数的sid是的第一条SQL结果集第一列的值)
b.在数据库所在服务器--执行kill命令
kill -9 12345
#星空云诊所#:云诊所-如何让Oracle数据库维护变得简单
本文2024-09-16 18:34:19发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23022.html