DB2数据库初级实验题

DB2数据库初级实验题,第1张

db2stop force

db2start

db2 drop db EXAMDB

db2 create db EXAMDB using codeset GBK territory CN

mkdir /home/db2inst1/db2inst1/NODE0000/EXAMDB/archive_log

mkdir /home/db2inst1/db2inst1/NODE0000/EXAMDB/mirrorlog

db2 update db cfg for EXAMDB using LOGFILSIZ 1024 LOGPRIMARY 10 MIRRORLOGPATH "/home/db2inst1/db2inst1/NODE0000/EXAMDB/mirrorlog" LOGARCHMETH1 "disk:/home/db2inst1/db2inst1/NODE0000/EXAMDB/archive_log"

db2stop force

db2start

db2 backup db EXAMDB

db2 connect to EXAMDB

db2 create bufferpool BP_TMP size 1600 pagesize 32 K

db2 create bufferpool BP_DATA size 1600 pagesize 32 K

db2 "create tablespace TBS_USRTMP pagesize 32 K managed by system using ('/home/db2inst1/db2inst1/EXAMDB/TBS_USRTMP') bufferpool BP_TMP "

db2 "create tablespace TBS_USRDAT1 pagesize 32 K  managed by database using (file 'con0' 100 M) bufferpool BP_DATA" 

db2 "create tablespace TBS_USRIDX1 pagesize 32 K  managed by database using (file 'con1' 50 M)  bufferpool BP_DATA"

db2 terminate

求给分~

*** 作数据库命令

1、 启动数据库实例

  #db2start

2、 停止数据库实例

  #db2stop

  如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了 /db2stop force

3、 创建数据库

  #db2 create db [dbname]

4、 连接到数据库

  #db2 connect to [dbname] user[username] using [password]

5、 断开数据库连接

  #db2 connect reset

*** 作数据表命令

1、 列出所有用户表

  #db2 list tables

2、列出所有系统表

 #db2 list tables for system

3、列出所有表

  #db2 list tables for all

4、 列出系统表

  #db2 list tables for system

5、列出用户表

  #db2 list tables for user

6、 列出特定用户表

  #db2 list tables for schema[user]

参考资料来源:百度百科—DB2

开始-运行-cmd

提示符下执行 db2look -d 数据库名称 -e -a -l -o 导出文件位置(如:/opt/IBM/crtobjsql)

这样导出的脚本里包括数据库所有的对像(建表空间,缓冲池,表,视图,触发器,存储过程等)默认每个建对象语句以分号结尾。

如果增加-td % 则导出的脚本每段结尾为%号。

如果增加-dp选项则导出的脚本每个创建对象的语句之前,增加一行drop 该对象的语句。

在弄明白什么是重定向恢复之前,需要知道数据库的文件构成,如果您对这一块比较熟悉,可以直接跳到第一条分割线:

首先,一个DB2数据库的文件是由两分部构成的:表空间容器和数据库文件,容器就是真正存放用户数据的地方,是创建表空间时定义的;数据库文件则包括了缓冲池信息文件、数据库配置文件、历史文件、日志控制文件等。

问题是,如何定义表空间容器以及数据库文件所在的路径呢?答:是create database以及create tablespace的时候的参数决定的:

1 如果CREATE DATABASE的时候指定了 AUTOMATIC STORAGE NO:

没有指定ON path,那么数据库文件会被创建在数据库管理器配置文件dftdbpath指定的目录里;

若指定了ON path,那么数据库文件会被创建在ON指定的path里。

2 如果CREATE DATABASE的时候指定了 AUTOMATIC STORAGE YES或者根本没有指定AUTOMATIC STORAGE:

21 没有指定ON path, 那么数据库文件和IBMSTOGROUP都会被创建/指定在dftdbpath指定的目录里

22 若指定了ON path, 这个path可以指定多个路径。 IBMSTOGROUP就使用这些路径,表空间容器路径解决了,数据库文件在哪里呢?这取决于DBPATH ON 参数:

没有指定DBPATH ON,数据库文件会被放在ON path指定的第一个路径里。

若指定了DBPATH ON, 数据库文件会放在这个路径下。

下面正式进入重定向复原,首先是什么情况下需要重定向恢复?

在下列任何情况下,请使用重定向复原 *** 作:

--如果要将备份映像复原到不同于源机器的目标机器

--如果要将表空间容器复原到另一个物理位置

--如果复原 *** 作由于一个或多个容器不可访问而失败

--如果要重新定义已定义的存储器组的路径

这儿我举一个例子,尽可能地将上面几种情况都包括了,假设我们有如下创建数据库以及表空间的命令:

dbm cfg: Default database path (DFTDBPATH) = /home/db2users/e105q6a

$ db2 "create db test"

$ db2 "connect to test"

$ db2 "create STOGROUP MQSGROUP ON '/home/db2users/e105q6a/conpath1', '/home/db2users/e105q6a/conpath2'"

$ db2 "create user temporary tablespace usrtmp1 managed by automatic storage"

$ db2 "create regular tablespace rglrtbs1 managed by automatic storage USING STOGROUP MQSGROUP"

$ db2 "create tablespace tbs1 managed by system using ('/home/db2users/e105q6a/path1')"

