oracle ltrim使用
前几天有个同学说有个email地址突然少了一个字符,当时比较奇怪,找了半天,终于在生成文件的地方找到了一个sql,里面有这样的一句话:lower(ltrim(email,'#{' || id || '}#')) email ,其中id是一串数字。字段中email是:4262300@qq.comid是:106665944其实用这个ltrim()函数是有个场景的,有些eamil的格式会是#{id}#email,例如:#{106665944}#4262300@qq.com,我们想把第二个#号之前的都去掉,当然这个可以用replace 来解决,但是当时就直接用了ltrim,也许是对这个函数没有足够了解,也许是对email的数据没有足够的分析,结果就
静默安装后10.2.04 linux as 4.7 dataguard 的问题
10.2.0.4的静默安装使用起来倒是比较简单,安装一切顺利,搭建standby后,发现有些错误。安装的时候没有选择安装olap,结果在standby open read only的时候,报出了下面的错误:Errors in file /opt/oracle/admin/itildb/udump/itildb_ora_19678.trc:ORA-00604: error occurred at recursive SQL level 1ORA-12663: Services required by client not available on the serverORA-36961: Oracle OLAP is not available.ORA-06512: at "SYS.OLAPIHISTORYRETENTION", line 1ORA-06512: at line 11Completed: alter database open r
exp 的query 写在parfile中
exp 的query 写在parfile中既简单也不用考虑不的平台有不一样的格式。query=" where name like 'test%'"[@more@]
时间转换,记录一下
一个东八区的时间,转换成相应的秒,底层的时间表示方式。(CREATION_DATE-8/24-to_date('19700101','yyyymmdd'))*86400 [@more@]
做事情的习惯决定着事情的成败
这几天在上线一台新的机器,安装过程还算是比较顺利,就在安装上线之后,突然发现,有一项指标不对,怎么也不找不到为什么。后来一哥们提醒一下,有没有做某某操作,我说没做,在此时自己脑子里突然就什么都没有了,感觉世界好像是不存在了!自己突然意识到,安装过程的说明文档自己根本没有完全看完,只是把前面的安装过程看了一下,没有仔细看后面还有没有说明。突然想到自己,很多时候都是凭借自己的一点点认识,对一些事物就妄加推测,readme很少是完全从头看到尾的,以前这个事情从没有引起我的注意,今天,给了我这么深刻的一个教训
ntpd 时间同步
前一段时间,有个机器配置了ntpd服务,结果时间还是不对,结果使用的gg找来问为什么?我也不清楚,然后上去检查一下:root@xxxx:/root#ntpq -pn remote refid st t when poll reach delay offset jitter==============================================================================*10.0.xx.xxx 127.127.1.0 11 u 126 128 377 0.293 0.030 0.007发现,根本就没有使用时间服务器同步,而是以本地为准,之后重新找了几个时间服务器重新配置:root@xxxx:/etc#vi ntp.conf# Permit time synchron
dump oracle events(转)
转自:http://chenzs19850728.blog.163.com/blog/static/7629609200812475646182/我们经常会发现某些人会问如下面的这些问题: “这个oracle块里面到底是怎么存这些数据的?” “死锁发生的时候,我怎么知道是哪几个对象发生的死锁?” “oracle是怎么执行这个操作的?” “oracle的library cache是什么个样子?” …… 这个时候,可能就有人会如下的回答这样的问题: “你dump一下这个块吧!” “你可以设置60事件跟踪一下吧。” “你做一个10046事件跟踪一下吧。” “你可以dump一下内存的library cache啊。” …… 等等
鸟哥的学问
下面的话是鸟哥的话,读来觉得不错。“我们在学数学的时候,一个很重要、但粉难的东西是一定要[背]的,那就是九九表,被成了之后,未来在数学应用上的路途上,真是一帆风顺啊!这个九九表我们在小学的时候几乎背了一整年才背了下来,并不是这么好背的呢!但他确实基础当中的基础!您现在一定受惠相当多呢!而我们谈到的这个正规表示法,与前一章的Bash shell就有点像数学的九九表一样,是linux基础中的基础,虽然也是最难得部分,不过,如果学成了之后,一定是[大大的有帮助]的!这就好像金庸小说里面说的学武难关,任督二脉,打通任督二脉
09年开始了
问候了一圈新朋旧友,09年开始了,希望新的一年有新的收获,新的一年能够做几件事情就好了,坚持一年相信有收获。[@more@]09
sqlldr使用
sqlldr 使用:sqlldr是oracle提供的一个比较好用的平面文件数据倒入工具,可以倒入带有格式的数据等比较规范的文本文件。加载方式有:传统路径(conventional path),利用sql插入为我们加载的数据和直接路径(direct path)。必需要有一个 数据文件和一个控制文件,日志文件可选(不指定的话,会自动生成的)。数据文件的分隔符需要指定合适,否则会出现混乱。控制文件是告诉sqlldr数据文件和表的对应关系以及一些处理规则命令:Sqlldr userid=user/password@SID control=loader.ctl log=loade.log bad=loader.badSqlldr 这个是应用程序
oracle 优化经验总结
晚上下班,和oracle优化高手一起坐下来聊聊。1、关注访问频繁的表,现在的存储已经可以非常分散的存储数据,所以可以对访问频繁的表以及涉及到的sql进行特别关注。statspack的sql排序要根据执行次数、逻辑读等等多个纬度去衡量,这部分sql要是能够处理好,数据库的load会得以控制。2、oltp系统的sql的业务范围界定,他不是做报表的用途,特点是每次处理的数据量比较小,能够比较快的处理完毕,这是一个原则。统计类型的如果非要必须,尽量减小其访问数据的范围,或者是将这样的大量数据的统计工作放到业务比较闲的时候做,这一点要推动业务
表约束的研究
CREATE TABLE zsq_t (a NUMBER CONSTRAINT apk PRIMARY KEY DISABLE,b NUMBER NOT NULL);CREATE TABLE zsq_x (c NUMBER CONSTRAINT afk REFERENCES zsq_t DISABLE);执行上面的语句之后约束不生效CREATE UNIQUE INDEX tai ON zsq_t (a);CREATE INDEX tci ON zsq_x (c);执行上面的语句后 zsq_t表增加一个唯一索引约束,该约束生效ALTER TABLE zsq_t MODIFY CONSTRAINT apk ENABLE NOVALIDATE;ALTER TABLE zsq_x MODIFY CONSTRAINT afk ENABLE NOVALIDATE;执行上面的语句后 两张表上的约束都生效,但是不对旧数据进行约束检查,新数据会不能插
lock (1)
Lock DescriptionDML locks (data locks) DML locks protect data. For example, table locks lockentire tables, rowlocks lock selected rows.DDL locks (dictionarylocks)DDL locks protect the structure of schema objects—forexample, the definitions of tables and views.Internal locks and latches Internal locks and latches protect internal databasestructures such as datafiles. Internal locks and latchesare entirely automatic.DML锁就是保证当数据被多个用户同时修改时的完整性,保证不同时发生DML或者DDL。例如ta
oracle 外部表 external table
第一步:建立路径,并且要保证这个路径可以被oracle读写权限(因为oracle会在这个路径下写外部表的日志和错误的数据) mkdir /home/oracle/ 将需要做外部表的数据(test.txt,test2.txt)放到该目录下,可以放多个 --copy test.txt,test2.txt to /home/oracle/第二步:dba用户执行,创建directory并且授权给oracle的schema。create directory test as '/home/oracle/';grant read on directory test to test1;grant write on directory test to test1;--登录teset1,执行用户创建external tablecreate table resources_ext( GMT_CREATE
dump 解决问题
使用外部表搞了一些数据到数据库中去,结果有一列原本可以转化为number的却出现了ORA-01722: invalid number。trim了半天也没有效果,想起dump:select">SQL>select dump(id) from test_re_2 where rownum<10;DUMP(ID)------------------------------------------------------------------------------------------------------------------------------------------------------Typ=1 Len=11: 9,49,48,48,48,48,50,50,52,54,9Typ=1 Len=11: 9,49,48,48,48,48,50,50,52,55,9Typ=1 Len=11: 9,49,48,48,48,48,50,50,52,56,9Typ=1 L
clob 字段查询
刚刚有个同事问我clob字段如何查出来看看,看了一下dbms_lob包,先是用dbms_lob.GETLENGTH(),查看了一下这个clob字段有多少字符,然后直接设置set long 99999然后直接查询clob字段,没有问题,结果出来了。[@more@]
index 和 index_desc hints的一点有意思的区别
2 - access("T1"."OBJECT_ID">=6361 AND "T1"."OBJECT_ID"<=6400)和 2 - access("T1"."OBJECT_ID">=6361 AND "T1"."OBJECT_ID"<=6400) filter("T1"."OBJECT_ID"<=6400 AND "T1"."OBJECT_ID">=6361)SQL>create table t1 as select * from user_objects; SQL>create index t1_object_id_ind on t1(object_id) tablespace users; SQL>explain plan for 2 dele
oracle 20468 0.0 19.9 1582016 1535864 ? S Apr15 0:11 ora_qmn0_xxxx
察看进程看到ps -aux | grep oracle oracle 20468 0.0 19.9 1582016 1535864 ? S Apr15 0:11 ora_qmn0_xxxx然后找到了其对应的sql:select q_name, state, delay, expiration, rowid, msgid,dequeue_msgid, chain_no, local_order_no, enq_time, enq_tid, step_no, priority, exception_qschema, exception_queue, retry_count, corrid, time_manager_info, sender_name, sender_address, sender_protocol from SYS.AQ_SRVNTFN_TABLE where time_manager_info <= :1 and state != :2 for update skip locked不知道到底这个进程是干什么
oracle connect by
declare maxl number;idnew number;beginfor t in (select id from t2) loopselect max(level) ll into maxl from t1 start with id=t.id connect by prior pid=id;select id into idnew from (select level ll, id,pid from t1 start with id=t.id connect by prior pid=id) where ll=maxl-1;update t2 set id=idnew where id=t.id;end loop;commit;end;[@more@]
SGA系统全局区内存结构了解
System global area(SGA) 是一组共享的内存结构,它里面存储了oracle数据库实例(instance)的数据和控制文件信息。如果有多个用户同时连接到数据库,他们会共享这一区域,因此SGA也称之为shared global area。SGA和oracle的进程组成了oracle的实例(instance)。在实例启动的时候内存会自动分配,当实例shutdown的时候操作系统会将内存回收的。没一个实例(instance)拥有自己的SGA。SGA是可以读写的,每一个用户连到数据库实例时都是可以读实例的SGA的内容,oracle通过服务器进程执行一个命令去写SGA的数据。SGA包含以下的数据结构:l