2013年中国数据库大会PPT

Posted on

2013年中国数据库大会PPT

NoSQLFan

关注NoSQL相关的新闻与技术

2013年中国数据库大会PPT

作者:nosqlfan on 星期二, 四月 23, 2013 · 评论本文 【阅读:21,570 次】

干货来了!!2013年中国数据库大会刚刚闭幕,PPT已经提供下载。分享给各位。

微盘打包下载:http://vdisk.weibo.com/s/yJ3L7/1366726293

  1. 大数据革命.pdf
  2. MPP NewSQL 数据库集群支撑企业超大规模数据仓库案例介绍.pdf
  3. Big Data in Action – 企业如何运用微软 Big Data 的技术具体规划并落实运行.pdf
  4. 小米hadoop/hbase微实践.pdf
  5. HBase近期的发展及实践.pdf
  6. 简单诉求下的大数据解决之道.pdf
  7. 基于Hadoop的携程集中式日志及其周边生态系统介绍.pdf
  8. 百度的下一代离线存储计算系统.pdf
  9. 主流开源NoSQL及分布式存储的应用与思考.pdf
  10. 腾讯在线交易平台统一数据层高一致性解决方案.pdf
  11. NoSQL一致性实践:我对CAP的一点认识.pdf
  12. MongoDB at Qihoo 360.pdf
  13. MySQL Cluster实战初探 .pdf
  14. SAP HANA深度剖析.pdf
  15. eXtremeDB内存数据库性能提升方案分享.pdf
  16. 运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf
  17. DM7 MPP架构——同时满足OLAP与OLTP需求.pdf
  18. SAP 让大数据飞翔.pdf
  19. 阿里数据库关键技术.pdf
  20. 基于Oracle的SQL优化典型案例分.pdf
  21. 赢在起点–谈数据库设计规范.pdf
  22. 大型业务系统Oracle数据库 10G升级11G实践.pdf
  23. 基于Oracle数据库的数据防护.pdf
  24. Oracle ASM的IO架构优化实践.pdf
  25. SQLAUTO——数据库SQL变更自动化管理.pdf
  26. Developer and DBA Guide to Whats New in MySQL 5.6.pdf
  27. 深入解析MySQL InnoDB引擎.pdf
  28. 秒杀场景下MySQL的低效–原因和改进.pdf
  29. InnoDB架构分析以及TNT引擎的优势分析.pdf
  30. MariaDB对MySQL的改进及未来规划.pdf
  31. 利用 XEvent进行高级Troubleshooting.pdf
  32. 基于SQL Server的大数据解决方案设计及实现 .pdf
  33. 混合型企业数据访问架构设计.pdf
  34. 百度大规模存储系统.pdf
  35. Oracle ExaData 一体机的高效备份之道.pdf
  36. 基于网络监听的数据库安全审计技术.pdf
  37. 数据库防御技术全揭秘——DATAbase firewall和DBV审计.pdf
  38. 保险行业数据建模改善方案.pdf
  39. 数据质量管理——金融行业实践.pdf
  40. 金融行业数据架构的演变.pdf
  41. 数据开发的工程化实践——强化您的数据开发过程.pdf
  42. 移动互联网下 DW/BI的转型 应运而生的金山快讯平台.pdf
  43. 大数据,商业智能的挑战.pdf
  44. 云端漫步——利用Amazon AWS构建可伸缩的数据分析平台.pdf
  45. 分享dba团队管理和发展.pdf
  46. DBA团队管理.pdf 42区 VPS

42qu.com 云主机 , 卖给创业的你 。 点击这里 , 查看详情

anyShare据说看到好文章不转的人,服务器容易宕机!

相关文章:

无觅

无觅相关文章插件,快速提升流量

分类 未分类 · tag

最新最早最热

A梦跑跑

厉害啊,好东西!

4月23日回复转发举报

  • wpfpizicai

wpfpizicai

不错!

4月24日回复转发举报

  • APIIPA

APIIPA

干货!

4月24日回复转发举报

  • ′向日葵微笑着你的脸

′向日葵微笑着你的脸

好东西,收了!

4月26日回复转发举报

  • 麥田里的稲草人

麥田里的稲草人

shuang

4月26日回复转发举报

  • 吵吵

吵吵

这个好,回头仔细研读。

4月27日回复转发举报

  • 0浮生萧条0

