
Oracle
文章平均质量分 81
iteye_16695
这个作者很懒,什么都没留下…
展开
-
hugepages使用出现kswapd导致系统负载突然上升
在运行Oracle数据库的linux服务器上,某个时间段的每分钟负载会突然上升到40以上,在进程队列里看到kswapd0出现,导致数据库无响应,持续时间数分钟。对于应用而言,这个时间段有明显的停滞感,像系统已经挂掉了一样。如果这是发生在Oracle RAC环境中某一个节点上,那么这个节点就可能会重启。这属于非常严重和致命的问题。(miki西游...2012-07-02 10:59:20 · 432 阅读 · 0 评论 -
RMAN创建恢复目录库出错RMAN-06444
数据库oracle 8.1.7进行RMAN备份设置,其恢复目录库放在oracle10.2上。在创建恢复目录时,出现RMAN-06444错误。这是一个bug。之前该8.1.7库resetlog open过一次,所以一直有问题。于是想到重建,釜底抽薪。结果就出现了这样的错误。具体错误信息如下: bash-2.05$ rman target / rcvcat m18_cata_34/...2012-07-03 14:58:46 · 299 阅读 · 0 评论 -
RMAN不恰当配置导致Oracle数据库备份死慢
这是一个发生在Oracle数据库上使用RMAN进行数据库操作因在默认配置中使用不合适的配置导致备份性能慢到不能接受的问题。在整个问题解决过程中,涉及了存储商、网络、操作系统以及Oracle等等。解决过程复杂和艰难,甚至都开始怀疑自己了,到最后峰回路转,在RMAN备份的输出日志发现了关键信息,使得问题得以解决。这个问题我们想复杂了。如果我们能仔细一点,多看看日志信息,就能节省...2012-07-04 13:35:09 · 1014 阅读 · 0 评论 -
EM Grid Control 11g安装失败如何完全删除
在安装Oracle EM Grid Control 11g时,如果安装过程出现这样那样的原因失败了。我们该如何干净彻底地清理掉已有的安装文件和配置信息呢?EM Grid Control 11g在安装时写入的信息位置主要为下面几个地方。一、在系统目录的/etc/oratab文件中写入自动启动的项目;二、在oraInventory目录中写入了安装配置信息;...2012-07-10 09:52:02 · 206 阅读 · 0 评论 -
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析
在linux 操作系统的数据库服务器上,使用”sqlplus/ as sysdba” 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031: 权限不足。 在数据库所在服务器上登录的操作,使用的是操作系统认证方式登录数据库实例。在出现“ORA-01031 “的错误错误时,首先去检查sqlnet.ora 文件中SQLNET.AUTHENTIC...原创 2012-07-11 11:26:49 · 478 阅读 · 0 评论 -
Oracle监听器crash问题
数据库Oracle10.2.0.4 for linux x86 64bit,正常运行430天。在今天早上10点钟,Oracle监听器进程突然宕机。在操作系统的message中显示错误信息为”tnslsnr segfault error4”,监听器日志文件因为体积达到4GB,没有记录下这次出错日志。根据错误关键字“tnslsnr segfault error 4”,搜索发现该问题是在...2012-07-17 13:36:19 · 339 阅读 · 0 评论 -
Oracle表的压缩特性
从Oracle 9i 开始,Oracle 数据库就提供一种表的数据压缩特性。它可以显著地减少磁盘空间占用,并且在表的数据查询时也会减少该表内存读的量,该机制也会提升查询性能。 这种特性通常在数据仓库类应用中广泛使用。 (miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/160...原创 2012-07-19 11:00:09 · 637 阅读 · 0 评论 -
使用plsql开发的计算器程序
这是一个使用PL SQL开发的计算器程序,实现基本的数学运算。根据提供的数组,展现输入过程,计算出结果。这个在stanford iphone2011教程的作业的另外一种实现方法。但那个是需要用obj-c实现,我这个是用pl sql实现。 这个存储过程中,使用了collection的复杂操作实现计算数据和计算符号的处理,使用递归实现计算的反复调用。实现 加减程序正弦余弦N次方和N次方...2012-07-24 18:01:16 · 549 阅读 · 0 评论 -
PLSQL集合类型的使用总结
在pl sql中,集合(collection)是一组有序的元素组成的对象,这些元素的类型必须一致。pl sql将collection分成3类,分别为Associative arrays(也称index-by tables)、Nested tables、Varrays。Associative arrays,可以看着是一个数据字典,有key,...2012-07-26 14:06:43 · 217 阅读 · 0 评论 -
使用plsql实现阿拉伯数字转中文大写
使用pl sql的数组功能、循环机制将小于10的16次方的任意阿拉伯数字转换为中文大写数字。该函数从原来的200多行,优化成现在70行左右。始终相信,最少的代码实现某个功能才是最优雅的开发方式,代码越少出bug的概率就越低。从开发、调试、到优化这个函数,我用掉了约5个小时的时间,最后只有短短的70行。顺便膜拜一下,那个解放军美女尖兵:90昼夜主持编写40万行代码 (mi...2012-07-27 11:33:57 · 1376 阅读 · 0 评论 -
函数索引和唯一索引的联合使用实现具条件判断功能的唯一约束
一表有字段A和B,若在B为100时(A,B)可以重复,其他时候(A,B)不可重复,如何实现?SQL> select * from tt1;A Ba 1b 1c ...2012-04-17 10:01:02 · 186 阅读 · 0 评论 -
限制DBA级别的用户在任意表空间上建表
限制DBA级别的用户在任意表空间上建表通常情况下,数据库中的用户都授予了connect,resource,dba三个角色。有了这些权限的用户,操作时很方便,但随意性很强。将对象建立到USERS表空间下是经常的事情。我想到一种从技术上的限制方法。步骤如下:第一步,新建用户和权限处理SQL> conn / as sysdbaConnected.SQL> create u...原创 2012-04-17 10:56:34 · 176 阅读 · 0 评论 -
Oracle数据库表空间级的异地不完全恢复
Oracle資料庫做異地恢復時,全庫的完全恢復需要很大的空間和很長的時間。如果採用基於模式的恢復方式僅僅恢復某一模式下所有物件,而不用去恢復所有的資料,這將節省大量的時間和空間。這個在Oracle 9i版本中經常使用,在10g、11g中也可以使用一下。下面案例是在10g的環境下將一個ASM上的RAC資料...2012-04-18 09:16:38 · 175 阅读 · 0 评论 -
expdp和impdp在有条件时导出入数据
在很多涉及数据处理的案例中,我们选择 expdp 和 impdp 的方式实现数据迁移和数据清理工作。它与 ctas方式相比,减少日志写,也更安全。 测试案例以时间条件为例。 注意,在不同的操作系统中, query 参数值的写法不同,请注意单引号和双引号。 我这里的测试环境为 redh...原创 2012-04-18 09:19:38 · 958 阅读 · 0 评论 -
Data Guard 10g 创建过程总结
1. 架构 在Oracle 10g 中,传输日志到备用节点数据库的进程为ARCH 和LGWR 。(在11g 中,LGWR 被LNS 替代,但10g 中是不是LGWR 我不确定!) ( 墙内: xxtp://mikixiyou.iteye.com/blog/1489087) 在备用节点上通过参数log_arc...2012-04-18 09:22:16 · 127 阅读 · 0 评论 -
Oracle9i连接Sybase的透明网关配置
声明一下:这文章是04/05年我在南京地税的项目上做的方案,发布出来后就忘记了。没想到被这么多人转载了,现在收录到新博客中,留着纪念。数据库名的后缀为.tax,sybase的访问用户密码为prient,机器为dw-server,这是我服务公司的名字和所在部门的名字,这印象太深刻了。就是这段,让我想起来的,密码还是prient。"8.建立database link如:CR...原创 2012-04-18 15:12:47 · 116 阅读 · 0 评论 -
SQL实现多行变一行
在我们需要将表的多行记录根据某字段值相等聚合成逗号间隔的一行记录,我们可以采用下列SQL来实现,简单、高效。 如表t下的记录:a1 b1 1 aa 1 bb 1 cc 2 aa 2 aa得到结果 应该是下列样式:1 aa,bb,cc 2 aa,aa 在Oracle数据库中,可以用这个SQ...原创 2012-04-19 08:52:42 · 736 阅读 · 0 评论 -
exp/expdp传输表空间和rman convert实现大数据量快速迁移
将Oracle数据库中某个用户迁移到另外一个库上,迁移的数据量大小约 120GB 。如果采用 expdp 导出的话时间会很长,再加上导出的 DMP 文件拷贝和 impdp 导入数据的时间,不能满足要求。 这里采用 RMAN 的CONVERT 功能和 exp/expdp 的transport_tablespace 的功能。前者将用户所在的表空间的数...原创 2012-04-19 09:34:54 · 334 阅读 · 0 评论 -
一个分组统计SQL的优化过程(1)
这是一个开发和 DBA 双方合作下,从开发的角度去思考如何优化 SQL 的完整的过程。在本文中,介绍如何阅读执行计划、如何理解位图索引、如果使用 10046 event 分析、记录是如何保存在数据块中。相信这篇文章能帮助你理解数据库的数据块结构、理解 SQL 的执行计划。希望能对大家有帮助。 事情的过程是这样的。应用系统的某一个查...原创 2012-04-20 10:27:30 · 332 阅读 · 0 评论 -
一个分组统计SQL的优化过程(2)
我们对这个SQL执行做抽丝剥茧的分析。 (接一个分组统计SQL的优化过程(1) http://mikixiyou.iteye.com/blog/1491153 )分析执行计划| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time ...原创 2012-04-20 10:41:41 · 210 阅读 · 0 评论 -
一个分组统计SQL的优化过程(3)
接: http://mikixiyou.iteye.com/blog/1491153一个分组统计SQL的优化过程(1)接: http://mikixiyou.iteye.com/blog/1491177 一个分组统计SQL的优化过程(2)访问对象分析在执行计划分析过程中,我们得出1W行记录访问需要7000毫秒的疑问。如何...原创 2012-04-20 13:58:39 · 452 阅读 · 0 评论 -
一个分组统计SQL的优化过程(4)
接: http://mikixiyou.iteye.com/blog/1491153一个分组统计SQL的优化过程(1)接: http://mikixiyou.iteye.com/blog/1491177 一个分组统计SQL的优化过程(2)接: http://mikixiyou.iteye.com/blog/1491283一个分组统计SQL的优化...原创 2012-04-20 13:59:32 · 289 阅读 · 0 评论 -
一个分组统计SQL的优化过程(5)
接: http://mikixiyou.iteye.com/blog/1491153一个分组统计SQL的优化过程(1)接: http://mikixiyou.iteye.com/blog/1491177 一个分组统计SQL的优化过程(2)接: http://mikixiyou.iteye.com/blog/1491283一个分组统计SQL...原创 2012-04-20 14:01:02 · 449 阅读 · 0 评论 -
使用bulk collect insert实现大数据快速迁移
在Oracle数据库中,将一张表的部分字段转换导入到另外一张表的部分字段中,如"insert into t_target(owner,object_name) from t_source;"。这也是解决此类数据迁移的的常规操作方法。如果源表记录数不是很多,操作操作也无妨。但是若源表记录数一旦超过百万千万,执行时间就长了,占用的回滚段也大。不小心执...原创 2012-08-09 16:12:22 · 526 阅读 · 0 评论 -
SQL实现多行记录聚合成一行
将一个字段的多行记录按照另一个字段值进行分组,组合成一行记录。新组合成的一行记录可以使用特定字符如逗号加以区分。在以前的文档中,我写好一个方法( http://mikixiyou.iteye.com/blog/1489127 )。使用row_number() over 函数。那是在Oracle 10g中使用到的,在11g中提供一个新函数listagg来实现该功能,简单易用。 在...原创 2012-08-10 10:54:42 · 939 阅读 · 0 评论 -
Oracle的pipelined函数提升数据输出性能
从Oracle 8开始,我们就可以从一个collection类型的数据集合中查询出数据,这个集合称之为“虚拟表“。它的方法是“SELECT FROM TABLE(CAST(plsql_function AS collection_type))”,据说该方法在处理大数据量时会有内存方面的限制。到了Oracle 9i之后,一个称为pipelined表函数的技术被推出来。他和普通的表函数很...原创 2012-08-10 15:55:30 · 390 阅读 · 0 评论 -
Oracle 快速性能诊断工具ASH
在Oracle 10g的性能调优时,可以使用到的工具主要有三个,分别为ASH(active session history)、AWR(automaticworkload repository)和ADDM(automatic database diagnosticmonitor)。这些工具比9i中的statspack有很大提升。试想,在数据库出现性能问题,慢得...原创 2012-08-13 10:42:16 · 284 阅读 · 0 评论 -
Oracle SGA internals 猜
分析对象Oracle 10.2.0.4 64bit for linux。先声明一下,分析过程和结论都是个人理解,不一定是正确的。如果有疑问和建议,欢迎一起讨论学习。SGA包含fixed sga、buffer pool(db cache)、shared pool、large pool、ja...原创 2012-08-23 16:55:43 · 148 阅读 · 0 评论 -
Oracle shared pool internals 猜
Oracle shared pool主要分为library cache、dictionary cache和control structure三个部分。第一部分library cache保存已执行的SQL和PL/SQL语句,和它们的执行计划等信息。library cache管理机制是采用一种hash算法,...原创 2012-08-24 16:25:25 · 100 阅读 · 0 评论 -
shared pool的物理结构和逻辑结构
从物理角度上看Oracle shared pool,它是由多个内存块组成。这里的内存块相当于数据文件中的数据块,是最小的分配单位。这个最小分配单位称为chunk,它里面的内存字节是连续的。但每个chunk的大小是不固定的。shared pool的内存分配由heap(堆)来实现。heap的个数由隐含参数”_kghdsidx_count “...原创 2012-08-30 15:31:00 · 289 阅读 · 0 评论 -
如何授权查询v$视图
在非sys,system用户的存储过程中,查询v$开头的视图,如v$mystat,v$statname等。这些视图查询是需要在sys下显示授权后才能在存储过程中使用。但是,如果我们使用grant on v$view to username,则会收到ORA-02030错误。如下所示:SQL> grant select on v$mystat to scott; grant ...2012-09-07 13:36:34 · 290 阅读 · 0 评论 -
Oracle的pipelined函数实现高性能大数据处理
在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换插入到另外一张或几张表。常规的操作方法固然可以实现,但时间、磁盘IO、redo日志等等都非常大。Oracle 提供了一种高级函数,可以将这种数据处理的性能提升到极限。这种函数称为管道函数。在实际项目中,管道函数会和表函数、数据流函数(即表函数和CURSOR结合)、数据集合、并行度一起使用,达到大数据...原创 2012-09-07 16:47:38 · 899 阅读 · 0 评论 -
关于Oracle执行计划
所谓执行计划执行计划是指Oracle运行的一条SQL语句按照某一顺序操作的动作。使用explain plan for语句可以查看执行计划。在plsql developer工具中,可以直接使用explain plan window查看SQL语句的执行计划。 SQL语句为:select a.doc_i...原创 2012-09-11 15:52:40 · 157 阅读 · 0 评论 -
Oracle中insert into select和select into的区别
在oracle中,将一张表的数据复制到另外一个对象中。通常会有这两种方法:insert into select 和 select into from。前者可以将select 出来的N行(0到任意数)结果集复制一个新表中,后者只能将"一行"结果复制到一个变量中。这样说吧,select into是PL/SQL language 的赋值语句。而前者是标准的SQL语句。做一个简单测试,我们就可以...原创 2012-09-12 12:27:51 · 1038 阅读 · 0 评论 -
一个plsql存储过程规范示例
根据一份规范文档,写了一个用于日后项目开发的示例用途的存储过程。 这篇文档对数据库开发的初学者有帮助。严格执行的规范有利于程序代码的阅读和扩展。 规范变量类型前缀范例说明数值型i_...2012-09-12 16:10:53 · 489 阅读 · 0 评论 -
PLSQL表函数实现字符串拆分
在应用程序开发中,会出现单选或多选框条件输入的需求。如输入框的输入值为'sz',或'sz|nj|zj|nt',在SQL中会这样处理。select * from tab_1 where col_1='sz' ;这是单选框输入。select * from tab_1 where col_1 ='sz|nj' ;这是多选框输入。很明显,多选输入值不会查询出结果。 如何解决这个问题?...2012-09-19 16:46:52 · 1657 阅读 · 2 评论 -
flashback table快速恢复误删除的数据
在oracle数据库操作中,经常会有不小心误删除数据、drop表的情况出现。以前,这种情况发生后,开发人员通常会去求助DBA或管理者,使用数据库备份恢复去找回这些数据。从oracle 9i、10g开始,你可以不必去用备份来恢复了。有一种快速恢复方法,称之为flashback。你可以flashback query,也可以flashback table。 (miki西游 @mikixiy...原创 2012-09-20 11:13:19 · 330 阅读 · 0 评论 -
Oracle 12c新特性之翻页查询
在即将发布的oracle 12c中,有一个新特性非常值得期待,这就是翻页查询优化。在应用中有很多翻页查询功能,以前我们都是使用rownum来实现。如查询1-10条记录,使用的查询语句就是这样: select * from (select row_.*, rownum rownum_ from (select doc_id, ...原创 2012-09-25 16:49:07 · 218 阅读 · 0 评论 -
Oracle 11g Grid Infrastructure 卸载
Oracle 11g grid infrastructure安装失败时,或者需要卸载时,不像10g的CRS组件卸载那么麻烦了。以linux系统为例,10g手工删除CRS的操作步骤: rm -f /etc/init.d/init.cssdrm -f /etc/init.d/init.crsrm -f /etc/init.d/init.crsdrm -f /et...原创 2012-04-24 10:40:03 · 314 阅读 · 0 评论 -
oracle 11gR2 在linux下安装时 cluster verfication utility failed
在linux下安装oracle 11gR2 的grid infrastructure时,root.sh执行完后,最后一步校验时出现下列错"oracle cluster utility failed"。之前所有过程都是好的。 检查crs_stat -t,发现gsd资源是目标和状态值都是offline。Oracle官方资料解释说。这个GSD是用在9.2库上的,如果没有9.2的库...2012-04-24 14:36:30 · 170 阅读 · 0 评论