#SWAP表空间管理

数据库操作(例如order by,hash join,统计信息收集等)首先会通过数据库虚拟内存(通过VM_BUFFER_SIZE参数控制)缓存计算的中间结果,但如果虚拟内存不足时,需要通过将虚拟内存交换到SWAP表空间来释放内存,必要时再将内存从SWAP表空间换入。

SWAP表空间是非持久化表空间,只用于数据库虚拟内存的换入换出,因此持久化对象(例如表、索引等)不能创建在SWAP表空间。

SWAP表空间的空间不足时,可能会导致产生大量中间结果的操作失败,因此需要根据实际业务合理规划SWAP表空间大小或打开自动扩展。

分布式部署中,不允许手动创建新的SWAP表空间。

创建SWAP表空间

示例(单机部署)

CREATE SWAP TABLESPACE swap_shared TEMPFILE '?/dbfiles/swap_shared' SIZE 4M;

示例(共享集群部署)

CREATE SWAP TABLESPACE swap_shared TEMPFILE '+DG0/dbfiles/swap_shared' SIZE 4M;

创建本地SWAP表空间

示例(共享集群部署)

CREATE LOCAL SWAP TABLESPACE swap_local TEMPFILE '?/dbfiles/swap_local' SIZE 4M;

为SWAP表空间添加数据文件

示例(单机部署)

ALTER TABLESPACE swap_shared ADD TEMPFILE 'swap01' SIZE 10M AUTOEXTEND ON;

示例(共享集群部署)

ALTER TABLESPACE swap_shared ADD TEMPFILE '+DG0/dbfiles/swap_shared01' SIZE 10M AUTOEXTEND ON;

Note

共享集群部署中,SWAP表空间与本地SWAP表空间均支持添加YFS路径的文件,但只有本地SWAP表空间可以添加本地磁盘路径的文件。

为SWAP表空间调整数据文件大小

分布式部署/共享集群部署中无法使用此功能。

示例(单机部署)

ALTER DATABASE TEMPFILE 'swap01' RESIZE 20M;

为SWAP表空间删除数据文件

不允许删除默认swap表空间的数据文件。

示例(单机部署)

ALTER TABLESPACE swap_shared DROP TEMPFILE 'swap01';

示例(共享集群部署)

ALTER TABLESPACE swap_shared DROP TEMPFILE '+DG0/dbfiles/swap_shared01';

Note

共享集群部署中,必须全部实例在线才能删除文件。

删除(本地)SWAP表空间

示例(单机、共享集群部署)

DROP TABLESPACE swap_shared INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

Note

共享集群部署中,必须全部实例在线才能删除SWAP表空间。

查询当前正在使用的SWAP表空间名称

示例

show parameter DEFAULT_SWAP_TABLESPACE;

切换SWAP表空间

示例

ALTER SYSTEM SET DEFAULT_SWAP_TABLESPACE = 'SWAP';

查询SWAP表空间信息

示例

SELECT ID,TABLESPACE_NAME,BLOCK_SIZE,MAX_SIZE/1024/1024 MAX_SIZE,TOTAL_BYTES/1024/1024 TOTAL_SIZE,STATUS,CONTENTS,LOGGING,ALLOCATION_TYPE,
SEGMENT_SPACE_MANAGEMENT,ENCRYPTED FROM DBA_TABLESPACES;

 ID TABLESPACE_NAME   BLOCK_SIZE    MAX_SIZE  TOTAL_SIZE STATUS    CONTENTS    LOGGING       ALLOCATION_TYPE SEGMENT_SPACE_MANAGEMENT ENCRYPTED
 -- --------------- ------------ ----------- ----------- --------- ----------- ------------- --------------- ------------------------ ---------
  0 SYSTEM                  8192      524288          64 ONLINE    PERMANENT   LOGGING       AUTO            BITMAP                   N
  1 SYSAUX                  8192      524288          64 ONLINE    PERMANENT   LOGGING       AUTO            BITMAP                   N
  2 UNDO                    8192       65536          64 ONLINE    UNDO        LOGGING       UNIFORM         BITMAP                   N
  3 TEMP                    8192      524288          94 ONLINE    TEMPORARY   NOLOGGING     AUTO            BITMAP                   N
  4 SWAP                    8192      524288          64 ONLINE    SWAP        NOLOGGING     UNIFORM         BITMAP                   N
  5 USERS                   8192      524288         124 ONLINE    PERMANENT   LOGGING       AUTO            BITMAP                   N

查询SWAP表空间的数据文件信息

可以查询DBA_DATA_FILESDBA_TEMP_FILES视图获取SWAP表空间数据文件的基本信息。

示例

SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES,BLOCKS,STATUS,MAXBYTES,MAXBLOCKS,AUTO_EXTEND FROM DBA_DATA_FILES 
WHERE TABLESPACE_NAME='SWAP';

FILE_NAME                                       FILE_ID TABLESPACE_NAME     BYTES       BLOCKS STATUS        MAXBYTES   MAXBLOCKS AUTO_EXTEND 
-------------------------------------------    -------- --------------- --------- ------------ --------- ------------ ----------- ----------- 
/usr/local/yashandb/yasdb_data/dbfiles/swap           4 SWAP             67108864         8192 ONLINE    549755813888    67108864 ON          
/usr/local/yashandb/yasdb_data/dbfiles/swap01         8 SWAP             20971520         2560 ONLINE    549755813888    67108864 ON 

SELECT FILE_ID,FILE_NAME,STATUS,BYTES,BLOCKS,RELATIVE_FNO,AUTOEXTENSIBLE,TABLESPACE_NAME,MAXBYTES,MAXBLOCKS 
FROM DBA_TEMP_FILES WHERE TABLESPACE_NAME='SWAP';

FILE_ID FILE_NAME                                     STATUS     BYTES  BLOCKS RELATIVE_FNO AUTOEXTENSIBLE TABLESPACE_NAME     MAXBYTES  MAXBLOCKS  
------- --------------------------------------------- ------- -------- ------- ------------ -------------- --------------- ------------ ----------  
      4 /usr/local/yashandb/yasdb_data/dbfiles/swap   ONLINE  67108864    8192            0 ON             SWAP            549755813888   67108864 
      8 /usr/local/yashandb/yasdb_data/dbfiles/swap01 ONLINE  20971520    2560            1 ON             SWAP            549755813888   67108864    

此外,还可查询V$TEMP_EXTENT_POOL动态视图获取当前SWAP表空间的EXTENT分配情况。

示例

SELECT TABLESPACE_NAME,FILE_ID,EXTENTS_CACHED,EXTENTS_USED,BLOCKS_CACHED,BLOCKS_USED,BYTES_CACHED,BYTES_USED,INTER_FNO
FROM V$TEMP_EXTENT_POOL
WHERE TABLESPACE_NAME='SWAP';

TABLESPACE_NAME                                                       FILE_ID EXTENTS_CACHED EXTENTS_USED BLOCKS_CACHED BLOCKS_USED BYTES_CACHED  BYTES_USED    INTER_FNO
---------------------------------------------------------------- ------------ -------------- ------------ ------------- ----------- ------------ ----------- ------------
SWAP                                                                        5           4747         4747         37976       37976    311099392   311099392            0
SWAP                                                                        6           4592         4592         36736       36736    300941312   300941312            1
pdf-btn 下载文档
copy-btn 复制链接