$ db2 "create tablespace tbs2 managed by database using (file 'con2' 4000)"

那么数据库文件、storage group以及各个表空间的容器路径如下:

数据库文件/数据库目录:

/home/db2users/e105q6a

Storage Group:

$ db2 "SELECT VARCHAR(STORAGE_GROUP_NAME, 15) AS STOGROUP, STORAGE_GROUP_ID, VARCHAR(DB_STORAGE_PATH, 40) AS STORAGE_PATH FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1)) AS T"

STOGROUP STORAGE_GROUP_ID STORAGE_PATH

---------------- ---------------- ----------------------------------------

IBMSTOGROUP 0 /home/db2users/e105q6a

MQSGROUP 1 /home/db2users/e105q6a/conpath1

MQSGROUP 1 /home/db2users/e105q6a/conpath2

3 record(s) selected

表空间容器(我精简了输出):

$ db2pd -db test -tab

Database Member 0 -- Database TEST -- Active -- Up 0 days 00:16:02 -- Date 2017-02-25-102854331489

Tablespace Configuration:

Id AS AR Type Content SGID Name Type Container

0 Yes Yes DMS Regular 0 SYSCATSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000000/C0000000CAT

1 Yes No SMS SysTmp 0 TEMPSPACE1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000001/C0000000TMP

2 Yes Yes DMS Large 0 USERSPACE1 File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000002/C0000000LRG

3 Yes Yes DMS Large 0 SYSTOOLSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000003/C0000000LRG

4 Yes No SMS UsrTmp 0 USRTMP1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000004/C0000000UTM

5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath1/e105q6a/NODE0000/TEST/T0000005/C0000000USR

5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath2/e105q6a/NODE0000/TEST/T0000005/C0000001USR

6 No No SMS Regular - TBS1 Path /home/db2users/e105q6a/path1

7 No No DMS Large - TBS2 File /home/db2users/e105q6a/e105q6a/NODE0000/SQL00001/con2

----

以上面的数据库为例,假设想要通过重定向恢复达到以下目的:

1)把数据库文件路径换为/home/db2users/e105q6a/targetdbdir

2) 把IBMSTOGROUP的路径换为/home/db2users/e105q6a/targetstgrpsystem

3)把MQSGROUP的路径换为/home/db2users/e105q6a/targetstgrpuser1, /home/db2users/e105q6a/targetstgrpuser2 和/home/db2users/e105q6a/targetstgrpuser3

4)把表空间tbs1路径换为:/home/db2users/e105q6a/targetpath1

5)把表空间tbs2路径换为:/home/db2users/e105q6a/targetcon2, 并将大小改为5000

要先通过"db2 drop db test"删掉数据库(模拟恢复到另一个机器上),之后针对上面这几个需求,相应的 *** 作如下:

1)$ db2 "restore db test to '/home/db2users/e105q6a/targetdbdir' redirect without prompting"

2)$ db2 "SET STOGROUP PATHS FOR IBMSTOGROUP ON '/home/db2users/e105q6a/targetstgrpsystem'"

3)$ db2 "SET STOGROUP PATHS FOR MQSGROUP ON '/home/db2users/e105q6a/targetstgrpuser1', '/home/db2users/e105q6a/targetstgrpuser2', '/home/db2users/e105q6a/targetstgrpuser3' "

4)$ db2 "set tablespace containers for 6 using (path '/home/db2users/e105q6a/targetpath1')"

5)$ db2 "set tablespace containers for 7 using (file '/home/db2users/e105q6a/targetcon2' 5000)"

最后发出db2 restore db test continue的命令,完成重定向恢复。

file '/db2/data' 200M 这个路径无效。

dbapth指定为/db2/data,那这是一个目录。在创建tablespace的时候又把它当file用,所以无效。

换一个别的文件名字就行。

根据表空间的类型不同,扩容方法不同。DB2一般分SMS和DMS两种类型表空间,一个是系统管理表空间,一个是数据库管理表空间。

1、SMS表空间的container是文件系统目录或文件,一般container是自动扩展的,这种情况下你需要扩容文件系统。

查看表空间类型和container

$db2 list tablespaces show detail

$db2 list tablespace containers for <tablespaceid>

2、DMS表空间也有自动扩展类型和使用裸设备的情况(container是文件或裸设备),如果是自动扩展则扩容文件系统。非自动扩展的扩容方式是增加container。

DMS+文件

$db2 connect to <dbname>

$db2 "alter tablespace <tablespaceName> begin new stripe set (file '<filePath>/<fileName>' 655360)"

DMS+裸设备

$db2 connect to <dbname>

$db2 "alter tablespace <tablespaceName> begin new stripe set (device '/dev/rLR_XXXXXX' 671088640)"

语句中使用了begin new stripe set,表示新的数据直接写到新的container上,不进行数据reblance。否则替换为add,表示在container间进行数据reblance(会在后台执行,可用list utilities查看进度)

括号中的数字表示container的page个数(表空间pagesize×这个数字即是container的大小)。

以上就是关于DB2数据库初级实验题全部的内容,包括:DB2数据库初级实验题、db2常用命令、db2 如何导出创建表语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9306637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存