[DB2 学习记录]8. 编目数据库

编目这个词,总觉得怪怪的。

如果没有编目信息,应用程序就无法连接数据库。
所以呢,编目就是注册一下,配置一下,连接的信息。

可以使用 CATALOG 命令或 DB2 Configuration Assistant(CA)
用CA 比较简单一点,命令以后再研究吧。
配置可以有3种方法:
    * 使用发现的自动配置
    * 使用访问配置文件的自动配置
    * 手工配置

用CA,需要配置以下信息:
CA:通信协议
CA:通信细节
CA:数据库细节
CA:ODBC 设置
CA:节点、系统和安全选项
节点信息
系统信息
安全信息

向导里,有三种方式:
1. 配置文件
从server上export出来,到客户端,import.
结果不行,提示是本地的,想想也是,不能用。

2. Search网络
Search网络可以找到但不能连接,可能因为不在一个DOMAIN里。
选添加系统,总算出来了,
成功加入,不过好象不能一次加多个DB。

3. 手工加
CA:通信协议 ,选TCP/IP
CA:通信细节 ,就晕了,不知道写啥,看了刚才加的才知道,
service name 不用填写,
host name 填主机全名,
port    这个要50000
后面就顺利了。

关于PORT
查了一下,defualt 应该都是50000,不过可以改
要么改,
C:/WINNT/system32/drivers/etc/services
要么改,
db2 update dbm cfg using SVCENAME 50000
不过没试。

终于可以连上了,从客户端,
db2 => connect to test user test1 using 456rty

   数据库连接信息

 数据库服务器         = DB2/NT 9.5.0
 SQL 授权标识         = TEST1
 本地数据库别名       = TEST

db2 => get dbm cfg

          数据库管理器配置

     节点类型                                            = 客户机

 数据库管理器配置发行版级别                              = 0x0c00

 联合数据库系统支持                          (FEDERATED) = NO
 事务处理器监视器名                        (TP_MON_NAME) =

 缺省对方付费帐户                      (DFT_ACCOUNT_STR) =

 Java Development Kit 安装路径(JDK_PATH)               = H:/Program Files/IBM/
SQLLIB/java/jdk

 诊断错误捕获级别                            (DIAGLEVEL) = 3
 通知级别                                  (NOTIFYLEVEL) = 3
 诊断数据目录路径                             (DIAGPATH) =

 SYSADM 组名                              (SYSADM_GROUP) =
 SYSCTRL 组名                            (SYSCTRL_GROUP) =
 SYSMAINT 组名                          (SYSMAINT_GROUP) =
 SYSMON 组名                              (SYSMON_GROUP) =

 客户机用户标识-密码插件                (CLNT_PW_PLUGIN) =
 客户机 Kerberos 插件                  (CLNT_KRB_PLUGIN) = IBMkrb5
 组插件                                   (GROUP_PLUGIN) =
 本地授权的 GSS 插件                   (LOCAL_GSSPLUGIN) =
 服务器插件方式                        (SRV_PLUGIN_MODE) = UNFENCED
 GSS 插件的服务器列表            (SRVCON_GSSPLUGIN_LIST) =
 服务器用户标识-密码插件              (SRVCON_PW_PLUGIN) =
 服务器连接认证                            (SRVCON_AUTH) = NOT_SPECIFIED
 集群管理器                                (CLUSTER_MGR) =

 数据库管理器认证                       (AUTHENTICATION) = SERVER
 没有权限就允许编目                     (CATALOG_NOAUTH) = YES
 绕过联合认证                               (FED_NOAUTH) = NO

 “Java 虚拟机”堆大小(4KB)             (JAVA_HEAP_SZ) = 2048
 目录高速缓存支持                            (DIR_CACHE) = YES

 最大请求者 I/O 块大小(以字节计)            (RQRIOBLK) = 32767
 已调速实用程序对工作负载的影响        (UTIL_IMPACT_LIM) = 10

 事务管理器数据库名称                      (TM_DATABASE) = 1ST_CONN

 NetBIOS 工作站名                                (NNAME) =

 发现方式                                     (DISCOVER) = SEARCH

 db2start/db2stop 超时(分钟)         (START_STOP_TIME) = 0

补上,下CATELOG命令加,
catalog tcpip node LINNOD2 remote  servername server 50000
catalog db SAMPLE as MYSAMPLE at node LINNOD2
connect to MYSAMPLE user test1 using xxxxx


另,server上 export 出来的内容,

;Use BINARY file transfer
[FILE_DESCRIPTION]
APPLICATION=DB2/NT 9.5.0
FILE_CONTENT=DB2 CCA Exported Data Sources
FILE_TYPE=CommonServer
FILE_FORMAT_VERSION=2.0
Platform=5
DB2SYSTEM=TESTSERVER
Instance=DB2