0浮生萧条0

这东西厉害,感谢分享

4月28日回复转发举报

  • wolf

wolf

好东西!

4月28日回复转发举报

  • wanghm866

wanghm866

dddddddddding

4月29日回复转发举报

  • bzcnc

bzcnc

很不错的文档,谢谢LZ分享

5月2日回复转发举报

  • LG

LG

很好

5月9日回复转发举报

  • 我你分享网

我你分享网

http://blog.nosqlfan.com/

5月11日回复转发举报

  • 我叫张大熊

我叫张大熊

好东西啊

5月14日回复转发举报

  • Ice_Into

Ice_Into

谢谢!

5月22日回复转发举报

  • 祸倚福兮

祸倚福兮

好东西,收了

5月28日回复转发举报

  • zhaoyang朝阳

zhaoyang朝阳

谢谢分享 赞一个先

6月15日回复转发举报

  • mysinausername

mysinausername

不错,看看别人实现的想法。

6月25日回复转发举报

  • 问我

问我

已删除?

6月28日回复转发举报

  • 老叶晨音

老叶晨音

谢谢啊

7月1日回复转发举报 1

社交帐号登录:

发布

Powered by 多说

*

  • 关注与订阅

计算关于生命、宇宙以及一切的终极的答案。 42qu.com 主机空间

  • 中国 BGP 六线 / 美国五机房可选
  • 独立 IP / root 权限
  • vpsee 专业技术支持
  • XEN 虚拟机,卖给创业的你
  • NoSQL问答

SegmentFault - 专注于中文开发者的技术问答!

mapreduce Cassandra Python node.js hbase nosql hadoop Riak 介绍 CouchDB 性能 MySQL 监控 源码 Neo4j Replica Sets 教程 Redis MongoDB LevelDB

© 2012 NoSQLFan · NoSQLFan theme by @ninayan

PostgreSQL 8_4 在中文 windows 下安装错误 (2)

Posted on

PostgreSQL 8_4 在中文 windows 下安装错误 (2)

goldenhawking的专栏

#

*

用户操作[留言] [发消息] [加为好友] 订阅我的博客XML聚合 FeedSky订阅到鲜果订阅到Google订阅到抓虾goldenhawking的公告文章分类存档* 2009年08月(3)

这个错误是在安装新版的PostgreSQL 8.4时遇到的,安装程序在 windows xp sp3下启动(简体中文),一路Next, 没注意“locale”选项,当时选择了default,next, 导致无法安装完成,提示:

Installation fails with complaint about accessing data\postgresql.conf 发现这个老兄也遇到了:

http://www.nabble.com/BUG--4785%3A-Installation-fails-to23323059.html/#a23323059

搞半天,最后发现了问题,是PSQL的全文搜索中没有简体中文支持。其实,安装的时候选择"C"就可以了。

哎,看来我和开源数据库最近老扯不清关系。

这是在nabble上的帖子。 En, I have that damm problem sloved. Are you using a Non-English Version of Windows? for example, JPN, CHS? If you install your PSQL in an Asian-language windows, be sure that "locale" settings should be setted manualy to a supported language, I choosed "C" for it is the first item in the combo. this is the errmsg when you're using default local settings: Running the post-installation/upgrade actions: Delete the temporary scripts directory... Write the base directory to the ini file... Write the version number to the ini file... Initialising the database cluster (this may take a few minutes)... Executing cscript Script exit code: 0 Script output: Ensuring we can write to the data directory (using cacls): 数据无效。(Means data is unavaliable) The files belonging to this database system will be owned by user "XXXXXXXX". This user must also own the server process. The database cluster will be initialized with locale Chinese_XXXXXXX.936. initdb: could not find suitable text search configuration for locale Chinese_XXXXXXX.936 The default text search configuration will be set to "simple". fixing permissions on existing directory D:/XXXXXX... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 32MB creating configuration files ... ok creating template1 database in D:/XXXXXXX/base/1 ... ok initializing pg_authid ... FATAL: database locale is incompatible with operating system DETAIL: The database was initialized with LC_COLLATE "Chinese_XXXXXXXX.936", which is not recognized by setlocale(). HINT: Recreate the database with another locale or install the missing locale. child process exited with exit code 1 initdb: removing contents of data directory "D:/XXXXXX" Granting service account access to the data directory (using cacls): 处理的目录: D:\XXXXXXXXX(Processed folder:D:\XXXXXXXXX) initcluster.vbs ran to completion Script stderr: Configuring database server startup... Executing cscript Script exit code: 0 Script output: startupcfg.vbs ran to completion Script stderr:

