
数据库技术区
dlxu
04年本科毕业,爱好技术学习
展开
-
Oracle 9.2.0.1下PL/SQL对文件的操作
在Oracle中,使用PL/SQL编写存储过程是一种常用手法。也经常会遇到文件读写的问题,Oracle的PL/SQL可以对系统文件进行读写增删等操作,这里来给出我的做法。 首先,需要增加对系统文件的目录的读写权限,比如现在需要增加对“c:/temp”下目录的文件操作权限,当前操作用户名为TEST。首先定义一个文件目录的别名。CREATE OR REPLACE DIRECTOR原创 2006-01-19 09:44:00 · 2410 阅读 · 0 评论 -
要注意Oracle的SQL语句中的UNION的特性
在Oracle的SQL中,Union也是一个常用的语句。不过要注意的一点是,Oracle的Union语句默认是过滤掉重复数据的。 也就是说Oracle的Union默认具有DISTINCT语句。那么如何才能不需要这个属性呢,那需要在Union的后面加上ALL语句。也就是UNION ALL。这样就不会自动过滤掉相同的数据了。虽然这个知识点很简单,不过如果不熟悉Orac原创 2007-06-05 11:58:00 · 1224 阅读 · 0 评论 -
利用Oracle的几个特殊视图察看数据库文件信息
在Oracle中,如果你数据存储是采用文件形式的话,你可以通过登录Oracle的那台主机,然后找到数据库存储的目录来查看数据库文件信息。不过如果你不知道文件放哪或者主机的登录权限没有的话,你怎么知道数据库文件的配置呢,这样就需要几个特殊视图的帮忙了。 如果采用sys之类的DBA用户登录的话,可以看到3个视图,分别是V$CONTROLFILE, V$DATAFILE原创 2007-06-10 13:32:00 · 1046 阅读 · 0 评论 -
把非归档模式的Oracle数据库改成归档模式的Oracle数据库
归档模式在Oracle的真实生产环境下是非常重要的,可以利用归档方式进行热备份,然后在数据库出现问题的时候迅速把数据恢复,挽救数据库。但是有时候建好数据库,发现数据库不是归档方式的,这个时候要改成归档方式的,应该怎么改呢。 其实修改还是很简单地,但是一定要记得无法在数据库运行的时候修改,需要首先停止数据库,然后mount数据的控制文件,再修改成归档模式,最后再启动原创 2007-06-14 23:20:00 · 862 阅读 · 0 评论 -
Oracle的聚簇因子对于查询IO的影响
Oracle中,对于同一个查询语句,有时候会很快的完成,有时候却很慢,但是表结构什么的完全一致,表中的数据也完全一致,这个具体是什么愿意呢,就要从Index中的细节说起了。 在Oracle中的一个特殊的视图user_indexes中有一个特殊的列,名字是clustering_factor,这个值的内容就是如果访问表的整个表数据,会造成多少次数据库IO。我们可以通过原创 2007-06-16 21:26:00 · 882 阅读 · 0 评论 -
把Oracle数据库从归档模式下转变为非归档模式
在归档日志模式下,有可能会遇到归档日志大小超过最大值而出现讨厌的ORA-00257错误,前面说了如何把归档日志空间变大。而在普通的开发环境下,其实是根本用不着归档日志的,设个时候我们就把数据库的归档日志给禁用了,也就是说把数据库变为非归档日志模式,应该怎么做呢。在这里所有的操作要在数据库的那台机器上操作,用SYS用户进行登录,首先设置归档进程关闭。alter system set lo原创 2007-10-16 17:01:00 · 2380 阅读 · 0 评论 -
浅谈Oracle中的CHAR与NCHAR数据类型
CHAR与NCHAR在Oracle数据库是常用的类型,不过两种数据类型是互相不兼容的,这里大概简要谈一下这2种数据类型吧。在Oracle中,CHAR类型是一种固定长度的字符串类型,最大长度是2000个byte,在这里要注意了,是2000个byte,并不是2000个字符的意思。1个字符在Oracle中可能是1个byte到4个byte不等,这个要看数据库的设置了。这个是数据库中有一个参数NLS_L原创 2008-06-25 11:02:00 · 3027 阅读 · 1 评论 -
在Oracle中输入“&”特殊字符
在Oracle中,由于有一些特殊字符,所以如果我们输入字符串中遇到这些特殊字符而直接输入的话,SQL语句会出现错误,这里说一些Oracle中“&”这个字符如何输入。 “&”这个字符在Oracle中的意思是指定参数,如果直接用在SQL语句中,比如说SELECT * FROM TEST_TABLE WHERE COLA = A&B这个语句如果直接执行,Oracle会提示你输入参数原创 2008-12-15 13:01:00 · 1228 阅读 · 0 评论 -
Oracle中的字符集
如果是只做英文软件,那么很少考虑到字符集,不过如果做其他语言,那么字符集是必须考虑的东西,否则一不小心就搞出来一大堆乱码现象。 有许多其他的软件也有字符集,比如说Windows的Office软件,但是Office使用的是Windows自带的字符集,所以如果当Windows没有安装某个字符集的时候,Office软件也不能正常显示内容。而Oracle的字符集是自带的,也就是说,即使操作系统本身原创 2009-03-16 16:52:00 · 383 阅读 · 0 评论 -
在修改监听器设置的时候如何解决NL-00051
在Oracle的监听器(Listener)配置修改的时候,突然遇到了NL-00051错误,里面不允许保存配置信息,到底是什么原因,如何解决呢。 首先发现,如果Oracle10g默认生成的监听器是没有listener.ora文件的,而是一个动态的监听器,所以这个时候你如果用save_config命令来保存配置,会发现因为找不到这个listener.ora配置文件而出错。解决方法就是生成这个文原创 2009-04-20 11:09:00 · 564 阅读 · 0 评论 -
在Oracle中建立定时job
在Windows上可以设定Task来定时启动一些任务,比如说可以每周执行一次,每天执行一次等等等等。我也看到有很多应用在Oracle中写了PL/SQL的Batch,然后用Windows的Task的方式来启动这些Batch,这样我的感觉还是挺繁琐的。而且Oracle功能那么强,为什么非要用Windows自带的task方式启动Batch呢,而且Windows的Batch的时间设定感觉不是很灵活,原创 2009-04-28 17:27:00 · 1365 阅读 · 0 评论 -
SQL语言中的换行符
最近在导出某些数据表的时候,由于倒成CSV文件,所以一般情况下一行代表一条数据。不过由于有的表中的数据因为具有换行回车符,所以严重影响了CSV文件的格式。所以在数据导出以前,最好对数据进行一下替换,把其中的换行回车符换成空格或者别的字符。 在文本文件中,Windows的换行符是/r/n,但是SQL中如何表示呢,答案就是chr(13)||chr(10),所以利用一个replace函数把这个原创 2009-05-19 16:15:00 · 6278 阅读 · 0 评论 -
Oracle中获得数据更新件数
在Oracle的SQL PLUS中,当update或者delete或者select这些DML操作以后,会显示更新/删除/检索了多少行,在JDBC操作中,也会有返回值内容是影响了多少行。但是在我们的PL/SQL中如何取得这个数据呢。 在PL/SQL中,当你进行检索的时候,你可以自己打开一个游标cursor来进行操作,也可以不打开游标,但是当你不打开游标的时候,系统也原创 2007-05-24 15:47:00 · 1799 阅读 · 0 评论 -
关于在Linux上管理本机Oracle的时候出现找不到ServiceName的错误
现在有一个Linux服务器,上面安装了Oracle,我们想用conn / as sysdba语句来进行登录数据库,然后管理数据库,可是总抱错,说找不到Service Name之类的错误,究竟是怎么回事呢。 其实是一个很小很小的问题,因为在环境变量中没有配置ORACLE_SID环境变量,所以SQLPLUS不知道你到底要连接到哪个Instance中,所以我们在$HOM原创 2007-07-27 10:11:00 · 1055 阅读 · 0 评论 -
关于ORA-00257问题的解决(归档程序错误)
我们开发环境下的数据库大概用了一两个月都是正常,但是今天突然发现数据库无法连接,报出ORA-00257错误,说归档程序错误,这是为什么,又怎么来解决呢。 从Oracle9i开始,借助于UNDO日志文件提供了闪回查询的功能,由于功能也有一定的局限性,也就是说依赖于UNDO日志的事务不能被覆盖,所以在Oracle10g开始又采用了一种新的FlashBack日志来实现这原创 2007-07-24 14:28:00 · 2842 阅读 · 0 评论 -
Oracle两则小技巧——巧取指定的记录与巧用外关联查询
1 取得表中第6到第10条记录的值1.1 第一种方法,使用minus语句假设ddl语句如下:CREATE TABLE T(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)那么第一种方法就是取出前5条,再取出前10条,然后采用集合运算的方法把前10条减去前5条就OK了,SQL语句如下SELECT * FROM T WHE原创 2007-01-04 00:23:00 · 879 阅读 · 0 评论 -
Oracle10g数据库的4种存储形式
数据库的存在一定需要有永久性存储方式和介质。Oracle自然也不例外,在Oracle10g中,有4种存储形式,分别是操作系统文件,裸分区,自动存储管理,集群系统OCFS(RAC)。下面分别说一下这4种存储形式。 1 操作系统文件。 这种是大家最常用的方式了,也是非商业运行模式(比如开发或者开发阶段的测试环境)下最常用的形式。当大家安装Oracle的时候,如果选用了操原创 2007-02-07 21:51:00 · 942 阅读 · 0 评论 -
Oracle中的归档日志(Archive Log)
在Oracle中,数据一般是存放在数据文件中,不过数据库与Oracle最大的区别之一就是数据库可以在数据出错的时候进行恢复。 这个也就是我们常见的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分,一个是在线重做日志文件,另外一个就是归档日志文件。 这里不详细说明在线重做日志,而是说一下归档日志(Archive Log)。在线重做日志大小毕竟是有限的,当原创 2007-03-03 01:20:00 · 1545 阅读 · 0 评论 -
Oracle表段中的高水位线HWM
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话原创 2007-03-05 23:51:00 · 1605 阅读 · 0 评论 -
Oracle中的Instance实例和数据库的区别
在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个Instance,启动一个Instance之类的话。 其实问他们什么是数据库,什么是Instance,很可能他们给的答案就是数据库就是Instance,Instance就是数据库啊,没有什么区别。在这里,只能说虽然他们Oracle用了可能有了一定的经验,不过基础的概念还是不太清楚。原创 2007-01-28 23:22:00 · 1347 阅读 · 0 评论 -
建立与Oracle数据库服务器连接的两种连接模式(专用服务器与共享服务器)
在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式。在Oracle9i或者10g中,可以看到有2种连接模式,一种叫做专用服务器连接(dedicated server) ,另外一种叫做共享服务器连接(shared server)。下面我们来分类说一下这两种连接方式的不同点。 专用服务器模式就是说每次在对O原创 2007-01-30 23:30:00 · 4744 阅读 · 3 评论 -
Oracle中的数据锁定机制
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造原创 2007-02-04 16:10:00 · 1921 阅读 · 0 评论 -
Oracle查询中rownum与Order by查询的关系
在开发应用的时候,把数据按照一定的规则排序后再取前几条数据这种操作是很平常的事情。我们在Oracle中常用的就是order by,然后取得rownum小于多少的数据这种方法。不过如果对Oracle不熟悉,也许就会发现你写的SQL语句检索出来的值不正确,这个是为什么呢。 因为Oracle在检索的时候,会首先把数据都检索出来,然后在排序段中进行排序。假如你有一个SQL原创 2007-06-25 11:50:00 · 1529 阅读 · 1 评论 -
设置Linux的服务自动启动Oracle服务器
Linux中在Oracle安装完毕以后,如果重新启动Linux ,Oracle是不会自动启动的,你可以通过手动调用dbstart命令来进行启动,不过这样似乎也很繁琐。我们可以通过配置Oracle的自动启动脚本,然后利用Linux的Service来启动Oracle服务器。 首先在/etc/rc.d/init.d/目录下配置Oracle的服务文件。touch原创 2007-06-25 17:41:00 · 1911 阅读 · 0 评论 -
Oracle分组语句中的超级聚合分组
在Oracle中,我们可能比较习惯用Group by子句,不过可能很多人不知道,在Group by字句中可以进行超级聚合分组检索,这个时候就利用了2个关键字,一个Rollup,一个是cube。 Rollup是按照Group by的条件从右到左进行分组,也就是说如果有2个group by条件,会按照右边只有1个条件的时候group by一次,然后再按照右边2个条件一原创 2007-07-17 21:23:00 · 2620 阅读 · 0 评论 -
重新初始化Oracle的Redo file的方法
Redo File在Oracle中是很重要的一个文件,如果这个文件发生错误,那么Oracle将无法正常启动,系统会报可恶的ORA-00312错误,说日志文件发生了损害,那么怎么去解决呢。 其实很简单,就只要把Redo文件重新初始化一下,数据库就可以正常启动了,重新初始化Redo文件的语句如下所示。alter database clear unarchive原创 2007-07-23 09:45:00 · 894 阅读 · 0 评论 -
如何解决ORA-12638: 身份证明检索失败错误
今天连接一个以前正常连接的Oracle数据库,突然报错ORA-12638,说身份证明检索失败。感觉很奇怪,后来一查,发现是因为我电脑是出于Windows的Domain中的,而sql.net文件中指定的认证方式是MTS,所以出错了。 解决方法很简单,直接把sql.net文件给删除了后,再一次连接数据库,就正常了。原创 2010-01-26 13:41:00 · 886 阅读 · 0 评论