达梦数据库为了展示所有物理对象(文件、页)和逻辑对象(表空间、簇、段)的存储空间信息。通过 DBMS_SPACE包来获取表空间(不包含HUGE表空间)、文件、页、簇、段的内容。
使用包内的过程和函数之前,如果还未创建过系统包。请先调用系统过程P_CREATE_SYSTEM_PACKAGES (1)创建系统包。
1 获取表空间信息
包括表空间ID、表空间名、表空间类型(1 DB 类型,2 临时文件组)、表空间状态、表空间的最大空间、表空间的总大小(页)、包含文件的个数。
使用方法:
TS_LOAD/ TS_GET
根据输入的表空间 ID,获得表空间信息。过程和函数功能相同。
语法如下:
PROCEDURE TS_LOAD(
TSID IN SMALLINT,
TS_ARR OUT TS_ARR_T
);
语法如下:
FUNCTION TS_GET (
TSID IN SMALLINT
)RETURN TS_ARR_T;
参数详解
TSID 表空间 ID。
TS_ARR_T 表空间记录类型数组。
案例分析:查看MAIN表空间的相关信息。
SQL> set serveroutput on;
DECLARE
TS_INFO DBMS_SPACE.TS_ARR_T;
BEGIN
TS_INFO = DBMS_SPACE.TS_GET(4);
IF TS_INFO IS NOT NULL
THEN
SELECT * FROM ARRAY TS_INFO;
ELSE PRINT 'TABLESPACE IS NULL';
END IF;
END;
/
2 获得数据库中表空间的个数
使用方法:
TS_N_LOAD / TS_N_GET
获得数据库中表空间的个数。过程和函数功能相同。
语法如下:
PROCEDURE TS_N_LOAD(
NUMBER OUT INT
);
语法如下:
FUNCTION TS_N_GET
RETURN INT;
参数详解
NUMBER 表空间的个数。
案例分析:查数据库的表空间个数
SQL> set serveroutput on;
DECLARE
TS_NUM INT;
BEGIN
TS_NUM = DBMS_SPACE.TS_N_GET;
PRINT 'TS_NUM:';
PRINT TS_NUM;
END;
/
个数根据实际表空间个数不同而不同,不包括 HUGE 表空间。
3 获得文件信息
文件路径、文件创建时间、文件读写状态: (1 读,2 写)、文件修改的时间、修改的事务 ID 、文件的总大小(M)、文件的空闲大小(M)、数据文件中连续空白页的起始页号、读页个数、写页个数、页大小(K)、读请求个数、写请求个数、文件可扩展标记、文件最大大小(M)、文件每次扩展大小(M)、文件包含的总描述页的数目。
使用方法:
FILE_LOAD/ FILE_GET
根据输入的表空间 ID、文件 ID,获得文件信息。过程和函数功能相同。
语法如下:
PROCEDURE FILE_LOAD(
TS_ID IN SMALLINT,
FILE_ID IN SMALLINT,
FILE_ARR OUT FILE_ARR_T
);
语法如下:
FUNCTION FILE_GET(
TS_ID IN SMALLINT,
FILE_ID IN SMALLINT
) RETURN FILE_ARR_T;
参数详解
TSID 表空间 ID。
FILE_ID 文件号。
FILL_ARR_T 文件记录类型数组。
案例分析:查看MAIN表空间的文件信息。
SQL> set serveroutput on;
DECLARE
FILE_INFO DBMS_SPACE.FILE_ARR_T;
BEGIN
FILE_INFO = DBMS_SPACE.FILE_GET(4,0);
IF FILE_INFO IS NOT NULL
THEN
SELECT * FROM ARRAY FILE_INFO;
ELSE PRINT 'FILE IS NULL';
END IF;
END;
/
DBMS_SPACE 包中涉及到的变量和记录类型。如下统一说明:
包内变量和记录类型 | 解 释 |
---|---|
TS_T | 表空间记录类型,用于记录表空间的信息,包括:表空间ID、表空间名、表空间类型:1 DB 类型,2 临时文件组、表空间状态、表空间的最大空间、表空间的总大小(页)、包含文件的个数 |
TS_ARR_T | 表空间记录类型数组 |
TS_ALL_ARR_T | 表空间 ID数组 |
FILE_T | 文件记录类型,用于记录文件的信息,包括:文件路径、文件创建时间、文件读写状态 1 读,2 写文件修改的时间、修改的事务 ID 、文件的总大小(M)、文件的空闲大小(M)、数据文件中连续空白页的起始页号、读页个数、写页个数、页大小(K)、读请求个数、写请求个数、文件可扩展标记、文件最大大小(M)、文件每次扩展大小(M)、文件包含的总描述页的数目 |
FILE_ARR_T | 文件记录类型数组 |
FILE_ALL_ARR_T | 文件的 ID 数组 |
SEG_T | 段记录类型,用于记录段的信息,包括:表空间 ID、段 INODE 项的文件 ID、段 INODE 项的页号、段 INODE 项的页偏移、全满簇的个数、半满簇的个数、空闲簇的个数 |
SEG_ARR_T | 段记录类型数组 |
SEG_ID_ARR_T | 段 ID 数组 |
EXTENT_T | 簇记录类型,用于记录簇的信息,包括:表空间号、段ID、簇状态、簇的页标记位图、簇描述项的文件 ID、簇描述项所在页号、簇描述项的页偏移、簇的起始页号、簇的终止页号、下一个簇描述项的文件号 ID、下一个簇描述项的页号、下一个簇描述项的页偏移 |
EXTENT_ARR_T | 簇记录类型数组 |
EXTENT_SIZE | 簇的大小(页为单位) |
PAGE_ADDR_T | 页地址记录类型,用于记录页地址的信息,包括:表空间ID,文件 ID,页号 |
PAGE_ADDR_ARR_T | 页地址记录类型数组 |
PAGE_N | 描述页能描述的页数 |
更多方法,请查看官方文档。