control file(控制文件)
一、控制文件简介A control file contains information about the associated database that is required for access by an instance, both at startup and during normal operation. Control file information can be modified only by Oracle; no database administrator or user can edit a contr...
data dictionary(数据字典)
一、数据字典简介有关数据字典介绍详见官网Concepts-part II Oracle Database Architecture-7 The Data Dictionary(10g)。归纳总结有以下特点:数据字典是由基表(x$)、视图、同义词构成,由$ORACLE_HOME/rdbms/admincatalog.sql脚本生成。其中基表是存储有关数据库的底层表,我们无法直接访问。下...
手工建库与dbca建库
一、10g上手工建库建库口绝分四步:1、创建目录,赋予权限;2、创建初始化文件;3、启动数据库至nomount状态,执行建库脚本;4、执行三个脚本,创建用户默认表空间;先看第一步(即:创建目录,赋予权限)--连接oracle用户,进入$ORACLE_BASE/oradata目录下:[root@gc1 ~]# su - oracle...
深入解析partition-list 分区
List partitioning enables you to explicitly control how rows map to partitions. You do this by specifying a list of discrete values for the partitioning key in the description for each partition. This is different from range partitioning, where a range of values is associated with ...
深入解析partition-hash分区
依据惯例,先看官网对hash partition的解释 Hash partitioning enables easy partitioning of data that does not lend itself to range or list partitioning. It does this with a simple syntax and is easy to implement. It is a better choice than range partitioning when: ■ You...
深入解析partition-range分区
先借用官网对range分区的用法说明Range partitioning maps data to partitions based on ranges of partition key values that you establish for each partition. It is the most common type of partitioning and is often used with dates. For example, you might want to partition sales data into mont...
游标数据不同方式读取、提交性能对比分析
在itpub论坛中看到有人归纳整理游标数据几种提取方式及提交方式的性能分析,收集的很全面,于是在本机也测试了一把,附上我的测试代码及测试数据。先看游标数据读取提交的五种方式,如下:1. 使用游标 逐条提取、逐条处理、逐条插入、逐条提交。2. 使用游标 逐条提取、逐条处理、逐条插入、利用自定义计数变...
inner join using二表关联查询,相同列只显示一列
官方inner joins及using用法解释如下:例:表table1有id,name字段,表table2有id,age字段,通过id字段关联table1和table2,查询所有人员的性名和年龄若是select * from table1,table2 where table1.id=table2.id,则因id在二表中都存在,会重复显示,若想二表连查且相同列只显示一列,则用下面的方式...
巧用trunc函数,获取某日期范围内的数据
先看trunc函数日期的用法:select trunc(sysdate) from dual; --2014/3/5 今天的日期为2011-3-18select trunc(sysdate, 'mm') from dual; --2014/3/1 返回当月第一天.select trunc(sysdate, 'yy') from dual; --2014/1/1 返回当年第一天select trunc(sysdate, 'dd') from dual; --2014/3/5 返回当前年月...
“no_merge”hints优化视图访问低效问题
今天在itpub论坛看到一则贴子,楼主反应以下sql执行缓慢:create table test_20140230 asselect to_number(201401) deal_date, e.src_terminal_id, e.cont_type from (select * from test1 a where a.forward_time >= 201401...
数据库范式详解
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。1.1第一范式(1NF)...
依据前后数据关联关系,生成多行数据
例:一张表的数据如下,第一个字段是日期,第二个字段是数字 ROW DATE NUMBER1 2014-02-01 42 2014-02-08 33 2014-02-15 44 2014-02-22 9现在需要写一个查询,显示出的结果是7号以前的的值是4,8号到14号的值是3,15号到21号的值是4,21号到当前日期的值是9。方法1:分析:要生成的数...
DBMS_METADATA.GET_DDL获取用户ddl脚本
oracle在9i以后,可以利用dbms_metadata.get_ddl包得到数据库对象的ddl脚本。1、获取test用户下单个建表、视图或索引的语法:select dbms_metadata.get_ddl('TABLE','TAB_NAME','TEST') from dual; select dbms_metadata.get_ddl('VIEW','VIEW_NAME','TEST') from dual;&nbs...
SQLPLUS查看oracle sql执行计划命令
SQL>set autotrace on --显示执行计划和统计信息 SQL>set autotrace on explain --只显示执行计划 SQL>set autotrace on statistics --只显示统计信息 SQL>set autotrace traceonly --同autotrace on,但不显示查询结果 SQL>set autotrace off --关闭au...
update语句的优化方式
有二张表,表中数据如下所示:SQL> select * from a; ID COL1 COL2 ...
根据不同字段,升降序排列查询结果
如下例:根据col1降序、col2升序。with tt as(select 'a1' col1, 1 col2 from dual union all select 'a1' col1, 2 col2 from dual union all select 'a2' col1, 0 col2 from dual union all sel...
sqlplus中&&和&的区别
当一个变量赋值后希望反复使用,那么就可以用&&,通常来说第一个定义时用&&+变量名,后面直接用&+变量名即可。如下测试代码:点击(此处)折叠或打开SQL> select * from t;FPHM KSHM---- --------2014 000000012014 00000...
分组查询连接号段
实际应用中,经常会碰到连续号码断号的问题,如何根据已有号码,分段显示出来?原理简单,首先根据“号码”排序,然后再根据“号码-排序号”分组,再根据分组结果求组内的最大和最小值,就能产生分组号段了。例:有张表,数据如下:fphm,kshm2014,000000012014,000000022014,000000032014,000000042014,0000000520...
group by分组函数之rollup与cube用法
ROLLUP,是GROUP BY子句的一种扩展,可以为每个分组返回小计记录以及为所有分组返回总计记录。CUBE,也是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。先看下面的例子:初始化表及数据代码如下:...
nvl、nvl2与nullif函数用法区别
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型。NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1。如下例示:...