Oracle表空间创建删除,omf,分区表创建


现在有个每天至少300W数据的表(mt),打算以每月分区的方式建成分区表,分区时,《让Oracle跑的更快2》P21说: [sql]
  1. SQL>alter system set db_create_file_dest='F:\oradata\orclyxkj\tbs_test_t_mt_2012';  
[sql]
  1. SQL>create tablespace ts_mt_2012_1 datafile size 50M autoextend on;  

第一句的意思是设定一个数据文件存放路径,让ORACLE自动在该路径下创建文件,并使用oracle自己的方式为数据文件命名。确实,我执行上面两句话后,成这样了:

可以发现,oracle自己建了ORCLYXKJ\DATAFILE这两个文件夹,并且建成的.dbf数据文件也不是我写的ts_mt_2012_1.dbf,但是oracle自己建的那个文件大小确实是我刚指定的50M,说明是表空间的数据文件。为什么?因为:

alter system set db_create_file_dest='F:\oradata\orclyxkj\tbs_test_t_mt_2012';

这句话的意思,就是开启的oracle的OMF,即oracle自动管理文件,所以文件的命名什么的都是oracle自动完成的。一般,单数据库实例,基本都不开启OMF

开启OMF,还有另外一种方法,就是创建数据库时:

建库时,选择第 3 项了,这是omf 管理方式,oracle自动管理数据文件名,所以才不是你命名的名称。正常 选择 第 2 项。 

然后,我看到那个文件以及目录,不是我希望看到的有规律的命名,我就不想以这种方式来创建表空间了,所以决定把刚建的那个表空间删掉(有语句直接删除表空间和数据文件),但是我这时没有用语句删,而是直接在PL/SQL中,找到Tablespace文件夹下面的ts_mt_2012_1,然后反键,删掉。

删完后,到'F:\oradata\orclyxkj\tbs_test_t_mt_2012'目录发现之前oracle自己建的那个文件还在,我又不敢手动删,怕删完之后和数据文件不一致导致数据打不开。其实这个时候已经不存在这个问题了,因为表空间已经删掉了。除非表空间没有删掉而你把数据文件没有offline或者删掉了,才会导致数据库起不来。
问题已经描述完毕,结论:

1.创建表空间到指定目录:

[sql]
  1. SQL> create tablespace wfcrmdb datafile 'e:/tools/oracle/oradata/wfcrm/wfcrmdb.dbf' size 100m autoextend on next 50m maxsize unlimited;         --<span style="color:#ff0000;">一般关掉表空间自动扩展,因为自动扩展可能会导致无预兆的数据库宕机。解决方案:看下面的“分区表”</span>  

插补几句:
--新创建表空间时,数据文件的扩展名是ora,可是系统表空间的数据文件却是dbf的,还有一些已有的表空间的数据文件是dat文件,请问有什么区别吗?

  • 1
  • 2
  • 3
  • 下一页

相关内容