
Oracle
wanglilin
这个作者很懒,什么都没留下…
展开
-
ibatis 绑定变量 sql硬软解析
关于避免sql的硬解析:1.ibatis中,所有的 ##都是绑定变量,所有的$$都不算绑定变量,所以尽量避免使用$$。但是对于In,$$中传入的值,不被看成一个整体,此在In条件中可以顺利使用只是不是绑定变量如:1 :2 :3 :4这种语句;如果in的值是##传入的,则in查不到任何数据因为##里面的东西被看成一个整体。2.如果sql中涉及到 where id in(xxx),原创 2013-09-06 15:06:05 · 5176 阅读 · 0 评论 -
PL/SQL记录和表(oracle type(数组))(最简单!文章下面标黄标题是精华,必看)
PL/SQL记录和表1.使用%TYPE (用于基本数据类型)例1(用户并不知道Course_No的数据类型,只知道他是基于Student_No数据类型的,随着Student_No的类型变化而变化):DECLARE...Student_No INTEGER;...Course_No Student_No%TYPE;例2(表示BrowsePath的数据类型是基于表Bo原创 2012-11-12 17:13:15 · 11153 阅读 · 1 评论 -
oracle存储过程循环插入10000条数据
create or replace procedure aaasbegin for i in 1..200000 loop insert into t_1_mtbuf(id,msg,mobile,spcode) values(seq_bufid.nextval,'00000','15900000000','8888'); end loop;en原创 2012-01-15 11:14:01 · 6962 阅读 · 0 评论 -
dblink
需求:要从146上能查询111的数据并将111的数据直接Insert进146.方法:1.在146上创建到111的dblink2.不用在146本机的tnsnames.ora文件中,配置一个指向111的服务,直接146上(其中SERVICE_NAME要在111中select name from v$database;): create database link link146_原创 2012-02-16 16:37:23 · 4027 阅读 · 4 评论 -
批量更新某字段内容的部分内容 replace(要替换的字段,'被替换的字符串,'替换成的字符串')
要求:一个字段值:………………预约…………要将其中 “预约”,改成“预定”。但是我开始写的时候,写成了 update ..set smscontent = replace ('预约','预定')于是悲剧发生了,这些要改的内容,全部改成 “预定'” 了。于是,改回来。1.先把改错的内容改回原样。update t_busi_presend_mx mx set mx.原创 2012-05-21 19:48:31 · 8782 阅读 · 0 评论 -
ORA-07445: 出现异常错误: 核心转储(oracle bug)
近来在测试时碰到一莫名问题,研发声称在开发环境中正常,而我们在测试环境中则经常遭遇,几番折腾,发现是oracle的bug所致。不过即使是oracle出bug,人家在metalink上也井井有条的写着从哪个版本到那个版本存在这样的问题,在什么版本上可以fix掉这个bug,在什么条件下会触发这个bug,又通过什么样的解决方案可以把这个bug规避掉。所以说,bug到处都会有,而怎样让已知bug不会成转载 2012-05-04 10:02:12 · 65347 阅读 · 1 评论 -
dbms_stats.gather_table_stats与analyze table 的区别[转贴]
参考 http://www.itpub.net/viewthread.php?tid=845777&extra=&page=1Analyze StatementThe ANALYZE statement can be used to gather statistics for a specific table, index or cluster. The statistics can be转载 2012-02-09 22:02:50 · 1200 阅读 · 0 评论 -
oracle普通表 临时表 awr统计分析
业务需要,我在oracle中建了一个名为 t_0_mtbuf 的表,用建普通表的语句建的,其实这个表的作用是临时表的作用,即:java中每次select 1500条出来,再在循环中逐个insert 进sqlserver数据库,然后在oracle中将这条记录删掉。但是这样运行了一段时间,今天,表里缓存了6W多条数据,之前是几十甚至100的走的,现在是2条,1条的走,数据走不动了,问题很严重。原创 2012-01-05 20:03:38 · 1413 阅读 · 0 评论 -
oracle脚本导入导出,用于新项目升级
导出的时候,有存储过程,函数,触发器,表等等PL/SQL中:导出:工具-->导出用户对象-->多选住你要导出的该用户的对象,选择输出脚本文件(sql文件)的路径-->导出。这时会生成一个.sql的脚本文件。导入:(清理的时候,只用把tables里面的表全部删掉,触发器,存储过程之类的,假如已经存在相同的,导入的时候也不会有冲突)工具-->导入表-->SQL插入-->导入文件原创 2011-10-24 19:20:36 · 1165 阅读 · 0 评论 -
oracle启动 init.ora spfile pfile
昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显。因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都是客户要发送出去的东西,比较急,所以,经理就去机房把oracle重启了。他怎么重启的我也不知道,我只知道,重启之后,oracle起不来了。。那个电话啊。。那个催促啊。。 >cmd>sqlp原创 2011-12-29 14:45:07 · 9699 阅读 · 1 评论 -
oracle创建job,oracle异常处理
在命令窗口中执行。 variable后面的变量名要和 后面 job=> :job(这个一样),要不然会报“并非所有变量都已绑定”错误。执行成功后,job号会由oracle自动生成。一般在用job调用存储过程中,会在存储过程中加oracle异常处理,否则job出错后无法查错。1.创建job(注意其中next_date要写好!需要什么时间,就写什么时间)variable job1 n原创 2012-02-02 11:15:10 · 3534 阅读 · 0 评论 -
oracle权限详解
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2010-10/29075.htm一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。二、系统权限管理:1、系统权限分类:D转载 2012-11-16 16:50:14 · 1069 阅读 · 0 评论 -
oracle case when
1.标准的(case结束是end case,但是用end也可以,2就是,可是1中不能直接用end,会报错)if tmpmoshiid is not null then CASE WHEN (main2.allcount<=100) THEN select t_0_100 into tmpkcbili from t_cl_moshi where id=tmpmoshi原创 2012-11-16 15:23:55 · 1649 阅读 · 0 评论 -
oracle生成不重复随机数
1.创建FUNCTION fn_ifrandom(其中用到递归)CREATE OR REPLACE FUNCTION fn_ifrandom (tmpallrandom IN clob,tmprandom IN VARCHAR2,allcount in number) RETURN varchar2IS --生成不重复的随机数 randomchar varchar2(5);原创 2012-11-16 15:17:48 · 16557 阅读 · 0 评论 -
java ibatis调动oracle传入clob参数的存储过程
我试了几个,得出结论:java程序,无法直接用ibatis调动oracle传入clob参数的存储过程,而只能将clob参数插入数据库表的字段,插入时直接传入String参数就可以,所以,标题应该这么解决:1.将clob字段先插入数据库中建有clob字段的临时表2.存储过程中从表中将clob字段取出使用。我的代码如下:oracle数据库建表:create table t_te原创 2013-08-15 16:30:23 · 3806 阅读 · 0 评论 -
oracle 神奇的merge into
我的问题:你们看我这个,1号的就走索引,4号的不走索引要全表,我希望4号走索引,加了强制走索引的语句也不管用,怎办?(我的语句:)update t_mt partition(P_MT5_1) mt set (mt.stat,mt.rpttime)=(select stat,rpttime from t_statbuf buf where sj>=to_date('2原创 2013-05-10 15:10:30 · 2072 阅读 · 1 评论 -
IMP-00002: 无法打开 D:\orcldat\test_20111024.dmp 进行读取,rman备份
首先,我的路径写错了,文件夹是orcldata我掉了个a。其次,命令后添加 full=y。dos下随便哪个目录>IMP username/pwd@dbname BUFFER=64000 FILE=D:\orcldata\test_20111024.dmp full=y然后就OK了。 其实,导入dmp文件(其中是表中的数据),用PS/SQL就可以。(导入之前,要原创 2011-10-24 14:37:59 · 66221 阅读 · 1 评论 -
oracle分区相关
需求:mx表,最早创建时间是2013-01-15。从2013-01-15到2013-02-27(总共的),有1500万数据。从2013-01-15到2013-01-31(2月份之前的)有560万数据。由于mx表是主要业务表,数据量不能太大,所以需要半个月进行一次数据迁移,将数据“剪切”进mxbak表。现在将mxbak表,按 创建时间 半月进行一个分区建立分区表。由于现在是2013-02原创 2013-02-28 16:43:48 · 817 阅读 · 0 评论 -
某字段不走索引分析
表t_busi_main_presend2建了索引T_BUSI_MAIN_PRESEND2_SHSTATUS在SHSTATUS字段,SHSTATUS char(1) default '0',只有2个值 '0' ,'1'。初始值为‘0’,处理之后为‘1’,表中几十万数据,大部分为‘1’,现在有8条为‘0’。现在,建索引(类型为normal,不能bitmap,会锁)后,下面语句竟然是全表!se原创 2013-01-21 17:18:05 · 1205 阅读 · 0 评论 -
oracle 清大表
--1: 创建新表Create table CC_EVENT_RESERVE_NEW tablespace tab_cc as select * from CC_EVENT_RESERVE where rownum < 1;--close loggingalter table CC_EVENT_RESERVE_NEW nologging;--set session parall原创 2013-02-02 11:39:49 · 814 阅读 · 0 评论 -
创建oracle数据库,及建完后各种优化
磁盘划分名称大小用途C 盘(主盘)50G安装Windows 2003 64bit 系统D 盘184G/oracle 安装数据库软件目录 /oracle/oradata 数据文件目录E 盘(主盘)116G/oracle/oradata 回滚段、临时表空间、日志文件目录(重做日志组(6个,每个500M,后期原创 2012-02-07 20:34:21 · 4654 阅读 · 1 评论 -
oracle移datafile
曾经所有的datafile都在一个盘上,导致io剧增不下,现在将datafile平均分到3个硬盘(由于data大,先只考虑平分data不动index)。1.先查看表空间物理文件的物理路径select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024原创 2013-01-26 16:31:39 · 873 阅读 · 0 评论 -
清表后 表空间缩减情况
背景:t_t_busi_main_presend 和 t_busi_main_presend3 表,是差不多的(t_busi_main_presend3清理前有92万数据,t_busi_main_presend是80万),只是多条t_busi_main_presend3记录可能汇到一条t_busi_main_presend中。现在先清理t_busi_main_presend3将2013-0原创 2013-01-23 21:20:04 · 735 阅读 · 0 评论 -
在存储过程中的clob数据类型
客户新上线的一套重要生产系统,某个存储过程每小时调用约11万次,每次调用的逻辑读超过了10000,消耗的CPU占数据库CPU Time的25-30%。很显然,这样一个存储过程是值得优化的。不幸的是,这个存储过程的业务逻辑很复杂,光是参数就有9个。而存储过程所在的包其代码超过了1万行。通过复查代码的方式,耗时耗力,还不一定能够找出问题。诊断性能问题,首要的是了解这个存储过程所大概要完成的业务转载 2012-11-15 17:25:49 · 1379 阅读 · 0 评论 -
oracle索引(函数索引,以时间区分每天)
不是啊,建太多会影响性能的,维护成本也很大一般在关键字段上建立例如 where 后面有很多字段,其中有 logtime 字段,你在这个字段上建立索引,查询是根据 logtime 字段指定时间条件就会过滤掉绝大部分记录,剩下的即使全表扫描也不会太多,从而影响查询速度 我们业务基本都是以 时间类型 建立函数索引的比如 create index emp_ind原创 2012-02-02 11:24:05 · 6364 阅读 · 0 评论 -
oracle split去逗号,行列转换
1.针对 '1','2','3','4','5'(逗号在字符串外面)SQL> SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST('1','2','3','4','5'));COLUMN_VALUE-----------------------------------------------------------------原创 2012-02-03 16:07:22 · 36746 阅读 · 0 评论 -
oracle按月统计,上个月1号00:00:00到最后一天23:59:59
上个月1号00:00:00select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') || ' 00:00:00' firstDay from dual; 上个月最后一天23:59:59(每个月最后一天 是下月第一天减1天 + 23:59:59)select to_char(add_months(last_da原创 2011-12-12 15:48:26 · 5894 阅读 · 0 评论 -
oracle的使用
第四部分 Oracle的使用4.1 配置oracle的环境变量[oracle@localhost ~]$export ORACLE_BASE=/home/oracle/oracle[oracle@localhost ~]$export ORACLE_SID=ORCL[oracle@localhost ~]$export ORACLE_HOME=$ORACLE_BASE/produc原创 2011-12-17 16:55:59 · 546 阅读 · 0 评论 -
安好oracle后 部署策略
用rman备份···命令里面有···crontab你应该会的--开归档之后 每个星期归一次 、?归档是自动一直进行的,由归档进程自己干 --写满就归档 对吧你要干的是每周的 备份 和 将生成的归档日志移动到别介质中 防止磁盘用光NONONO··· --每天增量备份 每周完全备份 是不是这样备份策略是这样的,如果数据量很大的话--用这个备份策略 然后 我是原创 2011-12-17 15:23:19 · 580 阅读 · 0 评论 -
centOS 5.6安装oracle 10.2.0.1.0
心理准备:1. 当我第一次在linux上安装oracle的时候,我感觉好麻烦,结果第一次没装到一半就放弃了,因为习惯了window的界面下一步,现在想想其实挺简单的,耐心点做完就好了。2. 软件的下载,百度一下就有,我就不重复了。3. linux的机子在自己练习的时候,都是虚拟机,操作系统,redhat,centos,随便。装前准备:软件:oracle 10.2原创 2011-12-16 22:36:40 · 2752 阅读 · 0 评论 -
insert into table(col1,co2)...col1是常量,col2是子查询出来的值
insert into t_busi_main_presend(id,clientid)select '111',t.id from t_sys_client t where t.code='古风尚'; 注意,当insert的值有子查询出来的,values关键字就不要了。 其中id是常量,client是子查询出来的。写这种sql,可以先把下面select出来的值执行一遍原创 2011-11-11 22:19:25 · 3209 阅读 · 1 评论 -
恶心的Oracle的if else if...
前段时间写Oracle存储过程就遇到问题.原来写成这样if 1=2 then null;elseif 1=3 then nullend if;在PL/SQL编辑环境下elseif没有变色,说明不是关键字。后来改成if 1=2 then null;else if 1=3 then nullend if;编译时报异常。去goole上百转载 2011-11-11 15:09:38 · 844 阅读 · 0 评论 -
编辑oracle clob数据类型的值
pl/sql工具中,要更改某行某个字段的值:法1.反键该表--》编辑数据。这种方法,对于数据量少的时候,可以一眼看出来你要更改的数据,很好更改。但是数据量大了的时候,就要用到update语句。如果update一个clob型的数据,例如下面的allcode字段是clob型的。update..set allcode='.......'这样写是错误的,因为clob是对象型的数原创 2011-12-02 11:41:54 · 5085 阅读 · 0 评论 -
关于oracle的rownum
1.给12个id按升序排序,取出排序后的前5个id。select * from (查询语句) where rownum Oracle中的rownum的是在取数据的时候产生的序号select rownum,id from t_busi_presend_mx order by id (注:下面结果中,id是已经按照升序排序的) ROWNUM ID----------原创 2011-11-02 11:59:49 · 1099 阅读 · 0 评论 -
oracle基于用户的备份及恢复
要执行exp或imp命令,首先:1.看oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文件,要不然可能无法执行这个命令的。2.或者可以直接进dos的oracle的安装目录的bin目录下>EXPusername/pwd BUFFER=64000 FILE=D:\orcldata\test_full201110241059.dmp OWNER=username原创 2011-10-24 13:33:44 · 847 阅读 · 0 评论 -
PL\SQL 打开时出现"动态执行表不可访问,本会话的自动统计被禁止"错误解决
最近做J2ee开发的时候使用PL/SQL,但是每次第一次打开表的时候会提示"动态执行表不可访问,本会话的自动统计被禁止"的错误,一消息如下: V$SESSION,V$SESSTAT,V$STATNAME没有被授权,没有权限访问这几张表,所以没有本法进行统计.当然要给授权了.授权SQL如下:grant select on v_$statname to user with grant option原创 2011-10-24 10:39:43 · 4020 阅读 · 0 评论 -
oracle索引,主键影响查询速度
要提高查询速度,一般:1.不需要删除的字段,建主键;有可能要被删除的字段,建索引。2.假如一次提交5W个号码,每个都要和数据库里90W号码进行比较5W个号码中哪些号码是90W号码中的。那么将90W号码建一个表,一个字段就是号码字段,然后把该字段设为主键即可。update前100条为0,另外一个程序找状态为0的,要提高速度,要将这100条(所有条)的ID建索引。3.不管对什么字段建的原创 2011-11-27 16:24:33 · 8654 阅读 · 0 评论 -
windows远程linux(centOS 5.6)
用了2个工具:1.secureCRT(securecrt.zip)(这个没有图形界面,全部命令行) 协议:ssh2 主机名:192.168.1.111(#hostname -i出来的是127.0.0.1,这个ip和localhost是一个意思,所以这里写127.0.0.1是行不通的,要#ifconfig查看ip) 端口:XXXX(端口不是默认的22,端口修改,详见htt原创 2011-12-22 20:26:50 · 1795 阅读 · 0 评论 -
oracle分区表的建立方法(包含已经存在的表要分区)
Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。分区提供转载 2012-01-05 10:24:55 · 22155 阅读 · 0 评论 -
oracle 抓出cup执行时间最多,执行次数最多的sql语句
遭遇cpu过多占用,表现为%usr很高,top 或者topas中cpu占用最多的进程为oracle server process.则根据pid可以找出该pid对应的sql_textselect se.username,se.machine,sq.cpu_time,sq.sql_text fromv$process p,v$session se,v$sqlarea sqwhe转载 2012-02-02 10:42:07 · 5974 阅读 · 0 评论