oracle增加和修改数据文件

----------增加数据文件---------

altertablespacetablespace_nameadddatafile'+ASMDISK1/mydbfile.dbf'size10240M;

-------手工改变数据文件尺寸------

alterdatabasedatafile'+ASMDISK1/mydbfile.dbf'resize2048M;


-------容许数据文件自动扩展------

alterdatabasedatafile'+ASMDISK1/mydbfile.dbf'autoextendonnext10Mmaxsize30G;


----也可以这样数据文件自动扩展----

altertablespacetablespace_nameadddatafile'+ASMDISK1/mydbfile.dbf'size5Mautoextendonnext5Mmaxsize50G;


-------为表空间增加回滚段-------

createrollbacksegmentrollback_nametablespacetablespace_namestorage(initial3knext3koptimal3kminextents3maxextents3)
alterrollbacksegmentrollback_nameonline;
注这里的tablespace_name根据实际情况做相应修改由于我的数据库使用ASM管理所以'+ASMDISK1/mydbfile.dbf'也应根据实际情况而定。

扩容数据文件问题

扩容表空间
1.所添加的裸设备必须是在两台服务器上均可见用户属主是Oraclechownoracle:name

2.最好通过SQL脚本添加这样一可以仔细检查文件名是否有错二可以通过后台执行。

--查询空间大小--

selecttablespace_name,sum(bytes/1024/1024)fromdba_free_spacegroupbytablespace_name;

3.解决阵列库误建数据文件的方法。

如果检查中确认某个文件添加有问题切忌直接在操作系统上通过rm命令直接删除那样会对数据库带来毁灭性的破坏如要删除误建的数据文件可通过如下步骤来操作

①查询该文件的file_id找到file_name等于问题文件的file_id并记下

selectfile_id,file_namefromdba_data_files;

②确认问题文件所包含的数据库对象

selectdistinctsegment_name,segment_typefromdba_extents;

(1)对于segment_type=TABLE的需要将每张表逐个做exp导出然后drop该表

(2)对于segment_type=LOBSEGMENT的还需要确认大字段所在的表方法如下

selecttable_namefromdba_lobswheresegment_name='(2)查出的segment_name';然后重复步骤(1)删除对应的Table。

③再次执行步骤①中的查询确认该文件中已没有任何对象存在

4.关闭数据库并以mount方式重启在库中删除该问题

SQL>shutdownimmediate
SQL>startupmount
SQL>alterdatabasedatafile'问题文件名'offlinedrop;

5.打开数据库alterdatabaseopen;

6.通过imp重新导入所有删除的表。