命令行使用mysql创建表空间_达梦命令行创建表空间

1.2命令方式创建

到数据库安装目录   cd /home/dmdba/bin

执行创建数据库实例的命令: ./dminit  path=/home/dmdba/data db_name=数据库名 instance_name=实例名称 port_num=65236

注:path路径、db_name数据库名、instance_name实例名、port_num端口号

注册数据库服务到操作系统: ./dm_service_installer.sh -t dmserver -p 实例名称 -i /home/dmdba/data/数据库名/dm.ini

2.   规划表空间

有图形化界面操作导入数据

cd ${dmdbaPath}/tool

启动图形化界面

./manager

创建表空间

创建用户

导入xxx.dmp 或者 执行sql脚本(脚本执行顺序1.CREATETABLE.sql 2.INSERTINTO.sql)

无图形化界面操作

cd ${dmdbaPath}/bin

创建实例

./dminit path=/home/dmdba/dmdbms/data/ PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=n CHARSET=1 DB_NAME=YJS INSTANCE_NAME=DS_YJS PORT_NUM=65236

984bd056f0ef0e7f271b5d3e259031e2.png

注册服务

cd ${dmdbaPath}/script/root

./dm_service_installer.sh -t dmserver(类型必须是dmserver) -p 自定义服务的名称 -dm_ini  dm.ini文件路径

./dm_service_installer.sh -t dmserver -p DMYJSSERVER -dm_ini /home/dmdba/dmdbms/data/YJS/dm.ini

执行完会有一个 create stnkink xxxx/xxx.service to xxxx/DmServiceDMYJSSERVER.service (这个名称就是启动的名称)

298337f573003cd3d17090112a729dcf.png

启动服务

systemctl start DmServiceDMYJSSERVER.service 启动服务

systemctl start DmServiceDMYJSSERVER.service 查看服务

连接

./disql SYSDBA/SYSDBA@localhost:65236   如果密码有特殊符号处理方式  SYSDBA/'"SYSDBA@123"'@LOCALHOST:65236

创建表空间

create tablespace "YJS" datafile 'YJS.dbf' size 128 autoextend on next 1 maxsize 10240 CACHE = NORMAL;

创建用户并赋默认

create user "DS_YJS" IDENTIFIED BY "DS_YJS@123" DEFAULT TABLESPACE "YJS";

给指定用户授予创建模式权限

grant create schema to DS_YJS;

grant dba to "DS_YJS";

执行sql有特殊符号需要转义一下  例如有与符号  (&  替换为  '||'&'||')

start /opt/sql/CREATETABLE.sql 执行sql

start /opt/sql/INSERTINTO.sql

一 前言

我们在DM逻辑结构的学习中已经知道,表空间是一个逻辑概念,其对应oracle逻辑关系图如下:

从上图可以看出其关系:

数据库-- tablespace -- segement--extent(cluster)-block (page)

簇:数据库申请空间的最小逻辑单位

页:数据库存储数据的最小逻辑单位

二 表空间管理

表空间的管理操作需要 DM 服务器处于打开状态下。

2.1 创建表空间

cd /home/dmdba/bin

./dminit SYSDBA/SYSDBA

DM Server 的内存池指的是共享内存池,根据内存使用情况的不同,对共享内存池的使用采用了两种工作方式:HEAP 和 VPOOL。

创建表空间时需要指定表空间名和其拥有的数据文件列表。比如创建名为 bookshop 的表空间,并指定该空间上拥有 2 个数据文件,每个数据文件的大小为 128M。

CREATE TABLESPACE bookshop DATAFILE 'd:\bookshop1.dbf' SIZE 128,'d:\bookshop2.dbf' SIZE 128;

理论上最多允许有 65535 个表空间,但用户允许创建的表空间 ID 取值范围为0~32767,超过 32767 的只允许系统使用,ID 由系统自动分配,ID 不能重复使用,即使删除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用户将无法再创建表空间。

创建表空间语法格式:

CREATE TABLESPACE [][]

::= DATAFILE {,}

::= [ MIRROR ] SIZE []

