Troubleshooting “sqlplus / as sysdba” hang Case
一套oracle single instance on AIX环境,数据库未启动,客户硬件只是扩容了内存OS重启后,sqlplus启库无法登录,sqlplus / as sysdba命令挂起。
1, rename sqlnet.ora
2, 检查了/etc/hosts
3, 尝试了listener可以启动
提供综合数据库运维服务与优化方案(不限Oracle MySQL PG GaussDB GoldenDB OceanBase等), 微信/Tel:(+86)134-365-60330
一套oracle single instance on AIX环境,数据库未启动,客户硬件只是扩容了内存OS重启后,sqlplus启库无法登录,sqlplus / as sysdba命令挂起。
1, rename sqlnet.ora
2, 检查了/etc/hosts
3, 尝试了listener可以启动
下面是要在目标数据库或数据库辅助上执行的查询,以估计恢复的时间和完成的百分比。
最近一起Oracle数据库自动crash, 再次打开是提示需要做datafile recover, 分析alert日志提示ORA-63999 ORA-01122 ORA-01110 ORA-01208, 问题时logfileswitch并不频繁,当时也没有做duplicat 操作(bug 13498382),ora-1208是因为数据文件头上的ckpt比控制文件上的旧,reover后随后数据文件头被更新,因此可以正常访问而不会发生损坏,判断是IO写丢失导致.
每个事务都有一个唯一的 ID,称为 XID,基于Undo segment number 、Undo segment slot number and Undo segment sequence number (wrap#),为每个事务在第一个 DML语句期间分配一个事务 ID(XID), 每次transaction table的slot重用时, slot wrap(sequence number) number就会增加.当slot重用(或wrap#)达到maximum value 4,294,967,295 (2^32 – 1)(0xffffffff)次数时,当再次增加 wrap number 1或多值时,通常会提示ORA-1558 或ORA-600[4187]出现,
最近同事遇到一个案例,Oracle数据库频繁重启,数据库日志也是各种后台进程IO hang, 环境VMWARE,RHEL6, multipath, 华为存储。iostat显示问题时间段共享存储设备io 为0,%util 100%. RHEL官方有过相同案例,这里简单的记录。
如果正在使用oracle 19c rac 安装了19.10,19.11 RU后,关注一下使用了global temporary table(GTT)的运行时间,根据MOS Global temporary table (GTT) usage increased elapsed time after Jan RU 2021 (Doc ID 2798017.1) 记录响应时间会比之前慢9-10倍以上,属于 BUG 33127032,等待事件主要是“end: KI – contention”一个跨实例调用的序列化操作并不常见,通常P2值为59表示全局对象失效。
Oracle 11g 提供了一种特性SCAN LISTENER, 简化客户配置应用连接串,客户请求发给scan listener后实际还是会重定向给VIP listener与客户端建立联系, 标准配置是建议把scan name的域名配置到DNS中,如果不使用DNS只能识别一个scan ip, 配置在/etc/hosts中。 如果使用DNS服务器,对DNS的响应有较高要求,同时也增加了一个故障点
Oracle ANYDATA数据类型几年前在做expdp迁移时接触过,类型XML,LOB导出速度是慢之非常, 今天又一个客户在expdp时一个interval partition表时,部分分区导出报错ORA-21700: object does not exist or is marked for delete错误,依赖的对象不存在,查看表定义存在anydata列,也就是可能anydata这种任何数据类型都可以存储(但还是建议用lob类型代替),但是存储的自定义类型又不存在了,这种情况很危险
在oracle database 21c版本开始materialized views可以自动的创建和维护,用于自冶数据库。 物化视图提供了显着提高查询性能的潜力,但需要大量的努力和技能来确定要使用的物化视图。结合了工作负载监控来确定需要哪些物化视图。基于决定,物化视图和物化视图日志被自动创建和维护,无需任何手动交互。对于复杂查询SQL的查询块(QB),MVIEW查询重写技术可以优化此类查询
在Oracle Online文档的monitor database 章节中有描述Oracle 数据库可以自动跟踪某些SCHEMA的对象(例如表和物化视图)的活动和使用情况。
对象活动跟踪系统 (OATS) 跟踪与数据库对象相关的各种活动。可以在数据库级别和可插入数据库 (PDB) 级别执行跟踪。跟踪的活动包括对表的 DML 操作、表和分区扫描、分区维护操作 (PMOP)、物化视图重写和刷新以及索引等辅助结构的使用。
从Oracle 19.10 及更高版本中提供的sequence新增强功能“Sequence dynamic cache resizing ”, 在Oracle中如果应用中频繁的调用sequence的nextval值是可能存在性能问题,如enq:SQ 或row cache lock, 之前在一个客户的业务系统有一个非常糟糕的设计全库使用一个sequence, 所以及时cache值调到了2万依旧在高并发调用时sequence性能问题还是非常明显。
墨天轮社区最近发布了“数据库在线实训平台”,目前支持Oracle、MySQL、Redis、PostgreSQL、openGauss和MogDB六类数据库。如果参加过国产数据库的一些线上培训认证的话,会接触到这种形式的数据库玩法,简而言之就是你可以在浏览器中的命令行窗口,做一些数据库命令的学习研究。
OGG 19.*默认改变原来OGG 12版本ALLOWNULLABLEKEYS为NOALLOWNULLABLEKEYS, 这样会导致在replicat时因为不考虑可为空的唯一索引做为标示键,而使用全字段组合在一起作为行的唯一标识,但是EXTRACE的源库又只有这个唯一键的附加日志,trail中也只有该唯一列更新列时,在replicat时会产生OGG-1403记录不存在,而丢失更新,insert不受影响, 同时oggerr日志中记录的是INFO OGG-06441,这样更不会引起人的注意。
上周发布了新 Bug 33121934 Library cache lock / load lock / mutex x during connection storm, 也是在登录高并发时,因为更新最后登录时间特性出现的library cache lock等问题,之前是引入_disable_last_successful_login_time禁用,这次引入了2个新的隐藏参数可以细化行为的更新, 不用再那么频繁。
在做分区表move维护时,可以使用’UPDATE INDEXES’ 选项更新 global 和 local indexes ,使索引并不失效,11.2.0.4版本前有个小bug,在update indexes期间也有短暂的local index失效,在oracle 12c 后引入新特性move online partition ,可以在DDL期间不锁DML操作,注意在online move 期间也会发生 UPDATE INDEXES or UPDATE GLOBAL INDEXES索引维护,
最近几年数据库市场百花齐放,在做跨数据库迁移的数据库选型时,除了性能、稳定、安全、运维、功能、可扩展外,像开发中对于值的处理往往容易被人忽视, 之前写过一篇关于PG区别Oracle在SQL解析缓存的笔记《PostgreSQL 12 : Prepare statement和plan_cache_mode 参数》,这里记录一下null 值在这几个数据库中的区别。
在WEB应用或图展示的程序中通常使用Json格式传输,JavaScript Object Notation (JSON) 是一种轻量级的数据传输格式,在关系型数据库中通常存储的是表、列格式,如果数据库可以直接返回JSON, 那基于JSON传输的应用将会收益,JSON 是一种完全独立于语言的文本格式,使 JSON 成为理想的数据交换语言。 在PostGreSQL和ORACLE 12.2中都提供了JSON的SQL函数, Oracle Database 21c 中添加了原生 JSON 数据类型,
在Oracle 12c之后版本多租户环境的Standby DATABASE,当某一个PDB出现文件丢失时或PDB多个文件损坏,如何重建PDB standby database. 这里简单记录在18c后的方法。
之前分享过12c后关于用户登录的新特性笔记《Oracle 12c New Feature: Last Login Time for Non-Sys Users》, 此特性对于分别哪些用户长时间未登录(不使用)非常有用,从是从12c开始一直到当前最新的RU19.12 ,都没有在RU中打包关闭该特性的方法。前几年在12c就遇到过较高的library cache lock是与该特性有关,用户无法登录,当时的SQL 更新user$, namespace为Last_Successful_Logon_Time,此问题特性只到21C base版本才引入了隐藏参数来禁用。
之前分享过如何把GoldenGate写入syslog的笔记 Oracle goldengate write syslog(ogg 写系统日志),今天有同事问如何把audit 日志记录syslog, 简单研究一下,syslog是操作系统级协议,