分类目录归档:Oracle

_gc_undo_affinity=FALSE触发ORA-01558

最近有客户遭遇非系统回滚段报ORA-01558的故障,类似:ORA-01558: out of transaction ID’s in rollback segment _SYSSMU4_1254879796$,在之前的恢复case中遇到两次system rollback报ORA-01558而不能正常启动的案例.(ORA-01092 ORA-00604 ORA-01558故障处理ORA-01558: out of transaction ID’s in rollback segment SYSTEM),这次是业务回滚段,出来起来相对比较简单,直接重建该回滚段所在undo表空间即可.遭遇该问题的主要原因是由于19c rac中由于禁用drm,设置了_gc_undo_affinity=FALSE参数导致.
gc_undo_affinity_ora-1558


还有一个类似bug,需要注意:Bug 19700135 ORA-600 [4187] when the undo segment wrap# is close to the max value of 0xffffffff,主要影响版本为:
1

关于该bug的描述

ORA-600 [4187] can occur for undo segments where wrap# is close to the max value of 0xffffffff (KSQNMAXVAL).
This normally affects databases with high transaction rate that have existed for a relatively long time.
 
To identify undo segments causing the above error and others that may potentially cause it 
in the future, run the next query:
 
 select b.segment_name, b.tablespace_name 
         ,a.ktuxeusn "Undo Segment Number"
         ,a.ktuxeslt "Slot"
         ,a.ktuxesqn "Wrap#"
   from  x$ktuxe a, dba_rollback_segs b
   where a.ktuxesqn > -429496730 and a.ktuxesqn < 0
       and a.ktuxeusn = b.segment_id;
 
Then drop the undo segments or the undo tablespace from the output above.
 
With this fix in place an error ORA-1558 is eventually produced for the affected undo segment
which still requires dropping the undo segment:
  ORA-1558 "out of transaction ID's in rollback segment %s"
   Cause: All the available transaction id's have been used
   Action: Shutdown the instance and restart using other rollback segment(s),
                then drop the rollback segment that has no more transaction id's.
发表在 Oracle | 标签为 , , | 留下评论

public授权语句

在上一篇文章中写到数据泵迁移导致sys授权丢失(impdp导入数据丢失sys授权问题分析),这次进一步完善在有些系统中,会出现对部分权限授权给public的操作,使用逻辑方式(exp/imp,expdp/impdp)进行迁移,可能会导致这个部分权限丢失,从而使得系统部分功能异常,可以通过类似sql查询出来授权语句,在新库上执行

select 'grant ' || privilege || ' on ' || '"' || OWNER || '"."' ||
       table_name || '"' || ' to ' || grantee || ';' "GRANTS"
  from dba_tab_privs
 where privilege not in ('READ', 'WRITE')
   and table_name not like '%/%'
   and owner not in ('SYSTEM',
                     'WMSYS',
                     'XDB',
                     'CTXSYS',
                     'MDSYS',
                     'EXFSYS',
                     'APEX_030200',
                     'ORDSYS',
                     'ORDPLUGINS',
                     'DBSNMP',
                     'OLAPSYS',
                     'ORDDATA')
   and grantee in ('PUBLIC')
 order by 1;
发表在 Oracle | 标签为 | 留下评论

中文环境显示AR8MSWIN1256(阿拉伯语字符集)

最近恢复了一个阿拉伯语的Oracle数据库,参见案例:.pzpq扩展名勒索恢复,在客户验证数据的环节,出现了阿拉伯语显示乱码的问题.通过几个方法进行了验证,确认数据恢复没有问题
1. 通过dul工具对于有阿拉伯语的表恢复成文本文件,然后使用阿拉伯编码进行查看(可以正常显示阿拉伯语)
dul-alb


2. 在cmd中设置编码为阿拉伯编码,nls_lang也设置和数据库一致(可以正常显示阿拉伯语)[在win 10 系统中此方法可行,2003 系统依然显示有乱码]
AR8MSWIN1256

chcp-1256

win 10 操作系统显示
alb

win 2003操作系统显示
2003

3.设置了在cmd中设置NLS_LANG=american_america.AR8MSWIN1256,然后启动plsql dev(无法正常显示阿拉伯语【乱码】)
plsql-dev

目前没有找到有效方式使得plsql dev在中文操作系统环境中正常显示阿拉伯语,后续继续关注该问题,如果有新发现及时更新

发表在 Oracle | 标签为 , | 留下评论