天道酬勤

RDBMS and My Life

Archive for the ‘oracle’ tag

DB2对比Oracle学习系列之:instance & database concepts

leave a comment

DB2的实例概念

从体系结构看,就是DB2的执行代码和数据库对象的中间逻辑层,可以看成是关于所有的数据库及其对象的逻辑集合,也可以认为是所有的数据库及其对象和DB2的代码之间的联系和结合。通俗一点说就是:由一组后台进程和共享内存组成。

这一点与Oracle的实例概念是一致的。

db2_shared_mem

DB2 Shared Memory

DB2的数据库概念

在DB2中,一个DB2实例可以同时管理多个DB2数据库,而一个DB2数据库只能由一个DB2实例管理,DB2数据库与DB2实例是一种松散耦合的关系。

Oracle数据库的概念正好相反:

  1. 一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库。
  2. 一个数据库可被多个实例同时装载和打开(Oracle的集群RAC)。

DB2_Server_ Architecture

DB2 Server Architecture

-The End-

Written by ochef

September 29th, 2009 at 11:03 pm

Posted in Database

Tagged with ,

Oracle Buys Sun

leave a comment

昨天4月20日,Oracle以74亿美刀收购了Sun。不多说,请看官方的消息:

Oracle

Sun

Written by ochef

April 21st, 2009 at 10:40 am

Posted in Database,Operating System

Tagged with ,

SQL的执行计划

leave a comment

今天有开发人员问怎么安装SQL的执行计划。配置方法不止一种,下面俺简单说一下方法:

第一种方法如下:

在sys用户下运行如下脚本:

SQL>@$ORACLE_HOME/sqlplus/admin/plustrce.sql;

在产生角色plustrace后在sys用户下把该角色授予一般用户username,

SQL>grant plustrace to username;

如果愿意,可以把grant命令中的username替换为public。

第二种方法如下:
在sys用户下运行如下脚本:

SQL>@$ORACLE_HOME/rdbms/admin/utlxplan.sql;

创建一个plan_table,用来存储分析SQL的结果

SQL>create public synonym plan_table for plan_table;
SQL>grant all on plan_table to public;

通过将plan_table设置为public,任何人都可以使用SQL*Plus来查看执行计划,同时也可以把grant to public中的public替换为某个username。

一些开关语句如下:

set time on|off 打开时间显示。

set timing on|off 打开显示执行的时间。

set autotrace on|off 打开自动分析,并显示SQL的运行结果。

set autotrace on statistics 按常规执行,只显示SQL的执行统计数据。

set autotrace on explain 按常规运行,只显示优化程序的执行情况。

set autotrace traceonly 打开自动分析统计,不显示SQL的运行结果。

set autotrace traceonly statistics
与set autotrace traceonly一样,不显示执行计划,只显示统计数据。

set autotrace traceonly explain
与set autotrace traceonly一样,不显示统计数据,只显示执行计划。它只对该查询进行分析和解释,INSERT、UPDATE、DELETE和MEGRE都用此方法,只有SELECTE 有所不同。

三、示例
Read the rest of this entry »

Written by ochef

March 19th, 2009 at 1:55 pm

Posted in Database

Tagged with ,

How create index on big table

leave a comment

要在一个业务繁忙的OLTP环境下对一个拥有上千万数据的大表创建索引,一个原则就是根据主机CPU的数量尽可能的让SQL进行并行处理(paralell),同时尽量少产生redo。在创建索引之前需要把sort_area_size排序区修改得大一点,如下:

SQL>alter session SET workarea_size_policy=manual;
SQL>alter session SET sort_area_size=1024m;

并行执行SQL:(注意TEMP tablespace的大小,如果太小需要适当的加大)

1
2
SQL>create UNIQUE INDEX index_name ON tablename(column_name)
      online nologging parallel 2 compute statistics;

索引创建完成之后注意要取消并行:

SQL>alter INDEX index_name noparallel;

Written by ochef

March 18th, 2009 at 4:45 pm

Posted in Database

Tagged with ,