Power Designer 使用笔记

10:34 2004-07-29 在物理模型中,对于一个关联非常多的表,可以使用Ctrl+M 创建这个表的多个快捷方式,然后使用Ctrl+鼠标拖动已有的联接矛点. 16:00 2004-07-31 如果需要一次性加入多个相同类型的对象,可以在左侧的窗口右击模型名称,选择List of 想要加入的对象,这样就可以在一个列表中使用向下键加入了,也可以方便的copy和paste. 使用模型check的功能,可以自动检查模型存在的一些问题,并可以选择自动修正操作. 有时PowerDesigner自动生成的唯一约束Key会重复,并且重复的key有时不能够全部被check出来,需要手动修改. 14:29 2004-08-02 在编辑视图时,column标签页中不能删除无用的字段,只能进入SQL Query页进行编辑,同时,在column页更改字段的顺序也无法在实际SQL中生效....

10:34 2004-07-29
在物理模型中,对于一个关联非常多的表,可以使用Ctrl+M 创建这个表的多个快捷方式,然后使用Ctrl+鼠标拖动已有的联接矛点.

16:00 2004-07-31
如果需要一次性加入多个相同类型的对象,可以在左侧的窗口右击模型名称,选择List of 想要加入的对象,这样就可以在一个列表中使用向下键加入了,也可以方便的copy和paste.
使用模型check的功能,可以自动检查模型存在的一些问题,并可以选择自动修正操作.
有时PowerDesigner自动生成的唯一约束Key会重复,并且重复的key有时不能够全部被check出来,需要手动修改.

14:29 2004-08-02
在编辑视图时,column标签页中不能删除无用的字段,只能进入SQL Query页进行编辑,同时,在column页更改字段的顺序也无法在实际SQL中生效.
当在SQL Query的字段列表中使用as语法时,有时更改as后面的列名不能在Column页中进行同步,导致创建视图中实际的列名与想要的不一致.可以通过检查 Preview标签,比较快速的判断是否有这种情况发生,当有不一致时,Preview中的sql会使用这样的格式:
create or replace view v1(column1, column2, ..., columnN) as
...
/
如果没有不一致,则不会生成括号部分.

19:02 2004-08-05
定义的视图可能互相之间会有引用关系,必须严格的按先后顺序创建,否则会出错,但powerDesigner在生成视图sql时不能指定先后顺序,是以视图名称来安排生成顺序的.
如果在oracle中,可以指定视图的属性 force 为true, 这样创建视图引用的对象即使不存在也不会报错.

16:18 2004-9-29
目前9.5版本中没有定义临时表类型的对象,无法定义oracle的global temporary 表.

V11

2006-04-04


Ctrl+C之后,使用Ctrl+K粘贴对象的快捷方式,用Ctrl+V会复制对象。

对于对象非常多的项目,比如上千个表,可以建立一个总览PDM,之后未各个模块分别建立PDM,只放入相关的表,并表示这这些表之间的关系,忽略这组表与外部的关系。 

改变Diagram 的显示格式

在Diagram的tables 中显示Schema

  • Tools -> Display Preferences -> Object view -> Table,选中 Owner.
  • 默认地, 这只改变当前的diagram,如果希望一起变更其他已经建立的diagrams,点击左下角的 Apply To按钮,然后选择希望变更的diagrams。如果希望这个变更对所有新建的diagram都有效,就点击按钮Set As Default。

默认的References 线条很难看

  • Tools -> Display Preferences -> Format -> Reference,点击Modify,Line Style -> Corners,选择第二个或者第三个折线格式,OK退出。

表的列数太多,导致diagram中对象太长

  • Tools -> Display Preferences -> Object view -> Table -> Table Columns,uncheck All Columns,选择Limit,数值用10或者20。也可以选择PK Columns 只显示primary keys,或者选择Key Columns 只显示primary keys, foreign keys, alt keys等keys。