::= AUTOEXTEND ][ |OFF>

::= NEXT

::= MAXSIZE

::= CACHE =

::= ENCRYPT WITH [[BY] ]

参数

表空间的名称,表空间名称最大长度 128 字节;

指明新生成的数据文件在操作系统下的路径+新数据文件名。数据文

件的存放路径符合 DM 安装路径的规则,且该路径必须是已经存在的;

MIRROR 数据文件镜像,用于在数据文件出现损坏时替代数据文件进行服务。

MIRROR 数据文件的必须是绝对路径。MIRROR 要使用数据文件镜像,

必须在建库时开启页校验的参数 page_check。

整数值,指明新增数据文件的大小(单位 MB),取值范围 4096页大

小~2147483647页大小;

系统数据页缓冲池名 NORMAL 或 KEEP。缓冲池名 KEEP 是达梦的保

留关键字,使用时必须加双引号;

可通过查看动态视图 V$CIPHERS 获取算法名;

最大长度 128 字节,若未指定,由 DM 随机生成。

使用说明

表空间名在服务器中必须唯一;

一个表空间中,数据文件和镜像文件一起不能超过 256 个;

如果全库已经加密,就不再支持表空间加密。

2.2 扩展表空间

表空间通过数据文件来扩展,表空间的大小等于构成该表空间的所有数据文件的大小之和。所以要扩展表空间可以通过添加新的数据文件或者扩展表空间中已有的数据文件完成。

扩展表空间方式:

注:管理数据文件的操作需要 DM 服务器处于打开状态下。

1) 添加数据文件

可以在用户表空间中添加数据文件。添加的数据文件大小最小为 4096页大小,如页大小为 8K,则可添加的文件最小值为 40968k=32M。比如在 bookshop 表空间中添加大小为 64M 的数据文件。

ALTER TABLESPACE bookshop ADD DATAFILE 'd:\book.dbf' SIZE 64;

一个表空间中,数据文件和镜像文件一起不能超过 256 个。例如,如果创建表空间的时候已经指定了 1 个数据文件,那么添加数据文件的时候,最多只能添加 255 个了。

2) 扩展现有数据文件大小

可以扩展用户表空间中已存在的数据文件的大小。比如扩展 bookshop 表空间中数据文件 book.dbf 大小至 128M。

ALTER TABLESPACE bookshop RESIZE DATAFILE 'd:\book.dbf' TO 128;

3) 指定数据文件的扩展属性

可以指定数据文件是否可以扩展,每次扩展的空间大小以及数据文件可扩展到的最大空间大小,子句的语法为:

AUTOEXTEND OFF|ON [NEXT ] [MAXSIZE ]

OFF 表示文件不可扩展,ON 表示文件可扩展。文件扩展大小表示当需要扩展文件时,文件一次增大的空间大小,取值范围是 0—2048,单位是 M。文件限制大小表示文件可扩展的最大空间大小,为 0 或者 UNLIMITED 表示无限制,单位是 M。缺省情况下,文件扩展大小是 1M,文件的最大大小是无限制的。

创建表空间时可指定文件的扩展属性。如创建表空间时指定数据文件的扩展属性为可自动扩展,每次扩展大小为 10M,最大可扩展到 100M:

CREATE TABLESPACE bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT 10 MAXSIZE 100;

在表空间中添加文件时可指定文件的扩展属性。如添加数据文件时指定扩展属性为不可自动扩展:

ALTER TABLESPACE bookshop ADD DATAFILE 'd:\book.dbf' SIZE 1024 AUTOEXTEND OFF;

可修改表空间中已存在的数据文件的扩展属性。如修改数据文件的扩展属性为可自动扩展:

ALTER TABLESPACE bookshop DATAFILE 'd:\book.dbf' AUTOEXTEND ON;

2.3 删除表空间

只可以删除用户创建的表空间并且只能删除未使用过的表空间。删除表空间时会删除其拥有的所有数据文件。例如删除 bookshop 表空间。

DROP TABLESPACE bookshop;

删除表空间语法:

DROP TABLESPACE

参数

所要删除的表空间的名称。

使用说明

SYSTEM、RLOG、ROLL 和 TEMP 表空间不允许删除;

系统处于 SUSPEND 或 MOUNT 状态时不允许删除表空间,系统只有处于 OPEN 状态下才允许删除表空间。

2.4 修改表空间

语法:

