文章列表
近年来数据库界最红的无疑是noSQL了,大佬oracle也开始搞了。对于非关系型数据库我还不是很了解,因此开始学习比较好上手的mongoDB好了。定时的做笔记也是学习的十分好的习惯。
1 数据库软件的安装。其实MongoDB(windows版本)是绿色的。这是非常好的事情,不用等待好久去安装了。在官网上(http://www.mongodb.org/downloads)就可以下载,然后解压到本地就可以了。这里我解压到了E:\MongoDB下。
2 数据文件路径。和所有的数据库一样,数据的存储要有专门的数据存储目录(windows下叫做文件夹的比较多)。在bi ...
很久以前,在我还在X唐电信的时候,我被领导要求优化一段SQL。说真的那个时候我根本不知道SQL的优化为何物,但是百度google之后我发现所有的资料都写有这么一条:把选择性大的条件子句写在最后。因为oracle在执行的时候从底向顶执行。这句话我当时笃信不疑。可是后来我查到更多资料以及对SQL优化有了更深的理解之后,我发现那句话是RBO,而现在的oracle采取CBO。那么SQL到底是不是从下向上执行的?这个疑问后来在一次错误中被解决了。
有这么一个表,叫做test,有两个字段ser_id,area_id。但是我记不住了,我写了以下的SQL:
selec ...
上周我写了一篇博文,里面有一点关于分区表的论述(http://www.cnblogs.com/wingsless/archive/2012/02/04/2338292.html)。但是我发现我少写了一点,在你的查询条件和分区列没有太大关系的时候,分区表不会帮助你提高效率。
图1 ...
在之前的工作中,我曾经遇到过表特别大的情况,这个时候我想到了使用with来降低查询的消耗,前文中已经有了描述:http://www.cnblogs.com/wingsless/archive/2012/01/15/2323060.html。今天我突然想到,其实用with和from (select)应该没有本质的差别。所以做了个小实验。
我的表大概7W行,使用with的SQL语句如下:
WITH A AS (SELECT T.OWNER, T.OBJECT_NAME, T.OBJECT_ ...
前两天的业务需求里需要关联好几张表出一个详单报表,这个需求其实很简单,但是数据量大,源表又不是分区表,就变得很头疼了。
最初我的代码大概是这样子的:
select a.id,a.name,a.code,b.type,(select p_namefrom C cwh ...
好用的函数sign和decode
- 博客分类:
- Oracle管理
今天遇到了一个问题,需要对比一个字段和5的大小,大于5的输出0,小于五的输出1。如果是用PLSQL编程的话可以用if/else这种逻辑进行判断,但是在SQL里可不能这么写,经过网友推荐,我组合使用了sign和decode,效果很好,代码小清新。
代码如下:
DECODE(SIGN(TRUNC(COL1 - COL2) - 5), 1, 0, 1) ONTIME_FLAG
这样就可以了。
sign函数的作用是这样的:
今天群里有人问关于数据库进程的事情,当然,他对oracle的后台进程不是很熟悉。当时我举了个例子,是关于LGWR,但是由于我学艺不精,当时只想起来了这个进程会被commit激发,实在是贻笑大方。回来以后查了一下书,于是记录在此,也算是和大家的分享吧。
LGWR被触发的情况:
1 commit。在提交之后,oracle会先把确认信息写到日志缓冲区里,然后再激发LGWR,将日志缓冲区内的Redo Entry写到联机重做日志文件里。
2 如果尚在日志缓冲区内的Redo Entry超过三分之一以上日志缓冲区大小的话,就会触发LGWR,将Redo Ent ...
安装oracle时还需要修改的几个文件和参数:
/etc/security/limits.conf
nproc:可以开启的进程数量
nofile:可以开启的文件数量
/etc/pam.d/login,改成这样:
#Add for Install Oracle Database 11g
session required /lib/security/pam_limits.so
session required pam_limits.so
修改/etc/profile,添加如下内容:
关于oracle的启动
- 博客分类:
- Oracle管理
有这么一道题,是关于在实例启动的时候,哪些文件在某个阶段是不是可以改动的,我觉得这个题是一个很基础的题,对于理解oracle有很大的帮助。于是我就查了一下相关资料,分享一下,适合初学者看。
1 shutdown-->nomount:
读取参数文件,根据参数文件的记录,配置SGA,启动后台进程。这个阶段因为只读取了参数文件,因此能干的事情不少:建立数据库;重建控制文件。
上次我把参数文件搞坏了,startup命令以后就来到了nomount状态,在这里我把错误的参数文件去掉了,然后重启以后就好了。有深刻体会。
2 nomoun ...
create database link dblink_TEST
connect to wings identified by wings
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TESTDB)
)
)';
Oracle控制文件的一点研究
- 博客分类:
- Oracle管理
控制文件是非常重要的文件,实例读取控制文件才能到mount状态。DBA的一个原则就是多路控制文件,今天我就做了个实验,学习了一下这个。
代码如下:
alter system set control_files='D:\app\wings\oradata\testdb\CONTROL03.CTL','D:\app\wings\oradata\testdb\CONTROL04.CTL' scope=spfile;
查看一下 :
select
SQL语句的执行过程
- 博客分类:
- Oracle管理
服务器接收到SQL语句之后,要经过如下步骤完成操作:Parse(解析)—> Bind(绑定)—> Execute(执行)。
画个流程图比较明显的表示了这些过程:
下面说明执行的具体细节: 1 Select(查询)
2 INSERT/DELETE/UPDATE
这些都是对数据进行修改的语句,画个流程图,简洁明了:
这个叙述比较混乱,举个例子: 有这样一行,学生id是100,成绩是99,现在要将这个成绩改成80(这个ID对应的行,有且仅有一行)。 SQL应该是upd ...
OCP题库笔记1z0-052
- 博客分类:
- Oracle管理
1 关于undo
数据库可以有一个以上的undo表空间;
undo段可以自动增长,按需shrink
2 关于Oracle Data Dump export和import
import操作同时可以更改表名;
可以在export操作期间重写一个存在的dumpfile。
3 关于无效索引
会被优化器忽略;
只能通过rebuild生效。
4 关于监听
多个监听能运行在一个主机上;
多个数据库能注册在一个监听上。
5 关于ADDM
ADDM runs after each AWR snapshot is collected automatically by M ...
那天接到一个事情,我们的数据库表空间已经快用完了,我们需要将一个3GB的表里的数据转储到历史表里去,3天干完。但是我们因为是给运营商服务的,所以白天是绝对不能做这个事情的,只能晚上干,这就要求我们必须尽可能的提高效率。有同事提议使用nologging和append提高效率,但是nologging和append是不是能够提高效率呢。我查询了官方文档,有这么一个描述:
Conventional INSERT is the default in serial mode. In serial mode, direct path can be used only if you ...
今天在网上看到了一个估计索引碎片的方法,所以写了个小过程,对用户下的所有索引进行一次计算,挑选二元高度大于4的或者碎片率大于10%的索引进行输出。 需要说明的是,这种估计索引碎片的方法来自网上,还没有查询官方文档上的相关部分,仅供参考,我不对分析出的结果负责。 我在一些OCP的教材上看到了有关analyze validate的说明,据称可以分析出碎片数,但是现在还没在官方文档上找到确切的证据,希望知道的人给我讲一下,以下是我从官方文档上找到的一些关于analyze validate的说明: For an index, Oracle Database verif ...