Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1083149
  • 博文数量: 106
  • 博客积分: 9093
  • 博客等级: 中将
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 17:22
文章分类

全部博文(106)

文章存档

2014年(1)

2012年(29)

2011年(32)

2010年(20)

2008年(24)

分类:

2008-07-18 11:07:31

4.1 概念
    DDM是一个控制远程文件处理的体系结构,它是OS/400操作系统的一部分。DDM支持一台AS/400运行应用程序,去访问另一台AS/400所存贮的数据文件。简单地说,另一个系统利用DDM能访问本地AS/400系统的数据库文件。DDM使分布在两个或多个系统中的文件处理变得容易。
    DDM允许应用程序或用户访问远程系统中的数据文件,也允许远程系统访问本地系统中的数据文件。利用DDM可以对远程文件的记录进行读、添加、修改、删除等操作,本地用户或应用程序就好像觉得这个远程文件是在本地系统上应用。
    应用程序或用户向远程文件提出DDM请求的这个系统称之为源系统。一个系统接收以上的请求叫做目标系统。一个系统既可是源系统也可是目标系统。


    当一个程序(用户自己编写或IBM提供)向一个AS/400系统提出请求,数据库管理程序会打开所有的会访问数据库文件的程序。数据库文件被打开后,程序就可以进行正常的文件处理(读、写、删除等).

4.2 DDM处理
    运用DDM,被打开的文件不在本地系统中,被建立的DDM文件指向文件所在的远程系统。这时程序:
1) 发布正常文件打开请求
2) 数据库管理程序发现这个文件是DDM文件
3) 源分布式数据管理程序(SDDM)被请求
4) 向远程系统发送启动程序的请求
5) 在远程系统中启动目标分布式数据管理程序(TDDM)
6) TDDM需求正常的数据库管理程序来打开目标程序的文件
7) TDDM通知SDDM操作成功
8) SDDM通知程序,文件已被成功打开
9) 一旦文件被打开, SDDM发送每一个文件操作请求给TDDM。SDDM和TDDM在应用程序和远程文件之间互相交换数据。


4.3 DDM的限制
    利用DDM,用户可以对远程文件执行许多标准操作。例如:用户可通过DDM对远程文件进行分配,打开,关闭,读,更新,或者删除。
    对一些功能或者CL命令有一些特定的限制。对DDM的限制通常包括以下几点:
1) 远程文件不能通过DDM文件被存贮或恢复。
2) 当等待一个数据库文件或记录操作时,远程系统上的WAITFILE/WAITRCD参数规定了等待的时间值。当利用DDM去访问远程的文件或记录时,延迟时间会被统计。所以当使用DDM去访问远程文件时,等待时间参数必须进行调整。
3) DDM文件支持通信控制,然而源DDM系统不支持对DDM文件的日志管理(Journal),但是远程文件必须在目标系统中进行日志。
    在AS/400中支持DDM的程序语言有:COBOL/400、RPG/400、AS/400 BASIC、AS/400 PLI、C/400、RORTRAN/400、CL。另有一些实用功能和工具软件也支持DDM:Data File utility、Sort(排序)、OPNQRYF(open Query file)打开查询文件命令、office Vision/400、PC Support/400。
    许多常规文件操作也支持这项产品,但一些限制如下所列:
² 如果在OPNQRYF命令中特定了多远程文件,它们必须都在相同的目标系统中,并有相同的远程位置信息。
² officeVision/400在特定的情况下支持DDM文件,它们是:
– 在PRTDOC(Print document)命令中,如果OUTFILE(File to Receive output)参数被定义,或者输出设备文件在OPTIONS(Display print options)参数上被设定,那么可以使用DDM文件
– OfficeVision/400字处理中的获取图形功能,允许源数据和图形数据通过DDM文件被补救回来。
² PC Support/400中的CPYFRMPCD命令,在目标系统中不能建立远程文件。因为PC Support/400使用和OPNQRYF相同的基本(underlying)系统,一些对于OPNQRYF的限制同样也对CPYFRMPCD(copy from PC document)命令进行限制。
    注意:一些AS/400产品对DDM文件不支持,例:SQL,SEU,AS/400 Query,SDA等。

