源网址:
问题一、安装Grid执行root.sh报错ORA-27504
问题描述:
在centos7.4 64bit上安装oracle 12.2的grid执行root.sh报错如下:
ASM failed to start. Check /grid/app/grid/grid_base/cfgtoollogs/asmca/asmca-181205AM124153.log for details. 2018/12/05 13:42:18 CLSRSC-184: Configuration of ASM failed 2018/12/05 13:42:20 CLSRSC-258: Failed to configure and start ASM Died at /grid/app/grid/grid_home/crs/install/crsinstall.pm line 2091. The command '/grid/app/grid/grid_home/perl/bin/perl -I/grid/app/grid/grid_home/perl/lib -I/grid/app/grid/grid_home/crs/install /grid/app/grid/grid_home/crs/install/rootcrs.pl ' execution failed
[root@crm-db1 ~]# [main] [ 2018-12-05 02:22:57.058 EST ] [UsmcaLogger.logException:186] SEVERE:method oracle.sysman.assistants.usmca.backend.USMInstance:configureLocalASM [main] [ 2018-12-05 02:22:57.058 EST ] [UsmcaLogger.logException:187] ORA-27504: IPC error creating OSD context [main] [ 2018-12-05 02:22:57.058 EST ] [UsmcaLogger.logException:188] oracle.sysman.assistants.util.sqlEngine.SQLFatalErrorException: ORA-27504: IPC error creating OSD context (左右滑动查看完整代码,下同) 专家解答:
通过对dmp文件仔细检查发现,在执行root.sh时检测到ens3f0:1没有插网线,然后直接报错ORA-27504,非常隐蔽。
======== 问题一、Oracle 12.2 rac SCM0进程占用cpu高
1节点 scm0进程占用cpu高,是什么问题导致,scm0进程是否可以关闭?关闭了该进程,是否有什么影响?
诊断结论:DLM统计信息收集和管理从站(SCM0)负责收集和管理与全局入队服务(GES)和全局高速缓存服务(GCS)相关的统计信息。仅当启用DLM统计信息收集时,此从属服务器才存在,可以直接kill,关闭进程后没有任何影响,12.2中根本就还没用到DLM统计信息(18c和19c才开始用到)。
问题二、ORA-19706:无效的SCN
dblink在正常使用时报错:ORA-19706:无效的SCN ORA-02063:紧接着line ,原库:oracle10.2.0.4 AIX Version 5.3 ,目标库:11.2.0.4 AIX Version 7.1,找了网上的说法,需要升级原库,然后再修改隐含参数_external_scn_rejection_threshold_hours;麻烦问下恩墨大师,有没有不升级也可解决的办法? 诊断结论:今年6月SCN还会自动升级,如果要继续使用DBLINK,官方建议必须升级打补丁,10g至少升级到10205再打补丁,详情参看这个专题下面的文章modb.pro/db/topic/0/564
问题三、MySQL ERROR 1205 (HY000): Lock wait timeout exceeded
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,请教各位 资深前辈 Mysql Innodb 引擎数据库 出现1205 锁等待问题 这个问题会是什么原因导致的呢? 诊断结论:一般来说,这个错误表示行锁等待超时。 InnoDB是事务引擎,每次对行操作(一般是update,delete)前,都需要拿到行锁,(在一些特定场景下,还需要求到间隙锁),之后才能实际更新数据,如果你的事务将要修改的数据对应的锁已经被别的事务持有,在那个事务提交或者回滚之前,你的语句就一直会等待,这个等待超过指定时间(innodb_lock_wait_timeout)之后,就会让你的会话结束等待,返回这个错误。 解决办法的话,一个是看下当前是否有长耗时会话或者SQL.
问题四、OGG复制进程报错ORA-01403: no data found
之前同事撘了个ogg进程,一直数据同步没有问题。忽然某一天就报了这种类似的错:ORA-01403,然后把复制进程dsc撑爆了写不进去了,进程就断掉了。然后同事又重新初始化了一遍,过了几天又报了类似的错,这是什么原因呢? 诊断结论:配了discard参数复制进程会将错误记录输出到discard文件中,但该文件虽然配置了近50M的大小,可错误信息依然没能完全写下,所以你应该进行以下步骤来处理
- 使用view params reppd检查discard的设置;
- 分析DISCARDFILE,看看是什么原因导致复制中产生那么多的错误信息。
问题五、Oracle 设置NTP时间同步问题
有这样一个问题,就是我的oracle 集群时间同步是用自己的ctss服务同步的,但是系统时间就缓慢的变得越来越慢,我现在想要换成ntp服务来同步时间,大致的操作步骤是什么样的呢?需要重启数据库集群吗,有什么风险吗?没做个这个没什么经验,求指导。 诊断结论:1、参考对应的平台的ntp配置文档配置,2个节点指向同一个可用的ntp服务器,2、关闭集群服务,3、2个节点手工和ntp服务器强制同步一次,4、启动集群服务
问题六、修改sys和system密码会对DATAGUARD有影响吗?
想询问一下,修改oracle数据库sys和system的密码会对DATAGUARD主备库之间的数据同步产生影响吗? 诊断结论:sys 的会有影响,12.2 可以自动同步口令文件。如果是11g的话,可以设置redo_transport_user参数指定特定用户作为redo同步。
问题七、split分区ora-01652
新建一个分区表LGY_201905,在t_gnlk表中,创建LGY_201905表空间成功,在创建分区的时候报错,ora-01652:无法通过8192(在表空间LGY_201905)扩展temp段。 诊断结论:split在拆分分区时至少需要两倍的空间。
问题八、vip转移之后,无法连接
rac 两个节点,节点一down掉之后,节点一的vip转移到节点二了,但是通过连接节点一的vip连接不到数据库,是不是把节点一的vip加到节点2的local_listener和remote_listener参数里面进行配置就可以实现? 诊断结论:节点一的vip飘到节点二了,通过节点一的VIP是无法连接数据库的,要么通过scanip,要么在客户端连接字符串中同时配两个节点的VIP并将failover设置成on。
问题九、Oracle sga内存如何分配
服务器内存251G,目前sga 为70G,想修改sga大小,如何取个合理的值,db_cache_size 和shared_pool_size如何取值,目前参数另外cdb-sga为70g想修改sga的大小,调整多少合适? 专家解答:1、参考老熊的文章如何给Oracle分配内存 modb.pro/db/article/0/126,2、如果SGA给的70G,可以先设置db_cache_size=35G,shared_pool_size=15G,后期根据数据库运行情况再调整,3、内存都是根据自己需求一步一步调整的,合适自己的系统就行。
问题十、sqlplus连接和dblink连接区别
请教下,sqlplus连接和dblink连接的区别是什么?例如,我用ora8/9的client,sqlplus可以连接12c,但在8的库中就不能dblink连接12c?非常感谢 诊断结论:sqlplus是一个客户端工具,而dblink是走的oracle内部连接,也就是两个完全不相干的东西。DBLINK跨版本连接有个兼容列表,可通过详情查看。
问题十一、oracle12c rac service TAF问题
通过srvcrl add service添加的service,但是再shutdown 实例1后 scv服务不自动切换到实例2,请问是什么原因? 诊断结论:从12c开始,通过sqlplus和srvctl这种人为的命令关闭数据库,集群并不会转移service,因为CRS觉得这是人为的例行事件。通过-failover或者直接kill pmon进程来测试service转移。
======== 问题一、为什么oracle不需要像mysql那样double write
为了解决 partial page write 问题 ,当mysql将脏数据flush到data file的时候, 先使用memcopy 将脏数据复制到内存中的double write buffer ,之后通过double write buffer再分2次,每次写入1MB到共享表空间,然后马上调用fsync函数,同步到磁盘上,避免缓冲带来的问题,在完成doublewrite写入后,在将double write buffer写入各表空间文件,这时是离散写入。这个过程是mysql double write。
问题:Oracle也是会出现类似的情况,为什么那么自信,不需要double write
诊断结论:这只能说是InnoDB的设计实现,不同的产品设计思路不同。又由于InnoDB只是一个存储引擎,考虑的情况还要复杂。MySQL的引擎制还导致redo和binlog共存。在未来Oracle主导之下,这些都会慢慢被改变。
问题二、truncate 分区表的时候非常慢3个小时没跑完会是什么原因
分区表有200多G,通过truncate 删除其中的一个分区 使用了 update global indexes选项,执行了3个小时没执行完成,分区表存在 global 索引,最终导致业务无法操作,kill掉truncate 分区表的session 恢复操作,请问
这3个小时是在等待 update global indexes 嘛?
kill 了 truncate session,业务恢复,表数据也没有删除,不是 truncate 不走 undo嘛,为什么 kill session 之后 能回滚了呢?
诊断结论:1. 从描述看,很大可能是阻塞在update global indexes上面了;可以结合ash看看。2. Truncate是DDL,记录不计redo,但是medata还是有undo的,你这个操作失败,自然就回滚了。
问题三、oracel 预定义处理语句转为MySQL写法
Oracle写法如下:
EXCEPTION WHEN OTHERS THEN V_RESULT := I_SERVICE_ID; RETURN(V_RESULT);
如何转换为MySQL语句写法?看网上说MySQL用 DECLARE,或者是否可以实现这种写法的转换?
诊断结论:类似这种写法:DECLARE EXIT HANDLER FOR SQLWARNING,NOT FOUND,SQLEXCEPTION,但是感觉MySQL的exit和Oracle的return还是有差距。
问题四、对大表字段设置为unuse有哪些影响?
oracle 11.2版本中对大表字段设置为unuse对后续的管理会产生哪些影响?
诊断结论:SET UNUSED再DROP UNUSED COLUMNS,是对于数据量很大的表的一种标准处理方法,所以,实际上大部分都是在SET UNUSED之后的几天内就会选择合适的时机,将这些列物理drop掉,因此不存在太多后续还要持续管理的机会吧。
问题五、rac心跳机制导致重启的问题
rac心跳机制包括网络和磁盘心跳,如遇节点间心跳超时(可能是由于服务器hang住或者网络出现问题),是否会重启非主节点的服务器?
节点重启是指集群服务重启还是服务器重启?如果服务器hang住,可以理解为不能对磁盘进行读写,磁盘心跳超时问题就一定会重启服务器?另外根据mos文档指出,11.2.0.2之后的版本,节点驱逐并不一定会导致服务器重启。
诊断结论:从11.2.0.2开始,当集群中的某个节点被驱逐(例如丢失网络心跳)或者该节点的ocssd.bin出现问题时,集群将不会直接重新启动该节点,而是首先尝试重新启动GI stack来解决问题,如果GI stack不能够在指定的时间内(short disk I/O timeout)完成graceful shutdown,才会重新启动节点。
关于网络心跳和磁盘心跳的机制请查看详情。
问题六、oracle goldengate实现一对多复制
目前一套oracle RAC做为源端,需要同步到同一机房的异机一份数据,还需要同步到异地机房一份数据,用一套ogg做一对多复制对源端性能影响大嘛?还是先同步到同一机房异机一份在从异机的目标端同步数据到异地?
像这种既有同机房异机数据同步,又异地同步,有更好的方案嘛?
诊断结论:一对多可以共用同一个抽取进程,只需多配一个投递进程就可以。
只要是同平台、同版本的Oracle容灾,基本上现在都用的ADG。但是由于源端为ibm小机,目标端为x86的服务器,没考虑用ADG,基本上能用的只有OGG了,不过OGG也不太稳定,特别是全库同步,DDL频繁的场景。
问题七、pdb级别的负载监控性能诊断
在12c以前可以通过例如dbtime的指标,判断数据库负载,在升级到12c,18c后,对于数据库的负载监控有没有一个指标,判断当前容器内那个pdb占用cdb资源最多?在使用oratop时只能看到cdb层面的负载信息,还有别的指标可以快速定位资源占比较高的pdb。
诊断结论:12.2可以生成pdb级别的awr报告,另外可以通过OEM CC监控查看各个PDB的负载情况。
问题八、重启多路径跟udev时,需要关闭数据跟数据库集群吗?
12c3节点rac在asm添加新的磁盘时,用的多路径,跟udev,修改multipath.conf de 重启多路径跟udev时,需要关闭数据跟数据库集群吗?
诊断结论:一般情况下重启udev和multipath是不会影响到集群的,原来的链路都在,且重启过程很快。但是重启过程中也可能存在链路超时或者原链路夯住导致集群重启的情况。还有网卡如果使用udev绑定也会存在节点重启的情况。另外multipath有reload命令。
问题九、oracle目录.cache文件是否可以清理
数据库所在的文件系统/u01使用率基本快满,根据find / -szie +500M -type f查看大于500M的文件进行清理,释放空间,询问您后缀为.cache文件可以清理吗,文件大小为500M,或者那些文件可以清理,我一一查找进行清理。
专家解答:不知道能不能删的文件,最好mv到其他地方,过一段时间后再删除。另外,文件系统慢不一定是大文件占用,可能是很多小文件,比如oracle的trace文件。通过du命令去找到占用空间较大的文件或目录,再考虑删除。
问题十、oracle 11g 怎么清理tnslsnr alert日志
请问一下,oracle 11g 怎样安全清理生产环境的alert日志。我想清理。diag/tnslsnr/ERP-DB/listener/alert
诊断结论:这些都是监听日志文件,如果不需要使用,可以直接删除所有带数字的xml文件。
另外禁用xml形式生成监听日志,可以通过在lisneter.ora中设置如下参数:
DIAG_ADR_ENABLED_LISTENER = OFF
另外如果是数据库alert日志可以先压缩备份alert日志,再执行:> alert_SID.log
问题十一、请问如何怎么快速定位存储过程中执行慢的语句
请问如何快速定位存储过程中执行慢的语句?
诊断结论:可以通过ASH 找到存储过程的主SQL然后依次找到递归的所有SQL,然后对这些SQL资源消耗做排序;存储过程记录日志;用10046跟踪运行存储过程的会话;用PLSQL DEVELOPER的Profiler调试,会展示每个SQL的运行时长。
可以尝试通过参数_disable_interface_checking = true再执行root.sh
问题二、XD上Oracle用户无法登录
问题描述:
Linux上操作系统 就算输入了正确的密码也不能登录 是有哪个配置文件决定?
其他几个节点oracle用户可以正常登录,某个节点oracle不能直接登录,用root改了密码也不行
专家解答:
这种限制默认在exadata上开启的,输错一次密码以后,此用户被锁10分钟;
查看错误次数:
pam_tally2 --user oracle
重置登录错误
pam_tally2 --user oracle --reset
过10分钟以后再登录,并且输入正确的密码。
将/etc/pam.d/sshd 和 /etc/pam.d/login这两个文件中的lock_time条目移除。即将auth required pam_tally2.so deny=5 onerr=fail lock_time=600修改为auth required pam_tally2.so deny=5 onerr=fail
问题三、RAC环境下启动实例报错ORA-01157
问题描述:
服务器未知原因故障恢复后,启动数据库实例报错,错误信息如下:
ALTER DATABASE OPEN / db agent // {2:38813:23181} / This instance was first to open Fri Mar 01 10:00:41 2019 Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl2\trace\dbw0_5844.trc: ORA-01157: ????/?????? 11 - ??? DBWR ???? ORA-01110: ???? 11: 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\X.DBF' ORA-27041: ?????? OSD-04002: ÎÞ·¨´ò¿ªÎļþ O/S-Error: (OS 2) ϵͳÕÒ²»µ½Ö¸¶¨µÄÎļþ¡£ Abort recovery for domain 0
专家解答
从报错看,这个是一个本地数据文件'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\X.DBF',应该是你们将RAC中的数据库文件误建到本地磁盘,所以其他实例无法启动,导致错误。
处理方法:
将此数据文件脱机,实例可以马上拉起,然后将此数据文件移动到共享存储,视数据文件大小会有一定时间不能读写;
使用rman copy到共享存储中,脱机做一次switch datafile to copy,不可用读写时间更小。但是完成迁移后实例才能拉起。
问题四、并行查询时禁用直接路径读
问题描述:
针对11g以及后面的版本的oracle数据库,设置了_serial_direct_read参数为never,禁用了direct path read,但是加了并行时设置的参数失效了,同样会走direct path read。
我的问题是有没有办法进行控制,让业务语句使用并行,不走direct path read,而是走db file scatt read全表扫描呢?
专家解答:
偶尔走走direct path read也还好,前段时间我们还特意把一个job强置direct path read
ALTER SESSION SET EVENTS '10949 TRACE NAME CONTEXT off'; alter session set events 'trace[NSMTIO] disk=medium'; alter session set "_very_large_object_threshold"=1; alter session set "_small_table_threshold"=1; alter session set "_serial_direct_read"=always; alter session set "_direct_read_decision_statistics_driven"=false;
一般通过设置10949事件,再结合_small_table_threshold、_very_large_object_threshold两个参数就完全禁用直接路径了
问题五、登录失败用户被锁
问题描述:
Oracle 11G用户登录失败,数据库大量library cache lock等待事件,随后用户被锁。
问题解答:
这种用户被锁的情况可能由如下3个因素引起:
- 11G密码延迟验证新特性
在 Oracle 11g 中,为了提升安全性,Oracle 引入了『密码延迟验证』的新特性。这个特性的作用是,如果用户输入了错误的密码尝试登录,那么随着登录错误次数的增加,每次登录前验证的时间也会增加,以此减缓可能对于数据库重复的口令尝试攻击。
但是对于正常的系统,由于口令的更改,可能存在某些被遗漏的客户端,不断重复尝试,从而引起数据库内部长时间的 Library Cache Lock的等待,这种情形非常常见。
如果遇到这一类问题,可以通过Event 28401关闭这个特性,从而消除此类影响,以下命令将修改设置在参数文件中:
ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
- 11G登录区分大小写新特性
在11g之前,密码不区分大小写,如果是从之前的老版本升级到11g,可能会遇到这个问题,可以将SEC_CASE_SENSITIVE_LOGON参数修改为FALSE不区分大小写,也可以修改应用的连接密码。
- 默认登录失败过多锁定账号
用户默认的profile中FAILED_LOGIN_ATTEMPTS为10,也就是用错误密码尝试登陆10次,就会锁定账户,可以通过修改参数避免用户被锁定(有可能存在用错误密码恶意攻击的情况)
alter profile default limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
问题六、删除的分区能够通过Flashback进行闪回吗?
问题描述:
通过DROP 删除的分区,能够通过 Flashback Drop 闪回吗?
专家解答:
在Oracle数据库中,单个删除的分区并不会进入回收站,全表删除的分区才可能和全表一起放入回收站。这是因为单个分区删除之后,是无法通过简单的闪回加入原分区表中,既然无法保证一致性,这个分区就不会进入回收站中。
以下这个测试展示了这个过程:
SQL> select * from v$version; BANNER CON_ID
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 PL/SQL Release 12.2.0.1.0 - Production 0 CORE 12.2.0.1.0 Production 0 TNS for Linux: Version 12.2.0.1.0 - Production 0 NLSRTL Version 12.2.0.1.0 - Production 0
SQL> CREATE TABLE enmotech ( 2 PartID integer not null, 3 CretTm date not null, 4 PartCD varchar2(2) not null 5 ) partition by list (partcd) automatic ( 6 partition pBJ values ('BJ'), 7 partition pCD values ('CD'), 8 partition pGZ values ('GZ'), 9 partition pSH values ('SH') 10 ); Table created.
SQL> insert into enmotech values (1, sysdate, 'KM'); 1 row created.
SQL> select partition_name from user_tab_partitions 2 where table_name = 'ENMOTECH';
PARTITION_NAME
PBJ PCD PGZ PSH SYS_P281
SQL> alter table enmotech drop partition SYS_P281 purge; alter table enmotech drop partition SYS_P281 purge * ERROR at line 1: ORA-14048: a partition maintenance operation may not be combined with other operations
SQL> alter table enmotech drop partition PSH; Table altered.
SQL> select * from user_recyclebin; no rows selected
SQL> drop table enmotech; Table dropped.
SQL> select object_name,original_name,type from user_recyclebin; OBJECT_NAME ORIGINAL_NAME TYPE
BIN$TflQLiTmWX7gUwo4qMBX+A==$0 ENMOTECH TABLE BIN$TflQLiTmWX7gUwo4qMBX+A==$0 ENMOTECH Table Partition BIN$TflQLiTmWX7gUwo4qMBX+A==$0 ENMOTECH Table Partition BIN$TflQLiTmWX7gUwo4qMBX+A==$0 ENMOTECH Table Partition BIN$TflQLiTmWX7gUwo4qMBX+A==$0 ENMOTECH Table Partition
很多时候,想当然的结果可能并不可信,实践操作方能出真知,多动手,是技术人的王道。
问题七:ORA-15025:could not open disk unable to open file
问题描述:
系统昨天下午5点报ORA-15025 could not open disk和ORA-27041 unable to open file,经排查,是因为/bin/oracle的group不正确导致。
客户的数据库版本是11.2.0.4 for Solairs,半年内没有做过任何改动。
请教大家:没有人为原因,系统未做变化,还有什么情况会导致oracle二进制文件的group发生变化?
问题解答:
这种文件权限变更排除人为因素后,一般都是安装补丁引起。
查看bin/oracle文件上次修改时间为2018年8月17日:
上次打补丁的时间也是这个时间:
Patch 18740837 :
applied on Fri Aug 17 18:53:49 CST 2018
Unique Patch ID: 20360406 Created on 18 Jul 2016, 18:56:51 hrs UTC
Bugs fixed: 18740837
所以这个属组应该是打补丁时被修改了,现在才报错的原因可能如下:
新连接才会报错,
通过Oracle用户启动的listener连过来会报错,通过grid用户启动的listener连过来不会报错。
问题八:数据文件处于recover状态ORA-00376
问题描述:
告警日志中出现ORA-00376,查看文件处于ercover状态,请问怎么处理,为什么会出现这样的情况?
ORA-12012: error on auto execute of job 4 ORA-00376: file 1084 cannot be read at this time ORA-01110: data file 1084: '/dev/vx/rdsk/dg_ora_4adb/vol_ora_4adb_dev1089' --datafile in recover mode sys >select name,status from v$datafile where name like '/dev/vx/rdsk/dg_ora_4adb/vol_ora_4adb_dev108%'; NAME STATUS
/dev/vx/rdsk/dg_ora_4adb/vol_ora_4adb_dev1089 RECOVER
========== 问题一、数据库夯ORA-00494: enqueue [CF] held for too long
listener不能访问,重启lsrnctl restart 无效,最后操作系统重启后正常,请帮忙分析下原因。
2019.01.30 02:41接到电话,反映不能使用,erp有画面报警;我发现db不能连接,lsnr 不能服务了。
查询日志发现:
Wed Jan 30
01:02:02 China Standard Time 2019
ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 4688'
waited for 'direct path read', seq_num: 10340
for 'rdbms ipc message' count=1 wait_time=3.009785 sec
DB: direct path read 这个值超时。2019-01-30 00:50:24时,有锁出现 :
sql::DELETE FROM XXX WHERE XXX<=TO_CHAR(SYSDATE-30,'YYYYMMDD')||' 0000000' AND ROWNUM<1001
有大量锁表:XXX,接着有XXXX表,用户FTRPT/sqlplus.exe_程序,XXXXX,XXXXX,一些job等进程锁,越来越多!造成连锁反映!
详细日志如下:
Wed Jan 30 01:02:02 China Standard Time 2019
Errors in file d:\oracle\product\10.2.0\admin\bdump_mmon_4704.trc:
ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 4688'
Wed Jan 30 01:02:02 China Standard Time 2019
System State dumped to trace file d:\oracle\product\10.2.0\admin\bdump_mmon_4704.trc
Killing enqueue blocker (pid=4688) on resource CF-00000000-00000000
by killing session 162.1
Killing enqueue blocker (pid=4688) on resource CF-00000000-00000000
by terminating the process
MMON: terminating instance due to error 2103
Wed Jan 30 01:12:05 China Standard Time 2019
USER: terminating instance due to error 1092
Wed Jan 30 01:12:05 China Standard Time 2019
...省略
诊断结论:表象是控制文件的enq,最终锁定到根源是闪回区清理进程RVWR,清空闪回区问题解决。
问题二、oracle rac ORA-600 : [qerltcUserIterGet_1] ORA-08103
今天通过工具查询表的数据突然报错,详细如下:
The statement failed with status 8103:
ORA-08103: object no longer exists for input row 1236.
(CC_OraStatement::rejectRecord, file CC_OraStatement.cpp, line 1,842)
诊断结论:客户环境中表空间为bigfile,设置了maxsize 700G,当前使用率已经99%,在resize为900G后,错误消失,确认为未知BUG引起。
问题三、数据库性能问题GC等待严重
早上7点左右,系统突然出现CPU警报,后连接失败,直接连接操作系统可以登录但操作特别卡顿,后现象消失,后排查,发现告警日志其中有两个可疑告警一个是VKTM另外一个是01555,目前还不清楚具体是什么原因造成?
诊断结论:GC相关的等待严重,首先可以通过参数禁用DRM避免频繁的GC操作。
问题四、ORA-0600:[kdsgrp1]
open数据库报错ORA -0600,详细日志如下:
Fri Feb 15 18:44:11 2019
Restarting dead background process CJQ0
Fri Feb 15 18:44:11 2019
CJQ0 started with pid=33, OS id=3992
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3992.trc (incident=210531):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3992.trc (incident=210532):
ORA-00600: internal error code, arguments: [600], [ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
], [], [], [], [], [], [], [], [], [], []
诊断结论:索引和表不一致导致,重建该对象所有的索引即可。
问题五、如何在做SPA的时候跳过某条SQL?
问题描述:11202升级12102做SPA性能测试,在12.1的库上执行dbmssqlpa.executeanalysis_task重演SQL时,一直卡在一个SQL上不动,麻烦问下有什么方法能暂时跳过这条SQL继续执行后面的任务吗?
诊断结论:正在执行的没办法干预,可以在开始之前从视图中删除相关SQL,或者设置超时时间。
问题六、SQL的PLAN_HASH_VALUE=0
很多时候发现SQL的PLANHASHVALUE=0,请问是什么意思?
诊断结论:这个是正常现象,主要发生在不带查询的INSERT/DELETE语句、带绑定变量的SQL仅进行了解析而没有实际执行。
问题七、awr report SQL 执行次数为空
如图,为什么在AWR报告中某些 SQL的 执行次数为空?
诊断结论:这个问题是多版本导致的,当 VERSION_COUNT 超过200时,Oracle 放弃一些指标的记录。
问题八、 logmnr未显示全部dml操作
在测试挖掘日志时,执行了多次DML操作,但是挖掘后发现只有1条DML语句,请问是什么原因?
诊断结论:如果不加附加日志,有的操作可能挖掘不出来。
========= 问题一、RMAN-20039: format requires %c when duplexing
备份时报错:
RMAN- 00571 : ===========================================================
RMAN- 00569 : =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN- 00571 : ===========================================================
RMAN- 03009 : failure of backup command
RMAN- 20039 : format requires %c when duplexing
备份数据文件不加%C就会报错,加%C有两份一样的?
----备份脚本
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
crosscheck backup;
sql 'alter system archive log current' ;
backup spfile format '/bak/backup/spfile%T%s%p%c' ;
backup database format '/bak/backup/dbbk0%d%t%u%s%p';
backup as compressed backupset incremental level 0 database format '/bak/backup/dbbk0%d%t%u%s%p' ;
sql 'alter system archive log current' ;
backup archivelog all format '/bak/backup/arc%T%s%p%c'
delete all input;
backup current controlfile format '/bak/backup/cntrl%T%s%p%c' ;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
诊断结论:如果设置不冗余就不需要加c%,否则就会出现你的报错。如果设置了冗余必须加%c,那么也就会产生相应的备份片。
问题二、RAC实例无法启动ORA-01157 ORA-01110 ORA-27041 OSD-04002
服务器未知原因故障恢复后,启动数据库实例报错,错误信息如下:
ALTER DATABASE OPEN / db agent // { 2 : 38813 : 23181 } /
This instance was first to open
Errors
in file D:\APP...\orcl2_ora_7780.trc:
ORA- 01157 : ????/?????? 11
- ??? DBWR ????
ORA- 01110 : ???? 11 : 'D:\APP...\NXPT.DBF'
ORA- 1157 signalled during: ALTER DATABASE OPEN / db agent // { 2 : 38813 : 23181 } /...
Fri
Mar
01
10 : 00 : 59
2019
Shutting down instance (abort)
License high water mark = 2
USER (ospid: 13460 ): terminating the instance
Instance terminated by USER, pid = 13460
Fri
Mar
01
10 : 01 : 16
2019
Instance shutdown complete
Fri
Mar
01
10 : 34 : 34
2019
诊断结论:从报错看,这个是一个本地数据文件'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\NTBS.DBF',应该是将RAC中的数据库文件误建到本地磁盘,所以其他实例无法启动,导致错误。
问题三、Oracle 12.2 expdp 非常慢
我有一个12.2.0.1的库,非容器单实例。使用expdp导出,导出文件总共不到4G,但要花将近6个小时。alert没有任何报错。新库基本都是空的分区表。
诊断结论:请先尝试收集系统、数据字典统计信息。另外可以尝试如下方法: 1、 最小配置stream_pool_size最小到256M,可能的话设置512M或者1GB;
2、加大expdp的并行度,如果CPU压力不大,可以设置为CPU核数的1半或更多;
3、EXCLUDE=GRANT exclude = statistic
4、METRICS=YES
5、如果导出停留在TABLE_DATA阶段,并且上述处理无效,可以打补丁Bug 28100495
问题四、RAC CTSS状态观察模式,时间不同步
2节点RAC,其中一台物理故障。修复后RAC报CTSS状态为观察模式,时间不同步
Oracle
Database
12c
Enterprise
Edition
Release
12.2 . 0.1 .
0
64bit
Production
0
PL/SQL Release
12.2 . 0.1 .
0
Production
0
CORE 12.2 . 0.1 . 0
Production
0
TNS for
Linux : Version
12.2 . 0.1 .
0
Production
0
NLSRTL Version
12.2 . 0.1 .
0
Production
0
CPUs : 56
Cores : 28
Sockets : 2
内存 188.26G
诊断结论:CTSS状态为观察模式通常是因为本地的NTP服务启动了。所以可以先检查一下新修复的那台服务器上是不是默认启动了NTP。如果是,禁用掉通常就可以了。
问题五、OGG-00665 OCI Error (status = 3114-ORA-03114)
OGG 同步序列,进程ABENDING,重启进程问题仍然存在,数据库正常,其他ogg的进程正常,且排除掉该序列的同步后进程可以正常启动
2019
03
07
17 : 06 : 39 ERROR OGG- 00665
Oracle
GoldenGate
Delivery
for
Oracle , rptsqe.prm: OCI Error describe for query
(status = 3114 -ORA- 03114 : not connected to ORACLE), SQL<select status, deferrable from dba_constraints where owner =UPPER( 'BOSDATA' ) and table_name= 'TASK_SEQ' and constraint_type = 'P'
.
2019
03
07
17 : 06 : 39 ERROR OGG- 01668
Oracle
GoldenGate
Delivery
for
Oracle , rptsqe.prm: PROCESS ABENDING.
诊断结论:
1、我昨天查了很多资料,有一个同样的报错,RAC环境,OGG版本也是11.2,不过是抽取进程,说是重启集群后问题消失,所以以后再遇到SEQ同步报错了,可以尝试下。
2、有可能是复制进程中的这个参数引起,或者未知BUG
DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH
3、一般情况下目标端不会使用sequence,所以可以考虑排除所有SEQ的同步
4、升级OGG版本,至少12
问题六、数据库大量僵尸进程未自动清理
数据库出现客户端连接不上,查看alert日志
Wed
Mar
13
09 : 21 : 50
2019
ORA- 00020 : No more process state objects available
ORA- 20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA- 20 errors.
Process J002 submission failed with error = 20
kkjcre1p: unable to spawn jobq slave process
Errors
in file /export/home/u01/app/oracle/diag/rdbms///trace/_cjq0_25517.trc:
此时查看 v$process 为738个进程,参数process进程数设置为800.以下语句查询结果为380
select count(*) from v$process where addr not
in ( select paddr from v$session);
杀掉这些进程,客户端可以正常连接。总体进程维持在400左右。
问题点:1、pmon为何没有清理掉这380个没有会话的进程。2、是否有参数设置pmon清除僵尸进程的条件,比如空闲时间之类的。
诊断结论:一般kill session后会出现这种情况,但是不会出现几百个的情况。首先请检查是否存在频繁kill session的操作,和应用建立连接、断开连接的方式是否规范;其次,临时将数据库的process参数调高,避免应用出错。最后,提供一个自动清理僵尸process的脚本。
问题七、oracle 10gR2 expdp报错ORA-00376
expdp导出报错
Connected to: Oracle
Database
10g
Enterprise
Edition
Release
10.2 . 0.1 .
0
64bit
Production
With the Partitioning , OLAP and Data
Mining options
ORA- 39001 : invalid argument value
ORA- 00376 : file 53 cannot be read at this time
ORA- 01110 : data file 53 : '/oracle/oracle/oradata/xxx/xxx.dbf'
53号数据文件由于硬件故障导致文件损坏,无法修复。库为非归当模式,所以将53号数据文件offline drop,将库强制启起来了。现在备份的时候报错了,导出命令如下;
expdp user/passwd parfile=cfg_except_tables.cfg
cat cfg_except_tables.cfg
EXCLUDE=TABLE
COMPRESSION=METADATA_ONLY
DIRECTORY=DPUMP_DIR1
DUMPFILE=auto_backup.dmp
LOGFILE=auto_backup.log
通过如下SQL查为空,我把53号数据文件已经清空了,但还是报上面的错
select
- from dba_extents where file_id= 53
诊断结论:ASSM 管理模式下dba_extents是存放在数据文件中的,脱机文件是看不到对象的。因为你这种报错说明53号文件还是有对象存在的,原则上是可以跳过这些对象导出正常的对象的,要确认53号的对象需要使用如下SQL。
问题八、oracle 10G 建立dblink 访问9i的远程库执行sql很慢
oracle 10G 建立了dblink 连接9i 数据库 执行了 select from table --table中只有两条记录 耗时 20s 两台服务器间网络正常 再9i 直接执行sql 很快 还可能是什么原因呢?查看等待事件为 SQLNet message from dblink
诊断结论:是因为 10g 的服务器操作系统版本是 windows server 2012 从windows server 2008 以后 增加了 接收窗口自动调谐级别 功能导致,调整接收窗口自动调谐级别解决。
问题九、安装rac,IO有什么要求?
安装rac,IO有什么要求么?参考过 rac安装有最佳实践,但是官方并没有指出IO具体参考范围(IOPS)。所以,想咨询下,贵司有没有针对RAC安装对IO的要求或IO范围参考值?我想对比下自己的存储IO性能,看是否达标。
诊断结论:是因为 10g 的服务器操作系统版本是 windows server 2012 从windows server 2008 以后 增加了 接收窗口自动调谐级别 功能导致,调整接收窗口自动调谐级别解决。
问题十、双机切换后TNS-12537 ORA-609
数据库是Oracle,操作系统是Windows,高可用是rose双机。把主服务器切换到备用服务器时,会出现程序连接不上,报错如下:
但是切回来以后就正常了,经过查看日志,发现如下报错:
Fatal NI connect error 12537 , connecting to:
(LOCAL=NO)
VERSION INFORMATION:
TNS for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Oracle
Bequeath NT Protocol
Adapter
for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Windows NT TCP/IP NT Protocol
Adapter
for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Time :
12
3 月 - 2019
20 : 15 : 08
Tracing not turned on.
Tns error struct:
ns main err code:
12537
TNS- 12537 : TNS: 连接关闭
ns secondary err code:
12560
nt main err code:
0
nt secondary err code:
0
nt OS err code:
0
opiodr aborting process unknown ospid ( 10796 ) as a result of ORA- 609
Tue
Mar
12
20 : 15 : 28
2019
请问是什么原因导致的呢?怎么去解决这个问题呢
诊断结论:检查双机各自监听日志,发现节点监听日志4G,清空问题节点监听日志问题解决。
问题十一、oracle 导入数据报ORA-39242错误
提示由于表属性原因,无法导入入成功
ORA- 39242 : Unable to export/import TABLE_DATA: … due to table attributes.
诊断结论:检查表上面索引的状态是否正常,如果不是VALID就做下rebuild再导入
========
问题一、RMAN-20039: format requires %c when duplexing
备份时报错:
RMAN- 00571 : ===========================================================
RMAN- 00569 : =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN- 00571 : ===========================================================
RMAN- 03009 : failure of backup command
RMAN- 20039 : format requires %c when duplexing
备份数据文件不加%C就会报错,加%C有两份一样的?
----备份脚本
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
crosscheck backup;
sql 'alter system archive log current' ;
backup spfile format '/bak/backup/spfile%T%s%p%c' ;
backup database format '/bak/backup/dbbk0%d%t%u%s%p';
backup as compressed backupset incremental level 0 database format '/bak/backup/dbbk0%d%t%u%s%p' ;
sql 'alter system archive log current' ;
backup archivelog all format '/bak/backup/arc%T%s%p%c'
delete all input;
backup current controlfile format '/bak/backup/cntrl%T%s%p%c' ;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
诊断结论:如果设置不冗余就不需要加c%,否则就会出现你的报错。如果设置了冗余必须加%c,那么也就会产生相应的备份片。
问题二、RAC实例无法启动ORA-01157 ORA-01110 ORA-27041 OSD-04002
服务器未知原因故障恢复后,启动数据库实例报错,错误信息如下:
ALTER DATABASE OPEN / db agent // { 2 : 38813 : 23181 } /
This instance was first to open
Errors
in file D:\APP...\orcl2_ora_7780.trc:
ORA- 01157 : ????/?????? 11
- ??? DBWR ????
ORA- 01110 : ???? 11 : 'D:\APP...\NXPT.DBF'
ORA- 1157 signalled during: ALTER DATABASE OPEN / db agent // { 2 : 38813 : 23181 } /...
Fri
Mar
01
10 : 00 : 59
2019
Shutting down instance (abort)
License high water mark = 2
USER (ospid: 13460 ): terminating the instance
Instance terminated by USER, pid = 13460
Fri
Mar
01
10 : 01 : 16
2019
Instance shutdown complete
Fri
Mar
01
10 : 34 : 34
2019
诊断结论:从报错看,这个是一个本地数据文件'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\NTBS.DBF',应该是将RAC中的数据库文件误建到本地磁盘,所以其他实例无法启动,导致错误。
问题三、Oracle 12.2 expdp 非常慢
我有一个12.2.0.1的库,非容器单实例。使用expdp导出,导出文件总共不到4G,但要花将近6个小时。alert没有任何报错。新库基本都是空的分区表。
诊断结论:请先尝试收集系统、数据字典统计信息。另外可以尝试如下方法: 1、 最小配置stream_pool_size最小到256M,可能的话设置512M或者1GB;
2、加大expdp的并行度,如果CPU压力不大,可以设置为CPU核数的1半或更多;
3、EXCLUDE=GRANT exclude = statistic
4、METRICS=YES
5、如果导出停留在TABLE_DATA阶段,并且上述处理无效,可以打补丁Bug 28100495
问题四、RAC CTSS状态观察模式,时间不同步
2节点RAC,其中一台物理故障。修复后RAC报CTSS状态为观察模式,时间不同步
Oracle
Database
12c
Enterprise
Edition
Release
12.2 . 0.1 .
0
64bit
Production
0
PL/SQL Release
12.2 . 0.1 .
0
Production
0
CORE 12.2 . 0.1 . 0
Production
0
TNS for
Linux : Version
12.2 . 0.1 .
0
Production
0
NLSRTL Version
12.2 . 0.1 .
0
Production
0
CPUs : 56
Cores : 28
Sockets : 2
内存 188.26G
诊断结论:CTSS状态为观察模式通常是因为本地的NTP服务启动了。所以可以先检查一下新修复的那台服务器上是不是默认启动了NTP。如果是,禁用掉通常就可以了。
问题五、OGG-00665 OCI Error (status = 3114-ORA-03114)
OGG 同步序列,进程ABENDING,重启进程问题仍然存在,数据库正常,其他ogg的进程正常,且排除掉该序列的同步后进程可以正常启动
2019
03
07
17 : 06 : 39 ERROR OGG- 00665
Oracle
GoldenGate
Delivery
for
Oracle , rptsqe.prm: OCI Error describe for query
(status = 3114 -ORA- 03114 : not connected to ORACLE), SQL<select status, deferrable from dba_constraints where owner =UPPER( 'BOSDATA' ) and table_name= 'TASK_SEQ' and constraint_type = 'P'
.
2019
03
07
17 : 06 : 39 ERROR OGG- 01668
Oracle
GoldenGate
Delivery
for
Oracle , rptsqe.prm: PROCESS ABENDING.
诊断结论:
1、我昨天查了很多资料,有一个同样的报错,RAC环境,OGG版本也是11.2,不过是抽取进程,说是重启集群后问题消失,所以以后再遇到SEQ同步报错了,可以尝试下。
2、有可能是复制进程中的这个参数引起,或者未知BUG
DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH
3、一般情况下目标端不会使用sequence,所以可以考虑排除所有SEQ的同步
4、升级OGG版本,至少12
问题六、数据库大量僵尸进程未自动清理
数据库出现客户端连接不上,查看alert日志
Wed
Mar
13
09 : 21 : 50
2019
ORA- 00020 : No more process state objects available
ORA- 20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA- 20 errors.
Process J002 submission failed with error = 20
kkjcre1p: unable to spawn jobq slave process
Errors
in file /export/home/u01/app/oracle/diag/rdbms///trace/_cjq0_25517.trc:
此时查看 v$process 为738个进程,参数process进程数设置为800.以下语句查询结果为380
select count(*) from v$process where addr not
in ( select paddr from v$session);
杀掉这些进程,客户端可以正常连接。总体进程维持在400左右。
问题点:1、pmon为何没有清理掉这380个没有会话的进程。2、是否有参数设置pmon清除僵尸进程的条件,比如空闲时间之类的。
诊断结论:一般kill session后会出现这种情况,但是不会出现几百个的情况。首先请检查是否存在频繁kill session的操作,和应用建立连接、断开连接的方式是否规范;其次,临时将数据库的process参数调高,避免应用出错。最后,提供一个自动清理僵尸process的脚本。
问题七、oracle 10gR2 expdp报错ORA-00376
expdp导出报错
Connected to: Oracle
Database
10g
Enterprise
Edition
Release
10.2 . 0.1 .
0
64bit
Production
With the Partitioning , OLAP and Data
Mining options
ORA- 39001 : invalid argument value
ORA- 00376 : file 53 cannot be read at this time
ORA- 01110 : data file 53 : '/oracle/oracle/oradata/xxx/xxx.dbf'
53号数据文件由于硬件故障导致文件损坏,无法修复。库为非归当模式,所以将53号数据文件offline drop,将库强制启起来了。现在备份的时候报错了,导出命令如下;
expdp user/passwd parfile=cfg_except_tables.cfg
cat cfg_except_tables.cfg
EXCLUDE=TABLE
COMPRESSION=METADATA_ONLY
DIRECTORY=DPUMP_DIR1
DUMPFILE=auto_backup.dmp
LOGFILE=auto_backup.log
通过如下SQL查为空,我把53号数据文件已经清空了,但还是报上面的错
select
- from dba_extents where file_id= 53
诊断结论:ASSM 管理模式下dba_extents是存放在数据文件中的,脱机文件是看不到对象的。因为你这种报错说明53号文件还是有对象存在的,原则上是可以跳过这些对象导出正常的对象的,要确认53号的对象需要使用如下SQL。
问题八、oracle 10G 建立dblink 访问9i的远程库执行sql很慢
oracle 10G 建立了dblink 连接9i 数据库 执行了 select from table --table中只有两条记录 耗时 20s 两台服务器间网络正常 再9i 直接执行sql 很快 还可能是什么原因呢?查看等待事件为 SQLNet message from dblink
诊断结论:是因为 10g 的服务器操作系统版本是 windows server 2012 从windows server 2008 以后 增加了 接收窗口自动调谐级别 功能导致,调整接收窗口自动调谐级别解决。
问题九、安装rac,IO有什么要求?
安装rac,IO有什么要求么?参考过 rac安装有最佳实践,但是官方并没有指出IO具体参考范围(IOPS)。所以,想咨询下,贵司有没有针对RAC安装对IO的要求或IO范围参考值?我想对比下自己的存储IO性能,看是否达标。
诊断结论:是因为 10g 的服务器操作系统版本是 windows server 2012 从windows server 2008 以后 增加了 接收窗口自动调谐级别 功能导致,调整接收窗口自动调谐级别解决。
问题十、双机切换后TNS-12537 ORA-609
数据库是Oracle,操作系统是Windows,高可用是rose双机。把主服务器切换到备用服务器时,会出现程序连接不上,报错如下:
但是切回来以后就正常了,经过查看日志,发现如下报错:
Fatal NI connect error 12537 , connecting to:
(LOCAL=NO)
VERSION INFORMATION:
TNS for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Oracle
Bequeath NT Protocol
Adapter
for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Windows NT TCP/IP NT Protocol
Adapter
for
64 -bit Windows : Version
11.2 . 0.1 .
0
Production
Time :
12
3 月 - 2019
20 : 15 : 08
Tracing not turned on.
Tns error struct:
ns main err code:
12537
TNS- 12537 : TNS: 连接关闭
ns secondary err code:
12560
nt main err code:
0
nt secondary err code:
0
nt OS err code:
0
opiodr aborting process unknown ospid ( 10796 ) as a result of ORA- 609
Tue
Mar
12
20 : 15 : 28
2019
请问是什么原因导致的呢?怎么去解决这个问题呢
诊断结论:检查双机各自监听日志,发现节点监听日志4G,清空问题节点监听日志问题解决。
问题十一、oracle 导入数据报ORA-39242错误
提示由于表属性原因,无法导入入成功
ORA- 39242 : Unable to export/import TABLE_DATA: … due to table attributes.
诊断结论:检查表上面索引的状态是否正常,如果不是VALID就做下rebuild再导入
======== 问题一、impdp中断后,监听多出SYS$SYS.KUPC,无法清理
如图,serveice中多了很多KUPC:
使用DELETE_SERVICE包也删除不掉
begin DBMS_SERVICE.DELETE_SERVICE(service_name=>'SYS$SYS.KUPC$S_1_20181112170257'); end; /
目前只在节点1出现,想请教一下怎么清理这种无效的连接服务?
诊断结论:参考How to delete SYS.KUPC$ service after kill datapump job,先要STOP_QUEUE,再DROP_QUEUE即可。
问题二、关于RAC的VIP是如何漂移的问题?
请教个问题,我的RACIP配置如下:
192.168.56.10 rac1 192.168.56.11 rac2 10.10.10.10 rac1-priv 10.10.10.11 rac2-priv 192.168.56.12 rac1-vip 192.168.56.13 rac2-vip 192.168.56.14 rac-scan
现在我模拟场景,RAC1主机宕机,RAC1-VIP漂移到RAC2节点。数据库的服务名是ORCL
我通过192.168.56.13去连接ORCL服务名是可以的,通过192.168.56.12去连接服务名是不可连接的,这种情况是不是正常的现像??
诊断结论:rac的vip在不发生故障的时段,连接数据库是正常。一旦发生漂移,这个vip漂到别的节点,就是不可以连接数据库的。这是正常现象。vip在这里的意义是迅速给app反馈信息,让app去连别的vip。如果没有vip,那app要等待60秒才能等到tcp超时。这个时间是不允许的 。
问题三、expdp导出含lob字段某一张大表报错ora-01555
11201,expdp,每周出现2-3次ora01555
1、undo表空间空间充足 2、undo_retention和dba_lobs中表的retention很大,远大于v$undo中maxquerylen值。
3、lob段没有坏块 请问还有其他原因吗,如何排查?
诊断结论:lob的undo不是存放在undo表空间的。他是跟lob数据所在表空间存在一起的。这个没有什么太好的办法导出,一般是建议对一个表按照rowid进行切分,划分成多个片来导出。
问题四、RMAN是否可以跨平台恢复
在aix主机的rman备份可以在x86的linux主机上恢复吗?
诊断结论:可以恢复,但是存在大小字节序问题,需要RMAN convert from platform 'AIX-Based Systems (64-bit)'的方式转换字节序,并做恢复。
问题五、sqlplus连接ASM实例connected to an idle instance
oracle11.2.0.3,rac集群资源都正常,grid环境变量也没问题,但是sqlplus / as sysasm连接ASM实例的时候显示connected to an idle instance。数据库实例可正常连接。
诊断结论:重置环境变量ORACLE_HOME: 去掉 /u01/ora11/grid/ 中的"/" 。
问题六、oracle表空间碎片整理
oracle的表空间碎片如何查询,到什么样的程度oracle表空间中的碎片需要整理?
诊断结论:首先要收集表的统计信息,然后通过统计信息计算出实际空间与user_extents占用的空间相比,一般碎片超过25%就可以考虑shrink或者move整理表碎片,相关SQL请查看详情。
问题七、生产库的数据不翼而飞,求原因
我想咨询一下,oracle 11.2.0.4.0开了归档,没有启用追加日志模式,能做日志挖掘吗? 或者这样说:生产库的一个表数据突然不见了,用了闪回查询将数据恢复了。现在只启用了归档日志,领导需要汇报具体原因。我不知道从何下手。 求助各位专家。
诊断结论:根据我的测试,11.2.0.4没有开supplymental logging也是有会话信息的,因为_TRANSACTION_AUDITING参数默认是TRUE,redo就会包含会话信息。但是我测试结果发现会丢失部分记录信息(比如delete 10条只会miner到6条,打开supplymental logging则是完整的),所有你可以logmnr尝试下。
问题八、各地数据汇总格式问题
从多家二级医院向上级数据中心汇总数据,有的二级医院是oracle库,有的二级医院是sqlserver库,让这些二级医院导出什么格式的数据包,方便上级数据中心汇总,数据中心使用的是oracle库,谢谢
诊断结论:如果是多表可以考虑ogg,支持多种数据库的实时数据同步,也可以用java、python编写一个导出和导入的小程序或者脚本。数据格式最简单的就是纯文本,对应目标端的表结构,一行一条数据,导入oracle很方便,也有很多方法。
问题九、触发器中是否可以提交事务
请问触发器中是否可以提交事务?
诊断结论:默认情况下,触发器不允许commit,随触发该触发器的事物同时提交或者回滚。在8i之后可以使用自治事物在触发器中commit,相当于事物的子事物,示例请查看详情。
问题十、shrink 8t的大表很慢,含有blob段
有个大表,已经清理了95%.需要shrink,cascade发现影响业务。分两步回收,compat,还有shrink,这两个会影响业务吗?回收时间各多久?
诊断结论:首先lob字段不会级联shrink,需要单独处理。如果没有业务停机时间,可以考虑你说的分两步,先SHRINK SPACE COMPACT再SHRINK SPACE CASCADE,另外可以考虑不加CASCADE减少时间,然后再单独处理相关索引,至于操作时间与数据量和在线业务量有关,建议测试库测试大致操作的时间。
问题十一、rac-rac双节点DG,主备手动切换之后新主库状态为RESOLVABLE GAP
关闭主备2节点切换角色后,检查状态,发现主库的状态为RESOLVABLE GAP;有哪些情况会产生该状态?以及解决办法。
诊断结论:备库目前还有日志没有同步完,需要手工将未同步的redo日志刷新到备库,并让备库应用这些日志,如果存在归档日志未应用,需要拷贝归档日志到备库并register到备库并应用。总之,在切换之前先检查同步是否完成,主库状态为to_standby再进行switchover操作。
======== 问题一、总结不走索引的常见情况
请问SQL什么情况下不走索引,帮忙总结一下。
诊断结论:
谓词中出现NULL过滤条件
谓词中出现函数转换导致没有走索引;
统计信息不准确;
在WEHRE条件中like中关键字两边都有"%";
查询条件值与列类型不一致;
查询条件列进行数学运算;
索引列在 IN 或者多个 OR 语句中;
是否使用的是不可见索引等。
问题二、sid和服务名,和tns别名的区别
sid和服务名,和tns别名的区别。之间是如何区分的?
诊断结论:拿两节点RAC的情况说明下吧:db1/db2为两个节点的sid,是两个节点数据库实例的唯一名称,与instance_name参数一致分别为db1/db2;db为服务名,方便应用连接数据库,与service_name参数一致两个节点为db;tns别名为在tnsnames.ora文件中自定义的别名,应用使用此别名连接数据库,如连接字符串为db,tns别名设置为crmdb,应用连接直接使用crmdb即可,方便辨别。
问题三、oracle DG failover后更改flashback操作的并行度
我这边遇到一个问题,想改变DG在failover后主库进行的flashback操作时的并行度,就是主库执行flashback to scn xxxxxx的命令所默认的并行度。我们观察到默认是128的parallel,但是由于某些原因,我们可能需要降低并行度,请问有什么参数可以控制吗?
我在网上到处都找不到相关文章,也无法从专业书籍里找到类似的研究。
诊断结论:经测试,flashback的并行度默认受CPU_COUNT参数控制。
问题四、MySQL体系结构中一直说也有SGA和PGA,请问具体位置在哪?
MySQL 体系结构中一直说也有 SGA 和 PGA,5.7 的官方文档也没有描述,那请问是在 InnoDB 中,还是具体位置在哪?
诊断结论:一般而言,如果对应于Oracl的这两个对应概念,SGA指的是以Innodb buffer pool,innodb字典,frm缓存等公用缓存组合出来的内存区域。PGA指的是以sort buffer,binlog buffer等线程专用内存组合成的内存区域。
问题五、oracle 11g支持IPV6吗?
公司最近在做IPV6的改造方案,我想问下对现有oracle数据库会有什么影响吗?公司主要用oracle11g和oracle12c。
诊断结论:11gr2支持单节点使用ipv6,12cR1支持public IP的ipv6(内联不支持),12cR2完全支持。
问题六、move表后,表空间可用300G,但是无法resize
由于磁盘组冗余度不符合安全要求,对各表空间(Bigfile)进行清理后尝试做数据文件的resize操作,过程如下:
新建表空间,作为数据中转用
MOVE大部分表(90%)至其新建表空间后MOVE回原有表空间,从而减少数据库碎片
收缩对应的数据文件在MOVE回原有表空间后重建相关索引,统计发现可用空间提高40G左右,有效的减少了碎片,但是无法resize数据文件到MOVE之后的大小。
诊断结论:实际上按照你的操作思路,可以move 100%的表都去另外一个表空间,然后直接drop掉原有表空间就可以了。如果存在没MOVE表的EXTENTS已经扩展到了数据文件的边缘,是没办法resize的。
问题七、如何快速预估表的行数
请问有哪些方法可以快速预估表的行数?
诊断结论:
并行查询count(*);
统计信息num_rows字段;
sample block() 取样查询。
问题八、RAC配置多个public网络
现在有一个需求,客户有两个网络,都需要连接数据库,需要配置两个public网络,请问如何配置。
诊断结论:首先官方建议不要在安装Oracle时配置多个public网络,等集群安装完之后再通过命令去添加public网络,测试步骤详见小程序文章。
问题九、关于分区表全局分区索引和全局不分区索引的效率
按月分区的分区表,单个分区表记录大约1500万,对于非分区键上的索引来说,是建全局分区索引还是不分区索引效率高?分区索引按照列HASH分区还是有其它方式?
专家解答:LOCAL索引的最大好处是在进行分区操作,比如TRUNCATE PARTITION, DROP PARTITION时,不会出现索引INVALID的情况,不影响索引的可用性。由于GLOBAL索引所有的数据存储在一起,因此当执行分区操作的时候,索引会失效,而如果想要保证所有的有效性,需要增加UPDATE (GLOBAL) INDEXES语句,这使得原本很快结束的DDL操作,由于需要维护全局索引而变得非常缓慢,且产生大量的日志。12c之后,全局索引的异步同步可以缓解全局索引的这个问题。
而GLOBAL索引的好处是,在表变为分区后,只要索引仍然是GLOBAL索引,通过索引访问数据的效率就不会下降。由于LOCAL索引的索引分区数量和表分区数量相等,如果访问一个LOCAL索引,且查询条件未指定分区键值,这时Oracle将会扫描所有的索引分区。而GLOBAL索引则只需要访问一棵索引树,当分区数量众多时,二者的效率差异是非常明显的。
当然,它们还有其他的区别。就用户而言,判断需要GLOBAL还是LOCAL索引,最主要看是否会频繁进行分区的维护操作,比如定期删除老分区,如果是的话,LOCAL是最佳选择,如果不是,则考虑GLOBAL索引。
问题十、同样的SQL,变量不同执行计划不一样
一条相似的SQL语句,变量值不同,执行计划不同。SQL如下:
select order_no from OWNER.TAB_NAME where pa_id = '10221178' and ORDER_TIME > SYSDATE - 120;(异常) select order_no from OWNER.TAB_NAME where pa_id = '10221178' and ORDER_TIME > SYSDATE - 150;(正常)
诊断结论:120的trc文件可以看到成本最低的是bit map and的执行路径,120的trc文件可以看到成本最低的是bit map and的执行路径。至于为什么两个执行计划不一样,应该和IDX_XXX索引选择率变化导致bit map的成本增加有关。
问题十一、oralce 11g RAC 系统时间同步问题
Oralce 11g RAC 系统时间慢慢的就比正常时间慢了,如何解决呢,rac节点之间时间是同步的,但是比实际时间慢出30分钟,这个问题如何避免呢,rac本身自带了时间同步的服务,还可以在外面再加ntp服务吗?
诊断结论:一般都是在两节点开启NTP服务,同步外部NTP服务器的时间,实践中都是配置NTP服务。如果启用NTP服务,集群自己的ctss服务会停止,没有影响。如果需要启用NTP,特殊情况下可能会导致节点重启,保险起见,可以到下次停机窗口一起变更。
问题一、对于temp表空间爆满情况,怎么处理?
undo temp表空间很大,我的思路是增大表空间大小或者,新建个temp1,然后默认的制定新建temp1,但是我感觉这样还会满。正常思路怎么处理这种undo temp表空间大问题?
诊断结论:最根本的方法是去优化占用temp和undo多的sql,比如排序多的、执行时间长的sql等等。结合自己的环境设置合理的temp和undo空间,一般是给核心业务用户单独的temp表空间,以免其他误操作对核心业务影响。另外这两个表空间是不会释放的,也就是随着业务的运行使用率会越来越大,最后接近100%,一般如果没有报ora-01555和无法扩容temp表空间的错误可以忽略表空间使用率。
问题二、extended cluster在一个站点故障时,存活站点内实例的处理流程
存活站点实例处理此故障的流程,以及预估一般需要多长时间恢复服务能力。
诊断结论:以两种典型故障为例,1、两边数据库均承载业务,任何一边发生故障,则由另一边承载所有业务,无须进行主备站点切换。故障站点原先承载的用户会话在几分钟内由其他存活节点接管,体验上会有一些卡顿,这个与普通RAC节点故障一样,某个实例发生故障后,集群reconfiguration,应用TAF。2、若站点间的心跳线中断,则由第三站点的仲裁盘决定驱逐哪个站点,哪个站点存活。被驱逐站点原先承载的用户在体验上会有几分钟的卡顿。
问题三、Oracle 12c OEM upgrade to 13c
升级本端服务器agent 流程。
诊断结论:这个要看具体的版本,就算从12.1.0.1到12.1.0.5都需要先升级到12.1.0.3再升级到12.1.0.5,12到13直接升级支持最低版本是12.1.0.5,其他都需要先升级到中间版本。GC升级完之后,直接在GC管理页面升级agent即可。
问题四、Oracle数据库第一次访问卡死
系统页面后台连接oracle数据库,第一次访问系统时候,页面框架都能出来,但是需要调数据库显示数据的地方一直在转圈,也不报错,再次刷新页面的时候数据就出来,请问一下这是数据库什么参数设置影响的吗?
诊断结论:这个还是得从应用着手,debug打开看下哪里出现了问题。对于数据库来说,只是存在第一次执行SQL需要解析、读取磁盘数据缓存到内存,第二次执行就直接从内存取数据,速度上会快一些。另外这个现象很有可能是连接到数据库的长连接由于长时间未进行数据交互,被网关或防火墙断开,因此第一次访问的时候会等待一个TNS超时。可以让应用增加日志的输出,看看问题是否发生在获取数据库连接后运行第一个SQL的地方。如果是这个问题,解决思路是修改网关或防火墙的配置,避免中断空闲连接。或者在数据库中配置死连接检查DCD。
问题五、卸载完DB,如何完全卸载GI
卸载grid,运行第二个root脚本报错,估计是因为asm实例没有关闭必须是有一个要保持开启。之手用sysasm关闭所有asm实例再运行还是报错,执行./crsctl stat res -t 发现.dg .proxy_advm .asm等资源虽然变offline但是ora.ASMNET1LSNR_ASM.lsnr还是online,crsctl stop crs也执行不了如何解决?
诊断结论:尝试强制停止:crsctl stop crs -f,再deconfig -force和deinstall,详细步骤请查看详情。
问题六、9.2.0.8 aix 升级11.2.0.4 aix升级后需要检查什么
参考《手动升级到 Oracle Database 11gR2 (11.2)的完整核对清单 (文档 ID 1674333.1)》进行升级,其中timezone不升级。升级后除了检查升级日志,后台日志,用户对象。
诊断结论:优化器从RBO到CBO,改变很大,确保应用在生产数据库升级前已经做过了充分的SPA测试。
问题七、win安装10g报错Ora-12546 tns:permission denied
Windows 2012 r2 64位系统安装10.2.0.4的数据库64位,总会出现这个报错,要么是dbca的时候,要么就是建完数据库,一重启服务器之后,sqlplus也登陆不了报错。尝试了一下安装了10.2.0.5的补丁的话就没在出现这问题,反复试了几次,这个是bug么?
诊断结论:这个是因为Oracle 10.2.0.4发行的时候,Windows 7都还没有出,而从Windows 7开始(甚至是更早的Windwos Vista开始),Windows的权限体系出现了非常大的变化,而早期的Oracle版本并不能适应这种新环境,所以会出各种各样的问题。用新版本就好了,如你说的Oracle 10.2.0.5,该小版本正好解决这个环境问题,所以就没问题了。
问题八、oracle数据库平台兼容性列表
Oracle各个版本操作系统兼容性列表
诊断结论:可以参考https://docs.oracle.com/en/database/oracle/oracle-database/index.html,每个版本都有不同的支持列表,在官方文档上可以查到。
问题九、dg库控制文件扩展报错
dg库的control1扩展报错,用的是裸设备,2和3还是原来大小,主库的没有报错,并且大小没有变,求解释。
专家解答:从ALERT报错可以看出,控制文件从8050个块扩展到13168个块时报错,而裸设备最大只支持8050个块,无法扩展,可以尝试将参数CONTROL_FILE_RECORD_KEEP_TIME改小,避免控制文件报错。
问题十、sql调条件中where1=1,基于不同的优化器cbo会走索引,而rbo则不会
应用中经常能够看到where1=1的条件。请问,为什么在不同的优化器下,rbo不会走索引而是全扫?
诊断结论:与where 1=1没有关系,这个SQL相当于没有where条件。RBO是定义死的一套规则,只有在MAX和MIN索引列时才会走索引全扫,也不会去看统计信息。
问题十一、OGG 11.2无法使用format release 12.3
高版本OGG传递文件到11.2,传递失败,试过加参数format release,不行,高版本OGG传递文件到12.1,应用失败,试过加参数format release,不行。求一份OGG版本兼容。
诊断结论:建议源端、目标端最好用同一版本。目前从官方文档来看,10、11、12都可以通过FORMAT RELEASE参数来兼容,除了CDB必须要求12.3以上外。
问题一、Windows 系统是否需要设置filesystemio_options
如题,数据版本为10g
诊断结论:不需要设置,参考《Best Practices For Oracle Database Performance On Windows》
问题二、windows 安装oracle dbca建库报错ora-27102 out of memory
windows 2016(64bit) 安装oracle 11g r2 (64bit) dbca建库报错 ora-27102 out of memory,windows 系统内存 64G 分配给oracle 内存 24G 空闲内存充足,这个是因为 2016系统有啥限制吗该如何解决?
诊断结论:问题为window操作系统参数的问题。在控制面板中将处理器核数由默认的1改成8或最大值即可 ,重新启动,然后再dbca建库. 成功。
问题三、集群资源ora.LISTENER_LEAF.lsnr,资源offline,这是什么资源?
集群资源ora.LISTENER_LEAF.lsnr,资源offline。db版本12.2.0.1。
诊断结论:这是12c Oracle Flex Cluster的特性,引入了叶子节点的概念,不需要直接连接共享存储。而LISTENER_LEAF是用来注册leaf node上运行的实例的。
问题四、Execute to Parse %指标24.95,硬解析比例很高
数据库中,Execute to Parse %指标24.95,SQL硬解析比例很低,排除cursor_sharing= force,系统负载非常低,AWR采样时间60分钟,db time1mins。
希望获取SQL能找到造成大量硬解析的SQL文本,或者应用连接mode,
获取降低硬解析的方法。
诊断结论:一般来说硬解析高的SQL主要的原因就是没有使用绑定变量,其次就是内存不够或者BUG等原因了。
可以使用详情中的SQL查出没有使用绑定变量的SQL。
问题五、Asm磁盘组冗余模式IO性能有差异么
Asm磁盘组冗余模式,IO性能有差异么?差异有多大?
诊断结论:在读场景下,不论冗余方式,都只读其中一份AU,所以不会有读性能的损失。
在写的场景下,外部冗余的ASM磁盘组的IO性能,可以近似理解为是所有LUN的IO综合,包括IOPS及吞吐量。Normal冗余是双写嘛,因为每次要写两个相同的AU,所以可以理解为IO相关指标损失一半。High冗余损失三分之二。
问题六、ogg 12c可以应用源为10g的trail文件吗?
如题,10g的trail文件是否可以应用到12c中,需要注意什么?
诊断结论:应该是没问题,建议测试验证下。源端抽取进程和传输进程加下参数FORMAT RELEASE。另外目标端需要非PDB模式。
问题七、删除一张上亿记录数表的唯一性约束和索引有什么影响
如题,删除了一张记录数有一亿的表的唯一性约束和索引,会有影响么?重建会花多久?
诊断结论:删除本身当然没有影响。只不过数据完整性没法保证,索引无法利用。至于创建时间要根据表大小,当前业务量,系统i/o情况,需要全扫表读取数据,然后内存排序创建唯一索引。可以看下session_longops,或者根据索引的段大小推测所需时间。
问题八、TB级别数据库搭建goldengate
在这个级别搭建ogg使用table还是schema进行??,在后期表结构会发生变化的情况下哪种方式方便后期维护?
诊断结论:如果非要用OGG,建议按表拆分多个进程吧,不然一个进程出现问题会影响整个库的同步。
问题九、oracle rac时间被调整的影响
rac配置了时钟同步,由于时钟同步服务器出问题导致rac两个节点时间被同时调整到了3天后,然后关闭集群手动调整系统时间,启动集群后发现undo的begintime和快照时间都有问题,目前重建了undo,这种事故对数据库有其他影响嘛??业务数据问题已与研发沟通过,没造成影响
专家解答:如果业务数据确认没有问题,数据库能正常启动运行的话问题不大,依赖时间戳的主要是日志和监控数据类,建议重要的检查处理下:
- grid/db的相关alertlog备份清理下问题的日志
- AWR备份删除部分snapshot,以免混淆
- sys.WRH$_ACTIVE_SESSION_HISTORY的相关记录
问题十、Oracle Stream 不再被支持了吗?从什么版本开始的?
之前的旧系统,有些还在使用 Stream 流复制,听说不被Oracle支持了。将来要怎么办?
诊断结论:Oracle Streams在Oracle Database 12c第1版(12.1)中已弃用。不支持 Oracle Database 12c 及更高版本中引入的支持功能,包括多租户架构,LONG VARCHAR数据类型,长标识符和其他功能。 Oracle Database 18c是Oracle Streams支持的最终版本。从Oracle Database 19c开始,Oracle Streams将不再受支持。 对于复制来说,Oracle GoldenGate是Oracle数据库复制的最终解决方案。
问题十一、ASM新加DG,数据文件如何迁移
oracle12c数据库原来创建的表空间所在asm上的DG用完,我又新加了一个DG如何修改原来DG上表空间的参数设置,比如表空间自动扩展
诊断结论:关闭之前DG上所有数据文件的自动扩展,然后在新DG上为相应表空间创建数据文件即可。还有temp、undo这些方便迁移的,可以移到新的DG上。
问题十二、关于Extended RAC两种模式压测存储复制的方式都优于ASM冗余
我们正在实施容灾项目,对比Extended RAC在存储复制和ASM冗余两种方案的性能,供客户方案选型,目前测试的结果显示存储复制的方式都优于ASM冗余的方式。请问测试结果符合预期吗如何理解这种结果?