Db2 catalog 编目
1、 Db2set DB2COMM=tcpip
Db2set DB2CODEPAGE=1386
2、 在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说编目有编目节点,编目数据库等。如果要理解编目,我先简单讲一下DB2数据库的体系结构,在DB2数据库中最大的概念是系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象。现在假设你有一个数据库服务器在p570的机器上,你有一个客户端在windows,linux或任何平台上,你现在想建立一个客户端到服务器端的连接,具体步骤是什么呢? 
第一步: 
你必须要在客户端的机器上能够把远程的服务器能够识别出来,这个具体如何来做呢?在DB2使用的编目(catalog)方式,具体来说就是通过编目把远程的服务器写在本地客户端的一个文件中: 
db2 catalog tcpip node p570 remote 172.10.10.10 server 50000 

在上面的这条命令中p570是一个节点名(在一个机器上必须是唯一的),remote后面是服务器的IP地址,server是远程服务器上实例对应的端口号。DB2通过这种方式在本地的SQLNODIR文件中把远程服务器的信息记录下来,所以编目节点其实就是把远程服务器映射到本地,通过SQLNODIR中的记录能够到远程服务器和实例,类似指向远程服务器和实例的地址指针。 

第二步 
当把远程的服务器IP地址,实例编目下来后,第二步应该把该实例下的数据库编目到本地 
db2 catalog db REMOTEDB at node p570 

在这条命令中,REMOTEDB是远程实例下的数据库,p570是我们在第一步中编目的节点名 
这条命令执行后会在本地SQLDBDIR文件中记录远程数据库的信息,这这里编目数据库可以理解为把远程服务器实例下的数据库映射到本地为一个别名 
========================================= 
3、 上面是客户端和服务器不在同一台机器上,是通过编目节点,编目数据库来实现客户端连接到服务器上数据库的目的,如果是连接在同一台机器上,那么这时候不要显示的编目节点,但是在服务器上当我们创建一个实例的时候,有一个隐含的把实例在本地编目的过程,假设在p570上创建一个实例名为db2inst1,其实有一个隐含的 
db2 catalog local node db2inst1 instance db2inst1 system p570 ostype aix的步骤, 
同样当你在db2inst1下创建一个数据库MYDB的时候,有一个隐含的编目(catalog)数据库的步骤: 
db2 catalog db mydb at node db2inst1的步骤 
至此你可以这样理解编目(catalog),编目就是在本地或远程建立客户端到服务器的数据库连接的目的。
DB2 删除不干净,造成编目不正确,再次创建同名数据库会报错“在本地数据库目录或系统数据库目录中已经存在数据库别名”,解决方法 
在创建数据库时遇到数据库别名已存在的问题时,可以:
1. 首先用 db2 list database directory 命令看在系统数据库目录(System Database Directory)中有没有该数据库,如果有,应该在确定该数据库是没有用的数据库之后用 db2 drop database 数据库名将其删除。     
2. 如果没有,再用 db2 list database directory on location 看在本地数据库目录(Local Database Directory)中有没有该数据库,location指定数据库的位置(如Windows下的C: ,Unix下的/home/db2inst1)。如果有,先用 db2 catalog database 数据库名 on location将数据库编目到节点上,再对其进行删除处理。 

解决过程:
1.首先用db2 list database directory查看系统数据库目录,为空,说明不在系统数据库目录中。
2.在用db2 list database directory on location(这里是盘符c:,先尝试用localhost和127.0.0.1都不识别),然后发现有sample和source的别名。说明在本地数据库目录中。
3.catalog database source on c:
4.drop database source
5.catalog database sample on c:
6.drop database sample
db2数据库安装删除结点的方法是:uncatalog database source,再次用catalog database source on c:命令查询的话,就应该不到source结点了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。