把整个diagram 或者部分导出为图形文件

  • 选择要导出的对象(用shift多选,或者鼠标划亮多个) ,如果导出整个diagram就Ctrl+A,然后Edit -> Export Image,文件类型选择jpeg或者png,保存。

同时修改多个对象格式 

  • 如果使用shift键选中多个,然后右键->Format,不会同时修改多个对象。但选中多个后,使用Ctrl+T快捷键却可以。

设置命名转换

设置概念模型Entry只显示主键

设置允许Relationship code重名

设置改面模型允许Data Item Reuse

Data Item

  • 似乎是版本11带来的功能,原来9.5版本的模型没有这个选项
  • 可以在不同的表之间Reuse Data Item(Column),这样可以实现一处修改,到处生效。
  • Reused Data Item,一个表中修改非空约束,不会反映到其它表。
  • 可以在List Of Data Item视图中删除重复的项目。

Sysbase 发布PowerDesigner 版本12

 

自己编写脚本, 让DB2 的命令行安装变得更轻松

正文在Linux平台下DB2 UDB V8.1提供了命令行和图形界面两种安装方式,图形界面虽然通过交互简化了安装的复杂性,但安装过程需要人工干预,耗时相对较长,并且在内核较新的Linux版本下还存在无法启动GUI安装界面的问题,虽然可以通过设置环境变量进行解决,还是显得有些麻烦。当然如果你用命令行方式手动安装就不存在这个问题,不过需要手动完成很多步骤,如果安装或卸载比较频繁的情况下,就不如把整个安装过程写入shell脚本执行方便。下面是我完成的一个用于安装和卸载的shell脚本,在数据库安装时,只需指定安装文件的源路径,即可完成全部安装。包括创建必要的用户和组,创建DAS服务以及实例,在系统注册服务名和服务端口,设置注册表变量,设置自动启动等。另外可以通过三个可选的参数指定忽略拷贝安装文件,或者忽略创建用户或者组,以节约安装时间。卸载功能可以用于卸载使用本安装脚本安装的数据库,包括删除实例和DAS服务,清除前面创建的用户和组,恢复系统的配置文件等,可通过可选的参数指定同时删除安装时拷贝的package文件。在脚本的开始部分,有一些参数可以自行根据实际环境修改,比如要创建的实例名、用于DAS的用户名及组名、数据库的默认建立路径等,在使用本脚本之前可以先进行修改。将本脚本保存为文件,本例存为instdb.sh,添加可执行属性,在root权限下运行,例如:使用源路径'/mnt/DB2UDB8FORLINUX' 进行安装;# ./instdb2 -d /mnt/DB2UDB8FORLINUX删除已经进行的DB2安装,同时删除所有已经拷贝到安装目录的package文件。# ./instdb2 -d /mnt/DB2UDB8FORLINUX -remove -all本文中脚本在如下环境测试通过:RedHat Enterprise Linux 3.0DB2 V8.1...

正文

在Linux平台下DB2 UDB V8.1提供了命令行和图形界面两种安装方式,图形界面虽然通过交互简化了安装的复杂性,但安装过程需要人工干预,耗时相对较长,并且在内核较新的Linux版本下还存在无法启动GUI安装界面的问题,虽然可以通过设置环境变量进行解决,还是显得有些麻烦。

当然如果你用命令行方式手动安装就不存在这个问题,不过需要手动完成很多步骤,如果安装或卸载比较频繁的情况下,就不如把整个安装过程写入shell脚本执行方便。

下面是我完成的一个用于安装和卸载的shell脚本,在数据库安装时,只需指定安装文件的源路径,即可完成全部安装。包括创建必要的用户和组,创建DAS服务以及实例,在系统注册服务名和服务端口,设置注册表变量,设置自动启动等。

另外可以通过三个可选的参数指定忽略拷贝安装文件,或者忽略创建用户或者组,以节约安装时间。

卸载功能可以用于卸载使用本安装脚本安装的数据库,包括删除实例和DAS服务,清除前面创建的用户和组,恢复系统的配置文件等,可通过可选的参数指定同时删除安装时拷贝的package文件。