[REGISTRY_LOCAL]
DB2ACCOUNTNAME=TESTSERVER/db2admin
DB2INSTOWNER=TESTSERVER
DB2PORTRANGE=60000:60003
DB2COMM=TCPIP

[DBM_CONFIG]
NODETYPE=4
RELEASE=0xc00
DIAGLEVEL=3
RQRIOBLK=32767
AUTHENTICATION=4
DIR_CACHE=1
DISCOVER=2
TP_MON_NAME=
SYSADM_GROUP=
SYSCTRL_GROUP=
SYSMAINT_GROUP=
SYSMON_GROUP=
TM_DATABASE=1ST_CONN
DFT_ACCOUNT_STR=
DISCOVER_COMM=
CATALOG_NOAUTH=0
NOTIFYLEVEL=3
JAVA_HEAP_SZ=2048
FEDERATED=0
USE_SNA_AUTH=0
FED_NOAUTH=0
UTIL_IMPACT_LIM=10
CLUSTER_MGR=
GROUP_PLUGIN=
CLNT_PW_PLUGIN=
CLNT_KRB_PLUGIN=IBMkrb5
LOCAL_GSSPLUGIN=
MAX_QUERYDEGREE=-1
AUDIT_BUF_SZ=0
INTRA_PARALLEL=0
NUMDB=8
INITFENCED_JVM=0
INDEXREC=2
SHEAPTHRES=0
BACKBUFSZ=1024
RESTBUFSZ=1024
ASLHEAPSZ=15
FENCED_POOL=-1
KEEPFENCED=1
AGENTPRI=-1
DFT_MON_UOW=ON
DFT_MON_STMT=ON
DFT_MON_TABLE=ON
DFT_MON_BUFPOOL=ON
DFT_MON_LOCK=ON
DFT_MON_SORT=ON
DFT_MON_TIMESTAMP=ON
MIN_PRIV_MEM=32
PRIV_MEM_THRESH=20000
CPUSPEED=2.361721e-007
MAXTOTFILOP=16000
AGENT_STACK_SZ=16
MON_HEAP_SZ=66
RESYNC_INTERVAL=180
SPM_LOG_FILE_SZ=256
SPM_MAX_RESYNC=20
TRUST_ALLCLNTS=YES
NUM_INITFENCED=0
SPM_NAME=ITC_TEST
NUM_INITAGENTS=0
MAX_COORDAGENTS=200
NUM_POOLAGENTS=100
FCM_NUM_BUFFERS=4096
MAX_LOGICAGENTS=-1
TRUST_CLNTAUTH=CLIENT
DISCOVER_INST=1
MAX_CONNECTIONS=-1
INSTANCE_MEMORY=824722
HEALTH_MON=ON
SRV_PLUGIN_MODE=1
SRVCON_PW_PLUGIN=
SRVCON_GSSPLUGIN_LIST=
COMM_BANDWIDTH=1.000000e+002
CONN_ELAPSE=10
MAX_CONNRETRIES=5
MAX_TIME_DIFF=60
START_STOP_TIME=10
FEDERATED_ASYNC=0

[ADMINNODE>GENERATE]
DB2SYSTEM=TESTSERVER
Comment=Local workstation
ServerType=DB2NT
Nodetype=U
Protocol=LOCAL
instance_name=DB2DAS00

[INST>DB2]
instance_name=DB2
NodeType=4
ServerType=DB2NT
Authentication=SERVER_ENCRYPT
DB2COMM=TCPIP

[DB>!LOCAL:MY1STDB1]
Dir_entry_type=INDIRECT
Drive=E:
DBName=MY1STDB1

