现在有个每天至少300W数据的表(mt),打算以每月分区的方式建成分区表,分区时,《让Oracle跑的更快2》P21说:
[sql] - SQL>alter system set db_create_file_dest="F:oradataorclyxkj bs_test_t_mt_2012";
[sql] - SQL>create tablespace ts_mt_2012_1 datafile size 50M autoextend on;
第一句的意思是设定一个数据文件存放路径,让ORACLE自动在该路径下创建文件,并使用oracle自己的方式为数据文件命名。确实,我执行上面两句话后,成这样了:可以发现,oracle自己建了ORCLYXKJDATAFILE这两个文件夹,并且建成的.dbf数据文件也不是我写的ts_mt_2012_1.dbf,但是oracle自己建的那个文件大小确实是我刚指定的50M,说明是表空间的数据文件。为什么?因为:alter system set db_create_file_dest="F:oradataorclyxkj bs_test_t_mt_2012";这句话的意思,就是开启的oracle的OMF,即oracle自动管理文件,所以文件的命名什么的都是oracle自动完成的。一般,单数据库实例,基本都不开启OMF。开启OMF,还有另外一种方法,就是创建数据库时:建库时,选择第 3 项了,这是omf 管理方式,oracle自动管理数据文件名,所以才不是你命名的名称。正常 选择 第 2 项。 然后,我看到那个文件以及目录,不是我希望看到的有规律的命名,我就不想以这种方式来创建表空间了,所以决定把刚建的那个表空间删掉(有语句直接删除表空间和数据文件),但是我这时没有用语句删,而是直接在PL/SQL中,找到Tablespace文件夹下面的ts_mt_2012_1,然后反键,删掉。删完后,到"F:oradataorclyxkj bs_test_t_mt_2012"目录发现之前oracle自己建的那个文件还在,我又不敢手动删,怕删完之后和数据文件不一致导致数据打不开。其实这个时候已经不存在这个问题了,因为表空间已经删掉了。除非表空间没有删掉而你把数据文件没有offline或者删掉了,才会导致数据库起不来。
问题已经描述完毕,结论:
1.创建表空间到指定目录:[sql] - 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文件,请问有什么区别吗?
update commit后找回update前数据Oracle kill session.delete 600w(1.25G)数据 1个多小时无结果相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)