分类 Oracle 中的文章

ROWID唯一性

在oracle数据库中rowid是唯一的吗,或许很多人第一反应都是这么认为。这种说法其实并不准确,应该说在oracle 8以前,在整个数据库层面rowid是唯一的,而从oracle 8开始,在数据库层面rowid并不是全局唯一的,针对表空间来说,存储在其中的数据的rowid则是相对唯一的。 我们知道在数据库中存放的每一条记录都有一个ROWID ,代表着这条记录在数据……

阅读全文

Result Cache

result cache是用来存储查询sql得到的结果,给之后的重复查询来使用。通过缓存这些结果,oracle能避免那些重复的实际消耗,并且节省了大量的数据库操作,比如排序、合并、物理io和表关联等。result cache是内存里的一块单独区域,要么是SGA里或者客户端应用程序内存里。存放在里面的缓存结果在不同的sql语句或者不同的会话之间是可以共享的,除非缓存结果本身……

阅读全文

oracle中只读用户锁表

由于数据查询的需求,我们常常需要在数据库当中建立只读用户,并且都是赋予的select any table权限。但是有没有想过只读权限的用户也能锁表?并且是以排他锁的形式? 这样就意味着很多‘只读‘权限的用户并不是真正意义上的只读,这很有可能会由于人为失误或者故意的某些行为导致生产环境的严重灾难,先通过几个例子来重现这种现象。 SQL> conn xb/xb@pdb12c Connected. SQL> grant create session to readonly; Grant succeeded. SQL> create table t(id integer); Table created. SQL> insert into……

阅读全文

Oracle查看parameter

别人问你数据库的某个参数是多少时,一般我们都是会直接通过show parameter,或者select value from v$parameter的方式,但是这种查询只是查到的当前会话里的参数值,而如果这个会话对参数进行过修改的情况下,查出来的值与数据库实际的值其实是不一样的。 通过字典可以查到好多带有parameter的系统视图,比如V$PARAMETER,V$SPPARAME……

阅读全文

Automatic Memory Management简析

从11g开始引入了AMM(Automatic Memory Management)的概念,AMM管理了SGA+PGA的内存分配,它允许将内存在SGA和PGAs之间进行转移,你只需要指定MEMORY_TARGET一个参数即可,剩下的事情全部交给oracle自己来做。 这里首先解释几个名词: System global area (SGA) SGA是一组共享内存结构,作为SGA组件,包含了一个oracle实例中的数据和控……

阅读全文

Zabbix监控GBK字符集的oracle

监控oracle有很多方式,目前主要使用的是通过第三方软件orabbix,它是通过jdbc连到各个oracle数据库上去执行sql,效率还可以,只是目前有个新需求,有个业务监控返回结果必须含有中文,而orabbix中无法配置字符集 ,导致存放到zabbix中时就会乱码,所以只能换一种方式,采用自带的database monitor来监控。整个配置过程很简单,主要……

阅读全文

ORA-00445: background process W003 did not start after 120 seconds

一个11g的数据库出现报错,根据字面判断可能是某个slave进程启动失败。这种ORA-00455错误通常表示在操作系统层面为了响应某种请求而去生成一个新的进程时因为某种原因导致失败,最有可能的原因一般是由于操作系统资源不足或者配置错误,所以这个错误的解决途径通常是从操作系统层面入手,但是也有部分情况是与oracle有关的。 这里显示的120s超时可以通过设置e……

阅读全文

不同版本之间的EXPDP/IMPDP

故障现象 将一个18c版本的dmp导入到11.2.0.4当中时出现报错 ORA-39000: bad dump file specification ORA-39142: incompatible version number 5.1 in dump file "/u01/schema_dump.dmp" 这是由于高版本导出的dmp文件在低版本数据库当中无法识别。 解决办法: 在导出语句里加上version=11.2即可 Example expdp scott/tiger@orcl directory=EXPIMP schemas=scott Version=11.2 dumpfile=Exp_Scott.dmp logfile=Exp_Scott.log 跨版本DATAPUMP 兼容性 依据数据泵的兼容性有一些准则: 数据泵dmp文件的兼容级别是由源数据库的兼容级别决定的 使用与源数据库同版本的e……

阅读全文

JSON in Oracle

JSON(JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一……

阅读全文

expdp导出表ORA-01555错误

有同事碰到一个问题,在导出一个很小的库时有三张表都提示报错,而其他对象都导出正常。 ORA-02354: error in exporting/importing data ORA-01555: snapshot too old: rollback segment number with name " " too small ORA-22924: snapshot too old 这里的报错有点奇怪,因为库才10个g,undo表空间配置了32g,导出时基本无业务运行,按常理不会出现回滚段不足的情况。检查这三张表都包含有lob字段,怀疑是跟这有关,后来结果确实是lob字段数据有异常,处理完后即可顺利导出,现在重现……

阅读全文