本周新加入专家团成员
本周有哪些技术人才加入墨天轮技术专家团呢?一起来看看吧。
姓名 | 简介 |
都强 | 甲骨文DBA,有ORACLE 10G&12C OCM认证,10年+TB级数据库经验 |
杨琳 | 擅长GaussDB数据库,从业15年,就职于世界500强企业 |
赵伟 | 全球软件百强企业技术顾问,擅长Oracle, GaussDB, MySQL,从业22年 |
桑凯 | 云和恩墨产品服务总监,擅长Oracle, MySQL,从业12年 |
董真 | 运维工程师,擅长Oracle, Redis, MongoDB,就职于杭州某科技公司 |
刘琳 | 北京某公司DBA主管,擅长Oracle, MongoDB, PostgreSQL |
杨海波 | 襄阳市某医院DBA,擅长Oracle,博客园发表多篇数据库实战文章 |
刘锡亚 | 云和恩墨解决方案经理,擅长Oracle,Itpub发表多篇数据库文章 |
范长青 | 擅长Oracle数据库,从业10年,就职于浙江某信息技术公司 |
李辉 | 擅长Oracle数据库,从业24年,就职于重庆某银行 |
本周回复问题数排行前三
本周墨天轮问答平台回复问题数前三名的分别为:彭冲、wayne、llzx373
恭喜以上网友将分别获得100墨值、80墨值、50墨值奖励。
本周问答集萃
我们定期从墨天轮问答平台上用户遇到的问题中整理出一些常见问题和诊断总结,供大家参考学习,详细的诊断分析过程可以通过点击标题链接查看。
1、前滚和回滚与rollback的区别
描述: 数据库的前滚和回滚与rollback有什么本质不同,为什么时间少很多?
解答: 前滚是利用redo信息来对事务做一个重放/重现操作。Rollback的时候,Oracle就会去找这个事务的undo信息,然后把undo信息应用到缓冲区缓存中的数据和索引块中,这些块就会恢复到原来的状态,这就是一个回滚操作。回滚过程中从来不会涉及重做日志,只有恢复和归档时才会读取重做日志。
2、Windows2008下oracle自动启动的问题
描述: 在Windows2008下安装oracle11g 当系统重新启动后 通过CMD命令登录 sqlplus / as sysdba 发现数据库是自动启动的?想确定是下在Windows下是这样的吗?还是哪里配置问题。
解答: windows通过服务来控制。你可以在控制面板里面看到,OracleService[SID]的服务,应该是自动。你可以把这个改为手动,就变成非自动启动了。
3、Analyze TABLE出错ORA-01555
描述: alert.log中多次出现analyze分析表时报ORA-01555快照过久的错误,请问是什么原因?另外,这个表WRH$_ACTIVE_SESSION_HISTORY 21G要怎么清理呢?
解答: 首先对象过大时,建议用dbms_stats进行收集(可并行)。analyze table 方式效率太低。其次对于awr的基表,可以手工清理。但建议设置awr快照保留时间即可。
4、expdp报错ORA-39080: failed to create queues
描述: 尝试了下expdp导出会报错ORA-31637: cannot create job SYS_EXPORT_SCHEMA_01 for user SYS;ORA-39080: failed to create queues “KUPC$C_1_20190418163728” and “” for Data Pump job。
解答: 原因是streams_pool和sga_target参数都是0导致SYS.KUPC$DATAPUMP_QUETAB无法正常工作。
5、三个SCAN IP分布在两台这个会有问题吗
描述: ORACLE RAC 两台服务器三个SCANIP,通过DNS解析,但是两台没有同时有同样的SCANIP这个对?
解答: 您查一下只配置一个SCAN IP的RAC可以看到,SCAN IP 只在一个节点。当这个节点出现异常,或宕机,它会飘到另一个节点。虽然配置了三个SCAN IP,但是这三个SCAN IP分布在不同的节点上。你可以手动漂移到另一个节点上。
6、11g 表空间传输自包含检查报错ORA-39905
描述: 11.2.0.4传输表空间,如何更好的处理分区,lob段等问题,原来迁移一直喜欢用adg,这次想用传输表空间,在做自包含时候报错Lob段的问题,想咨询一下高效安全的方法。
解答: 在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集。自包含分为两种:一般自包含表空间集和完全(严格)自包含表空间集。从报错看LOB字段存在了USER表空间,而USER表空间不再列表中。
7、DBCA创建数据库无法识别ASM
描述: DBCA创建数据库无法识别ASM磁盘组,应该如何排查?
解答: 1、尝试用ORACLE_用户运行sqlplus / as sysdba并查询vasm_disk/vasmdisk/vasm_diskgroup等信息;2、看看GIHOME/bin/oracle和ORACLE_HOME/bin/oracle的权限,正常应该有 s ;3、如果没有s, 可以用chmod 6751 $GIHOME/bin/oracle;4、尝试用kfod OP=GROUPS 看看能否获取磁盘组列表。
8、delete后执行commit报错PLS-00306
描述: SQL> delete from foo where a=1; SQL> commit; 第二步commit报错PLS-00306: wrong number or types of arguments in call to ‘SYNCRN’。
解答: 根据官方文档这是一个bug,需要安装补丁解决,参考After Upgrade to 11.2.0.4 Unable to Delete Any Rows from Table with Context Index due to Error: “PLS-00306: wrong number or types of arguments in call to ‘SYNCRN’” (DOCID 1586704.1)。
9、Oracle 12c json字段的修改 ?
描述: Oracle 12.2版本修改json数据报错ORA-40557: cannot update a JSON value。有什么简单的办法修改json数据?
解答: json字段要整体更新,不能单独更新某个值。点击查看详情。
10、insert批量处理表记录性能比较问题
描述: 在批量insert一个表数据时(约≥100万记录),使用forall每批处理10的记录性能好,还是直接使用insert into…select…?
解答: forall每批至少处理1万吧,每批处理10条对性能提升效果有限。两种方法都是可以的,你应该根据数据库实际的应用场景来选择,如果表上操作很频繁,那么forall分多批的方式对应用的影响会更小,如果表上没什么操作,insert … select 方式更好。
11、dbwr写脏块会把未提交的块也写进数据文件吗?
描述: dbwr写脏块会把未提交的块也写进数据文件吗?如果未提交的脏块要写进数据文件那么其他会话在读这个数据文件时,是怎么做到不读这个块的。如果此时服务器突然断电了,那重启后,写入数据文件的未提交的脏块是如何进行恢复的。
解答: Oracle会遵循一个日志先行的原则,dbwn写脏块之前会让lgwr把日志写进磁盘,在其他会话读取数据时就会先读日志,宕机的时候,也会去读取日志进行恢复。
上线每日一题
墨天轮新推出【每日一题】栏目,每天选择一道数据库题目,让大家学习测试技能。
扫码立即答题
可微信扫描上方图片二维码进行答题,或通过“墨天轮”微信公众号菜单“最新活动”—"每日一题"进入答题页面,答题链接:https://www.modb.pro/test。
往期阅读