发表于 @ 2009年08月05日 12:44:00 | 评论( loading... )| 编辑| 举报| 收藏

旧一篇:初试My-SQL

Copyright © goldenhawkingPowered by CSDN Blog

oracle的表空间、分区表、以及索引的总结

Posted on

oracle的表空间、分区表、以及索引的总结

表空间:

Oracle的UNDOTBS01.DBF文件太大的解决办法

1、.禁止undo tablespace自动增长

alter database datafile 'full_path\undotbs01.dbf' autoextend off;

2.-- 创建一个新的小空间的undo tablespace

create undo tablespace undotBS2 datafile 'full_path\UNDOTBS02.DBF' size 100m;

-- 设置新的表空间为系统undo_tablespace

alter system set undo_tablespace=undotBS2;

-- Drop 旧的表空间

drop tablespace undotbs1 including contents;

--查看所有表空间的情况

select /* from dba_tablespaces

--创建表空间

create tablespace HRPM0

datafile '/oradata/misdb/HRPM0.DBF' size 5m autoextend on next 10m maxsize unlimited

--删除表空间

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

--修改表空间大小

alter database datafile '/path/NADDate05.dbf' resize 100M

分区表:

当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。

Oracle中提供了以下几种表分区:

一、范围分区:这种类型的分区是使用列的一组值,通常将该列成为分区键。

示例1:假设有一个CUSTOMER表,表中有数据200000行,我们将此表通过CUSTOMER_ID进行分区,每个分区存储100000行,我们将每个分区保存到单独的表空间中,这样数据文件就可以跨越多个物理磁盘。下面是创建表和分区的代码,如下:

CREATE TABLE CUSTOMER

(

CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

FIRST_NAME VARCHAR2(30) NOT NULL,

LAST_NAME VARCHAR2(30) NOT NULL,

PHONE VARCHAR2(15) NOT NULL,

EMAIL VARCHAR2(80),

STATUS CHAR(1)

)

PARTITION BY RANGE (CUSTOMER_ID)

(

PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,

PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02

)

注意:在创建表进行分区时,表空间必须先存在,而且建议将不同的分区放入不同的表空间中。

示例2:假设有ORDER_ACTIVITIES表,每6个月对订单进行清理,我们可以按月份对表进行分区,分区代码如下:

CREATE TABLE ORDER_ACTIVITIES

(

ORDER_ID NUMBER(7) NOT NULL,

ORDER_DATE DATE,

TOTAL_AMOUNT NUMBER,

CUSTOTMER_ID NUMBER(7),

PAID CHAR(1)

)

PARTITION BY RANGE (ORDER_DATE)

(

PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01-MAY-2003','DD-MON-YYYY')) TABLESPACE ORD_TS01,

PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,

PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03

)

二、列表分区:该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。

示例1:

CREATE TABLE PROBLEM_TICKETS

(

PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY,

DESCRIPTION VARCHAR2(2000),

CUSTOMER_ID NUMBER(7) NOT NULL,

DATE_ENTERED DATE NOT NULL,

STATUS VARCHAR2(20)

)

PARTITION BY LIST (STATUS)

(

PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01,

PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02

)

三、散列分区:这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。请看下列示例:

示例1:

CREATE TABLE HASH_TABLE

(

COL NUMBER(8),

INF VARCHAR2(100)

)

PARTITION BY HASH (COL)

(

PARTITION PART01 TABLESPACE HASH_TS01,

PARTITION PART02 TABLESPACE HASH_TS02,

PARTITION PART03 TABLESPACE HASH_TS03

)

四、复合范围列表分区:这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。

示例1:

CREATE TABLE SALES

(

PRODUCT_ID VARCHAR2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

STATUS VARCHAR2(20)

)

PARTITION BY RANGE(SALES_DATE)

SUBPARTITION BY LIST (STATUS)

(

PARTITION P1 VALUES LESS THAN (TO_DATE('2003-01-01','YYYY-MM-DD')) TABLESPACE P1_TS

(

SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE SUBP1_TS1,

SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE SUBP1_TS2

),

PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE P2_TS

(

SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE SUBP2_TS1,

SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE SUBP2_TS2

)

)

示例2:使用TEMPLATE模板

CREATE TABLE SALES

(

PRODUCT_ID VARCHAR2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

STATUS VARCHAR2(20)

)

PARTITION BY RANGE(SALES_DATE)

SUBPARTITION BY LIST (STATUS)

SUBPARTITION TEMPLATE

(

SUBPARTITION SUB1 VALUES ('ACTIVE') TABLESPACE SUBP1_TS1,

SUBPARTITION SUB2 VALUES ('INACTIVE') TABLESPACE SUBP2_TS2

)

(

PARTITION P1 VALUES LESS THAN (TO_DATE('2003-01-01','YYYY-MM-DD')) TABLESPACE P1_TS,

PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE P2_TS

)

五、复合范围散列分区:这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。与上面的定义方式非常的类似,在此不单独举例。

表分区对于用户来说是透明的,我们在插入数据时Oracle会自动判断插入的数据,然后放入相应的表分区中。但有时我们想单独查询某个分区中的数据时,就必须手工指定分区的名称。

示例1:(此示例基于:四、复合范围列表分区的示例一)

向SALES表插入记录,不必指定表分区。

INSERT INTO SALES VALUES('00001','01-1月-02',100,'ACTIVE')

/

INSERT INTO SALES VALUES('00002','01-1月-01',200,'ACTIVE')

/

INSERT INTO SALES VALUES('00003','01-2月-03',300,'INACTIVE')

/

INSERT INTO SALES VALUES('00004','04-2月-03',300,'INACTIVE')

/

INSERT INTO SALES VALUES('00005','04-2月-02',300,'INACTIVE')

/

不指定表分区查看SALES表信息:

SELECT /* FROM SALES; 结果如下所示:

指定P1表分区查询SALES表信息:

SELECT /* FROM SALES PARTITION(P1); 结果如下所示:

指定P1SUB1子分区查询SALES表信息:

SELECT /* FROM SALES SUBPARTITION(P1SUB1); 结果如下所示:

示例2:(此示例基于:四、复合范围列表分区的示例二)

示例2基于TEMPLATE模板的表分区,查询稍稍烦琐一点。

指定P1表分区查询SALES表信息:

SELECT /* FROM SALES PARTITION(P1); 结果如下所示,和刚才查询一致。

指定SUB1子分区查询SALES表信息:

SELECT /* FROM SALES SUBPARTITION(SUB1); 出现如下错误信息:

怎么解决以上问题呢?我们通过sys模式查看分区信息的数据字典,如下:

可以看出子分区不叫SUB1,而是P1_SUB1,重新查询信息,如下图所示:

有关表分区的一些维护性操作: 一、添加分区 以下代码给SALES表添加了一个P3分区 ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD')); 注意:以上添加的分区界限应该高于最后一个分区界限。

以下代码给SALES表的P3分区添加了一个P3SUB1子分区 ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');

二、删除分区 以下代码删除了P3表分区: ALTER TABLE SALES DROP PARTITION P3;

在以下代码删除了P4SUB1子分区: ALTER TABLE SALES DROP SUBPARTITION P4SUB1; 注意:如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表。

三、截断分区 截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。当表中即使只有一个分区时,也可以截断该分区。通过以下代码截断分区: ALTER TABLE SALES TRUNCATE PARTITION P2; 通过以下代码截断子分区: ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;

四、合并分区 合并分区是将相邻的分区合并成一个分区,结果分区将采用较高分区的界限,值得注意的是,不能将分区合并到界限较低的分区。以下代码实现了P1 P2分区的合并: ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;

五、拆分分区 拆分分区将一个分区拆分两个新分区,拆分后原来分区不再存在。注意不能对HASH类型的分区进行拆分。 ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);

六、接合分区(coalesca) 结合分区是将散列分区中的数据接合到其它分区中,当散列分区中的数据比较大时,可以增加散列分区,然后进行接合,值得注意的是,接合分区只能用于散列分区中。通过以下代码进行接合分区: ALTER TABLE SALES COALESCA PARTITION;

七、重命名表分区 以下代码将P21更改为P2 ALTER TABLE SALES RENAME PARTITION P21 TO P2;

九、跨分区查询 select sum( /) from ( (select count(/) cn from t_table_SS PARTITION (P200709_1) union all select count(/*) cn from t_table_SS PARTITION (P200709_2));

十、查询表上有多少分区 SELECT /* FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'

十一、查询索引信息 select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX' group by object_name,object_type,tablespace_name order by 4 desc

--显示数据库所有分区表的信息: select /* from DBA_PART_TABLES

--显示当前用户可访问的所有分区表信息: select /* from ALL_PART_TABLES

--显示当前用户所有分区表的信息: select /* from USER_PART_TABLES

--显示表分区信息 显示数据库所有分区表的详细分区信息: select /* from DBA_TAB_PARTITIONS

--显示当前用户可访问的所有分区表的详细分区信息: select /* from ALL_TAB_PARTITIONS

--显示当前用户所有分区表的详细分区信息: select /* from USER_TAB_PARTITIONS

--显示子分区信息 显示数据库所有组合分区表的子分区信息: select /* from DBA_TAB_SUBPARTITIONS

--显示当前用户可访问的所有组合分区表的子分区信息: select /* from ALL_TAB_SUBPARTITIONS

--显示当前用户所有组合分区表的子分区信息: select /* from USER_TAB_SUBPARTITIONS

--显示分区列 显示数据库所有分区表的分区列信息: select /* from DBA_PART_KEY_COLUMNS

--显示当前用户可访问的所有分区表的分区列信息: select /* from ALL_PART_KEY_COLUMNS

--显示当前用户所有分区表的分区列信息: select /* from USER_PART_KEY_COLUMNS

--显示子分区列 显示数据库所有分区表的子分区列信息: select /* from DBA_SUBPART_KEY_COLUMNS

--显示当前用户可访问的所有分区表的子分区列信息: select /* from ALL_SUBPART_KEY_COLUMNS

--显示当前用户所有分区表的子分区列信息: select /* from USER_SUBPART_KEY_COLUMNS

--怎样查询出oracle数据库中所有的的分区表 select /* from user_tables a where a.partitioned='YES'

--删除一个表的数据是 truncate table table_name;

--删除分区表一个分区的数据是 alter table table_name truncate partition p5;

注:分区根据具体情况选择。

表分区有以下优点: 1、数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高。 2、数据修剪:保存历史数据非常的理想。 3、备份:将大表的数据分成多个文件,方便备份和恢复。

4、并行性:可以同时向表中进行DML操作,并行性性能提高。

索引: 1、一般索引: create index index_name on table(col_name); 2、Oracle 分区索引详解 语法:Table Index CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name ON [schema.]table_name [tbl_alias] (col [ASC | DESC]) index_clause index_attribs

index_clauses: 分以下两种情况

  1. Local Index 就是索引信息的存放位置依赖于父表的Partition信息,换句话说创建这样的索引必须保证父表是Partition 1.1 索引信息存放在父表的分区所在的表空间。但是仅可以创建在父表为HashTable或者composite分区表的。 LOCAL STORE IN (tablespace) 1.2 仅可以创建在父表为HashTable或者composite分区表的。并且指定的分区数目要与父表的分区数目要一致 LOCAL STORE IN (tablespace) (PARTITION [partition [LOGGING|NOLOGGING] [TABLESPACE {tablespace|DEFAULT}] [PCTFREE int] [PCTUSED int] [INITRANS int] [MAXTRANS int] [STORAGE storage_clause] [STORE IN {tablespace_name|DEFAULT] [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])

1.3 索引信息存放在父表的分区所在的表空间,这种语法最简单,也是最常用的分区索引创建方式。 Local 1.4 并且指定的Partition 数目要与父表的Partition要一致 LOCAL (PARTITION [partition [LOGGING|NOLOGGING] [TABLESPACE {tablespace|DEFAULT}] [PCTFREE int] [PCTUSED int] [INITRANS int] [MAXTRANS int] [STORAGE storage_clause] [STORE IN {tablespace_name|DEFAULT] [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])

Global Index 索引信息的存放位置与父表的Partition信息完全不相干。甚至父表是不是分区表都无所谓的。语法如下: GLOBAL PARTITION BY RANGE (col_list) ( PARTITION partition VALUES LESS THAN (value_list) [LOGGING|NOLOGGING] [TABLESPACE {tablespace|DEFAULT}] [PCTFREE int] [PCTUSED int] [INITRANS int] [MAXTRANS int] [STORAGE storage_clause] ) 但是在这种情况下,如果父表是分区表,要删除父表的一个分区都必须要更新Global Index ,否则索引信息不正确 ALTER TABLE TableName DROP PARTITION PartitionName Update Global Indexes

--查询索引 select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX' group by object_name,object_type,tablespace_name order by 4 desc

--删除分区 ALTER TABLE WID_SETT_TICKET_DAY_1100 DROP PARTITION P20100401; --增加分区 ALTER TABLE WID_SETT_TICKET_DAY_1100 ADD PARTITION P20100401 VALUES (20100401) TABLESPACE ODSDATA_04 NOLOGGING; --查找分区 select /* from USER_TAB_PARTITIONS where table_name = 'WID_SETT_TICKET_DAY_1100' and partition_name = 'P20100401';

删除oracle某用户所用表

Posted on

删除oracle某用户所用表

命令:drop user username CASCADE;

select 'drop table '||table_name||';' from user_tables;

分享这些经验只是为了给 曾经犯过 错误的同学一个 挽救的方法

第一个问题:drop table,切记没有purge掉

恢复的方法是:

flashback table tableName to before drop [ rename to newTableName]

解释:红字是关键字,[] 代表可选项

第二个问题:delete from tableName

恢复方法是:

先查询scn(system change number)号:

select dbms_flashback.get_system_change_number from dual;

--需要用户有dbms_flashback.get_system_change_number 权限;

根据查询的scn号,一点点往下减少,尝试那个号符合我们删除数据的时间点

select /* from tableName as of scn 13102359953430;

--笔者的13102359953430 是尝试出来的,通过sql查询的值为13102359953436,我一点一点尝试 才知道是这个值

来源: [http://oracle.chinaitlab.com/optimize/909867.html](http://oracle.chinaitlab.com/optimize/909867.html)

SQL

Posted on

SQL--JOIN之完全用法(版本2)

zwws's blog

Blog For PHP Learning...

PHP博客 :: 首页 :: 联系 :: 聚合 :: 管理 6 Posts :: 0 Stories :: 15 Comments :: 0 Trackbacks

留言簿(1)

我参与的团队

随笔分类

随笔档案

搜索

*

最新评论

阅读排行榜

评论排行榜

* SQL--JOIN之完全用法(版本2)

在我叙述 JOIN 的用法前,我先引用数据库设计中最常见的范式资料。

第三范式( 3NF ):如果关系模式 R ( U , F )中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系 R 是属于第三范式的。

例:如 S1 ( SNO , SNAME , DNO , DNAME , LOCATION ) 各属性分别代表学号,姓名,所在系,系名称,系地址。

关键字 SNO 决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是 2NF 。但这关系肯定有大量的冗余,有关学生所在的几个属性 DNO , DNAME , LOCATION 将重复存储,插入,删除和修改时也将产生类似以上例的情况。

原因:关系中存在传递依赖造成的。由于 SNAME 和 DNO 是依赖 SNO ,而 DNAME 和 LOCATION 是依赖 DNO 的,即通过一个学号可以知道该学生的姓名以及他所在系代码,但无法由学号知道系地址,学号和系地址间是通过学号所对应的学生的所在系关联的, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO -> LOCATION 实现的。也就是说, SNO 不直接决定非主属性 LOCATION 。

解决目地:每个关系模式中不能留有传递依赖。

解决方法:分为两个关系 S ( SNO , SNAME , DNO ), D ( DNO , DNAME , LOCATION )

注意:关系 S 中不能没有外关键字 DNO 。否则两个关系之间失去联系。

在数据库的设计过程中常常按照第三范式来设计数据库,当然在有些场合为优化数据库的性能而增加了相关冗余字段以使表的结构不符合 3NF ,在多数场合中,没有一张表能完整的发挥客户所需要的结果集。这样就需要通过联接多张在逻辑上存在依赖关系的表,选择你所需要的数据。

在使用 JOIN 前,必须明白是通过联接,根据各个表之间的逻辑关系从相关表中检索数据。通过 SQL Server 自带帮助文件,可以清楚的知道:可在 FROM 或 WHERE 子句中指定联接。

1.1. 在 WHERE子句中指定联接

下例使用 WHERE 子句进行表之间的

SELECT A.SYMBOL,A.SNAME,B.TDATE,B.CLOSE

FROM SECURITYCODE A,DAYQUOTE B

WHERE A.SYMBOL =B.SYMBOL

AND  B.TDATE >= A.LISTDATE

AND A.SYMBOL LIKE  '600%'

在上例中联接的表 A 与表 B 通过 A.SYMBOL =B.SYMBOL 这个条件联接,筛选条件为 B.TDATE 不小于 A. LISTDATE 。

在 WHERE 子句中指定联接,对于较简单的联接,使用这种方式可能较方便,但综合来说,不推荐使用该语法联接表。

1.2. 在 FROM子句中指定联接

拿上面的例子来详细说,表 SECURITYCODE 中主要存放证券代码的基本信息,表中的 SYMBOL 代表股票代码, SNAME 代表股票名称, LISTDATE 代表上市日期;表 DAYQUOTE 中主要存放股票的每日行情。 SYMBOL 代表股票代码, TDATE 代表交易日期, CLOSE 代表收盘价。

我现在的取值逻辑是:取出股票代码以 600 打头的股票自上市日期以来的所有交易日的收盘价。将 SECURITYCODE 与 DAYQUOTE 通过 SYMBOL 联接。

SELECT A.SYMBOL,A.SNAME,B.TDATE,B. CLOSE

FROM SECURITYCODE A

JOIN DAYQUOTE B

ON A.SYMBOL =B.SYMBOL

WHERE B.TDATE >= A.LISTDATE

AND A.SYMBOL LIKE '600%'

ORDER BY A.SYMBOL,B.TDATE

对于使用 FROM 子句方式联接表,可以很清楚的看出表之间的联接条件。就可读性以及后续的可修改性与 WHERE 子句相比有较大的优势。

下面就联接的方式引用帮助文件中的具体介绍,联接可以分为以下几种:

1.3. 内联接

内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。 WHERE 子句中指定的内联接称为旧式内联接。

内联接一般常见写法:

SELECT A.COLUMN1,[A.COLUMN2],B.COLUMN1,[B.COLUMN2]

FROM TABLE1 A

[INNER] JOIN TABLE2 B

ON A.COLUMN0 = B.COLUMN0

在查询分析器中使用 INNER JOIN 时常常省略 INNER 。

1.4. 外联接

外联接可以是左向外联接、右向外联接或完整外部联接。

在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

LEFT JOIN**或 LEFT OUTER JOIN**

左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

RIGHT JOIN**或 RIGHT OUTER JOIN**

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN**或 FULL OUTER JOIN**

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。

外联接的中常见的是 LEFT JOIN ,将 LEFT JOIN 用熟已经可以解决大半问题了。

外联接的一般写法:

SELECT A.COLUMN1,[A.COLUMN2],B.COLUMN1,[B.COLUMN2]

FROM TABLE1 A

LEFT|RIGHT|FULL [OUTER] JOIN TABLE2 B

ON A.COLUMN0 = B.COLUMN0

在查询分析器中使用 OUTER JOIN 时常常省略 OUTER 。 LEFT 和 RIGHT 只是方向问题,在特定场合下, FULL OUTER JOIN 相当于 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 的消除重复行的合集。

1.5. 交叉联接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。也就是说在没有 WHERE 子句的情况下,若表 A 有 3 行记录,表 B 有 6 行记录 : :

SELECT A./,B./ FROM 表A CROSS JOIN 表B

那以上语句会返回 18 行记录。

posted on 2007-02-23 20:58 zwws 阅读(7393) 评论(2) 编辑 收藏 引用 网摘

Feedback

/# re: SQL--JOIN之完全用法(版本2) 2007-07-29 15:02 翡翠

全联怎么写 [http://www.hoopower.com/] 回复 更多评论 /# re: SQL--JOIN之完全用法(版本2) 2008-02-20 16:08 hasiy

内容不错 回复 更多评论 刷新评论列表

只有注册用户登录后才能发表评论, 未注册用户请先注册。 相关链接: 网站导航:

博客园 BlogJava 博客生活 IT博客网 C++博客 PHP博客 博客园社区 管理博客 教师博客 天文博客 汽车博客 足球博客 股票博客 电子博客

Copyright @ zwws Powered by: .Text and ASP.NET Theme by: .NET Monster