飘飘悠悠 发表于 2015-1-16 22:39:24

MYSQL教程之Oracle Database 10g:最好新特征(第三周...

使用它开发程序也是非常简单的。”oracle
第三周:表空间办理

名字中包括了甚么?:改良的表空间办理



表空间办理失掉了严重的改善,这能够回因于一个sparserSYSTEM、为用户界说一个默许表空间的撑持、新的SYSAUX、乃至重定名

您已经几次因用户在SYSTEM表空间中创立了非SYS和SYSTEM的段而伤透头脑?

在Oracle9iDatabase之前,假如在创立用户时没有指定默许表空间,那末它将默许为SYSTEM表空间。假如用户在创立一个段时没有显式地指定一个表空间,那末这个段将在SYSTEM中创立―条件是用户在SYSTEM表空间中具有配额(要末显式地授与,要末经由过程体系权限UNLIMITEDTABLESPACE来授与)。Oracle9i同意DBA为一切未用显式的一时表空间子句创立的用户指定一个默许的一时表空间,从而削减了这个成绩。

在OracleDatabase10g中,您能够相似地为用户指定一个默许表空间。在数据库创立时代,CREATEDATABASE命令能够包括子句DEFAULTTABLESPACE。在创立以后,您能够经由过程收回以下命令来使一个表空间酿成默许表空间


ALTERDATABASEDEFAULTTABLESPACE<tsname>;



未用DEFAULTTABLESPACE子句创立的一切用户将以作为它们的默许表空间。您能够在任什么时候候经由过程这个ALTER命令来改动默许表空间,从而同意您在分歧的节点大将分歧的表空间指定为默许表空间。

主要注重事项:具有旧的表空间的一切用户的默许表空间都被修正为,即便有些表空间是为某些用户显式指定的。比方,假定用户USER1和USER2的表空间分离是TS1和TS2―它们是在用户创立时代显式指定的。数据库以后的默许表空间是TS2,但以后,数据库的默许表空间变成TS1。即便USER2的默许表空间是显式指定为TS2的,它也将变成TS1。当心这类界限效应!

假如在数据库创立时代没有指定默许表空间,它将默许为SYSTEM。但您怎样才干晓得现有的数据库的默许表空间是哪个?收回以下查询:


SELECTPROPERTY_VALUEFROMDATABASE_PROPERTIESWHEREPROPERTY_NAME=DEFAULT_PERMANENT_TABLESPACE;



DATABASE_PROPERTIES视图显现默许表空间以外,还显现一些十分主要的信息―比方默许一时表空间、全局数据库名、时区等。

非需要形式的默许表空间

几种形式(如智能代办署理用户DBSNMP、数据发掘用户ODM)与用户操纵不间接相干,但对数据库完全性仍很主要。这些形式中的一些已经用SYSTEM作为它们的默许表空间―这是在SYSTEM表空间内工具增殖的又一个缘故原由。

OracleDatabase10g引进了一个新的称为SYSAUX的表空间,它用来保留这些形式的工具。这个表空间是在数据库创立时代主动创立的,并在当地举行办理。独一同意修正的是数据文件的称号。

这类办法在SYSTEM破坏必要完全的数据库恢复时,为恢复供应撑持。SYSAUX中的工具能够被恢复为恣意一般的用户工具,同时数据库自己坚持运转。

但假如您想将SYSAUX中的这些形式中的一些转移到一个分歧的表空间中时,该怎样办?比方,思索LogMiner利用的工具,这些工具的巨细常常增加,直到终极填满表空间。出于可办理性的缘故原由,您大概思索将它们转移到它们本人的表空间中。但完成这一目标的最好的办法是甚么?

作为一个数据库办理员,懂得转移这些特别工具的准确历程对您而言是很主要的。侥幸的是,OracleDatabase10g供应了一个新的视图使要凭推测来做的事情抽象化。这个视图,V$SYSAUX_OCCUPANTS,列出了表空间SYSAUX中的形式的称号、它们的申明、以后利用的空间,和怎样转移它们。(拜见表1。)

注重LogMiner怎样被分明地显现为占用7,488KB的空间。它回形式SYSTEM一切,而要转移工具,您必要实行打包的历程SYS.DBMS_LOGMNR_D.SET_TABLESPACE。不外,关于STATSPACK工具,这个视图保举利用导进/导出办法;而关于流,没有转移历程―因此您不克不及简单地将它们从SYSAUX表空间直达移出来。列MOVE_PROCEDURE默许显现SYSAUX中存在的几近一切工具的准确的转移历程。也能够逆向利用转移历程来使工具回到SYSAUX表空间中。

重定名一个表空间

在数据堆栈情况中(典范地,关于数据中央系统布局),在数据库之间传输表空间是很罕见的。但源数据库和方针数据库必需不存在具有不异称号的表空间。假如存在两个具有不异称号的表空间,则方针表空间中的段必需转移到一个分歧的表空间中,然后从头创立这个表空间―这个义务提及来简单做起来难。

OracleDatabase10g供应了一个便利的办理计划:您能够用以下命令来复杂地重定名一个现有的表空间(SYSTEM和SYSAUX除外)―不管是永世表空间仍是一时表空间:


ALTERTABLESPACE<oldname>RENAMETO<newname>;



这个功效还将使用在存档过程当中。假定您有一个按局限分区的表,用于纪录发卖汗青数据,每月的这个分区位于按这个月份定名的一个表空间中―比方,1月份的分区定名为JAN,并位于一个称号为JAN的表空间中。如许您就具有了一个将信息保存12个月的战略。在2004年1月,您将可以存档2003年1月的数据。大抵的操纵流程相似于以下操纵:

使用ALTERTABLEEXCHANGEPARTITION从分区JAN中创立一个自力的表JAN03。将表空间重定名为JAN03。为表空间JAN03创立一个可传输表空间集。将表空间JAN03从头定名为JAN。将空的分区互换回表中。


第1、2、4和5步很复杂,而且不会过分地损耗资本(如重做和取消空间)。第3步只是拷贝文件并只为JAN03输入数据字典信息,这也是个十分轻松的历程。假如您必要恢复之前存档的分区,这个历程也十分复杂,您只必要将不异的历程反过去就好了。

OracleDatabase10g在处置这些重定名的体例上相称智能化。假如您重定名作为UNDO或默许一时表空间的表空间,这大概发生搅浑。但数据库将主动调剂需要的纪录来反应这类变更。比方,将默许表空间的称号从USERS修正为USER_DATA将主动修正视图DATABASE_PROPERTIES。在修正之前,查询:


selectproperty_valuefromdatabase_propertieswhereproperty_name=DEFAULT_PERMANENT_TABLESPACE;



前往USERS。在运转上面的语句以后


altertablespaceusersrenametouser_data;



上述查询前往USER_DATA,由于一切对USERS的援用都被修正为到USER_DATA。

修正默许一时表空间的情形一样。乃至修正UNDO表空间的称号也将触发SPFILE中的变更,以下所示:


SQL>selectvaluefromv$spparameterwherename=undo_tablespace;VALUE--------UNDOTBS1SQL>altertablespaceundotbs1renametoundotbs;Tablespacealtered.SQL>selectvaluefromv$spparameterwherename=undo_tablespace;VALUE--------UNDOTBS



结论

在比来的几个Oracle版本演化的过程当中,工具处置失掉了不乱的加强。Oracle8i引进了表从一个表空间到另外一个表空间的转移,Oracle9iDatabaseR2引进了列重定名,如今―在最新的版本中―表空间本身的重定名成为大概。这些加强明显地加重了数据库办理员的义务―出格是在数据堆栈或数据中央情况中。
尽管MySQL也有一个认证培训项目,但是它的培训却要比Oracle或MS-SQL相差很远。尽管有的使用MySQL的用户表示,MySQL很容易上手,但是对于具有企业级数据库需求的用户来说,

谁可相欹 发表于 2015-1-19 20:40:59

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

若相依 发表于 2015-1-26 22:51:37

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

莫相离 发表于 2015-2-4 21:33:57

你可以简单地认为适合的就是好,不适合就是不好。

不帅 发表于 2015-3-1 13:00:51

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

兰色精灵 发表于 2015-3-10 17:08:03

总感觉自己还是不会SQL

蒙在股里 发表于 2015-3-17 09:09:23

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

透明 发表于 2015-3-24 05:06:00

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: MYSQL教程之Oracle Database 10g:最好新特征(第三周...