-
Oracle管理和开发
收藏从数据库管理和开发两个角度来看待Oracle为数据库平台的应用,记录的文字都是来自日常工作和学习的总结,是不同项目的血与汗的积累。
最近更新文章
Oracle分区表的分区交互技术实现数据快速转移
有一个需求,将某业务表的某个时间点之前的记录转移到它的历史表中。如果当前业务表不是基于这个业务时间点的分区表设置,那只能insert再delete操作。这种转移数据的方法非常非常低基础。经常在初级的数据库管理人员和开发人员的程序中出现。不是说这个方法不好,对于转移的记录数量在几十几百条,而转移频率高,转移时间点随机的情况而言,这个方法还是挺管用的。但如果转移的数据量一次数以百万计的话,这种方法就 ...
Oracle数据库的SQL性能问题分析
在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢,超过数分钟无结果,等待事件又是空闲的SQL*Net message事件,最后只好强行中断。
这个SQL是一个普通的UPDATE语句,where子句中多张表关联,关联的表都是临时表。
update t_fund_product_info
set is_valid = 'N'
where prdt_id not ...
创建增量同步Oracle物化视图问题
我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某个表的数据同步到另一个数据库B上。
我们常用的最简单的实现步骤是这样。首先在数据库A上确认该表有主键,然后建立在这个表上建立物化视图日志如“CREATE MATERIALIZED VIEW LOG ON T_tablename;”,再到数据库B上创建数据库链接和快速刷新的物化视图如“create materialized view ...
Oracle sql loader使用速成
Oracle SQL LOADER是Oracle的数据加载工具,用来将固定格式的文本文件中数据加载到Oracle数据库中。它提供了最快捷的加载途径(direct / parallel),是大数据快速 ...
to_date转成字符串时ORA-01843 not a valid month 问题分析
(注,本文三度易稿) 在开发Oracle SQL或PL/SQL程序过程中,我们常常遇到将字符串类型转换成DATE类型的需求。我们会使用to_date来实现这个转换需求。但有时候这种转换会出错,报ORA-01843:not a valid month。有时候这种转换在开发系统上测试时是正常的,部署到生产环境时却出这种错误。
例如,我们需要将字符串类型的字符串'19-JUN-01'转换为时间类型的 ...
第三方应用的数据库用户如何创建
在日常管理的Oracle数据库中,会有第三方应用需要操作数据库。第三方应用会要求在数据库中创建一个用户,用于读写自己的对象和其他的对象。
关键 ...
oracle限制某IP的连接数
在数据库管理中,会出现限制某个IP访问数据库的连接数或某个用户访问数据库的连接数的需求。
对于用户访问数据库的连接数限制,我们可以从数据库的profile上着手,使用profile的特性实现该需求。
对于IP访问数据库的连接数限制,从数据库上可以使用logon on database触发器来实现。
每一次新会话登录,都将IP记录在vrsession的client_info中,然后coun ...
Oracle的pipelined函数实现高性能大数据处理
在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换插入到另外一张或几张表。
常规的操作方法固然可以实现,但时间、磁盘IO、redo日志等等都非常大。Oracle 提供了一种高级函数,可以将这种数据处理的性能提升到极限。这种函数称为管道函数。
在实际项目中,管道函数会和表函数、数据流函数(即表函数和CURSOR结合)、数据集合、并行度一起使用,达到大数据处 ...
Oracle的pipelined函数提升数据输出性能
从Oracle 8开始,我们就可以从一个collection类型的数据集合中查询出数据,这个集合称之为“虚拟表“。它的方法是“SELECT FROM TABLE(CAST(plsql_functi ...
使用bulk collect insert实现大数据快速迁移
在Oracle
数据库中,将一张表的部分字段转换导入到另外一张表的部分字段中,如"insert into t_target(owner,object_name) from t_source;"
。
这也是解决此类数据迁移的的常规操作方法。
如果源表记录数不是很多,操作操作也无妨。
但是若源表记录数一旦超过百万千万,执行时间就长了,占用的回 ...
使用plsql实现阿拉伯数字转中文大写
使用pl sql的数组功能、循环机制将小于10的16次方的任意阿拉伯数字转换为中文大写数字。该函数从原来的200多行,优化成现在70行左右。
始终相信,最少的代码实现某个功能才是最优雅的开发方式,代码越少出bug的概率就越低。
从开发、调试、到优化这个函数,我用掉了约5个小时的时间,最后只有短短的70行。顺便膜拜一下,那个解放军美女尖兵:90昼夜主持编写40万行代码
(mik ...
PLSQL集合类型的使用总结
在pl sql
中,集合(collection)
是一组有序的元素组成的对象,这些元素的类型必须一致。
pl sql
将collection
分成3
类,分别为Associative arrays
(也称index-by tables
)、Nested tables
、Varrays
。
Associative arrays
,可以看着是一个数据字典,有key,v ...
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析
在linux
操作系统的数据库服务器上,使用”sqlplus
/ as sysdba”
登录Oracle 10.2
数据库实例时,登录失败,显示ORA-01031:
权限不足。
在数据库所在服务器上登录的操作,使用的是操作系统认证方式登录数据库实例。在出现“ORA-01031 “
的错误错误时,首先去检查sqlnet.ora
文件中SQLNET.AUTHENTICA ...
RMAN不恰当配置导致Oracle数据库备份死慢
这是一个发生在Oracle数据库上使用RMAN进行数据库操作因在默认配置中使用不合适的配置导致备份性能慢到不能接受的问题。
在整个问题解决过程中,涉及了存储商、网络、操作系统以及Oracle等等。解决过程复杂和艰难,甚至都开始怀疑自己了,到最后峰回路转,在RMAN备份的输出日志发现了关键信息,使得问题得以解决。
这个问题我们想复杂了。如果我们能仔细一点,多看看日志信息,就能节省很 ...
hugepages使用出现kswapd导致系统负载突然上升
在运行Oracle
数据库的linux
服务器上,某个时间段的每分钟负载会突然上升到40
以上,在进程队列里看到kswapd0
出现,导致数据库无响应,持续时间数分钟。
对于应用而言,这个时间段有明显的停滞感,像系统已经挂掉了一样。
如果这是发生在Oracle RAC
环境中某一个节点上,那么这个节点就可能会重启。
这属于非常严重和致命的问题。
(miki西游 ...