在脚本的开始部分,有一些参数可以自行根据实际环境修改,比如要创建的实例名、用于DAS的用户名及组名、数据库的默认建立路径等,在使用本脚本之前可以先进行修改。

将本脚本保存为文件,本例存为instdb.sh,添加可执行属性,在root权限下运行,例如:

使用源路径'/mnt/DB2UDB8FORLINUX' 进行安装;

# ./instdb2 -d /mnt/DB2UDB8FORLINUX

删除已经进行的DB2安装,同时删除所有已经拷贝到安装目录的package文件。

# ./instdb2 -d /mnt/DB2UDB8FORLINUX -remove -all

本文中脚本在如下环境测试通过:

  • RedHat Enterprise Linux 3.0
  • DB2 V8.1 for Linux

参考资源

  • IBM DB2 开发者园地
    http://www-128.ibm.com/developerworks/cn/db2/

  • IBM DB2 信息中心
    http://publib.boulder.ibm.com/infocenter/db2help/index.jsp

  • 《DB2 UDB v8.1 for Linux, UNIX, Windows 数据库管理》George Baklarz, Bill Wong 合著,机械工业出版社出版

  • 《DB2数据库管理与应用教程》庄济诚 著,清华大学出版社出版

Linux 系统管理学习笔记(一)

Linux系统管理命令的一点拾零,这是第一部分,其余的笔记请到这里浏览。 正文 编辑/etc/hosts.allow 和/etc/hosts.deny,设置TCP内核级的访问控制。若需要允许/禁止所有地址对所有服务的访问,添加如下条目:all:all 若需要允许/禁止192.168.1.100对ssh服务的访问,添加如下条目:ssh:192.168.1.100 当两个文件中的策略发生冲突时,以hosts.allow中的条目优先。配置iptables防火墙,如果不具备娴熟的技巧,建议一定要在所配置主机的本地控制台上进行,不要远程配置,因为,一旦配置了一条与当前连接匹配的过滤规则,则会马上生效,并终止当前的连接,甚至某些规则会导致即使在本地主机上也无法登录,比如将"iptables -P INPUT -j DROP" 作为的一条过滤规则命令发布就会导致这种情况,此时,任何远程或者本地都无法登录主机,可以冷启动主机解决此问题,因为尚未发布iptables-save 命令来保存规则设置。inconfig interface [[-net|-host] address [parameters]]ipconfig...

Linux系统管理命令的一点拾零,这是第一部分,其余的笔记请到这里浏览

正文

编辑/etc/hosts.allow 和/etc/hosts.deny,设置TCP内核级的访问控制。
若需要允许/禁止所有地址对所有服务的访问,添加如下条目:

all:all

若需要允许/禁止192.168.1.100对ssh服务的访问,添加如下条目:

ssh:192.168.1.100

当两个文件中的策略发生冲突时,以hosts.allow中的条目优先。

配置iptables防火墙,如果不具备娴熟的技巧,建议一定要在所配置主机的本地控制台上进行,不要远程配置,因为,一旦配置了一条与当前连接匹配的过滤规则,则会马上生效,并终止当前的连接,甚至某些规则会导致即使在本地主机上也无法登录,比如将"iptables -P INPUT -j DROP" 作为的一条过滤规则命令发布就会导致这种情况,此时,任何远程或者本地都无法登录主机,可以冷启动主机解决此问题,因为尚未发布iptables-save 命令来保存规则设置。

inconfig interface [[-net|-host] address [parameters]]

ipconfig eth0 192.168.0.1
ipconfig eth1 203.99.9.9

promisc 参数用于把此以太接口置于“混乱”状态, -promisc 取消此状态。

netstat -r 显示路由信息
netstat -i 以IP地址格式显示
netstat -i 列出配置特性
netstat -a 列出内核中所有接口
netstat -t 仅列出TCP连接
netstat -u 仅列出UDP连接

/etc/host.conf bind 服务器的核心配置文件
/etc/resolv.conf bind 服务器的解析配置文件