4.4 建立DDM文件
    用CRTDDMF命令来建立DDM文件,指向远程系统中的数据库文件。其中远程位置(Remote Location)参数的值是指有真实文件存在的系统。通过DDM可以访问以下一些远程系统中文件类型:物理文件、逻辑文件、源文件、以及以上文件的成员、文件夹。CRTDDMF命令中的Remote File 项下有参数File,它的可选值*NONSTD(Non Standard)代表非标准文件。
例:建立标准文件
    CRTDDMF FILE(xxx) RMTFILE(LIB/FILE) RMTLOCNAME(xxx)
例:建立AS/400文件成员
    CRTDDMF FILE(xx) RMTFILE(*NONSTD‘LIB/FILE(MBR)’)
    RMTLOCNAME(xxx)
例:建立不同命名规则的系统
    CRTDDMF(xxx)RMTFILE(*NONSTD‘FILE. LIB’)
例:建立文件夹信息系统
CRTDDMF FILE(xxx)RMTFILE(*NONSTD‘Path1/Path2/Path3/DOC1
Fms’)
    其它的CL命令如DSPDDMF,CHGDDMF和WRKDDMF能显示、改变DDM文件。WRKDDMF命令允许用户通过DDM文件列表显示对已存在的DDM文件进行操作,如:修改,删除,显示或创建DDM文件。
    DDM文件能在源系统中熟练地使用许多标准的CL命令。例如:移动(move),保存(save),恢复(restore)和重命名(rename)等,在这些命令中参数system被定义为*RMT和*LCL。目标系统中也能使用CL命令:如CPYF(COPY File),RGZPFM(reorganize physical file member),DSPFFD(display file field description)命令,在这些命令中参数system定义为(*RMT)。 
    有一些操作在DDM文件中是可供选择的。例如:利用DDM文件可将一文件从一系统拷贝到另一个系统中、SNADS(SNA Distribution Services)、FTS(file Transfer Subroutines)、用户写的APPC程序或者Netuiew File Transfer Program/400。如果数据转移的量非常大,那么DDM就不能成为一个可选择的物质了。
    PC Support/400转移功能(请求来自PC)和PC Support/400 拷贝命令(请求来自AS/400)能够从远程的AS/400文件PC中转移数据,或者转移数据到远程的AS/400文件。PC Support/400 还能够访问 PC中的AS/400文件夹和文件。可通过DDM/PC这个产品访问AS/400文件记录,DDM/PC只运行在DOS环境下。
    用户可使用SBMRMTCMD(Submit Remote command)CL命令实行 远程的AS/400系统命令。SBMRMTCMD在DDM文件中的RMTFICE参数可忽略。SBMRMTCMD还可以在没有SYSTEM参数的情况下使用。如果CL命令中有SYSTEM命令,远程操作可以通过SBMRMTCMD命令或用CL命令定义SYSTEM为*RMT来完成。
例:SBMRMTCMD
    CMD(‘CRTPF L1B2/FILE2’)             CRTPF L1B2/FILE2
DDMFILE(FILE1)
4.5 通信路径及安全性
   通过APPC的支持,目标源系统的DDM的通信部分建立通信路径。通过DDM需求远程位置名,当远程系统接收到程序的启动需求时,DDM会话(conversation)被建立。


    SDDM作业中DDMCNV属性默认值为* keep,表示当数据库管理程序关闭目标系统的文件时,对话仍保持活动(active)状态。DDM可以频繁使用,SDDM和TDDM可不需重启。如果DDM不经常使用,可将作业属性改为*DROP。RCLDDMCNV(reclaim DDM conversation)命令可以对当前作业中未使用的DDM会话进行释放。
    在DDM中必须注意安全性。DDM在目标系统和源系统中都有LOCPWD(location password)、SECURE(Secure location)参数可进行设置。具体如下图:


    DDM提供在同等网络中的分布式数据库接口。网络上的用户可以访问网上某台系统上的数据库。利用DDM支持,应用程序勿需改变,即可实现网络数据库的访问。
    DDM是个非常有用的远程文件访问工具。但是它还是有一些缺点如:DDM还没有一个好的方案去解决如何从目标系统传送大量的数据到源系统中。

1。 把你的目标系统的系统值QRETSVRSEC设为"1" 以保存将要做的服务器授权表;
2。 在你的目标系统上调ADDSVRAUTE命令, 参数设置分别为:

