![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ORACLE
sych888
这个作者很懒,什么都没留下…
展开
-
查询子串在字符串中出现的次数
drop table test1;drop table test;create table test(姓名 varchar2(20));insert into test values('a');insert into test values('b');insert into test values('d');insert into test values('c');原创 2016-11-04 21:34:07 · 705 阅读 · 0 评论 -
ORACLE 字符串定位、截取
SQL> select d.deptno, wm_concat(e.ename) nn 2 from emp e, dept d 3 where e.deptno = d.deptno 4 group by d.deptno; DEPTNO NN---------- ---------------------------------------原创 2016-11-19 21:38:33 · 2181 阅读 · 0 评论 -
ORACLE ref cursor的简单使用
本篇文章的目的是通过建一个存储过程来返回一个结果集合,并通过前台调用把结果集展示出来--建立存储过程,参数类型为OUT SYS_REFCURSORcreate or replace procedure test_ref_cursor(v_cursor out sys_refcursor)asbeginopen v_cursor for select * from em原创 2016-11-15 13:05:32 · 2996 阅读 · 0 评论 -
ORACLE数据库中通过DBLINK查询时含有CLOB字段的情况
在多库交互时,常常用到DBLINK(DBLINK有时会引起SCN传播问题),但当要查询的表里含有CLOB字段时,我们无法直接进行查询,需要做处理才能查询出数据查询一般分为两种情况一是对数据实时性要求不严格:这种情况可以通过CREATE TABLE TAB_NAME AS SELECT * FROM TAB@DBLINK的方法把远端数据过度到本地进行操作一是对数据实时性要求比较高原创 2016-11-18 09:56:04 · 8453 阅读 · 0 评论 -
oracle数据库字段NULL赋值情况处理
在存储过程中常用到字段值赋给变量的情况,此时主要会出现两种情况一,能查询到记录 记录中字段值又分两种情况 1、字段有值 2、字段值为NULL二、查询不到记录,COUNT返回为0--一下是代码测试情况-测试SQL> select empno,sal,comm from emp where empno=7369;原创 2016-11-18 09:29:23 · 6285 阅读 · 0 评论 -
LEAD分析函数用法小例子
--可以用ORACLE数据库提供的LEAD函数构造连续区间--原值SQL> select * from test1; ACCTNO CURRENT_BAL DXN_DT---------- ----------- -------- 201 800 20120101 201 520 20120809原创 2016-11-16 13:28:20 · 3419 阅读 · 0 评论 -
字段中含有空格的查询
查询出含有空格的记录SQL> create table test2(id int,nn varchar2(100));表已创建。SQL> insert into test2 select 1,'aa a a' from dual;已创建 1 行。SQL> insert into test2 select 2,'天南 海 北' from dual;已创建 1 行。...原创 2016-11-16 13:20:55 · 5508 阅读 · 0 评论 -
利用存储过程动态创建表及基于该表的触发器
--利用存储过程动态创建表及基于该表的触发器--1、授权grant create any sequence to scott;grant create any sequence to scott;grant select any sequence to scott;grant create any trigger to scott;--2、存储过程c原创 2016-11-10 09:38:23 · 1319 阅读 · 2 评论 -
varchar与nvarchar的区别
varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。对于varchar一个字符占一个字节,一个汉字占两个原创 2010-04-28 12:54:00 · 465 阅读 · 0 评论 -
EXP/IMP占用空间问题
EXP导出DMP文件时,会带有STORAGE参数,这个参数中有个initial参数,此参数代表建表时初始化占用表空间的大小。但是当利用EXP导出的DMP文件进行IMP操作时,会重置表的initial的参数,导入后此参数值不小于源库的此参数值。假如有两张表A和B,源库中A表的initial参数值为64K,而表的实际大小为100M原创 2016-11-20 23:14:47 · 640 阅读 · 0 评论 -
以特定分割符进行列变行
SQL> select * from test;FNAME H M---------- ---------- ----------李四/王五 3 59张三/李四 5 2SQL> with m as( 2 select regexp_su原创 2016-12-14 21:47:23 · 423 阅读 · 0 评论 -
客户端连接服务器超时
遇到客户端连接ORACLE数据库服务器,提示超时的错误多半是由于LINUX下的防火墙没有关闭或数据库对应的端口被屏蔽了可以用PING和TNSPING命令来测试注:ORACLE 32位10G的客户端能连接ORACLE 64位的服务器原创 2017-02-13 09:14:50 · 2838 阅读 · 0 评论 -
windows2008 server下安装ORACLE 11G
在WINDOWS 2008上安装ORACLE 11G遇到ORA-12705错误查了一下原因,发现操作系统时英文版的,ORACLE对应的注册表里的NLS_LANG为GBK最后的解决办法是在操作系统的环境变量里添加NLS_LANG系统环境变量解决问题原创 2016-12-20 21:49:24 · 1642 阅读 · 0 评论 -
CONNECT BY 构造连续数字
create table a(item varchar(10), f int, t int); insert into a values('A', 1, 10); insert into a values('B', 20, 40); insert into a values('C', 45, 50);commit;SQL> select it原创 2017-01-07 11:29:55 · 484 阅读 · 0 评论 -
一列字符拆解成多行(续)
SQL> select regexp_substr('1,2,2,2,2,2,1', '[^,]', 1, level) cn 2 from dual 3 connect by level 4 length(replace('1,2,2,2,2,2,1', ',', '')) + 1;CN---------------------原创 2016-12-19 21:37:43 · 353 阅读 · 0 评论 -
数字字符串做运算
对字符串 1,2,3,4,5 做算术运算SQL> select dbms_aw.eval_number(replace('1,2,3,4,5',',','+')) from dual;DBMS_AW.EVAL_NUMBER(REPLACE('1,2,3,4,5',',','+'))-------------------------------------------原创 2016-12-19 21:12:03 · 1417 阅读 · 0 评论 -
NULL UNIQUE唯一约束
根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束。 CREATE TABLE TESTAA (ID NUMBER)SELECT * FROM TESTAA;ALTER TABLE TESTAA ADD UNIQUE (ID);INSERT INTO T转载 2016-12-14 11:24:52 · 866 阅读 · 0 评论 -
调整特定分割字符的顺序
a,b,c 三个字符的任意组合经转换后都变成a,b,ccreate table test(nn varchar2(50));insert into test select 'a,b,c' from dual;--创建自定义函数create or replace function getStr(nn varchar2)return varchar原创 2016-12-09 09:38:39 · 278 阅读 · 0 评论 -
一列字符拆解成多行
SQL> select substr(replace('a;a;b;b;c;d', ';', ''), level, 1) 2 from dual 3 connect by level SU--aabbcd原创 2016-11-26 19:12:46 · 360 阅读 · 0 评论 -
oracle与sql server对比分析
本译文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息译者:马齿苋 | 链接:http://www.dbabeta.com/2010/oracle-sql-server-comparison-i.html作者:Sadequl Hussain | 原文:http://www.sql-server-performance.com/articles/d转载 2010-04-29 09:41:00 · 515 阅读 · 0 评论 -
sql基础
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#=001) a,(s转载 2010-04-29 09:58:00 · 1903 阅读 · 0 评论 -
NULL赋予变量抛异常问题
SQL> declare v_var varchar2(100); 2 begin 3 select null into v_var from dual; 4 dbms_output.put_line('v_var='||v_var); 5 exception 6 when no_data_found then 7 dbms_原创 2014-04-01 14:02:10 · 564 阅读 · 0 评论 -
数据库启动三阶段
数据库启动分为三个状态,NOMOUNT,MOUNT,OPENNOMOUNT,启动数据库实例和读取数据库参数,依据参数分配合适的SGA和PGA给实例,并且启动核心的后台数据库进程(实例是由数据库进程和内存所组成)。从参数文件中读取相应的数据库名,进而可建立实例和数据间的关系。这时已经可以查询到一些动态性能视图MOUNT,读取参数文件,主要读取的内容是SCN、数据文件、日志文件原创 2014-08-17 15:35:38 · 750 阅读 · 0 评论 -
IMM memory initialized,
记录生活点滴,留下些许记忆今天本打算在IBM x3650 m4 2u PC服务器上装操作系统,可是开机光进行system initialized 就花费了约10分钟左右,更悲催的是进到 (Ox 2) IMM memory initialized界面后,系统就原地踏步了,咨询了IBM 售后工程师说是内存可能松了,打开机箱,重新插拔内存后,故障依旧,唉。难道是主板坏了,......原创 2016-10-26 08:49:00 · 4034 阅读 · 2 评论 -
REDO LOG损坏恢复(—)
本篇只讨论在线日志(REDO LOG)出于CURRENT状态的日志损坏时的恢复情况,并且数据库运行在归档模式下一、数据库正常关闭情况下的恢复1、--数据库启动到MOUNT状态sql>startup mount2、RMAN> recover database;--在RMAN下执行3、RMAN> alter database open resetlogs;--以RESETL原创 2016-10-26 16:13:41 · 1107 阅读 · 0 评论 -
connect by 用法小议
生成连续序列或递归上下级树形结构时常用CONNECT BY来实现1、CONNECT BY 的执行顺序语法:[start with ...][where .....] connect by ...先执行START WITH 后执行CONNECT BY,最后执行WHERE子句2、生成序列注意事项,多用LEVEL,而少用ROWNUM,有时ROWNUM会引起问题SQL> sel原创 2016-10-27 21:50:52 · 737 阅读 · 0 评论 -
DBLINK触发的SCN异常
突然接到通知,说维护的系统存在SCN耗尽的风险,具体原因待定,很大的可能性时DBLINK使用导致的。经查维护系统当天最大SCN减去当前系统SCN为16天鉴于使用的数据库版本为LINUX,ORACLE 10.2.0.4,最后确认打PSU补丁来解决问题,打完补丁后的数据库版本为10.2.0.4.12DBLINK传染SCN的机制如下:假如有A和B两台机器,A上有DBLINK连接到B,原创 2016-11-01 21:29:05 · 4255 阅读 · 0 评论 -
ORACLE数据库的监听日志文件莫名丢失
ORACLE数据库的监听日志文件莫名丢失,该如何定位是何人在何时做的操作呢?原创 2016-11-01 21:41:50 · 727 阅读 · 0 评论 -
替换字段文本中的标签内容
1、建表create table TEST( ID NUMBER, NAME VARCHAR2(128), SEX VARCHAR2(4), AGE NUMBER(3), MSG VARCHAR2(1024));2、插入数据insert into TEST (ID, NAME, SEX, AGE, MSG)values (1,原创 2016-11-03 21:07:47 · 6492 阅读 · 0 评论 -
树形结构,从子向父汇总
CREATE TABLE TEST_P(ID INT,NAME VARCHAR2(10),VAL INT,PARENTID INT);INSERT INTO TEST_PSELECT 1 ,'w1', 0 , 0 FROM DUAL UNION ALLSELECT 2 ,'w2', 2原创 2014-03-19 23:15:01 · 628 阅读 · 0 评论 -
ORACLE 中的 JOB
设置一个JOB定时向数据库中某张表中插入数据。--定义表create table test_job(id int,dd date); --定义JOB调用的存储过程create or replace procedure job_procasbegininsert into test_job select seq.nextval,sysdate from dual;原创 2014-02-14 15:23:06 · 484 阅读 · 0 评论 -
数据库分离后,删除日志文件,执行附加语句时,数据库附加失败
数据库分离后,删除日志文件,执行附加语句时,数据库附加失败. | 下一篇> 解决方法: 请遵照如下步骤来试图重建数据库事务日志. 注意: 由于事务日志丢失, 数据库可能有没有提交的数据. 注: 所有红色部分都要替换成真实的数据库名字 步骤1: 创建一个新的数据库,命名为原来数据库的名字. 步骤2: 停止SQL Server 步骤3: 把老数据库的MDF文件替换新数据库转载 2010-04-30 15:33:00 · 2167 阅读 · 0 评论 -
行记录大于8k
<br />SQL Server 2005使用的依旧是8096bytes的page,但是与之前版本不同的是,它允许你超出8K的限制。但是对于一个特定列来说,仍然不允许超过8K的限制,除了LOB类型。比如你不能定义varchar(9000)或者nvarchar(5000)类型,有人说可以定义varchar(max)或nvarchar(max),但是很可惜,这两种新加类型是LOB类型,跟varchar,nvarchar本质不同。<br />我们回归正题,但是我们可以声明总和超过8096bytes的row,比如转载 2010-07-29 17:53:00 · 1267 阅读 · 1 评论 -
数据库优化
<br />大家都在讨论关于数据库优化方面的东东,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正阿! <br /><br />SQL语句: <br />是对数据库(数据)进行操作的惟一途径; <br />消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低; <br />可以有不同的写法;易学,难精通。 <br /><br />SQL优化: <br /转载 2010-08-02 22:00:00 · 626 阅读 · 1 评论 -
索引原理
<br />索引原理<br /> <br />中小企业MIS系统的管理基本上由两大部份组成,一是前台的可视化操作,二是后台的数据库管理。网管对前台的管理和维护工作包括保障网络链路通畅、处理MIS终端的突发事件以及对操作员的管理、培训等,这是网管们日常做得最多、最辛苦的功课;然而MIS系统架构中同等重要的针对数据库的管理、维护和优化工作,现实中似乎并没有得到网管朋友的足够重视,看起来这都是程序员的事,事实上,一个网管如果能在MIS设计期间就数据表的规范化、表索引优化、容量设计、事务处理等诸多方面与程序员进行卓原创 2010-08-03 15:35:00 · 841 阅读 · 1 评论 -
ORACLE在LINUX 64位安装---只言片语
ORACLE在LINUX上安装主要有两种方式:图形化安装和静默安装(可以理解为命令行安装)1、图像化安装 此安装比较简单,一直NEXT就OK了;主要的难点是设置安装ORACLE数据库的操作系统环境,主要有设置.bash_profile系统环境变量、建立安装用户、设置LINUX系统变量(如可以使用的最大内存等)、打系统补丁包(若是64位系统,也要打上32为的补丁包)。 如是采原创 2014-02-11 09:12:28 · 545 阅读 · 0 评论 -
ORACLE 动态性能视图
动态性能视图(V$开头的视图)在数据库打开和使用时不断进行更新,而且它们的内容主要与性能、当前数据库运行状态有关。虽然这些视图很像普通的数据库视图,但它们不允许用户直接进行修改。这些视图提供内部磁盘结构和内存结构方面的数据。用户可以对这些视图进行查询,以便对系统进行管理与优化。 在实例启动时,会先创建X$表,然后基于X$表创建GV_$ 和 V_$ 视图,在基于GV_$ 和V_$视图原创 2014-02-12 09:49:04 · 691 阅读 · 0 评论 -
ORACLE数据库中的RETURN与EXIT在循环中使用小议
在PL/SQL中循环中使用RETURN和EXIT时应小心留意,它们表示 退出 含义有差异的,RETURN表示退出整个存储过程,也就是存储过程执行到此处结束执行,程序退出;而EXIT则表示退出当前循环,继续向下执行,如果是有两层循环的话,EXIT则是退出内层循环,外层循环继续执行。例子:--RETURN示例beginfor j in 1..3 loop dbms_output.p原创 2014-02-13 09:05:14 · 8750 阅读 · 0 评论 -
收缩ORACLE的UNDO表空间
数据库运行一段时间后,特别是长事务对数据库做大量的DML操作后,UNDO表空间可能会比较大,可以采用下面方式进行UNDO表空间收缩1、查看UNDO表空间信息 show parameter undo2、查看UNDO表空间对应的数据文件 select * from v$datafile;3、创建新的UNDO表空间 create undo tablespace und原创 2014-02-13 11:30:27 · 2831 阅读 · 0 评论 -
偶得优化点滴
能少做的事情就少做(偷点懒)能早做的事情就早做(能明确的先明确)1、优化SQL时,应先从业务需求触发,遵照”能少做的事情就少做,能不做的事情就不做“,这样就能简装上阵,轻快许多如判断一表是否由记录,可以用ROWNUM=1来替换COUNT(*)的判断2、能早做的事情就早做,如多表关联时,存在过滤条件能大幅减少关联表的数据量时可以把过滤条件提到关联表中原创 2017-03-22 16:34:35 · 347 阅读 · 0 评论