DNS的数据库中包含三种类型的记录:

  1. A记录 将主机名映射为IP地址
  2. CNAME记录 将主机的别名和其正式主机名关联在一起,指向一条A记录
  3. SOA记录 表示Start of Authority,其中容纳服务器所属的区之普通信息。比如,它包含所有记录的默认TTL值。

主机名如果以“.“结尾,代表是绝对主机名,即一个完整的包含域名的规范主机名(如:www.domain.com.),否则是一个相对主机名,代表主机名与某一个域名相关联。

SOA记录中的特殊名“@”代表其自身的域名。如果希望解析domain.com 本身到某个IP地址,则使用“@”作为主机名即可。如果希望解析所有xxx.domain.com 到某个IP 地址(xxx可以是任何字母),则使用“*”作为主机名。


/etc/services文件定义了服务名到端口号的转换。

查看磁盘使用情况

$ df -kl 

把 *.tar.Z的文件包解压缩成.tar文件,

$ gunzip -dv filename.tar.Z 

再用tar 命令进行解包,其中,-v用于显示解包过程

$ tar -xvf filename.tar 

把目录打成一个tar包

$ tar -cvf newfile.tar directory

一次完成解压缩和解包.tar.gz 文件的命令

$ tar -zxvf filename.tar.gz

重新启动xinetd服务,用于修改xinetd配置文件后,不需重起主机而重新装载文件。 

# /etc/init.d/xinetd reload 

其他的参数:start, stop, restart, status...
此命令需要root权限执行。

以root的身份执行xinetd命令, 并不更改当前shell

$ su - root -c xinetd reload # 

也可以:

$ su - root -c '(cmd1;cmd2)'

解开 '.bz2' 文件

$ bzip2 -d *.tar.bz2

对于iso文件,linux可以采用mount命令读取,如:

$ mkdir /mnt/iso
$ mount -t iso9660 -o loop disc1.iso /mnt/iso
$ ls /mnt/iso

把一张光盘制作成iso文件(首先mount好光驱):

$ cp /mnt/cdrom disc1.iso

解压.zip文件到新的目录:

$ unzip -d newdir file.zip

查看文件或目录所占用的磁盘块多少,目前linux版本下每个磁盘块默认是1k:

$ du /tmp
$ du /tmp/log.txt

查看文件目录所占用的详细字节数:

$ du -ab /tmp
$ du -ab /tmp/log.txt

命令行下通过http协议下载文件:

$ wget http://www.download.com/file.exe

支持续传:

$ wget -c url

还有很多其他参数,设置cache、http用户认证和代理认证等。

rcp命令可以用于在linux主机间copy文件

列出系统中的所有服务,查看在各个系统启动级别的启动设置:

# chkconfig --list

更改服务启动设置(会修改所有系统启动级别的设置):

# chkconfig srvname on|off

仅修改特定级别的启动设置,n可以指定从1至5:

# chkconfig --level n srvname on|off

启动或者停止某个服务:

# service srvname start|stop

查看所有服务状态:

# service --status-all
查看某个服务状态:
# service srvname status

系统的syslogd服务会写日志文件/var/log/messages,一般其他应用程序的消息也会通过syslogd记录在此文件。
可是用如下命令监视:

$ tail -f /var/log/messages

参考资源

在DB2 UDB V8.1中使用裸(raw)设备

一般信息DB2提供了直接将裸(raw)设备作为表空间容器的功能,这样DB2可以绕过文件系统直接管理设备容器来获得更高的性能,这种方式用在一些对效能要求比较高的场合。本文介绍在Linux环境下,让DB2使用设备容器的一般步骤。本文中的命令和代码在以下环境编译执行通过:IBM xSeriers 345(Inter 32位) RedHat Enterprise Linux 3.0 DB2 V8.1 for Linux主机连接一个IBM EMP300 磁盘柜,用于数据库数据存储。磁盘柜共有6块磁盘,单块146GB,其中5块做成RAID5,剩余一块做备用盘。 RAID5中,校验信息不单独占用一个磁盘,而是根据算法平均分布在各个磁盘上,这样避免了读写校验信息产生的瓶颈。假设在主机上已经安装好了一个DB2服务,创建了一个实例,名为db2,还未建立数据库,并且磁盘柜已经在系统下安装好驱动程序,我们获得的设备名为sdb,还未进行分区。下面分步介绍在磁盘阵列上建立raw设备并进行数据规划和数据放置的操作步骤:规划磁盘分区以root登录,对磁盘阵列进行分区,在root提示符下键入:# fdisk...

