您现在的位置:首页
--> 宋春风
新上线的系统很多数字类型的字段都是使用varchar2类型存放,要转换成number类型时,和开发人员对number类型的字段在查询时加上单引号走不走索引的问题产生了分歧,大家都知道,如果使用char类型存放数字,在查询时如果不加单引号是不会走索引的,测试信息如下,数据库版本11.2.0.4.0。
在11g如果没有关闭掉审计的功能,默认是可以记录错误密码登陆信息的,很幸运的是,这个功能并没有被禁掉。那么查询AUD$表就能查询到错误密码登陆信息。以下是在没有做过任何设置的11.2.0.4.0版本的数据库中做的测试,先使用错误密码登陆数据库。
本文通过两方面演示怎么将ORACLE数据库中的CHAR类型的字段转换成CLOB类型的字段,一种情况是空列,另一种情况是列中已有数据。
对于数据库ORACLE有时操作时,提示的是一串串???,不能起到提示的作用,这是由于语言环境的设置问题,下面是实际操作中要用到的。
Oracle提供了一类命令,可以将Oracle各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。设置跟踪事件有两种方法,一种是在init.ora文件中设置事件,这样open数据库后,将影响到所有的会话。
对于优化来讲,查找消耗资源较大的SQL至关重要,下面介绍几个之前用到的SQL。
在给客户巡检时,发现一个用PL/SQL Developer执行的效率低下SQL,通过执行计划可以看到,对Cost影响较大部分为IDX_TS_UH_ORDER_GOODS_1表的索引跳扫,Cost值157,虽然只有157,但是对走索引来说,157的Cost已经很大了,如果正常索引扫,这个值会小很多,而且INDEX SKIP SCAN的结果和HASH JOIN SEMI循环,导致总Cost达到287M(100),如果能将索引跳扫的Cost从157降下来,INDEX SKIP SCAN的结果和HASH JOIN SEMI循环的总Cost就会成几何下将,这个SQL优化重点也是使索引跳扫改成正常索引扫,猜测产生索引跳扫的原因可能是IDX_TS_UH_ORDER_GOODS_1表上存在复合索引,而该表的ORDER_ID列不是复合索引的第一列,解决方法:在IDX_TS_UH_ORDER_GOODS_1表的ORDER_ID列上单独建立索引。
本片文章介绍下追踪SQL的另一种方法,使用DBMS_SUPPORT包来追踪SQL。 DBMS_SUPPORT是Oracle为内部人员提供的一个软件包。供内部支持人员使用以更有效地跟踪SQL。馆方文档上没有这个包的说明文件,默认情况下,系统不安装这个包。
ORACLE接触的久了,我的大脑也开始遵循LRU原则,不常用的知识很快就会被刷新掉,为了和ORACLE一样保证数据一致性,只好将这些东西保存到硬盘上。 前段时间数据已经加载到数据库,最近一直做的是整理这些数据,SUBSTR和REPLACE函数用的比较多, 这里简单记录下。 有一张存放图片的表,包含以下字段,IDENTIFIER是档号,JPG_PATH是图片的路径和名字,其他字段这里没有用到,不做描述。
客户有张大表,在设计的时候是分区表,按全宗号分了77个分区,最近发现对这张表查询速度明显比之前慢了许多,经过分析发现这张表的分区不见啦,变成了普通表,问了看法人员才知道,原来他对这张表做了好多次ALTER TABLE XX RENAME和CREATE TABLE XX AS SELECT *操作,由于CREATE TABLE AS(CTAS)操作只会建立同样的表结构而不会建立分区,导致这张表由分区表变成了普通的堆表,那么就要将这张表再改回分区表,普通表改为分区表的方法很多,但是对于7*24的系统来说,就只能用ORACLE 10g版本推出的新功能-在线重定义了,下面的案例是在虚拟机上做的测试。
平时只知道不要把非系统用户的表存放到系统表空间,至于为什么,并没有去研究,直到看到kamus(张乐奕)和老熊(熊军)发起的邮件才知道,原来系统对SYSTEM表空间的自动维护会占用CPU资源,如果将普通用户的表存放到系统表空间,效率会下降。
客户有个需求,一张150多个字段的表,客户要求只将部分字段给扫描公司的人看,这个需求用视图就可以很容易实现,客户又要求,这些字段,扫描公司只可以修改其中的个别字段,我之前还真没遇到这样在列级别做权限控制的需求,做了个实验,感觉很有意思,记录下测试过程。
之前也写了一些关于ORACLE11g新特性的文章,现在ORACLE 11g已成为主流的ORACLE数据库版本,了解和学习ORACLE 11g的新特性至关重要,本人也是ORACLE 11g新特性的初学者,在此分享下我的学习过程和心得。 本文主要记录的是ORACLE 11g的一个新特性,允许DDL锁等待DML锁,这也是在6月30日,张乐奕(kamus)老师在ACOUG活动中分享的一个主题。
在上周六的ACOUG活动中,张乐奕(kamus)老师分享了一个关于ORACLE 11g新特性的主题,本人觉得在10g这个过渡版本已成过去(官网已不提供10g版本的介质下载),12c马上发布,11g已经成熟而有些人还没有开始使用11g的年头,了解11g的新特性还是很有必要的,本文主要和大家一起学习下ORACLE 11g新特性—虚拟列(Virtual Columns)。
朋友打电话问我如何利用sql讲mysl导出的文本数据加载到oracle数据库,电话说了他也没听清楚,我给他做了几个例子。
由于单块硬盘的容量不断增大,价格也很便宜,现在2TB的硬盘已经很常见,而传统的MBR方式存储使很多分区工具不能正常读取大于2TB的磁盘而无法分区大于2TB的磁盘,linux提供parted工具可以很好的支持大磁盘分区。 Parted和fdisk很相似,也是命令行工具,但是parted分区是实时的,只要开始执行分区,就实实在在的分区啦,而不像fdisk工具需要执行w后才开始分区,所以使用parted分区的时候一定要注意,看清楚在下手。
今天客户提个新需求,负责扫描的公司提交的数据是存放在Windows虚拟机里,而虚拟机用的磁盘,物理主机无法直接挂载,这样扫描公司提交的图片就需要拷贝到本地磁盘上,一是数据量巨大,第一期需要进数据库的图片就10多T,需要很长的时间来拷贝,二是拷贝会生成落地图片,就需要进行MD5校验,这需要更多的时间,客户提的需求是,在不生成落地文件的情况下将图片加载到数据库,对于这种需求,我首先想到2种方法,一种是在虚拟机上安装ORACLE客户端,SQLLDR将虚拟机上的图片加载到远程数据库,这种方法由于Windows虚拟机不能给登录权限,并且这批数据只能开放读权限而被否定,第二种方法就是将Windows虚拟机上扫描公司提交的图片以共享文件夹的形式提交给我们,然后将Windows的共享文件夹挂载到本地(linux服务器)的目录,也就是相当于将Windows共享的文件夹映射到linux服务器的目录下。
学习ORACLE的第一步就是安装ORACLE,很多情况下DBA安装ORACLE的时候为了方便都是一路下一步的形式来安装,其实这样小小的偷懒可能会带来数据库性能问题,也会给DBA日后的维护增加工作量和复杂度。 在安装ORACLE的时候,ORACLE会提示很多组件是否安装,一些环境用不到的组件建议不要安装,多安装一个组件对磁盘来说就会多占用写空间,对ORACLE本身来说也多了些自动维护的对象,对DBA来说就意味着可能会遇到这些组件带来的性能和可用性问题,增加维护数据库的工作量。 下面是我的环境ORACLE的安装和建库的示例。
今天在群里有人问如何查看某个用户下的所有空表,有人回答是写PL/SQL,其实不用那么麻烦,而且表如果很多的话,执行会很慢,详细请见正文。
[ 共19篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [73] Twitter/微博客的学习摘要
- [67] Go Reflect 性能
- [65] find命令的一点注意事项
- [63] 流程管理与用户研究
- [62] android 开发入门
- [61] 如何拿下简短的域名
- [61] Oracle MTS模式下 进程地址与会话信
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告