oracle增加表空间的四种方法1

preview
需积分: 0 0 下载量 145 浏览量 更新于2022-08-08 收藏 15KB DOCX 举报
### Oracle增加表空间的方法 #### 方法一:向现有表空间添加新数据文件 **SQL命令示例:** ```sql ALTER TABLESPACE app_data ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 50M; ``` **解释:** 此命令用于向`app_data`表空间添加一个新的数据文件`APP03.DBF`。数据文件的初始大小设定为50MB。这里并未设置自动扩展属性,因此该数据文件将保持固定的大小。 #### 方法二:新增数据文件并启用自动增长功能 **SQL命令示例:** ```sql ALTER TABLESPACE app_data ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF' SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE 100M; ``` **解释:** 与第一种方法类似,此命令同样向`app_data`表空间添加了一个新的数据文件`APP04.DBF`,初始大小为50MB。不同之处在于,此命令启用了自动扩展特性(`AUTOEXTEND ON`),这意味着当数据文件的空间用尽时,Oracle系统会自动将其扩展。每次扩展的增量大小被设置为5MB(`NEXT 5M`),而最大扩展大小被限制在100MB(`MAXSIZE 100M`)。 #### 方法三:允许现有数据文件自动增长 **SQL命令示例:** ```sql ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' AUTOEXTEND ON NEXT 5M MAXSIZE 100M; ``` **解释:** 这个命令不是针对整个表空间,而是直接对现有的数据文件`APP03.DBF`进行操作,开启了自动扩展的功能,并设置了每次扩展的增量大小为5MB,以及最大扩展大小为100MB。这种方法适用于那些希望优化现有数据文件空间使用情况的场景。 #### 方法四:手动更改现有数据文件的大小 **SQL命令示例:** ```sql ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF' RESIZE 100M; ``` **解释:** 通过此命令,可以直接修改现有数据文件`APP02.DBF`的大小,将其调整至100MB。这是一种手动调整数据文件大小的方法,通常用于紧急情况下快速释放或增加存储空间的情况。 ### 实例应用 **步骤1:查看表空间使用率** 为了判断是否需要扩展表空间,可以通过以下查询来检查表空间的使用情况: ```sql SELECT A.tablespace_name, A.bytes/1024/1024 "Sum MB", (A.bytes-B.bytes)/1024/1024 "Used MB", B.bytes/1024/1024 "Free MB", ROUND(((A.bytes-B.bytes)/A.bytes)*100, 2) "Percent_Used" FROM (SELECT tablespace_name, SUM(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) A, (SELECT tablespace_name, SUM(bytes) bytes, MAX(bytes) largest FROM dba_free_space GROUP BY tablespace_name) B WHERE A.tablespace_name = B.tablespace_name ORDER BY ((A.bytes-B.bytes)/A.bytes) DESC; ``` **解释:** 这段SQL查询用于显示所有表空间的总大小(`Sum MB`)、已使用大小(`Used MB`)、剩余大小(`Free MB`)以及使用百分比(`Percent_Used`)。通过这些信息可以直观地看出哪些表空间接近其容量限制,从而帮助决定是否需要增加表空间大小。 **步骤2:检查具体表空间详情** 如果发现某个表空间如`MLOG_NORM_SPACE`使用率很高,可以进一步查看该表空间的数据文件详情: ```sql SELECT file_name, tablespace_name, bytes/1024/1024 "Bytes MB", maxbytes/1024/1024 "Maxbytes MB" FROM dba_data_files WHERE tablespace_name = 'MLOG_NORM_SPACE'; ``` **解释:** 此查询将列出`MLOG_NORM_SPACE`表空间中的所有数据文件的名称、当前大小(`Bytes MB`)和最大可扩展大小(`Maxbytes MB`)。这有助于了解是否可以通过增加新的数据文件或者扩展现有数据文件的方式来解决问题。 **步骤3:创建新数据文件** 在确定需要扩展表空间后,可以根据现有磁盘空间情况来决定如何扩展。例如,假设`MLOG_NORM_SPACE`表空间当前大小为19GB,每个数据文件的最大容量为20GB,那么可以考虑添加新的数据文件: ```sql ALTER TABLESPACE MLOG_NORM_SPACE ADD DATAFILE '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf' SIZE 10M AUTOEXTEND ON MAXSIZE 20G; ``` **解释:** 这段命令将向`MLOG_NORM_SPACE`表空间添加一个新的数据文件`Mlog_Norm_data001.dbf`,初始大小设为10MB,并启用自动扩展特性,最大扩展至20GB。 **步骤4:验证新增数据文件** 可以通过以下查询来确认新增的数据文件已经被正确添加: ```sql SELECT file_name, file_id, tablespace_name FROM dba_data_files WHERE tablespace_name = 'MLOG_NORM_SPACE'; ``` **解释:** 通过查询`dba_data_files`视图,可以确保新增的数据文件已经被成功添加到了表空间中。这样,就完成了整个表空间扩展的过程。