一般信息

DB2提供了直接将裸(raw)设备作为表空间容器的功能,这样DB2可以绕过文件系统直接管理设备容器来获得更高的性能,这种方式用在一些对效能要求比较高的场合。本文介绍在Linux环境下,让DB2使用设备容器的一般步骤。

本文中的命令和代码在以下环境编译执行通过:

  • IBM xSeriers 345(Inter 32位)
  • RedHat Enterprise Linux 3.0
  • DB2 V8.1 for Linux

主机连接一个IBM EMP300 磁盘柜,用于数据库数据存储。磁盘柜共有6块磁盘,单块146GB,其中5块做成RAID5,剩余一块做备用盘。

RAID5中,校验信息不单独占用一个磁盘,而是根据算法平均分布在各个磁盘上,这样避免了读写校验信息产生的瓶颈。
假设在主机上已经安装好了一个DB2服务,创建了一个实例,名为db2,还未建立数据库,并且磁盘柜已经在系统下安装好驱动程序,我们获得的设备名为sdb,还未进行分区。

下面分步介绍在磁盘阵列上建立raw设备并进行数据规划和数据放置的操作步骤:

规划磁盘分区

以root登录,对磁盘阵列进行分区,在root提示符下键入:

# fdisk /dev/sdb

新增3个主分区sdb1,sdb2,sdb3,每个分区20GB,分别划分给系统目录表空间、默认的系统临时表空间和新增的32kb的临时表空间,
剩下空间约527GB全部划分给第4个扩展分区sdb4,在扩展分区中增加5个逻辑分区sdb5,sdb6,sdb7,sdb8,sdb9,前两个逻辑分区各160GB,用作表存储的用户表空间,第三个逻辑分区为20GB,用作专门放置索引的用户表空间,余下的2个逻辑分区分别为80GB、93GB,这两个逻辑分区使用ext3进行格式化,用于存放日志和数据库备份。
注意:sdb1-sdb7均未进行格式化操作,准备用作raw设备,由DB2自行管理。

以下是分好区的磁盘状态:

Disk /dev/sdb: 587.2 GB, 587257085952 bytes
254 heads, 63 sectors/track, 71677 cylinders
Units = cylinders of 16002 * 512 = 8193024 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 2501 20010469+ 83 Linux
/dev/sdb2 2502 5002 20010501 83 Linux
/dev/sdb3 5003 7503 20010501 83 Linux
/dev/sdb4 7504 71677 513456174 5 Extended
/dev/sdb5 7504 27502 160011967+ 83 Linux
/dev/sdb6 27503 47501 160011967+ 83 Linux
/dev/sdb7 47502 50002 20010469+ 83 Linux
/dev/sdb8 50003 60002 80009968+ 83 Linux
/dev/sdb9 60003 71677 93411643+ 83 Linux

创建RAW设备

打算用作raw设备的各个逻辑分区DB2不能够直接使用,需要使用raw命令创建raw设备名:
在root提示符下键入:

# raw -a

查询当前已经建立的raw设备名,目前为空,我们可以从第一个设备名用起,

在root提示符下键入:

# raw /dev/raw/raw1 /dev/sdb1 # 用于system catalog tablespace (4K)
# raw /dev/raw/raw2 /dev/sdb2 # 用于system temp tablespace (4K)
# raw /dev/raw/raw3 /dev/sdb3 # 用于system temp tablespace (32K)
# raw /dev/raw/raw5 /dev/sdb5 # 用于user tablespace1 (32K),存储表
# raw /dev/raw/raw6 /dev/sdb6 # 用于user tablespace1 (32K),存储表
# raw /dev/raw/raw7 /dev/sdb7 # 用于user tablespace2 (32K),存储索引