ALTER TABLESPACE [ONLINE|OFFLINE|CORRUPT||||||

::= RENAME TO

::= RENAME DATAFILE {,} TO {,}

::= ADD

见上一节表空间定义语句

::= RESIZE DATAFILE TO

::= DATAFILE {,}[]

::= AUTOEXTEND ][ |OFF>

::= CACHE =

参数

表空间的名称;

指明数据文件在操作系统下的路径+新数据文件名。数据文件的存放路径符合 DM 安装路径的规则,且该路径必须是已经存在的;

整数值,指明新增数据文件的大小(单位 MB);

系统数据页缓冲池名 NORMAL 或 KEEP。

使用说明

不论 dm.ini 的 DDL_AUTO_COMMIT 设置为自动提交还是非自动提交,ALTER TABLESPACE 操作都会被自动提交;

修改表空间数据文件大小时,其大小必须大于自身大小;

如果表空间有未提交事务时,表空间不能修改为 OFFLINE 状态;

重命名表空间数据文件时,表空间必须处于 OFFLINE 状态,修改成功后再将表空间修改为 ONLINE 状态;

表空间如果发生损坏(表空间还原失败,或者数据文件丢失或损坏)的情况下,允许将表空间切换为 CORRUPT 状态,并删除损坏的表空间,如果表空间上定义有对象,需要先将所有对象删除,再删除表空间。

2.4.1 修改表空间名

可修改已存在的由用户创建的表空间的名称。比如可修改 bookshop 表空间名为books。

ALTER TABLESPACE bookshop RENAME TO books;

2.4.2 修改表空间状态

用户表空间有联机和脱机两种状态。系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许脱机。设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。脱机后可对表空间的数据进行备份。例如修改 bookshop 表空间状态为脱机。

ALTER TABLESPACE bookshop OFFLINE;

修改 bookshop 表空间状态为联机。

ALTER TABLESPACE bookshop ONLINE;

注意:MPP 环境下,可能发现节点间的表空间不一致情况,如:EP01 为 ONLINE 状态,EP02 为 OFFLINE 状态,这个时候,如论执行 ONLINE 还是 OFFLINE 都是报错。需要用户介入才可解决问题。用户LOCAL方式登录实例 , 并 执 行SP_SET_SE$$ION_LOCAL_TYPE(1),使得该会话可以执行 DDL 操作,再执行 ONLINE 或者 OFFLINE 即可。

2.4.3 修改表空间数据缓冲区

用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。例如将 bookshop 表空间绑定到 KEEP 缓冲区。

ALTER TABLESPACE bookshop CACHE= "KEEP";

2.4.4 指定数据文件的扩展属性

参考2.2扩展表空间中指定数据文件的扩展属性的说明。

2.4.5 修改数据文件的路径

可以修改用户表空间中已存在数据文件的路径,待修改的数据文件所在表空间必须处于脱机状态并且只可修改用户创建的表空间中文件的路径。如修改 bookshop 表空间中文件book.dbf 的路径为 e:\ book.dbf。

ALTER TABLESPACE bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf';

2.4.6 查询表空间与数据文件对应关系

可以通过查询动态视图 V$TABLESPACE 得到系统中所有表空间的信息,通过查询动态视图 V$DATAFILE 得到系统中所有数据文件的信息。将两个动态视图以表空间 ID 为连接条件,通过以下查询可以得到表空间上对应的数据文件。

SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

2.4.7 表空间文件失效检查

LINUX 操作系统中,被进程打开的文件仍可以在 OS 系统中被删除,因此存在 DM7 数据文件可能被误删的风险。如果数据文件被删除,DM7 系统能够及时检测出来,并立刻停止对其继续使用并通知用户。

在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定 DM7 系统检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。

也可以通过系统过程 SP_FILE_SYS_CHECK()来手动的进行检查。

系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。

表空间恢复失效文件的检查

语法格式

SP_FILE_SYS_CHECK ();

语句功能

在 LINUX 操作系统下,检查是否有数据文件被删除。

使用说明

该过程只在 LINUX 下有效。

举例说明

SP_FILE_SYS_CHECK ();

2.4.8 表空间失效文件恢复

LINUX 系统中被删除的文件,只要其句柄没有被关闭,可以在/pr0c//fd 中找到其对应的文件副本。其中指打开该文件的进程 id。

利用该方法,结合 OS 命令,DM7 提供失效文件的恢复方案如下:

1、 调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复;

2、 如果使用过程中 DM 报错表空间数据文件被删除,通过操作系统的 ps 命令找到当前dmserver 的 PID:ps –ef|grepdmserver;

3、 使用操作系统 ls 命令查看被删除文件对应的副本:ls /pr0c//fd–l,会发现被删除的文件后有(deleted)字样;

4、 使 用 操 作 系 统 的 cp 命 令 将 文 件 复 制 到 原 位 置cpbak_fildata_file_path_dir;

5、 复制成功后,调用系统过程 SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。

注意,要保证数据文件正确修复,需要保证在 SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。

1)表空间恢复失效文件的准备

语法格式

SP_TABLESPACE_PREPARE_RECOVER();

语句功能

在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,该过程完成失效文件恢复的准备工作。

使用说明

该过程只在 LINUX 下有效。

举例说明

SP_TABLESPACE_PREPARE_RECOVER('MAIN');

2)表空间失效文件的恢复

语法格式

SP_TABLESPACE_RECOVER();

语句功能

在 LINUX 操作系统下,如果出现了正在使用数据文件被删除的情况,在调用了恢复准备的 SP_TABLESPACE_PREPARE_RECOVER 及在 OS 系统内完成了数据文件的复制后,调用该过程完成文件的恢复工作。表空间失效文件恢复的详细步骤可查阅系统管理员手册。

使用说明

该过程只在 LINUX 下有效;

在 SP_TABLESPACE_PREPARE_RECOVER 及在 OS 系统内完成了数据文件的复制后调用。

举例说明

SP_TABLESPACE_RECOVER('MAIN');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值