达梦数据库管理之表空间

DM7表空间

1.DM7表空间概述

        在DM7数据库中,表空间是一种逻辑存储结构,数据库的对象如表、索引等在逻辑上都是存储在指定的表空间中。数据库在初始化的时候,系统会自动创建5个默认表空间,SYSTEM,MAIN,ROLL,TEMP和HMAIN表空间。其中SYSTEM表空间是系统表空间,存储有数据字典信息,用户数据不能存放在该表空间上。ROLL,TEMP和HMAIN表空间,由系统自动维护,不需要用户干预。初始的MAIN表空间为用户默认表空间。表空间只是一种逻辑结构,对应的物理存储结构为数据文件。也即是,用户的数据是存储在表空间对应的数据文件上面。DM7数据库中,物理存储结构的数据文件后缀为DBF。系统提供v$tablespace和 v$datafile视图查询表空间和数据文件。

--查询表空间
SQL>select * from v$tablespace;

--查询数据文件
SQL>select * from v$datafile;

--查询表空间对应的数据文件
SELECT
        ts.NAME,
        df.PATH
FROM
        V$TABLESPACE AS ts,
        V$DATAFILE   AS df
WHERE
        ts.ID = df.GROUP_ID;

2.DM7表空间管理

2.1表空间创建与删除
--创建表空间,最简洁形式
--仅指定数据文件路径,以及数据文件初始大小,单位为(MB)
--注意大小仅为数字,不能带M符号
CREATE TABLESPACE bookshop DATAFILE '/opt/bookshop1.dbf' SIZE 128;

--以上创建表空间语句,自动指定如下属性:
autoextend on    
maxsize 33554431 
CACHE = NORMAL
属性分别指:数据文件自动扩展,扩展最大大小,数据页的缓冲池名称

--创建表空间,指定非自动扩展
CREATE TABLESPACE bookshop DATAFILE '/opt/bookshop1.dbf' SIZE 128 autoextend off;

--删除表空间
drop tablespace bookshop;

删除表空间时,改表空间上必须没有数据库对象,否则会删除失败
2.2表空间扩展

当未指定表空间自动扩展,或是某一操作系统目录空间不足,数据库需要新的空间时,可以对表空间进行扩展操作。扩展有两种操作,一是新增数据文件;另外一种是增大已有的数据文件。

--新增数据文件
ALTER TABLESPACE bookshop ADD DATAFILE '/opt/book2.dbf' SIZE 64;

--增大已有数据文件
ALTER TABLESPACE bookshop RESIZE DATAFILE '/opt/book.dbf' TO 1024;
2.3表空间数据文件路径修改

当已有操作系统目录空间不足,需要将存放在该目录下的数据库数据文件更新目录时,可以使用如下语句。使用本方法的前提是,表空间必须处在脱机状态:

--表空间脱机处理
ALTER TABLESPACE bookshop OFFLINE;

--更改数据文件路径
ALTER TABLESPACE bookshop RENAME DATAFILE '/opt/book.dbf' TO '/data/book.dbf';

当该表空间有事务操作时,脱机处理会失败。更改数据文件路径,系统会自动修改控制文件,并将操作系统文件移动到新的路径。

--在使用脱机处理失效时,可以将数据库系统进行关闭处理,然后手动修改控制文件,并移动数据文件至新的目录后,重新启动数据库系统。

3.DM7表空间监控

监控表空间使用空间情况:

--DM7 查询表空间使用
select
        t.name tablespace_name,
        d.free_size*SF_GET_PAGE_SIZE()/1024/1024
        ||'M' free_space,
        d.total_size*SF_GET_PAGE_SIZE()/1024/1024
        ||'M' total_space,
        d.free_size*100/d.total_size "% FREE"
from
        v$tablespace t,
        v$datafile d
where
        t.id=d.group_id;

4.DM7表空间备份

DM7数据库支持用户表空间的备份还原操作。表空间备份需要在联机状态下执行,并且需要开启数据库归档模式。这是因为,表空间的数据库对象的字典信息是存储在数据库的系统SYSTEM表空间中。表空间的还原恢复,只能在备份源库上联机执行。

