Oracle 开发与管理
文章平均质量分 56
chhuma
这个作者很懒,什么都没留下…
展开
-
数据库设计心得 --- 树形结构
背景:树型结构表的设计在实践中, 经常碰到. 如果设计不好, 则会给应用程序的实现导致很大的麻烦. 这里以文件夹、文件作为例子介绍实现:-- 文件夹信息表create table t_folder(folder_id number primary key,原创 2011-10-12 20:49:47 · 3160 阅读 · 0 评论 -
在开发中如何跟踪Oracle数据库SQL的执行
select a.sql_text,a.FIRST_LOAD_TIME,a.EXECUTIONS from gv$sql a,dba_users bwhere a.PARSING_USER_ID=b.user_id AND b.username=upper('ygtest')order by FIRST_LOAD_TIME desc;原创 2006-01-08 13:10:00 · 1239 阅读 · 0 评论 -
数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(二)
数据迁移:migrate_update_t_origin.sql迁移回滚:migrate_undo_t_origin.sql-- 数据迁移失败, 进行回滚; 数据迁移失败时回滚只需要将数据迁移过程中创建的表删除即可declare i_count integer default 0;begin select count(1) into i_count from u原创 2011-12-01 08:38:43 · 1565 阅读 · 0 评论 -
数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(三)
数据升级:update_t_origin.sql-- 重命名旧表alter table t_origin rename to bak_t_origin;-- 同义词方案,将新表切换上线create or replace synonym t_origin for t_origin_01;-- 注:也可以通过视图方案将新表切换上线,语句如下:-- create or repla原创 2011-12-20 11:47:16 · 1418 阅读 · 0 评论 -
数据库平滑演进或者说数据平滑迁移方案及步骤
背景:随着系统环境的变化(如:数据量过大等),一个系统的数据库结构需要跟随调整优化,以满足业务要求。特别是在互联网应用系统的开发过程中,数据库的变化比较频繁,这时必须从技术上保证数据库能平滑、透明地进行迁移。数据库平滑迁移需要遵守的严则:1. 尽量透明, 迁移过程不能影响业务运行2. 如果数据量大,迁移过程可能很慢,但是升级必须迅速。也就是说将业务运行所依赖的数据切换到迁移后数原创 2011-12-20 07:49:12 · 2189 阅读 · 0 评论 -
数据量10亿级别的数据库表,多行存储成一行、一列扩展成多列之数据优化及迁移方案(一)
问题背景:原表设计如下,业务上是把登陆用户的商品以priority顺序方式列表显示,但是此列表显示非常慢。create table t_origin( user_id varchar2(11), goods_id varchar2(19), priority number(2), update_time DATE );comm原创 2011-11-30 16:38:01 · 3967 阅读 · 0 评论 -
数据库树型结构中获取目录串的高性能方法,sys_connect_by_path与自定义函数性能对比
背景:假设有如下文件夹表T_FOLDER,其DDL语句如下,根据文件夹主键ID获取此文件夹所在的目录串(格式为/id1/id2)?create table t_folder(id number(15) primary key,name varchar2(32), parent_id number(15));注:parent_id表示文件夹的父文件夹,parent_i原创 2011-10-25 07:55:38 · 1069 阅读 · 1 评论 -
结合SQL*Loader、AWK工具为表构造大数据量,以备测试
背景:假设对需求进行评估后,发现某表数据量为1000万,表名为T_1,表结构如下:COL_1 NUMBER(3)COL_2 NUMBER(5, 2)COL_3 VARCHAR2(10)COL_4 DATE问题:需要往表T_1原创 2011-10-07 10:31:10 · 670 阅读 · 0 评论 -
如何对数据量8亿的表中数据去重,其中重复的数据是总数据12.5%
背景:某定时应用程序(每天02:00启动)会读取指定目录下的所有txt扁平数据文件,并将数据保存到ORACLE数据库。本来应用程序将txt文件中数据入库后,会将目录中的txt数据文件备份到另外的目录中,但是应用程序有BUG导致备份失败。应用程序初始运行时需要对1亿全量的数据入原创 2011-10-07 10:18:21 · 5461 阅读 · 1 评论 -
如何打包oerr客户端程序,而不是为了使用oerr工具而安装整个ORACLE数据库
背景:Oracle数据库中查询错误代码相关的Cause和Action时,需要使用oerr工具。oerr工具是随Oracle数据库程序默认安装的,如果仅仅想使用oerr工具查看Error Message,再重新安装Oracle数据库即花时间也占用大量磁盘空间。Oracle提供了原创 2011-10-07 10:15:02 · 676 阅读 · 0 评论 -
SQL*Plus使用心得
背景:身为Oracle DBA,必须熟练使用Oracle数据库客户端工具SQL*Plus,而且大部分情况下,很可能就是你管理Oracle数据库的唯一工具。使用:1. 当执行SQL*Plus匿名PL/SQL语句块时,需要插入语句,如何输入分号“;”假设SQL*P原创 2011-10-07 10:36:15 · 585 阅读 · 0 评论 -
使用SQL*Plus操作数据库,当出现Error Message时,如何在简体中文和英文之间切换?
背景:Oracle DBA登录后台数据库进行管理操作时,一般都是使用SQL*Plus客户端工具进行,如果操作出现ora类型的Error Message时,有的人想看简体中文错误提示,有的人想看纯英文错误提示(如:本人),如何设置呢? 介绍:要达到提示中英文切换,我原创 2011-10-07 10:09:54 · 1995 阅读 · 0 评论 -
如何为ORACLE表空间或临时表空间增加数据文件?
背景:当通过ORACLE中的create table ... as select 语句创建一张新表时,新表的数据量为比较大,如10亿,这时SQL*Plus很可能就会提示“ORA-01653: ...”错误信息。这个错误信息暗示表空间大小不够,需要为表空间增加数据文件。分析原创 2011-10-03 12:07:45 · 63971 阅读 · 0 评论 -
杀死或者断开连接到ORACLE数据库的用户会话
背景:如果连接到ORACLE数据库用户正在执行非常耗时、耗资源的SQL操作,导致业务非常慢、甚至中断;这个时候就需要查找出正在执行耗时、耗资源的SQL操作会话,并将其杀死,从而恢复业务步骤:1. 查找正在耗时、耗资源SQL操作的会话2. 杀死会话 ALT原创 2011-10-03 09:59:40 · 3820 阅读 · 0 评论 -
通过USER_SOURCE、DBA_SOURCE、ALL_SOURCE查询Oralce数据库对象DDL语句
背景:在很多情况下,我们都希望获取某个对象的SQL语句,以方便进一步分析问题。如:存储过程编译失败,我们可以通过详细错误信息知道代码哪行出现错误,而源SQL语句不是自己开发,这时就需要知道ORACLE数据库对象DDL语句方法:SELECT NAME, LINE, TE原创 2011-10-03 09:55:24 · 3298 阅读 · 0 评论 -
使用SQL*Plus创建ORACLE存储过程报编译错误,如何知道具体错误信息?
问题:采用SQL*Plus登录ORACLE数据库,创建存储过程如果报错的话,往往就提示一句“Warning: Procedure created with compilation errors.”,如何显示或定位出详细的错误信息?方法一:在SQL*Plus中输入命令:原创 2011-10-03 07:25:44 · 12152 阅读 · 1 评论 -
数据库表连接后获取记录条数之COUNT函数
问题背景:今天Java开发工程师咨询,如下SQL语句COUNT函数值怎么会比表T_1行数、表T_2行数都大? 并说是不是ORACLE数据库的BUG?SQL:select count(*) from t_1, t_2 where t_1.id=t_2.id and t_1.id=1;其中T_1、T_2表结构如下:create table t_1 ( id numbe原创 2012-03-06 19:58:37 · 3461 阅读 · 0 评论