达梦数据库基础操作(二):表空间操作

达梦数据库基础操作(二):表空间操作

在这里插入图片描述

1. 表空间操作

1.1 达梦表空间介绍

  • 表空间的概念:

    每个DM 数据库都是由一个或者多个表空间组成,表空间是一个逻辑的存储容器,它位于逻辑结构的顶层,用于存储数据库中的所有数据,表空间的数据被物理存放在数据文件中,一个表空可以包含一个或多个文件。也就是说表空是逻辑的概念我们可以把它理解为(容器)里面可以存放数据文件、表、索引等。

    DM8 的逻辑架构为表空间- 段- 簇(相当于oracle 的区)- 页(相当于oracle 的块)。

# 可以通过命令查看系统内所有表空间的名字。
# 注意:SYSTEM 、ROLL 、TEMP 不能手动创建。
SQL> select tablespace_name from dba_tablespaces;

​ 1)SYSTEM表空间:系统表空间,存放的是数据库的关键性的信息,例如:数据字典和动态性能视图
​ 2)ROLL表空间回滚表空间,存放的是数据库的回滚记录。MVCC(事务多版本机制),消除行锁,回滚段,保 留时长(undo_retention 支持毫秒)
​ 3)TEMP表空间 ,临时表空间,创建的临时表,存放的是临时的信息
​ 4)MAIN表空间:默认表空间,达梦默认的表空间,创建用户时**不指定表空间,就为该默认表空间。**之后数据就存放在此表空间。
​ 5)HMAIN表空间 :**HUGE 表空间(**Huge file system(hfs):是达梦数据库实现的,针对海量数据进行分析的 一种高效、简单的列存储机制,列存储表(huge)就是建立在 hfs 上的。 HUGE 表建立在自己特有的表空间(huge 空间),v$huge_tablespace 中,最多可以创建 32767 个 hugeg 表空间。 如果不指定 huge 表空间,默认放在 HMAIN 表空间中。 )

  • 使用表空间的优点:

Ø 能够隔离用户数据和数据字典,减少对system 表空间的I/O 争用;

Ø 可以把不同表空间的数据文件存储在不同的磁盘上,把负载均衡分布到各个磁盘上减少I/O 争用;

Ø 隔离来自不同应用程序的数据,能够执行基于表空间的备份和恢复同时可以避免一个应用程序的表空间脱机而影响其他应用程序的运行;

1.2 表空间操作

1.2.0 查看表空间
# 可以通过命令查看系统内所有表空间的名字。
SQL> select tablespace_name from dba_tablespaces;查询表空间及其所属用户和数据文件路径
SQL> select username,user_id,default_tablespace,profile from dba_users;
1.2.1 表空间创建
  • 格式:
    create tablespace 表空间名 datafile 数据文件路径 size 数据文件初始大小 autoextend on maxsize 最大值
    -----仅指定数据文件路径,以及数据文件初始
    大小,单位为(MB)
    -----注意大小仅为数字,不能带M符号
    create tablespace tbs1 datafile ‘/dm7/data/DAMENG/tbs01.dbf’ size 32;
    注意: DM8 建立初始化数据文件大小时有一个硬性规定,那就是数据文件的初始化大小一定要是页大小的4096 倍否则就会报错。
# 案例1:创建一个表空间,初始大小50M, 最大1024M
SQL> create tablespace chkproof datafile '/dm8/data/MBWS/chkproof_01.dbf' size 50 autoextend on next 1 maxsize 1024;
# 案例2:创建一个表空间,初始大小50M, 表空间由2个数据文件组成,分别存储在不同的磁盘上,每次扩展1M, 每个数据文件最大100M
SQL> create tablespace tbs2 datafile ‘/dm8/disk1/tbs2_01.dbf’ size 50 autoextend on next 1 maxsize 100,/dm8/disk2/tbs4_02.dbf’ size 50 autoextend on next 1 maxsize 100;
  • 注意:

    达梦数据库创建表空间报错-2401数据文件dbf大小无效

    报错:-2401数据文件dbf大小无效

    表空间的大小和数据库的初始参数有关系
    页大小为8K 表空间大小至少为40968K=32M
    页大小为16K 表空间大小至少为409616K=64M 以此类推

    然后将以上语句size 50 改成size 256就可以执行了

  • 查看页大小

    # 使用这个命令可以找到我们在配置数据库实例时多选的页大小参数,注意此参数显示单位为字节在换算时我们需要将此参数转化为KB 进行计算。
    SQL> select page;
    # 这样我们就得到了在页大小为8KB 的情况下,数据文件的初始化大小的最小参数值。
    # 注意:不是说得到了这个大小就必须按照这个大小来设置,只是不能比这个参数小,只要比这个参数大任何初始化值都是可以的。
    SQL> select 4096*8/1024
    
1.2.2 删除表空间(表空间存在数据,不允许直接删除)
# 第一种是表空间没有任何对象,这样的情况下我们可以直接删除
SQL> drop tablespace tbs1;
# 第二种情况就是表空间在有数据的情况下进行删除
# 直接删除是不会删除的,必须先删除数据
SQL> drop tablespace tbs1;
1.2.3 扩展表空间
# 创建达标空间,数据库导入导出
# resize 表空间数据文件的大小 (所有的数据文件大小都应该一致,修改其中一个,另外的都要更改)
alter tablespace tbs1 resize datafile '/dm7/data/DAMENG/tbs01.dbf' to 256;# 增加数据文件(表空间大小不足的解决办法)
alter tablespace tbs1 add datafile ‘/dm7/data/DAMENG/tbs02.dbf’ size 50 autoextend on next 1   maxsize 100;
1.2.4 更改表空间的数据文件路径
# 查询表空间的数据文件存储位置
select file_name,tablespace_name from dba_data_files;
# 查询表空间的状态(0---Online   1---offline)更改为离线
Select tablespace_name,status from dba_tablespaces;
# 更改文件位置
alter tablespace tbs1 rename datafile '/dm7/data/DAMENG/tbs01.dbf' to '/dm7/disk1/tbs01.dbf';
1.2.5 表空间状态

