添加数据文件,扩充表空间

Oracle表空间是有限制的,当数据库中数据量达到这个值,再向数据库中导入数据就会报错。解决方法是扩展表空间

。可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M。
有三种方法可以扩充表空间:
一、增加表空间原有数据文件的大小;
二、设置表空间的自动增长;
三、为表空间添加数据文件,通过向表空间添加数据文件,来增大表空间。

总结:oracle 表空间的扩充步骤如下:
1.查看表空间的大小,查询哪一个表空间已经爆满或者快要爆满
2.查看表空间下的数据文件,数据文件的命名格式,大小,位置,是否自动增长
3.根据表空间下的数据文件格式、大小、位置、是否自动增长添加数据文件
4.查看数据文件是否添加成功,查看表空间大小。确认已经添加成功。


[oracle@yuanji ~]$ sqlplus / as sysdba
查看各表空间分配情况
SQL> select tablespace_name, sum(bytes) / 1024 / 1024  from dba_data_files group by tablespace_name;

TABLESPACE_NAME                SUM(BYTES)/1024/1024
------------------------------ --------------------
UNDOTBS1                                         95
SYSAUX                                          580
USERS                                             5
SYSTEM                                          750


.查看各表空间空闲情况。
SQL> select tablespace_name, sum(bytes) / 1024 / 1024  from dba_free_space  group by tablespace_name;

TABLESPACE_NAME                SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX                                      29.0625
UNDOTBS1                                    59.5625
USERS                                        3.6875
SYSTEM                                       7.3125

SQL> select file#,name from v$datafile;

     FILE#
----------
NAME
--------------------------------------------------------------------------------
         1
/data/YUANJI/datafile/o1_mf_system_bzzbwws6_.dbf

         2
/data/YUANJI/datafile/o1_mf_sysaux_bzzbwww5_.dbf

         3
/data/YUANJI/datafile/o1_mf_undotbs1_bzzbwwwj_.dbf


     FILE#
----------
NAME
--------------------------------------------------------------------------------
         4
/data/YUANJI/datafile/o1_mf_users_bzzbwwy6_.dbf

*************************************************************

一、增加表空间原有数据文件的大小;
更改数据表大小(10G)
在这里把uses的变空间设置为600M
SQL> alter database datafile '/data/YUANJI/datafile/o1_mf_users_bzzbwwy6_.dbf'resize 600m;

Database altered.
*************************************************************

二、设置表空间自动增长:
查询表空间是否自动增长:
SQL> SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

FILE_NAME
------------------------------------------------------------------------------------------------------

------------------------------------------------
TABLESPACE_NAME                AUT
------------------------------ ---
/data/YUANJI/datafile/o1_mf_users_bzzbwwy6_.dbf
USERS                          YES

/data/YUANJI/datafile/o1_mf_undotbs1_bzzbwwwj_.dbf
UNDOTBS1                       YES

/data/YUANJI/datafile/o1_mf_sysaux_bzzbwww5_.dbf
SYSAUX                         YES

/data/YUANJI/datafile/o1_mf_system_bzzbwws6_.dbf
SYSTEM                         YES

查询 tablespace_name 的 file_id ,通过id 设置表空间自动增长;
SQL> select file_id,tablespace_name from dba_data_files;

   FILE_ID TABLESPACE_NAME
---------- ------------------------------
         4 USERS
         3 UNDOTBS1
         2 SYSAUX
         1 SYSTEM
《例如:alter database datafile <file_id> autoextend on next 10M maxsize 10G; 》
SQL> alter database datafile 3  autoextend on;    ----打开自动增长

Database altered.

SQL> alter database datafile 3 autoextend on NEXT 20m;   ---每次自动增长20m;

Database altered.

SQL>  alter database datafile 3 autoextend on NEXT 20m maxsize 2048m;  --每次自动增长20m,数据表空间最

大不超过1G;

Database altered.

*************************************************************

三、为表空间添加数据文件,通过向表空间添加数据文件,来增大表空间。

