暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle---表空间扩容

原创 周波 云和恩墨 2022-09-18
1951

一,表空间扩容

1.表空间说明:

  表空间是将相关逻辑结构组合在一起的数据库存储单元。数据库数据文件存储在表空间中。可以通过修改已经存在的表空间为他们增加数据文件和临时文件,你可以通过增加指定表空间中数据文件的大小或为指定表空间新增一个数据文件来为指定表空间扩容(两种方式:1.增加已存在数据文件的大小。2.增加数据文件)。

扩容方式一:增加表空间数据文件

(1).通过sysdba用户登录数据库,查看表空间信息:
dba_data_files:是描述了数据库文件数据字典视图;当查询DBA_DATA_FILES数据字典视图时,如果所请求的信息在字典中不可用,Oracle必须能够访问所有表空间及其数据文件。如果表空间是加密的,那么在查询DBA_DATA_FILES之前,必须打开Oracle钱包(密钥存储库)。

sqlplus / as sysdba
SYS@orcl> select tablespace_name,file_name,file_id,round(bytes/(1024*1024),0) total_size from dba_data_files;

TABLESPACE_NAME 	       FILE_NAME					     FILE_ID TOTAL_SIZE
------------------------------ -------------------------------------------------- ---------- ----------
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 		   7	      5
UNDOTBS1		       /u01/app/oracle/oradata/ORCL/undotbs01.dbf		   4	    345
SYSTEM			       /u01/app/oracle/oradata/ORCL/system01.dbf		   1	    900
SYSAUX			       /u01/app/oracle/oradata/ORCL/sysaux01.dbf		   3	    560

# 通过上面得sql语句可以查看到数据库中已存在得表空间名、对应磁盘物理文件名以及消耗磁盘空间大小
复制

(2).确认需要扩容得表空间
这里以扩容USERS表空间为例:

alter tablespace users 
add datafile '/u01/app/oracle/oradata/ORCL/users02.dbf' 
size 7g autoextend on next 512K maxsize 10g;
#选项说明:size 指定表空间对应得数据文件得大小
# autoextend on:启用文件大小自动增长,如果不指定maxsize,那么单个文件大小不超过32G
# next 文件扩展时添加到文件的增量大小
# maxsize 文件可以自动扩展到的最大大小
复制

(3).查看

SYS@orcl> select tablespace_name,file_name,bytes/(1024*1024) "total_size(M)",autoextensible,increment_by,maxbytes/(1024*1024*1024),online_status from dba_data_files;

TABLESPACE_NAME 	       FILE_NAME					  total_size(M) AUT INCREMENT_BY MAXBYTES/(1024*1024*1024) ONLINE_
------------------------------ -------------------------------------------------- ------------- --- ------------ ------------------------- -------
SYSTEM			       /u01/app/oracle/oradata/ORCL/system01.dbf		    910 YES	    1280		31.9999847 SYSTEM
SYSAUX			       /u01/app/oracle/oradata/ORCL/sysaux01.dbf		    580 YES	    1280		31.9999847 ONLINE
USERS			       /u01/app/oracle/oradata/ORCL/users02.dbf 		   7168 YES	      64			10 ONLINE
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 		      5 YES	     160		31.9999847 ONLINE
UNDOTBS1		               /u01/app/oracle/oradata/ORCL/undotbs01.dbf		    345 YES	     640		31.9999847 ONLINE

# 查看一下oracle block大小(8K)
SYS@orcl> show parameter db_block_size

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_block_size			     integer	 8192


# 结果说明:
# 1.当数据文件启用自动扩展,如果没有指定maxsize,那么文件可以扩展到的最大容量不超过32G
# 2.当指定了next值时,increment_by字段表示文件扩展时,为文件每次添加多少oracle块数量(64*8K=512K)
# 3.当设置了autoextend on 时:AUT列显示为yes,表示数据文件启用自动扩展
# 4.可以发现:system和sysaux表空间每次自动扩容10M,undo表空间每次扩容5M,users表空间默认每次扩容1.25M
复制

扩容方式二:增加表空间中已存在的数据文件的大小

启用和禁用数据文件自动扩容:
以便在数据库中需要更多空间时自动增加数据文件的大小。文件大小以指定的增量增加到指定的最大值。
(1)确认数据文件是否启用自动扩容

SYS@orcl> select tablespace_name,file_name,autoextensible from dba_data_files;

TABLESPACE_NAME 	       FILE_NAME					  AUT
------------------------------ -------------------------------------------------- ---
SYSTEM			       /u01/app/oracle/oradata/ORCL/system01.dbf	  YES
SYSAUX			       /u01/app/oracle/oradata/ORCL/sysaux01.dbf	  YES
USERS			       /u01/app/oracle/oradata/ORCL/users02.dbf 	  YES
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 	  YES
UNDOTBS1		               /u01/app/oracle/oradata/ORCL/undotbs01.dbf	  YES
复制

(2)如果没有启用:

# 模拟禁用自动扩容
alter database datafile '/u01/app/oracle/oradata/ORCL/users02.dbf' autoextend off;
select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'USERS';

TABLESPACE_NAME 	       FILE_NAME					  AUT
------------------------------ -------------------------------------------------- ---
USERS			       /u01/app/oracle/oradata/ORCL/users02.dbf 	  NO
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 	  YES

# 启用数据文件自动扩容
alter database datafile '/u01/app/oracle/oradata/ORCL/users02.dbf' autoextend on;
select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'USERS';

TABLESPACE_NAME 	       FILE_NAME					  AUT
------------------------------ -------------------------------------------------- ---
USERS			       /u01/app/oracle/oradata/ORCL/users02.dbf 	  YES
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 	  YES
复制

重新设置已存在文件的大小:

alter database datafile '/u01/app/oracle/oradata/ORCL/users02.dbf' resize 8g;
#查看验证
select tablespace_name,file_name,bytes/(1024*1024*1024) "total_size(G)" from dba_data_files where tablespace_name='USERS';

TABLESPACE_NAME 	       FILE_NAME					  total_size(G)
------------------------------ -------------------------------------------------- -------------
USERS			       /u01/app/oracle/oradata/ORCL/users02.dbf 		      8
USERS			       /u01/app/oracle/oradata/ORCL/users01.dbf 	     .004882813
复制

2.删除表空间中数据文件drop datafile(操作需谨慎):

alter tablespace users drop datafile '/u01/app/oracle/oradata/ORCL/users02.dbf';
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论