USRPRF: 你在源系统的用户名;
SERVER: 'QDDMSERVER' 或 大写的目标系统数据库的名字; 
USRID: 你在目标系统的用户名;
PASSWORD: 目标系统的用户口令;
 
1. 首先确保双方系统上的分布式处理服务已启动:
===>;STRTCPSVR SERVER(*DDM)

2. 为目标系统创建DDM文件:
===>;CRTDDMF FILE(LIB/TESTDDM) RMTFILE(LIB/MYPF) RMTLOCNAME(s65f6f8b *IP)
其中:TESTDDM是DDM文件名; MYPF是远程系统s65f6f8b上要操作的文件的名称。

3. 在本地系统上运行更新MYPF文件命令:
===>; SBMRMTCMD CMD(' QSYS/UPDDTA FILE(LIB/MYPF) ') DDMFILE(LIB/TESTDDM)
 
                             显示格式化信息文本                                
                                                              系统 :   S65F6F8B
信息 ID  . . . . . . . . . . :   CPF9190                                       
信息文件 . . . . . . . . . . :   QCPFMSG                                       
   库 . . . . . . . . . . . . :     QSYS2989                                    
                                                                                
  消息 . . . . . :    尝试 DDM TCP/IP 连接时授权失败。                          
  原因 . . . . . :    尝试连接失败,原因代码是 &1 。原因代码及其含义如下:      
   0 --  未知的原因。                                                           
   1 --  密码到期。                                                            
   2 --  密码无效。                                                            
   3 --  密码丢失。                                                            
   4 --  协议违例。                                                            
   5 --  找不到用户标识。                                                      
   6 --  用户标识无效。对于 iSeries 服务器来说,这可能表示损坏的用户概要文件或  
     PASSWORD(*NONE) 。                                                         
   7 --  用户标识被撤销或禁用。                                                
   15 --  对服务器进行安全性处理时失败。                                       
   16 --  新密码无效。      
   17 --  客户机所要求的安全机制在服务器上不受支持或不允许。查看下面的恢复息。                                                         
   22 --  对客户机进行安全性处理时失败。      

                                 
  恢复 . . . . . :    若有可能,则更正由原因代码指示的问题,并尝试再次连接。原因代码 17 的常见原因是服务器需要密码,但客户机只发送了用户标识,或服务器需要加密的密码,但客户机未发送加密的密码。可以使用CHGDDMTCPA CL 命令将iSeries DDM 服务器配置为不需要密码或加密密码。             
 
 
启动 *DDM TCP 服务后,对应如下2点:

1、当这个TCP 服务启动时,系统提交 QRWTLSTN 批作业到 QSYSWRK 子系统的 QSYSNOMAX 作业队列中,同时在 QSYSWRK 中还可发现预起作业 QRWTSRVR,二个作业的用户为QUSER。
2、如果上述命令执行成功,用户可用 NETSTAT *CNN 命令找到名‘DRDA’的端口处于侦听状态,默认端口号应为:446。

如果启动 *DDM的TCP服务:DRDA出错,可以按照如下进行诊断和处理。

1、如果提交STRTCPSVR *DDM 命令后,但446 端口不处于侦听状态,则用WRKJOB QRWTLSTN 检查 QRWTLSTN 生成的作业记录。
2、当首次启动STRTCPSVR *DDM时,系统在IFS中 /QIBM/ProdData/OS400/DRDA 目录中创建名为endSock 的 UNIX 套接字,在这目录路径中每个目录必须存在,否则QRWTLSTN会自动结束,并在作业记录中发现错误信息:
MSGCPE3465 F/QRWXDLL *STMT T/QRWXDLL *STMT, No such file or directory.
此时用户应该用MDDIR创建所需的目录。
 
是否先要用ADDRDBDIRE创建数据库连接,在创建时设定参数 RMTAUTMTH(*USRIDPWD),然后再启动DDM服务STRTCPSVR *DDM,这样应该实现了不需要执行CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO)修改参数,同时也保证了数据安全,因为系统会提示输入USRPRF和PASSWORD才能执行更新PF。


我这里的DDMF是SNA 的,不是TCP的。DMTCP属性是 PWDRQD(*YES),系统值QRETSVRSEC是'0',但可以通过UPDDTA增加、删除记录。                                      
阅读(3684) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~