免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2549 | 回复: 0

db2的环境,实例,数据库的理解 [复制链接]

论坛徽章:
0
发表于 2008-09-08 10:10 |显示全部楼层
db2的很多的变量设置是在os层面的,这和oracle是一样的,
其实很很多的其他的软件也是一样的
无法是让软件知道去什么地方找path,lib,class等等他们在运行过程之中需要寻找和使用的东西

其实就是让软件按图索骥
防止你自己独特地将这些玩意放到一个啥的爪哇的地方了

所以
在这个时候
db2首先就会有db2profile文件来集中处理和设置这些玩意
当然db2profile是b shell的
对于c shell的,是db2cshrc文件

当然
在db2软件和实例创建好了之后
很多的环境变量就已经自动创建好了

在db2的环境变量中有2个比较重要

一个是db2instance
就是决定了当前的活动的实例是什么

db2node
就是在分区环境中,决定了当前活动节点是什么

当然我们如果需要对db2再设置一些其他的什么环境变量的话
我们还需自己去显示地去指定

这当然需要各种shell来使用不同的办法

比如 b shell的
export a=b
c shell的
setenv a b
等等


db2的注册参数

db2的注册参数分为几个层次

实例级别, 就是 i 级别
也就是只能作用于某个特定的实例,也就是当前的活动的实例

全局,就是 g 级别
也就是作用于物理机器上的所有的实例

节点级别
就是作用于一个分区环境中的某个特定的节点

当然
db2set的命令自然有参数来指定和限制这些层次
反正我是没有用过
没有这么复杂和变态的场景

比如
db2set DB2COMM=TCPIP -i YPINSTANCE

就是将这个注册参数设置为实例级别的

db2set DB2COMM=TCPIP -g

就是将这个参数设置为全局级别的

我们自然知道,这样的注册参数的生效与否只需要推出当前用户再登录就可以了。

db2的注册参数的常用命令

db2set -all            列出当前的所有的参数配置
db2set -lr             列出可以设置的配置
db2set -h              语法帮助
db2set db2xxx=           删除一个配置



实例


我们从体系结构的方面来看,实例实际就是db2的执行代码和数据库对象的中间层面。

实例也可以看成是关于所有的数据库及其对象的集合
也可认为是所有的数据库及其对象和db2的代码之间的联系和结合。

我们总是有误解
就是删除了一个实例之后,所有的数据库的及其数据就挂了。

其实不是这样的
数据库及其对象依然还在

只是我们需要重建实例
我们需要小心修改文件
过程是负责危险的
后果可能是严重以至于我们不愿意面对的

所以
当发生这种情况
我们不要绝望
不要心死

但是最好不要这样


实例的创建

实例的创建是需要首先有个实例用户的及其组的创建

也就是说假如我们想创建 实例 a
那么我们首先必须在os里面有个用户 a 和相应的组

另外的前提是实例的创建需要有root权限

64位的实例的创建

在db2v9中
64位的实例创建在db2icrt的命令里面就自动默认了,当然只要你的os是64bit的就可以了。

在db2v8中似乎还要在db2icrt 中再指定 -w 64来指定它

我们通常所说的实例实际都是指的是服务器实例,就是一个全功能的实例。
其实db2的实例还有一个类型是客户端实例类型

这个主要是在一些cs的架构的程序结构中
很多的几年以前的程序都是这样的cs结构,需要去调用db2的执行代码和各个库文件
这个实例实际就是只能去提供对db2程序和库文件的链接和实现对目标实例的attach和对目标数据库的连接
但是不能做关于数据库对象的任何操作
再详细一点,就是不能创建数据库

实现命令:

db2icrt -s client ypinstance

删除实例
db2idrop ypinstance

我们也可以实现将某个实例设置为服务器启动,实例自动启动的,
db2iauto on ypinstance

但是我估计没有人愿意用这样的功能,实在想不出有什么需要这个功能的理由。

在实例启动之后,我们在ps -ef 中可以看见有个db2sysc的进程出现了。这个进程就是实例的主进程。



停止实例

停止实例的命令是db2stop

但是实际数据库一般都是活动的并且有大量的连接,我们需要首先deactivate db,这样首先将数据库停止,
然后将我们的连接断掉,就是connect reset
我估计就是这样,我们也很难将所有的链接断开,因为程序是不停的起连接,
一般情况之下我们都是用 force applications all
但是这样并不能阻止新的连接的产生

所以我都是用db2stop force
这个命令2个作用
1 force applications all
2 阻止新的连接



attach

attach是针对实例的。
假设你在一个linux机器上面的实例里面去开发和测试,这时你需要去另外一个实例中去做一些维护操作
比如 查看总共有多少链接
     监控数据库的情况
     更改dbm的参数

你如何做?
再开一个securecrt的session,链接另外的机器,输入用户名和密码,然后执行操作?

attatch就是将远程的实例编目到本地的实例,使你可以直接去做对另外的实例的操作。

这样肯定是比较简单的

当然如果你不辞劳苦,不怕麻烦是另外一回事了。

反正我现在是特别懒,我已经懒到了不想上班了,随便在小区里面遛弯的时候,钱就已经挣到了,而且是直接打到我的信用卡上,
可以直接去消费了。

这是我的终极目标。

attach是实例的链接
connect to 是数据库层面的链接。

实例层面的命令

db2start
db2stop
db2icrt
db2idrop
db2ilist
get dbm cfg
reset dbm cfg

歇会儿,出去抽袋烟。

原文链接: http://www.ituren.org.cn/html/jishusuibi/200809/07-125.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP