1解决32G数据文件上限问题Oracle的默认数据块大小为8k,导致oracle单个数据文件的上线是32G。我们可以通过增加新数据文件到表空间来扩充表空间容量。方法如下:1新建表空间:CREATETABLESPACETBS_KKDATAFILE‘D:\DEMO\TBS_HIKVISION.DBF’SIZE30G;注意:TBS_KK为新建表空间名;DATAFILE为对应数据文件的绝对路径,要求出最后的数据文件名之外的路径必须在操作系统中存在,即oracle不会新建不存在的目录;由于表空间是oracle存储数据的逻辑单位,相当于windows的盘符概念,所以要求在创建表空间时必须制定DATAFILE参数,即必须指定数据文件;数据文件大小原则上不许超过32G。2指定系统默认表空间ALTERDATABASEDEFAULTTABLESPACETBS_HIKVISION;注意:执行该命令的用户必须具有dba角色,并且表空间必须是已建表空间。执行了这条语句之后,用户新建的表如无特殊指定,都会新建在制定TBS_HIKVISION表空间中。3扩展表空间有三种方法可以扩展表空间1)增加数据文件ALTERTABLESPACETBS_HIKVISIONADDDATAFILE‘D:\DEMO\USER02.DBF’SIZE30G;2)手工改变数据文件大小ALTERDATABASEDATAFILE‘D:\DEMO\USER01.DBF’RESIZE20G;3)设置数据文件自动扩展ALTERDATABASEDATAFILE‘D:\DEMO\USER01.DBF’AUTOEXTENDONNEXT10MMAXSIZE30G;其中NEXT为每次扩展的步长,MAXSIZE为最大扩展容量。不建议采用此方法,因为如果数据量很大,也就是说正常运行oracle的压力也是很大的,自动扩展不利于oracle的磁盘碎片整理,而且扩展时会降低其他oracle操作的速度。综上,数据库表空间容量问题可以解决。另外还有一种快速解决方法。Oracle推出大容量表空间专门解决大数据量表的存储问题,方法如下:CREATEBIGFILETABLESPACETBS_BIG_HIKDATAFILE‘D:\DEMO\BIG.DBF’SIZE32T;优点:显著提高存储能力,oracle对于一个大数据文件的使用效率要远高于多个小数据文件的效率。缺点:只能包含一个数据文件(即要求操作系统一个盘符就要满足数据文件容量,这会导致一些磁盘阵列上无法直接使用或导致一些盘符闲置)2用分区表来优化table1和table2存储:Table1和Table2表存储大量数据,并且这两个几乎不会出现delete和update,而insert量特别大。针对这个特点,可以采用以下几个方法优化。分区表空间是Oracle专门针对大数据量数据库应用的解决方案,可分为范围分区、散列分区、列表分区、组合分区四种。其中范围分区比较适合我们的应用,范围分区会把表的数据按照不同范围进行划分来存储,这样不同范围的数据会比较均衡,并且利于检索。我们可以把过车时间按照节点来划分:ALTERSESSIONSETNLS_DATE_LANGUAGE=AMERICAN;ALTERSESSIONSETNLS_TIMESTAMP_FORMAT=‘YYYY-MM-DDHH24:MI:SS.FF’;createtableTABLE1(VEHICLELSHINTEGERnotnull,…PASSTIMEtimestamp(3),…primarykey(PASSTIME,VEHICLELSH))PARTITIONBYRANGE(sales_date)(PARTITIONp1VALUESLESSTHAN(‘2010-1-100:00:00.00’)TABLESPACEUSER01,PARTITIONp2VALUESLESSTHAN(‘2010-2-100:00:00.00’)TABLESPACEUSER02,PARTITIONp3VALUESLESSTHAN(‘2010-3-100:00:00.00’)TABLESPACEUSER03,PARTITIONp4VALUESLESSTHAN(‘2010-4-100:00:00.00’)TABLESPACEUSER04,);这样,在insert新数据的时候,速度并不会受分区表的影响,而在按时间查询过车信息时,对大大降低数据库的I/O次数。而在应用程序上,所有SQL语句不需要做任何修改。同样,可以给分区表简历分区索引,简历分区索引时,会为索引的每一个分区简历相应的分区段。方法如下:CREATEINDEXIND_VEH_PASSTIMEONTABLE1(PASSTIME)LOCAL;如果不加LOCAL,oracle会建立为全局索引,那样不会节省查询时间。同样table2也可以采用这种方法来优化。3设置数据块参数如果pctfree和pctused参数设置不当,会大大降低数据库的效率。我们的table1和table2属于经常增加表记录(insert),但不经常修改原有记录的表(update),建议将pctused设置为80,pctfree设置为10,这样有利于存储空间的充分利用。4创建专用临时表空间当执行排序操作时,服务器进程首先将临时数据放在PGA中,当PGA不足以容纳将要排序的临时数据时,服务器进程会建立临时段,并将这些临时数据存放到临时段中。系统没有指定临时表空间,系统默认临时表空间很难容纳临时数据,当数据量上百万时,排序操作十分缓慢,需要24秒。Oracle推荐使用本地管理表空间的模式,下面是建立临时表空间方法:CREATETEMPORARYTABLESPACETEMP_KAKOUTEMPFILE'D:\IVMSDB\TEMP.DBF'SIZE50MUNIFORMSIZE256K;修改数据库默认临时表空间ALTERDATABASEDEFAULTTEMPORARYTABLESPACETEMP_KAKOU;这样可以加快排序的速度。