1. 在db2中,如何在某个用户下创建表
DB2里面有一个schema(模式)的概念,你要创建把表创建到某个用户下面,只需要在创建表的时候指定表的模式,当然首先需要在那个模式下面创建表的权限。
比如你是user1, 想要创建表到user2下面,默认情况下用user1登陆的时候,表是创建在user1模式下面的。
如下:
db2==> connect to TESTDB user user1 using "xxxxxx"
db2==> create table user2.tbl1(id int not null primary key, c1 char(20))
这样,创建的表就在user2这个模式下面了。
2. 在db2中,如何在某个用户下创建表
DB2里面有一个schema(模式)的概念,你要创建把表创建到某个用户下面,只需要在创建表的时候指定表的模式,当然首先需要在那个模式下面创建表的权限。
比如你是user1,
想要创建表到user2下面,默认情况下用user1登陆的时候,表是创建在user1模式下面的。
如下:
db2==>
connect
to
TESTDB
user
user1
using
"xxxxxx"
db2==>
create
table
user2.tbl1(id
int
not
null
primary
key,
c1
char(20))
这样,创建的表就在user2这个模式下面了。
3. db2数据库导出表结构
第一行是连接数据库,后面就是具体的建表语句。 2、执行建表脚本 命令为: db2 –tvf f:\export\init.sql 1 以上是导出了数据库中所有表的表结构,并在新的数据库中执行命令,新建所有表。但是表中均是不存在数据的。
4. oracle 建表语句修改为DB2的建表语句
db2 "create table tabname(id varchar(10),
password varchar(10),
ywlx varchar(10),
kh varchar(10))"
以上是 db2 建表命令, 与Oracle其实类似的。改动不太大,区别可能就是字段类型不一样
5. db2的命令行处理器怎么执行sql脚本文件建表
无论是windows系统,还是linux或AIX
你可以在实例用户下,先键入 db2 这个命令,进入到db2命令行,然再执行creat database mydb
或者
你可以在系统命令行下直接执行
db2 create database mydb
或
db2 "create database mydb"
6. 如何在DB2建表空间
一、建表空间和数据库
1.在db2ad、db2db和db2ap上均执行:
[sql] view plain
db2set db2comm=tcpip
db2set db2codepage=1386
2.新建数据库:
[sql] view plain
db2 create db <dbname> using codeset gbk territory CN collate using identity
3.连接上数据库:
[sql] view plain
db2 "connect to <dbname>"
4.创建缓冲池 + 建立表空间;
1).删除旧的表空间:
[sql] view plain
db2 drop tablespace tablespace1, tablespace2, tablespace3
2).新建缓冲池:
[sql] view plain
db2 create bufferpool bp32k all nodes size -1 pagesize 32k
bp32k为该缓冲池的名称;
32K为页大小;
size=-1表示使用缺省的buffpage,而buffpage可以通过db2 get db cfg|grep -i buff参数查看到;
3).新建表空间:
[sql] view plain
db2 "create regular tablespace tablespace1 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace1' 5g) bufferpool bp32k"
db2 "create regular tablespace tablespace2 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace2' 10g) bufferpool bp32k"
db2 "create regular tablespace tablespace3 pagesize 32k managed by database using(file '/usr/yixiayizi/tablespace3' 2g) bufferpool bp32k"
注意(file '/usr/yixiayizi/tablespace1' 5g)的设置:
第一个参数:
当指向外置盘时,file改为device;
当指向文件路径时,为file;
第二个参数:需要是绝对路径;
第三个参数:该表空间的大小;
关于表空间和缓冲池的说明见如下网页:
http://www.ibm.com/developerworks/cn/data/library/techarticles/0212wieser/0212wieser.html
5.调整表空间大小:
[sql] view plain
ALTER TABLESPACE <tablespace1> RESIZE ( FILE '/cstp/usr/db2ad/db2ad/ <tablespace1>' 5g )
6.调整缓冲池大小:
[sql] view plain
db2 alter bufferpool bp32k size 2g
--------------------------------------------------------------------------------------------
远程客户端的配置网络:
1.db2ad账户下:
1). 首先查看/etc/services中db2各个服务的端口号:
more /etc/services
可以看到如下信息:
DB2_db2ad 60040/tcp
DB2_db2ad_1 60041/tcp
DB2_db2ad_2 60042/tcp
DB2_db2ad_END 60043/tcp
2).
[sql] view plain
db2 update dbm cfg using SVCENAME DB2_db2ad
这样在服务端实例对应的端口号就是60040;
------------
2.db2db账户下:
1).
[sql] view plain
db2 catalog tcpip node <node_name> remote 172.17.252.214 server 60040
(上面操作的反编目:db2 uncatalog node <node_name>)
2).db2 list node directory可以看到如下信息:
Node Directory
Number of entries in the directory = 1
Node 1 entry:
Node name = <node_name>
Comment =
Directory entry type = LOCAL
Protocol = TCPIP
Hostname = 172.17.252.214
Service name = 60040
3).
[sql] view plain
db2 catalog db <dbname> at node <node_name>
(上面操作的反编目:db2 uncatalog db <dbname>)
4).db2 list db directory可以看到如下信息:
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = <dbname>
Database name = <dbname>
Node name = <node_name>
Database release level = c.00
Comment =
Directory entry type = Remote
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =
--编目系统数据库目录
-----------------------
授权:
在db2ad账户下,给db2db授权使用表空间:
[sql] view plain
db2 "grant use of tablespace <tablespace1> to user db2db"
db2 "grant use of tablespace <tablespace2> to user db2db"
db2 "grant use of tablespace <tablespace3> to user db2db"
二、建表
切换到db2db用户,执行建表的sql语句:
db2 -vf tmp.sql
7. db2建表语句
-- 以table1表为例创建一个结构一样的零时的表table2
CREATE GLOBAL TEMPORARY TABLE table2 LIKE table1;
-- 并插入table1表的数据到table2中来
insert into table2 select * from table1;