表空间的状态分为online offline (system 、roll 、temp 不能脱机)

# 注意达梦数据库的表空间没有只读的概念。
# 更改test表空间为离线状态
SQL> alter tablespace test offline;
# 查看表空间的状态
SQL> select tablespace_name,status from dba_tablespaces;
1.2.6 表空间大小不足的解决办法
  • 普通表空间增加数据文件

    SQL> alter tablespace test add datafile ‘/dm8/data/DAMENG/test02.dbf’ size 50 autoextend on next 1 maxsize 100;
    
  • 临时表空间大小不足

    # 查看一下临时表空间的默认信息。临时表空间的数据文件默认的大小是10 单位是MB 。
    SQL> select para_name,para_value from v$dm_ini where para_name like '%TEMP%';
    # 修改临时表空间大小
    SQL> sp_set_para_value(2,'TEMP_SIZE',100);
    
  • 回滚表空间不足

    # 更改数据文件大小
    SQL> alter tablespace roll resize datafile '/dm8/dm1/DAMENG/ROLL.DBF' to 2048;
    # 添加数据文件
    SQL> alter tablespace roll add datafile ‘/dm8/dm1/DAMENG/ROLL01.DBF’ size 1024;
    
1.2.7 修改用户默认表空间
# 修改用户默认表空间,修改后所指定的表空间必须先被创建
alter user "dmtest" default tablespace "testone" ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/503674.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git介绍4.2

git(版本控制工具) 一、git 介绍 1、git是目前世界上最先进的分布式版本控制系统,可以有效,高速的处理从小到大的项目版本管理。 2、git是linux torvalds 为了帮助管理linux内核开发二开发的一个开放源码的版本控制软件。 3、git作用:更好…

5_怎么看原理图之协议类接口之NAND Flash笔记

NAND Flash原理图: 由NAND Flash的原理图可以看出,做为一个存储芯片,只有I/O引脚,并没有地址引脚,怎么传地址?遵循一定的规范,先通过LDATA把地址传出去,再传数据。具体的需要查看芯片…

Django初识前后端交互

Django初识前后端交互(含MySQL) 目录 Django初识前后端交互(含MySQL)request方法示例连接数据库Django ORM在models.py中建表允许为空指定默认值 数据库迁移命令数据的增删改查数据的增加数据的查询查询所有数据查询单个数据(对象…

C++记录

常用快捷键: CTRL -向后定位 CTRL SHIFT -向前定位 1.注释:CTRLKC 2.取消注释:CTRLKU 11.调试(启动):F5 20.查找:CTRLF 21.替换:CTRLH 31.跳转到指定的某一行 1)方法1:组合键“CtrlG…

【LeetCode】876_链表的中间结点_C

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 示例 提示&#xff1a; 链表的结点数范围是 [1, 100]1 <…

Flink SQL 中的流式概念:状态算子

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

疲劳驾驶监测报警摄像机

疲劳驾驶是导致交通事故的重要原因之一&#xff0c;为了提高驾驶安全性&#xff0c;科技日新月异&#xff0c;疲劳驾驶监测报警摄像机因其先进的技术而成为关注焦点。 疲劳驾驶监测报警摄像机采用先进的人脸识别技术和人工智能算法&#xff0c;能够实时监测驾驶员的状态。通过对…

Jmeter分布式部署

前期准备&#xff1a; 1. 控制机一台&#xff0c;代理机一台&#xff0c;Jmeter安装包 操作步骤&#xff1a; 1. Linux安装Jmeter&#xff08;windows安装教程自己搜一下&#xff09; 1.1创建一个单独的文件夹(jmeter)&#xff0c;用来存放Jmeter的安装包 mkdir jmeter 1.2…

Git源码管理

参考视频&#xff1a;16-git的日志以及版本管理_哔哩哔哩_bilibili 参考博客&#xff1a;Git && Docker 学习笔记-CSDN博客 目录 简介 个人操作初始化 初始化git目录 查看生成的git目录文件 配置git工作目录的用户信息 查看工作区的状态&#xff0c;生成文件的…

Vue2:路由history模式的项目部署后页面刷新404问题处理

一、问题描述 我们把Vue项目的路由模式&#xff0c;设置成history 然后&#xff0c;build 并把dist中的代码部署到nodeexpress服务中 访问页面后&#xff0c;刷新页面报404问题 二、原因分析 server.js文件 会发现&#xff0c;文件中配置的路径没有Vue项目中对应的路径 所以…

5GC SBA架构

协议标准&#xff1a;Directory Listing /ftp/Specs/archive/23_series/23.501/ (3gpp.org) NF描述说明NSSFNetwork Slice Selection Function网络切片选择&#xff0c;根据UE的切片选择辅助信息、签约信息等确定UE允许接入的网络切片实例。NEF Network Exposure Function网络开…

鸿蒙学习day1基础语法 基础变量类型

在这里插入图片描述 什么是变量&#xff1a;变量就是一些数据 如125&#xff0c;‘字符串数据’ 通过一个符号来表示 变量的定义 方法 let 变量名&#xff1a;变量类型 ’ 各种数据’ ,let是关键字&#xff0c;系统给的用来定义变量的 let name: string 张亚洲; let age: …