网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.数据仓库基本报表制作过程中的SQ.
.初学者必读:精讲SQL中的时间计算.
.一些比较常见的SQL Server扩展存.
.Informix中查询database和table的.
.HOW TO:使用 Osql 工具管理 SQL.
.sql server日期时间函数.
.有用的SQL语句(删除重复记录,收.
.深入探讨数据仓库设计的步骤 禁忌.
.适合数据库初学者学习的日期操作.
.死锁并不可怕也并不是难以解决的.
.SQL Server的链接服务器技术小结.
.在SQL2k降序索引上使用中bug.
.SQL Server端口更改后的数据库连.
.将多表格查询合并至单一声明的常.
.SELECT查询的应用(一).
.如何将数据仓库与系统体系结构合.
.SQL Server 存储过程的经典分页.
.解决SQL Server虚拟内存不足情况.
.用SQL Server Everywhere保存离线.
.标准SQL规范中定义的四个事务隔离.

实例讲解分区表的可用性及相关错误案例

发表日期:2008-3-31


分区表的可用性:

创建一个分区表:


CREATE TABLE employee

( empno int,

ename varchar2(20)

)

PARTITION BY HASH (empno)

( partition part_1 tablespace TBS_DAIMIN,

partition part_2 tablespace USERS

)


SQL> insert into employee select empno, ename from scott.emp

2 ;


14 rows created.


commit;


SQL> select * from employee partition(part_1);


EMPNO ENAME

---------- --------------------

7369 SMITH

7499 ALLEN

7654 MARTIN

7698 BLAKE

7782 CLARK

7839 KING

7876 ADAMS

7934 MILLER


8 rows selected.


SQL> select * from employee partition(part_2);


EMPNO ENAME

---------- --------------------

7521 WARD

7566 JONES

7788 SCOTT

7844 TURNER

7900 JAMES

7902 FORD


6 rows selected.


假如将该表的一个分区offline之后,出现下面的错误:

 

SQL> alter tablespace TBS_DAIMIN offline;


SQL> select * from employee;

select * from employee

*

ERROR at line 1:

ORA-00376: file 12 cannot be read at this time

ORA-01110: data file 12: '/opt/ora9/product/9.2/dbs/tbs_daimin02.dat'

 


原因:

主要是因为该表的一个分区已经offline,而 select * from employee是访问整个表的信息,这样必然需要访问表的所有分区,当访问到已经offline的时候,则会报错;

但是如果是试图访问联机的分区的数据,则可以成功;如下:

SQL> variable n number

exec :n :=SQL> 7521


PL/SQL procedure successfully completed.


SQL> select * from employee where empno = :n

2 ;


EMPNO ENAME

---------- --------------------

7521 WARD


但是这样分区有个好处就是放一张分区表出现故障时,可以通过分析确认是表的哪个分区出现故障,然后将出现故障的分区通过优化器从方案中排除对该分区的数据查询,可以减少故障时间。

比方说:

有一个100GB的表,并且这个表被分成50个2GB的分区,可以更快的从系统错误中恢复过来。如果有一个2GB的分区受损,则恢复时间则就恢复一个2GB分区所花费的时间,而不是恢复一个100GB的表所花费的时间

可用性得到了提高:

1、分区可以用优化器来排除,使得一个分区的破坏不会对用户产生很大的影响,最多就是查询不到受损分区的数据;

2、分区受损,只需要恢复该受损分区及可,这样减少了系统故障时间。

上一篇:详细讲解SQL中CONVERT转化函数的用法 人气:1386
下一篇:SQL Server 2000的数据库容量究竟是多大 人气:1219
浏览全部分区表的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