SQL> show parameter db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /data
如果db_create_file_dest  参数value 有了值,那么可以这么添加以下语句:(如果db_create_file_dest参数有value值,可以用路径/*.dbf 代替自己起的.dbf名字即可)
SQL> alter tablespace USERS add  datafile '/data/YUANJI/datafile/*.dbf' size 10m;


首先可以查询以下数据文件的大小:
SQL> select file_name,bytes/1024/1024 "size" from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
      size
----------
/data/YUANJI/datafile/o1_mf_users_bzzbwwy6_.dbf
         5

/data/YUANJI/datafile/o1_mf_undotbs1_bzzbwwwj_.dbf
        95

/data/YUANJI/datafile/o1_mf_sysaux_bzzbwww5_.dbf
       590


FILE_NAME
--------------------------------------------------------------------------------
      size
----------
/data/YUANJI/datafile/o1_mf_system_bzzbwws6_.dbf
       750

然后添加数据文件扩充表空间

SQL> alter tablespace USERS add  datafile '/data/YUANJI/datafile/o2_my_users_sslsfnn_8.dbf' size 10m;

Tablespace altered.


或者

SQL> alter tablespace USERS add  datafile '/data/YUANJI/datafile/032_my_users_fdgdgg_9.dbf' size 200m

autoextend on next 20m maxsize unlimited;


Tablespace altered.

《ALTER TABLESPACE 表空间名  ADD DATAFILE '数据文件路径' SIZE 500M  AUTOEXTEND ON NEXT 100M MAXSIZE

UNLIMITED; 》


删除表空间命令:

drop tablespace user including contents and datafiles;

注意:
SQL> show parameter db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /data
如果db_create_file_dest  参数value 有了值,那么可以这么添加以下语句
SQL>alter tablespace USERS add  datafile '/data/YUANJI/datafile/*.dbf' size 200m autoextend on next 20m maxsize unlimited;
### Oracle 数据库扩充表空间的方法 #### 添加新的数据文件至现有表空间 为了扩大现有的表空间容量,可以通过向其添加额外的数据文件来实现。这通常涉及到指定一个新的物理位置以及设定初始大小。例如: ```sql alter tablespace mytable01 add datafile '/vdb2/service/oracle/data/oracle/oradata/orcl/users06.dbf' size 32736m; ``` 此命令会为`mytable01`表空间新增一个名为`users06.dbf`的数据文件,并设置其大小为32GB[^1]。 #### 增加已有数据文件的尺寸 除了创建新的数据文件外,还可以选择增大当前存在的某个特定数据文件的空间分配量。操作如下所示: ```sql alter database datafile '/opt/oracle/oradata/esop/so_data01.dbf' resize 200M; ``` 上述指令将把位于指定路径下的`so_data01.dbf`文件调整到200MB的新规模[^2]。 #### 查询并分析表空间状态 在决定如何扩展之前,了解各个表空间的具体情况是非常重要的。为此,可以从多个视图中提取有用的信息,比如`dba_free_space`, `dba_data_files` 和 `dba_tablespaces`等系统元数据表。这类查询有助于评估哪些区域可能需要更多的存储资源。具体做法是从这些表格里检索有关表空间名称、类型及其占用状况等方面的关键指标[^3]。 #### Linux环境下特殊处理方式 对于运行于Linux操作系统上的实例而言,在某些情况下可能会采用不同于常规手段的方式来完成同样的任务——即利用RAW设备作为载体来进行表空间的增长工作。相应的语法结构如下: ```sql ALTER TABLESPACE USERS ADD DATAFILE '/oracle/data/EJETDB/datasda11' SIZE 10200M REUSE; ``` 这里特别指出了要重复使用已经存在但不再被其他对象所占有的磁盘分区或逻辑卷[^4]。 综上所述,针对不同场景可以选择合适的技术方案去满足业务需求的变化;无论是简单地追加新成员还是灵活改变既有组件属性都能有效解决因为空间不足而引发的一系列问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值