至此,我们创建了6个raw设备名,用于交给DB2直接管理,查看一下已经创建的raw设备名的情况:

# raw -a
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw5: bound to major 8, minor 21
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7: bound to major 8, minor 23

如果想删除一个raw设备名(例如/dev/raw/raw1),在root提示符下键入:

# raw /dev/raw/raw1 0 0

接着修改系统的初始化文件,添加如下行到 /etc/rc.d/sysinit 文件:

raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
raw /dev/raw/raw5 /dev/sdb5
raw /dev/raw/raw6 /dev/sdb6
raw /dev/raw/raw7 /dev/sdb7

这样系统在下次启动时,会重新建立需要的raw设备名。

默认建立的raw设备拥有者是disk,必须让数据库实例的拥有者具有此设备的存取权限,在root提示符下键入:

# chown db2:disk /dev/raw/raw[1,2,3,4,5,6,7]

将db2用户更改为7个裸设备的拥有者,至此,这些裸设备已经可以为DB2所引用。

创建数据库

下面准备使用以上raw设备创建一个名为newdb的数据库,包含页size为4kb系统目录表空间、系统临时表空间以及用户表空间各一个;
然后新建页size为8kb、16kb、32kb的缓冲池各一个;
删除4kb的用户表空间,新建2个32kb页size的用户表空间,用于用户表的存储;
新建一个32kb页size的用户表空间,用于存储索引;
新建一个32kb页size的系统临时表空间;

我们将完成以上功能的脚本保存为newdb.sql,并通过如下方式执行此脚本:

在root提示符下键入如下命令,转到db2用户下:

# su - db2

执行上面的脚本:

$ db2 -td";" -f newdb.sql

至此数据库创建完成。下载脚本代码

规划日志以及备份文件存储

接下来,还需要规划日志和数据库备份的存储,首先将用于日志和数据库备份的分区进行格式化(此过程花费时间较长):
在root提示符下键入:

# mkfs.ext3 /dev/sdb8
# mkfs.ext3 /dev/sdb9

创建DB2数据库的目录:

# mkdir /db2
# chown db2:db2 /db2
# su - db2
$ mkdir /db2/db2log
$ mkdir /db2/db2backup
$ exit

mount逻辑分区到目录:

# mount /dev/sdb8 /db2/db2log
# mount /dev/sdb9 /db2/db2backup

更新数据库的log文件路径:

# su - db2
$ db2 connect to newdb
$ db2 update db cfg using newlogpath '/db2/db2log'

停顿数据库使修改生效,使用defer参数继续执行已有的事务,拒绝新的连接,停顿成功后发布激活数据库的命令:

$ db2 quiesce db defer
$ db2 unquiesce db
$ exit

至此我们完成了利用raw设备进行数据规划和数据放置的任务。

额外信息

当已经在raw设备上创建容器之后,若没有通过正常的步骤删除表空间所在数据库,也没有直接删除容器或者容器所在表空间,则再次利用这些raw设备时,DB2会报错:

The container is already in use

此时应使用db2untag命令释放container标志,而采用重新对磁盘进行分区或者格式化的操作是无济于事的。

释放已经在raw设备raw1上建立的container标志:

# su - db2
$ db2untag /dev/raw/raw1

 

参考资源

  • IBM DB2 开发者园地
    http://www-128.ibm.com/developerworks/cn/db2/

  • IBM DB2 信息中心
    http://publib.boulder.ibm.com/infocenter/db2help/index.jsp

  • dbforums 论坛
    http://dbforums.com/

  • 《DB2 UDB v8.1 for Linux, UNIX, Windows 数据库管理》George Baklarz, Bill Wong 合著,机械工业出版社出版

  • 《DB2数据库管理与应用教程》庄济诚 著,清华大学出版社出版