--表空间全量备份
BACKUP TABLESPACE t1 FULL TO TS_BAK BAKFILE '/opt/tablespace_bak.bak' ;

--表空间还原
ALTER TABLESPACE t1 OFFLINE;
RESTORE TABLESPACE t1 FROM '/opt/tablespace_bak.bak' IDENTIFIED BY ABCDEF;
ALTER TABLESPACE t1 ONLINE;

5.DM7在线体验

www.dameng.com
目前达梦数据库官网(www.dameng.com)首页推出达梦数据库在线体验服务,对于想了解国产达梦数据库的同学是个不错的选择。通过在线体验,无需部署安装,可以通过WEB形式直接使用。

在线体验

在线体验平台

5.结语

欢迎使用国产达梦数据库!

微博:汀畔柳絮

<think>好的,我需要帮助用户了解如何将数据导入到达梦数据库的指定表空间。根据用户提供的引用内容,特别是引用[2]提到的全库导出导入时使用TABLESPACE=y参数,我需要详细说明这一步骤。首先,用户可能已经有一个dmp文件,想要导入到特定的表空间。根据达梦的文档,导入前需要确保目标表空间已存在,并且用户有足够的权限。然后使用dexp和dimp工具进行操作。 我需要分步骤解释这个过程,包括导出时是否需要指定参数,还是仅在导入时使用。根据引用[2],导出时带上TABLESPACE=y参数,然后在导入时也需要同样的参数。同时,可能需要创建相同的用户和表空间结构,确保表空间归属正确。此外,用户可能关心导入过程中如何处理已有表空间的问题,是否需要预先创建,或者是否有其他注意事项。 还要注意语法是否正确,例如dexp和dimp的命令格式,参数的正确使用。可能还需要提到其他相关参数,如FULL=y表示全库导出,DIRECTORY指定路径等。需要确保用户按照步骤操作时不会出错,例如权限问题或路径错误。最后,生成的相关问题应该围绕导出导入参数、表空间管理、常见错误等,帮助用户进一步了解可能遇到的问题。</think>### 达梦数据库导入数据到指定表空间的方法教程 #### 步骤说明 1. **创建目标表空间** 在目标数据库中**提前创建与原库一致的表空间**,名称和属性需与原库对应表空间相同。可使用以下SQL语句: ```sql CREATE TABLESPACE "TBS_NAME" DATAFILE 'TBS_PATH' SIZE 128; ``` 2. **全库导出时指定表空间参数** 使用达梦的`dexp`工具导出数据时,**必须添加`TABLESPACE=y`参数**,以确保导出元数据中包含表空间信息。示例命令: ```bash ./dexp USERID=SYSDBA/SYSDBA FILE=full.dmp LOG=exp.log FULL=y TABLESPACE=y DIRECTORY=/dmdata/backup ``` 3. **导入时启用表空间归属** 使用`dimp`工具导入时,**同样添加`TABLESPACE=y`参数**,系统会根据导出文件中的元数据将表分配到对应表空间。示例命令: ```bash ./dimp USERID=SYSDBA/SYSDBA FILE=full.dmp LOG=imp.log FULL=y TABLESPACE=y DIRECTORY=/dmdata/backup ``` #### 关键注意事项 - **表空间一致性**:若目标库缺少对应表空间,导入会失败,需提前创建[^2]。 - **用户权限**:导入用户需拥有`CREATE TABLE`权限及目标表空间的使用权限。 - **对象归属**:若原表属于特定用户,目标库需存在相同用户名且关联到对应表空间。 #### 验证方法 导入完成后,执行以下SQL检查表的表空间归属: ```sql SELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE OWNER = '用户名'; ``` #### 扩展场景 - **部分表导入**:若仅导入部分表,需在导出时指定`TABLES=表名`参数,并确保目标表空间已存在。 - **跨用户导入**:使用`REMAP_SCHEMA=原用户:目标用户`参数调整用户映射关系。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值