<think>首先,用户的问题是:“请问db2 修改数据库编目后是否需要重新创建联邦”。我需要基于系统级指令和用户意图来回答。 用户意图是确认在修改了DB2数据库编目后是否需要重新建立联邦数据库连接或对象。参考引用中提到了DB2联邦数据库的创建和配置。 关键点是:修改数据库编目后,联邦数据库是否需要重新创建。 从DB2知识中,我知道: - 编目(catalog)涉及数据库的元数据,比如节点、数据库别名等。 - 联邦数据库(federated database)允许访问远程数据库,通过创建服务器、用户映射等。 在引用中: - [^1] 提到创建服务器的命令,包括节点和数据库名。 - [^3] 解释联邦数据库的概念,联邦者访问远程数据库。 - [^4] 提到编目数据库的别名。 如果修改了编目,比如改变了节点或数据库名,可能会影响联邦配置,因为联邦服务器定义依赖于这些编目信息。 例如: - 创建服务器时指定了NODE和DBNAME,这些基于编目。 - 如果编目更改了,比如节点名变了,那么联邦服务器可能无效,需要更新。 因此,答案是:是的,可能需要重新创建或更新联邦对象,具体取决于修改的内容。 回答结构: - 使用中文。 - 结构清晰:先确认问题,然后解释原因,最后给出建议。 - 引用相关段落:末尾添加引用标识。 - 生成相关问题。 系统指令要求: - 所有行内数学表达式用$...$,但这里可能没有数学内容。 - 独立公式用$$...$$,但这里可能不需要。 - LaTeX语法正确。 - 生成相关问题。 回答大纲: 1. 确认问题:直接回答是否需要重新创建。 2. 解释原因:为什么修改编目可能影响联邦。 3. 建议:如何处理。 4. 引用:自然地添加引用标识。 5. 生成相关问题。 基于引用: - [^1] 创建服务器的命令。 - [^3] 联邦数据库的概念。 - 所以,在回答中引用这些。 最终答案:是的,可能需要重新创建联邦对象,因为联邦配置依赖于编目信息。 相关问题: - 如何修改DB2联邦数据库配置? - DB2编目更改后如何验证联邦连接? - 联邦数据库的常见问题及解决方法?</think>### 回答:DB2修改数据库编目后是否需要重新创建联邦对象 在DB2数据库中,修改数据库编目(catalog)后,**通常需要重新创建或更新联邦数据库对象(如服务器、用户映射等)**,具体取决于修改的内容。这是因为联邦数据库的配置依赖于编目信息(如节点名、数据库别名等),如果编目发生变化,联邦连接可能失效。下面我将逐步解释原因、影响和操作建议。 #### 1. **原因分析:联邦配置与编目的依赖关系** - DB2联邦数据库允许本地数据库(联邦者)访问远程数据库(被联邦者),通过创建服务器对象(server)来定义远程连接。服务器对象在创建时指定了节点(NODE)和数据库名(DBNAME),这些信息直接来源于编目[^1]。 - 例如,创建服务器命令:`db2 "create server server2 type DB2/UDB version 9.7 wrapper 'DRDA' authorization \"db2dis\" password \"db2dis\" options(NODE 'NODE2', DBNAME 'SAMPLE')"`。这里的`NODE`和`DBNAME`是基于编目定义的。 - 如果修改编目(如使用`CATALOG DATABASE`或`CATALOG NODE`命令更改节点名、数据库别名或连接参数),原有的联邦服务器对象可能无法解析正确的远程位置,导致连接失败[^3][^4]。 - 简单来说:编目是联邦配置的“基础地图”,地图更新后,依赖它的联邦对象需要同步调整,否则会出现“找不到路径”的错误。 #### 2. **具体影响场景** - **需要重新创建联邦对象的情况**: - 修改了节点名(NODE)或数据库别名(DBNAME):因为这些是服务器定义的核心参数,必须重新运行`CREATE SERVER`命令或使用`ALTER SERVER`更新选项。 - 更改了认证信息(如用户名/密码):如果编目更新涉及连接凭证,需同步修改用户映射(user mapping)对象。 - 例如,引用[^3]提到联邦者作为客户机访问远程数据库时,依赖编目信息;如果编目变动,联邦连接可能被视为无效客户机请求。 - **可能不需要操作的情况**: - 仅修改无关参数(如日志设置或缓冲区大小):这些不影响网络层连接,联邦对象通常可继续使用。 - 但建议测试连接:使用`db2 "select * from nickname"`验证联邦表是否可访问。 #### 3. **操作建议:如何安全处理编目修改** - **步骤1: 检查联邦依赖** 在修改编目前,查询现有联邦对象: ```sql -- 查看所有服务器对象 db2 "select * from syscat.servers" -- 查看用户映射 db2 "select * from syscat.usermappings" ``` 记录依赖的节点和数据库名。 - **步骤2: 更新联邦配置** 如果编目修改影响节点或数据库名: - 重新创建服务器对象:先删除旧对象(`DROP SERVER server_name`),再运行`CREATE SERVER`命令(参考[^1])。 - 更新用户映射:`ALTER USER MAPPING FOR user SERVER server_name OPTIONS (ADD REMOTE_AUTHID 'new_user', ADD REMOTE_PASSWORD 'new_password')`。 - **步骤3: 验证连接** 测试联邦访问: ```sql db2 "select * from nickname_to_remote_table" -- 替换为实际昵称表 ``` 如果报错(如SQL30081N),表明需要重新绑定联邦对象[^4]。 #### 4. **最佳实践** - **备份编目和联邦配置**:修改前使用`db2cfexp`导出联邦设置。 - **增量更新**:优先使用`ALTER SERVER`避免重建所有对象。 - **文档参考**:DB2联邦数据库配置依赖于编目稳定性,如引用[^4]强调编目别名(alias)是联邦连接的关键;修改后需确保一致性[^3][^4]。 总之,修改DB2编目后,强烈建议评估并更新联邦对象,以防止连接中断。如果修改涉及核心网络参数,重新创建是必要的[^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值