Script:oracle拆分逗号分隔字符串 实现split
如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,实现像c#和java中split函数的功能
如’first field, second field , third field’,
拆成
first field
second field
third field
oracle 取随机整数
oracle 取随机数,可以用dbms_random包,取整数可以用ceil,floor,trunc,round等函数
如,
SELECT DBMS_RANDOM.RANDOM FROM DUAL;
产生一个任意大小的随机数
oracle 停止正在运行的job
ORACLE如何停止一个JOB
1 相关表、视图
2 问题描述
为同事解决一个因为网络连接情况不佳时,执行一个超长时间的SQL插入操作。
既然网络状况不好,就选择了使用一次性使用JOB来完成该插入操作。在JOB执行一段时间后,我发现被插入表有些问题(惭愧,当时也没有先检查检查就做了)。准备停止JOB,因为在JOB运行情况下,我的所有修改都会报系统资源忙的错误。
强行KILL SESSION是行不通的,因为过会儿,JOB还会重新启动,如果执行的SQL也被KILL了通过重新启动的JOB还是会被再次新执行的。
3 解决办法
比较好的方法应该是;
oracle查询最占用资源的查询
从V$SQLAREA中查询最占用资源的查询
select b.username username,a.disk_reads reads,
a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
a.sql_text Statement
from v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads > 100000
order by a.disk_reads desc;
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。
V$SQL是内存共享SQL区域中已经解析的SQL语句。
….
oracle procedure等对象失效后编译问题
如果procedure 所使用的表结构发生了改变等其它情况,在相应的xxx_objects表的status字段会变为invalid状态,但是如果在调用时 procedure会自动编译,grant失效对象权限给别人时也会自动编译,也是在dba_objects表可以查到最后一次编译的时间last_ddl_time,但并不是说调用就会重编译
…
sql 计算字符从后向前出现的位置
sql 计算字符从后向前出现的位置,用两个函数,instr,reverse(空格也算一位)
INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。但是下标值还是从前向后的只是如果字符偏后效率快些
如
…
sql 计算字符在字符串出现了次数
如何用sql 计算在一个字符串中某个字符出现了几次,如 ‘12,34,12,11’可的逗号出现了3次,思路就是总长度减去该字符替换成空后的长度,在ORACLE 11G中出现了REGEXP_COUNT函数更加方便,
REGEXP_COUNT (source_char, pattern [, position [, match_param]])
这里我们用通用的方法length
实验开始
…
sql varchar字段中是数字的
如果一个表中有个字符串类型的字段,值中有带字母的也有纯数字,如何找出纯数字的呢?今天发现了translate,当然还可以配合其它函数实现更大的功能!
实验开始
SQL> create table test1(id varchar2(5),
2 insert_date date);
linux 查询占用资源前10个进程
机器觉的慢的都快咽气了,怎么办,查出罪魁祸首,迫不得已时,枪毙几个
[oracle@topbox bdump]$ ps -ef|grep “(LOCAL=NO)”|sort -rn -k 8,8|head -10
oracle 9402 1 67 09:18 ? 00:43:09 oracletopbox (LOCAL=NO)
sql 匹配字符串的括号
如何把表中有这样的值 ‘aaa)bbb)ccc)ddd))aa)’,其实括号应该是成对出现,正确的值应该是aaa(bbb)ccc(ddd)(aa)
如何修改?实验开始
SQL> select regexp_replace(‘aaa)bbb)ccc)ddd))aa)’,'([^)]*)([)])([^)]*)([)])’,’\1(\3)’)newval from dual;
…
oracle 表添加主键 primary key
根据数据库三范式就是每个表建议要有主键,每个字段不可再分,表与之间不存在部分依赖,数据库的优化首先考虑的也是主键,主键会在对应的字段加唯一约束、加not null,建 索引, 演示如何在oracle创建PK主键,及主键使用反转索引。
怎么为表加主键呢
1,建表同时
SQL> create table test13 (id int primary key);
Table created.
…
oracle imp/exp 从生产库导入测试库
最常用到的就是从生产库导个方案出来,再导入到测试库,那当然是imp /exp 方便,虽然现在10g有了数据泵impdp/expdp,但对于开发人员把导出文件自己导入还是imp简单些
imp是insert 操作,所以不会覆盖里面已存在的数据
imp导入如果表存在加IGNORE = Y 参数只能是IMP出错时,进程将不会被中断,忽略错误,如果表存在,是追加
现在实验现在开始…
oracle 利用profile 限制用户(oracle user)占用数据库资源
使用profile 可以数据库用户的数据库资源进行有效限制,可以使用create profile 创建profile,用alter user xxx profile xx 分配用户一个profile,默认的用户使用的都是DEFAULT,如果新建 的profile 有未指定的值,该值还是有default所对应的值
语法如下:
CREATE PROFILE profile
LIMIT { resource_parameters…
归档日志错 ora-00257: archiver error . Connect internal only, until freed.
今天用sqlplus登录时提示 ora-00257: archiver error. Connect internal only, until freed.
很明显,归档日志满了可能,解决如下
sql> conn zhang/weizhao
ERROR
ora-00257: archiver error. Connect internal only, until freed.
sql 一组字符串中出现几个不同字符
计算一个字符串类型字段里出现了几个不同的字符,如“abcaaaab”=3 ,”aaaaaaa”=1
SQL> conn zhang/weizhao
Connected.
SQL> select * from test12;
NAME
—————————————-
手动配置启用ASMM(二)
配置ASMM让ORACLE自动优化内存,但有些参数只能手动配置不可以自动配置,
如db_keep_cache_size,db_recycle_cache_size,db_nk_cache_size(2\4\8\16\32)
而且这些参数的大小影响sga自动分配那5个池的总大小,也包含在db_target的大小范围内,如果db_target大小为9G,db_recycle_cache_size=2
手动配置启用asmm(一)
asmm =Automatic Shared Memory Management ,
让ORACLE 大部分的内存结构实现自动化管理 ,减轻了手动配置这些组件的工作量,可以更加灵活,更加动态的适应能力更强的内存解决方案,来应对使用峰值的需求
ASMM 是以MMAN在后台捕捉工作量信息,将内存转移到更加需要的地方,可以用DATABASE CONSOLE来配置ASMM,也可以手动配置,SGA_TARGET默认为0表示禁用ASMM,必须手动配置内存,如果将SGA_TARGET设置为非 0的数值,表示启用ASMM,那有5个池可以自动分配,SHARE_POOL,db_buffer_cache,java_pool,large_pool,stream_pool。
….
oracle sql 清除值中的空格
常常在表中有用户从页面填写的信息,上传到数据库中存在空格,为以后判断带个麻烦,今天谈论怎么去除空格.
SQL> select ‘begin’|| ‘ abcd efg ‘||’end’ rt from dual;
RT
———————————————-
begin abcd efg end
SQL> select ‘begin’|| ltrim(‘ abcd efg ‘)||’end’ rt from dual;
RT
关于Autotrace执行计划报错SP2-0618,SP2-0611
AUTOTRACE是一项 SQL*Plus 功能,自动跟踪为 SQL 语句生成一个执行计划并且提供与该语句的处理有关的统计。
可能经常遇到的问题是建了个新用户,set autut on 时报错,如下
SQL> conn zhang/weizhao –只有connect,resource角色的用户
Connected.
SQL> set autot on
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report …
关于db_block_size,db_nk_cache_size
标准块是用于SYSTEM表空间,标准块大小可以通过建库前更改初始参数db_block_size来指定,其值价于2K-32K之间,10G默认大小为8K,非标准块大…