![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
oracle
huangyunzeng2008
坚定地要翻过这座山,但是如果你问我山那边是什么,我会告诉你我也不知道!
展开
-
oracle中判断某列是否为数字,删除重复数据的方法
在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名:table): 1.使用trim+translate函数: select * from table where trim(translate(column,012345678原创 2009-10-08 21:56:00 · 3941 阅读 · 2 评论 -
关联子查询与嵌套子查询
今天优化了一个sql语句,感觉速度好像是快了点,自己想想觉得也是,下面给出类似的例子,工作中的表就不拿来举例了。实际我们平常都在凭着自己的感觉在写SQL,其实跳出那个圈子你会发现能写出更好的。一、先给出我的表和数据,这里数据量少,可能不明显,只是表明一下这个意思!create table EMP( EMPNO NUMBER(4) not null, ENAME VAR原创 2010-01-18 21:07:00 · 3291 阅读 · 7 评论 -
两个解析字符串的方法
在后台的日常开发工作中,总有很多解析字符串的操作,为了达到最大限度的复用,方便自己和大家调用。这里给出两个方法:方法1,在已知参数结构的情况下返回指定位置的字符串,分隔符为‘|’。CREATE OR REPLACE FUNCTION GET_SUBSTR(PARAS VARCHAR2, POS NUMBER) RETURN VARCHAR2 IS PARAS_NEW VARCHAR2(原创 2010-01-08 12:41:00 · 760 阅读 · 0 评论 -
利用包实现视图内容的不同展现(续)——前台调用
上次写完后,有网友反映前台JSP调用时报错,我测试了一下没有问题,现把测试过程贴出,以供参考,如有问题欢迎交流。下面给出JSP代码,然后再作解释: <% Connection conn = null; String sql; dbBean.connectDb(); conn = dbBean.getConn原创 2010-01-08 12:36:00 · 799 阅读 · 0 评论 -
BIEE 时间维
1、物理层中时间维表既可以是“表”,也可以是视图。2、逻辑层中时间维的每一层至少有两个“层键”,一个是层的主键,一个用于下钻,可以是“虚拟的逻辑列”。3、时间维的所有列都必须归属时间维的某一层。4、与物理存储的时间粒度对应的时间维的层键必须定义成时间增长序列键。5、时间维必须明确表明是:Time dimension,即:勾选Time dimension。6、时间维度至少有一个时原创 2010-11-19 16:45:00 · 2156 阅读 · 0 评论 -
列表中表达式超过1000
今天在项目开发过程中,由于自己比较懒的原因,同时也没考虑到性能问题,由系统动态拼接了一个包含IN 列表的SQL语句,当程序执行时,报出了题目所示的错误,经过调试确实发现这个IN列表中的值超过了1000个。以前没有留意这个问题,原来oracle的in列表中还有这个限制,到最后没办法只能改为子查询来实现了,实际上子查询虽然写起来和看起来没有IN 来的直接,但是性能上要比in好得多。后来在网上看了些资料原创 2010-03-18 21:08:00 · 1098 阅读 · 0 评论 -
NULL也疯狂
今天刚好一个网友碰到这样的问题,给出两个语句,从字面上没什么差异,但是执行的结果却差的很远。这里给出类似的重现的实例,下面给出表的结构:create table TA( C1 NUMBER(20), C2 VARCHAR2(20));INSERT INTO ta VALUES(1,'2');INSERT INTO ta(c2) VALUES('3');create table原创 2010-01-21 22:21:00 · 560 阅读 · 0 评论 -
两个误解了的问题
第一个问题: 我原本以为当create 了用户,并且为该用户指定了默认的表空间,使用imp时,数据肯定会存到该用户的默认表空间中的,但其实不然。详细描述如下:我用A用户导出了dmp文件,A用户的默认表空间是users ,我想把A用户的数据imp到B用户中,而B的默认表空间是tablespace_B,这样,当我导入A用户的数据到B用户时,此时B用户的数据是存在A的默认表空间users原创 2010-08-30 19:02:00 · 558 阅读 · 0 评论 -
oracle 两个小问题
1、密码纯数字的问题(纯数字加双引号即可,连接时不用加双引号)。SQL> create user test identified by 1;create user test identified by 1ORA-00988: missing or invalid password(s)SQL> create user test identified by "1";User crea原创 2010-11-03 17:01:00 · 1007 阅读 · 0 评论 -
两个读写clob字段的小过程
首先给出建立测试表的语句:-- Create tablecreate table T_MATERIALS( ID NUMBER(4) not null, KEYWORDS VARCHAR2(100), CONTENTS CLOB); 建一个序列,来当物理主键:-- Create sequence create sequence SEQ_MATERIALSminva原创 2010-04-23 21:54:00 · 1054 阅读 · 0 评论 -
单机装两个或者是更多个数据库的问题
今天有个同事遇到这样的一个问题:她在本地机器上装了两个oracle数据库,当然了是一个数据库服务器。在进行登录时,(这里指的是利用操作系统管理员登陆来管理数据),总是登录到最近装的这个库里面,这个很好看出来,通过下面的简单的几个命令,就能看出来你现在所连接的数据库是哪个,sqlplus /nologconn /as sysdbaselect name from v$database;原创 2010-04-07 21:37:00 · 1458 阅读 · 0 评论 -
SQL 优化_3 统计数据改善执行计划
我比较喜欢的两个方法:1.dbms_stats.gather_schema_stats('SCOTT'); --仅给出方案名即可。这里虽然只写了一个参数,但是不代表过程原型是这样的,因为其他参数在这个工具包中都有默认设置不用写即可。下面给出oracle官方给出的该过程的详细描述:DBMS_STATS.GATHER_SCHEMA_STATS ( ownname VA原创 2010-03-23 21:49:00 · 549 阅读 · 1 评论 -
SQL优化-2 查看执行计划
一、得到执行计划 ,方法很多,我常用的有两种:1.explain plan for + 要执行的SQL语句。执行完后,可以通过这种方式来得到:select * from table(dbms_xplan.display).虽然这样的version比较老点,但是查看还是很方便的,省了很多设置。2.建立plan_table表,安装oracle时已经提供了建表语句:这里给出建表语句:cre原创 2010-03-23 20:40:00 · 492 阅读 · 0 评论 -
Out 类型参数引发的问题
在日常的开发中有一个不成文的规定,在开发的后台存储过程都必须要有一个prm_errmsg参数,类型是out varchar2的,目的是为了在捕获到相应的异常后,将异常信息赋给该变量,然后返回给客户端。 按照常理,这个prm_errmsg一般情况下是不赋值的,仅在程序出现异常时才有值,前台正常情况下不取这个变量的值,仅在异常时才会取这个值。但是有个同事就比较个性,他在任何情况下都要取这个原创 2010-05-05 19:18:00 · 928 阅读 · 0 评论 -
ORACLE外连接
今天开发过程中遇到了一个很麻烦的外连接的问题,到最后都没有找到很好的解决方法,最后只能用union all 实现了,虽然性能不比外连接,但至少拓展了外连接的局限性。 首先给出我测试用的三个表和数据(左右外连接道理是一样的,我只总结了左连接):KC21表:create table KC21( AKB020 VARCHAR2(14) not null, AKC190 VARCHA原创 2010-01-15 19:01:00 · 2002 阅读 · 1 评论 -
利用包来实现视图内容的不同展现
1.创建表并生成测试数据create table T_GRADES( ID VARCHAR2(20) PRIMARY KEY, SUBJECT VARCHAR2(20), GRADE NUMBER(3,1), TEACHER VARCHAR2(20), STUDENTID VARCHAR2(20));insert into T_GRADES原创 2010-01-07 12:48:00 · 761 阅读 · 2 评论 -
Oracle数据文件转移和丢失处理
1、数据文件迁移很简单,三个步骤就行了第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。第二步:修改表空间文件路径alter database rename file '旧文件路径' to '新文件路径';第三步:把表空间Online,这样就可以了。1.1 文件系统数据文件按迁移database must be open:1.alter table原创 2011-12-02 12:27:20 · 4198 阅读 · 0 评论 -
oracle11g密码大小写敏感问题
密码大小写敏感是Oracle 11g数据库默认的一个新特性,数据库配置助手(DBCA)在创建数据库期间允许你将这个设置返回到11g以前的功能。 SEC_CASE_SENSITIVE_LOGON初始化参数控制密码大小写是否敏感,如果现有应用程序与11g的认证过程冲突,你可以使用ALTER SYSTEM命令将这一功能关闭。 ALTER SYSTEM SET SEC_CASE_SENSITI原创 2011-12-29 12:02:57 · 11254 阅读 · 0 评论 -
sign+decode =case
有这样的一个SQL语句,是用case写的,看起来很臃肿,而且我也很讨厌这样写case因为实在看起来不简洁,但是decode不支持boolean类型的表达式,尽管它很忠心的支持NULL。select case when 1 > 2 then '错' when 1 < 2 then '对' else原创 2010-03-23 21:01:00 · 526 阅读 · 0 评论 -
批量修改视图的定义
在数据库迁移的过程中,可能要更改一些user_objects的DDL,但是这些DDL存在着规律,而且量很大,再说了搞IT的都是些懒人,能批量搞定,肯定不会去一个一个修改这些objects的DDL。 今天我就遇到了这样的问题,tsybdd的schema中有好多的视图名称都是CS_开头的,而且这些视图都是在基于同一个数据库上的另外一个用户hbjb_kf_ts的表,因此他们的DDL语句后面都原创 2010-05-07 19:41:00 · 1113 阅读 · 0 评论 -
oracle model 入门(行间计算)
一、给出我的测试表和测试数据。CREATE TABLE MODEL_TEST( DOMAINS VARCHAR2(20), NAME VARCHAR2(20), YEAR NUMBER, INPUTS NUMBER, INCREAMENTS NUMBER)insert into MODEL_TEST (DOMAINS原创 2010-06-11 14:51:00 · 9079 阅读 · 2 评论 -
关于不规则列的排序问题
在日常的开发中会遇到这样的问题,某一列是varchar2类型不是NUMBER类型的,应客户需求要对这样的列进行排序,如果是纯数字或者是纯字符这都不是个难题,问题在于什么都有,如果简单的用to_number(),或者是to_char()来处理的话,不能达到预期的效果。常见的问题有两种: 1.统一用to_number()来处理,当遇到oracle不能转化为数字的时候会报错。例如:原创 2009-10-14 19:10:00 · 1988 阅读 · 5 评论 -
关于oracle的number类型的理解
oracle中数字类型有number,number可以存储小数的,如果是只想存储整数,建议声明为:pls_integer 或者是binary_integer或者是integer。其中number类型的声明类型为number(精度,刻度),所谓精度我的理解就是从左侧第一个不为零的数字开始到开始四舍五入的位置的位数,刻度就是从小数点数几位开始进行四舍五入。刻度为正,表示小数点向后数,刻度原创 2009-10-29 21:16:00 · 1933 阅读 · 1 评论 -
关于level创建不同行数的使用方法
----返回指定两个时间段的日期,使用to_date函数强制来利用日期做运算。SELECT to_char(TO_DATE(20091111, yyyymmdd)+ LEVEL - 1,YYYYMMDD) AS DAYOFYEAR FROM DUAL CONNECT BY TO_DATE(20091111, yyy原创 2009-11-23 18:23:00 · 732 阅读 · 0 评论 -
oracle 导入导出规则
一、连接规则,一切操作的前提。 低版本客户端能够连接到同样版本或者更高版本的服务器上进行imp和exp操作。 高版本客户端不能连接到低版本的服务器上进行imp或者emp操作。 二、混合使用规则,前提是要满足连接规则。 低版本exp出的dmp文件,用高版本能够imp进去。 高版本exp出的dmp文件,低版本的imp工具不能识别。 三、混合使用规则是基于版本连续的,原创 2010-01-25 19:16:00 · 588 阅读 · 0 评论 -
关于存在历史数据的表新增约束的问题
在开发过程中难免会遇见这样的问题:在使用了一段数据库后需要在数据库的某一个表上增加约束条件 ,来减少前台的校验工作,将校验工作交给数据库来处理。但是在增加约束时会遇到一个这样的问题,就是已经存在的历史数据不是都满足这个约束条件的,这样的话你加约束就会失败。典型的问题是:你要使某一列为非空,但是在最开始建表的时候,并没有考虑到这个问题,造成当前表中好多行的该字段的值为空,当然我们有办法来原创 2010-01-05 21:50:00 · 1755 阅读 · 0 评论 -
关于外部表的使用
oracle为我们提供了管理外部文件的方法,即改文件不占据数据库的空间实际上是在OS文件系统中存在的,因此对于外部表不能建表定义以外的任何东西,包括索引,主键,约束等等,因为这些是要占据数据库存储空间的。 建立外部表主要分三步操作:1.建立目录CREATE OR REPLACE DIRECTORY dir_ext_table AS E:/外部表;2.原创 2010-01-06 23:16:00 · 896 阅读 · 0 评论 -
利用包实现视图内容的不同展现(续new)——前台调用,给出代码部分
上次写完后,有网友反映前台JSP调用时报错,我测试了一下没有问题,现把测试过程贴出,以供参考,如有问题欢迎交流。下面给出JSP代码,然后给出结果:<% Connection conn = null; String sql; dbBean.connectDb(); conn = dbBean.getConnection(); CallableStatement c原创 2010-01-11 08:18:00 · 509 阅读 · 0 评论 -
SQL 优化-1 Optimizer Mode
oracle有两种优化器,基于成本的CBO和基于规则的RBO,但是在执行计划里往往体现为Optimizer Mode,主要有四个: 1、CHOOSE 如果存在访问表的任何统计数据,则采用CBO;如果一些表没有统计数据则采用估计值;如果没有可用的统计数据则采用RBO。 2、ALL_ROWS 总是使用基于成本的CBO。 3、FIRSR_ROWS_N 总是使用基原创 2010-03-23 20:03:00 · 714 阅读 · 0 评论 -
两个解析字符串的方法(new)
在后台的日常开发工作中,总有很多解析字符串的操作,为了达到最大限度的复用,方便自己和大家调用。这里给出两个方法:方法1,在已知参数结构的情况下返回指定位置的字符串,分隔符为‘|’CREATE OR REPLACE FUNCTION GET_SUBSTR(PARAS VARCHAR2, POS NUMBER) RETURN VARCHAR2 IS PARAS_NEW原创 2010-01-11 08:32:00 · 719 阅读 · 0 评论 -
误删重做日志文件的数据库恢复
<br /> 虽然自己也曾做过这方面的工作,但是没有时间总结,今天看到这篇文档总结的挺好,就转载一下,大家有需要,可以参考!<br /> Oracle的重做日志文件(Online redo logfile)循环记录了数据库所有的事务。它的大小、个数和存储位置对数据库性能和恢复有重要影响。它一般由大小相同的几组文件构成。我们可以查看数据库视图v$logfile知道redo logfile的个数和存储位置。对每一个Oracle数据库都要求至少具有两个联机重做日志。<br />每一次新的事务提交时,Orac转载 2010-07-26 20:56:00 · 1227 阅读 · 0 评论 -
oracle字符集查看和修改
字符集问题。原创 2010-06-02 20:40:00 · 820 阅读 · 0 评论 -
玩转sqlplus脚本
玩转sqlplus脚本原创 2010-06-02 20:47:00 · 743 阅读 · 0 评论 -
tns名不被tnsping识别的问题
今天我连接一个数据库,在tnsnames中配置了一个连接串,名称为s65,我配置完了之后,使用tnsping 始终不通,但是ping服务器的ip地址是可以通的,到最后才发现原来s65这个名称没有顶格写,即在s65和行开始之间有个空格导致的,去掉空格问题解决!原创 2010-12-16 09:26:00 · 969 阅读 · 0 评论 -
oracle 三种JDBC驱动
JDBC OCI oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动。因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置。URL的格式:jdbc:oracle:oci:@tnsname. JDBC Thin thin是for thin client的意思,这种驱动一般用在运行原创 2010-12-22 10:17:00 · 673 阅读 · 0 评论 -
关于oracle的timestamp类型的一点理解
一些同事在平常的工作中因为date和timestamp而苦恼,我觉得这两个数据类型都是关于日期的,但是有些运算还是有些不同的。date类型可以直接加减数字运算,比如:select sysdate, sysdate+ 1.2 from dual; 这个函数的意思是将现在的时间加上1.2 天,即:1天零4小时又48分钟,因此得到的结果是:sysdate: 2010-11-9 16:06:20 sysdate+1.2:2010-11-10 20:54:20。 timestamp类型比date类型更原创 2010-11-09 16:25:00 · 4206 阅读 · 0 评论 -
win7 轻松安装 oracle 10g
在windows xp上能正常安装的oracle10g ,在win7上可不加任何修改的使用,任何配置文件都不用改,我说的配置文件指的是:/install/oraparam.ini 和/stage/prereq/db/refhost.xml. 我看很多仁兄都说需要改这两个文件,实际上完全没必要。因为在oraparam.ini中windows=x.x,这一行默认是注释掉的,根本不会检查操作系统版本,所以改这个是没有一点意义的。 在第二个文件中即便是加上一个操作系统的版本6.1原创 2011-01-11 18:57:00 · 1229 阅读 · 1 评论 -
oracle 版本位数问题
1、查看oracle所在操作系统平台是多少位的,32位的平台是不能装64位的oracle的. 2、查看自己的oracle是多少位的,RAW(4)->4*8=32bit;RAW(8)->8*8=64bit。查看该视图需是dba! 3、给自己的oracle版本升级时一定要知道自己oracle是多少位,否则升级不成功!原创 2010-11-25 13:28:00 · 1751 阅读 · 0 评论