[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference orarep::nomahs::rdb_60

Title:Oracle Rdb - Still a strategic database for DEC on Alpha AXP!
Notice:RDB_60 is archived, please use RDB_70..
Moderator:NOVA::SMITHISON
Created:Fri Mar 18 1994
Last Modified:Fri May 30 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:5118
Total number of notes:28246

5034.0. "Bug with TCP/IP and Rdb Remote Proxy access?" by M5::LSMITH () Mon Feb 17 1997 12:11

Hi,

OpenVMS V6.2 (VAX or Alpha)
Rdb V6.1A or V6.1-04
UCX=DEC TCP/IP Services for OpenVMS VAX Version V3.3 - ECO Level 1
    DEC TCP/IP Services for OpenVMS AXP Version V3.3 - ECO Level 1

A customer is experiencing a problem with Rdb remote proxy access using TCP/IP.

Remote proxy access using DECNET works fine.  Remote access using TCP/IP 
works fine when a username and password is specified, and the rdbserver object
does not have the proxy flag set.  Proxy access to the same node (FORCE) 
using the TCP/IP RSH service works also.

If the rdbserver object has the proxy flag set, NEITHER remote proxy access or 
explicit remote access works.  The request hangs.  Notice that the RDB_BG9250
process is never created.

I have reproduced this behavior on our Oracle Test cluster.  It looks like a 
bug, but maybe there is another answer.

Below is the output produced when the dsp_debug_flags is defined to true in 
the RDB$CLIENT_DEFAULTS.DAT file.  I have also included the information from 
UCX.

Input is appreciated.

Thanks,
Lisa


*** UNSUCCESSFUL PROXY ACCESS ***

BLANCA>ucx
UCX> show service rdbserver /full
 
Service: RDBSERVER
                           State:     Enabled
Port:                1     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name: RDB$REMOTE      Process:  RDB
Limit:              10     Active:      0             Peak:       0
 
File:         SYS$SYSTEM:RDBSERVER.COM
Flags:        Listen Proxy
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     None
 File:        not defined
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
 Accept netw: 0.0.0.0

UCX> show service rsh /full
 
Service: RSH
                           State:     Enabled
Port:              514     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name:                 Process:  UCX$RSHD
Limit:               3     Active:      0             Peak:       1
 
File:         SYS$SYSDEVICE:[UCX$RSH]UCX$RSHD_STARTUP.COM
Flags:        Case Listen Proxy Rexe
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     Acpt Actv Dactv Conn Error Exit Mdfy Rjct TimO Addr
 File:        not defined
 
Separators:
 Port:   0    User_name: 0    Password:  0    Command:  0
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
Accept netw: 0.0.0.0

UCX> show proxy lsmith
 
VMS User_name     Type      User_ID    Group_ID   Host_name

LSMITH            CD     LSMITH                   LONGS
LSMITH            C      LSMITH                   BLANCA



LONGS>ucx
UCX> show service rdbserver /full
 
Service: RDBSERVER
                           State:     Enabled
Port:                1     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name: RDB$REMOTE      Process:  RDB
Limit:              10     Active:      0             Peak:       0
 
File:         SYS$SYSTEM:RDBSERVER.COM
Flags:        Listen Proxy
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     None
 File:        not defined
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
 Accept netw: 0.0.0.0

UCX> show service rsh /full
 
Service: RSH
                           State:     Enabled
Port:              514     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name:                 Process:  UCX$RSHD
Limit:               3     Active:      0             Peak:       1
 
File:         SYS$SYSDEVICE:[UCX$RSH]UCX$RSHD_STARTUP.COM
Flags:        Case Listen Proxy Rexe
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     Acpt Actv Dactv Conn Error Exit Mdfy Rjct TimO Addr
 File:        not defined
 
Separators:
 Port:   0    User_name: 0    Password:  0    Command:  0
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
 Accept netw: 0.0.0.0

UCX> show proxy lsmith
 
VMS User_name     Type      User_ID    Group_ID   Host_name

LSMITH            CD     LSMITH                   BLANCA




BLANCA>type sys$login:RDB$CLIENT_DEFAULTS.DAT
sql_network_transport_type tcpip
dsp_debug_flags true

BLANCA>define/system RDB$SYSTEM_DEFAULTS sys$login:RDB$CLIENT_DEFAULTS.DAT
BLANCA>show logical RDB$SYSTEM_DEFAULTS
   "RDB$SYSTEM_DEFAULTS" = "SYS$LOGIN:RDB$CLIENT_DEFAULTS.DAT" (LNM$SYSTEM_TABLE
)

BLANCA>rmu/show version
Executing RMU for DEC Rdb V6.1-1

LONGS>rmu/show version
Executing RMU for DEC Rdb V6.1-04

BLANCA>sql
** CLIENT: Loading image SYS$COMMON:[SYSLIB]RDB$SHARE.EXE

SQL> attach 'file longs::DISK$USR1:[LSMITH.rdb61]mf_personnel';
** CLIENT: Engine config filename = SYS$COMMON:[SYSLIB]rdb$engine_configuration.
dat
** CLIENT: The parsed database filename = LONGS::DISK$USR1:[LSMITH.RDB61]MF_PERS
ONNEL
** CLIENT: security:  Calling cosi_implicit_authent_client.
** CLIENT: security: status from cosi_implicit_authenticate_client =  0X1
** CLIENT: security: implicit authenticate subcode... =  0X1
** CLIENT: security: implicit authenticate port number =  0X0
** CLIENT: Calling cosi_ipc_allocate_connection for service RdbServer
** CLIENT: Calling cosi_ipc_connect to node LONGS

LONGS>show system/network
OpenVMS V6.2  on node LONGS  17-FEB-1997 09:14:50.25  Uptime  69 08:35:57
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages
2E000092 EVL             HIB      6       73   0 00:00:00.16      1615     32  N
2E0000A1 SERVER_0050     LEF      6     5081   0 00:00:06.80      5233     82  N
2E0002E2 UCX$PORTM       LEF     10      222   0 00:00:00.31      1178     22  N
2E0027E8 UCX$FTPD        LEF     10      540   0 00:00:00.38       278    197  N
2E001B69 UCX$FTPC_1      LEF      6     5592   0 00:00:19.26       358    214  N
2E00276A UCX$FTPC_2      LEF      6     5617   0 00:00:19.91       367    211  N
2E00066C WWW server 8000 HIB      6   130408   0 00:00:42.60      7156     93  N
2E00066F SERVER_0002     LEF      6    75354   0 00:01:08.91     22349     97  N
2E000670 SERVER_0001     LEF      6      435   0 00:00:01.00       447     88  N
LONGS>


 Interrupt 

BLANCA>exit
BLANCA>sql
** CLIENT: Loading image SYS$COMMON:[SYSLIB]RDB$SHARE.EXE

SQL> attach 'file longs::DISK$USR1:[LSMITH.RDB61]MF_PERSONNEL.RDB user ''lsmith'
' using ''my_password''';
** CLIENT: Engine config filename = SYS$COMMON:[SYSLIB]rdb$engine_configuration.
dat
** CLIENT: The parsed database filename = LONGS::DISK$USR1:[LSMITH.RDB61]MF_PERS
ONNEL.RDB
** CLIENT: Calling cosi_ipc_allocate_connection for service RdbServer
** CLIENT: Calling cosi_ipc_connect to node LONGS

LONGS>show system/network
OpenVMS V6.2  on node LONGS  17-FEB-1997 09:16:46.66  Uptime  69 08:37:53
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages
2E000092 EVL             HIB      6       73   0 00:00:00.16      1615     32  N
2E0000A1 SERVER_0050     LEF      6     5081   0 00:00:06.80      5233     82  N
2E0002E2 UCX$PORTM       LEF     10      222   0 00:00:00.31      1178     22  N
2E0027E8 UCX$FTPD        LEF     10      540   0 00:00:00.38       278    197  N
2E001B69 UCX$FTPC_1      LEF      6     5592   0 00:00:19.26       358    214  N
2E00276A UCX$FTPC_2      LEF      6     5617   0 00:00:19.91       367    211  N
2E00066C WWW server 8000 HIB      6   130408   0 00:00:42.60      7156     93  N
2E00066F SERVER_0002     LEF      6    75354   0 00:01:08.91     22349     97  N
2E000670 SERVER_0001     LEF      6      435   0 00:00:01.00       447     88  N


 Interrupt 

BLANCA>exit
BLANCA>rsh longs dir *checksum*

Directory DISK$USR1:[LSMITH]

CHECKSUM_ERROR.TXT;2

Total of 1 file.


LONGS>rsh blanca dir *checksum*

Directory DISK$USR1:[LSMITH]

CHECKSUM_ERROR.TXT;2

Total of 1 file.




*** SUCCESSFUL IMPLICIT ACCESS ***

BLANCA>
UCX> show service rdbserver /full
 
Service: RDBSERVER
                           State:     Enabled
Port:                1     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name: RDB$REMOTE      Process:  RDB
Limit:              10     Active:      0             Peak:       0
 
File:         SYS$SYSTEM:RDBSERVER.COM
Flags:        Listen
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     None
 File:        not defined
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
 Accept netw: 0.0.0.0


LONGS>ucx
UCX> show service rdbserver /full
Service: RDBSERVER
                           State:     Enabled
Port:                1     Protocol:  TCP             Address:  0.0.0.0
Inactivity:          5     User_name: RDB$REMOTE      Process:  RDB
Limit:              10     Active:      0             Peak:       0
 
File:         SYS$SYSTEM:RDBSERVER.COM
Flags:        Listen
 
Socket Opts:  Rcheck Scheck
 Receive:            0     Send:               0
 
Log Opts:     None
 File:        not defined
 
Security
 Reject msg:  not defined
 Accept host: 0.0.0.0
 Accept netw: 0.0.0.0



BLANCA>sql
** CLIENT: Loading image SYS$COMMON:[SYSLIB]RDB$SHARE.EXE

SQL> attach 'file longs::DISK$USR1:[LSMITH.RDB61]MF_PERSONNEL.RDB user ''lsmith'
' using ''my_password''';
** CLIENT: Engine config filename = SYS$COMMON:[SYSLIB]rdb$engine_configuration.
dat
** CLIENT: The parsed database filename = LONGS::DISK$USR1:[LSMITH.RDB61]MF_PERS
ONNEL.RDB
** CLIENT: Calling cosi_ipc_allocate_connection for service RdbServer
** CLIENT: Calling cosi_ipc_connect to node LONGS
** SERVER: Process PID = 2e0026a9
** SERVER: Loading image SYS$COMMON:[SYSLIB]RDB$SHARE.EXE
** SERVER: Engine config filename = SYS$COMMON:[SYSLIB]rdb$engine_configuration.
dat
** SERVER: The parsed database filename = DISK$USR1:[LSMITH.RDB61]MF_PERSONNEL.R
DB;1
** SERVER: Loading image RDMSHR
** SERVER: security: status from extract_from_buffer =  0X1
** SERVER: security:  calling cosi_authenticate for explicit authent.
** SERVER: security:  username  = lsmith
** SERVER: security:  password  = my_password
** SERVER: security: status from cosi_authenticate =  0X1
SQL> show database
** CLIENT: trn::trn - TRN CREATED - trn_obj =  0X374540
** CLIENT:
** CLIENT: trn::start; trn_obj =  0X374540
** CLIENT: trn::start; user addr =  0X52c98
** CLIENT: trn::start; Contents of user_address =  0X0
** CLIENT: rdb_ddtm_trn_cls::tm_set_tid; Setting TID to all zeros since the TID
address is 0
** CLIENT: trn::check_mask - 2PC bit is set
** CLIENT: ddtm_trn_cls::tm_is_tid_zero; TID contains all zeros
** CLIENT: ddtm_trn_cls::tm_is_tid_zero; TID contains all zeros
** CLIENT: trn:check_mask: write count=0, tid=0. Turning off 2pc
** CLIENT: trn::start: 2pc involved =  0X0
** CLIENT: trn::start; Parent node BLANCA
** CLIENT: trn::start; db_obj =  0X370358
** SERVER: trn::trn - TRN CREATED - trn_obj =  0Xe58008
** SERVER:
** SERVER: trn::start; trn_obj =  0Xe58008
** SERVER: trn::start; user addr =  0X7ee37688
** SERVER: trn::start; Contents of user_address =  0X0
** SERVER: rdb_ddtm_trn_cls::tm_set_tid; Setting TID to all zeros since the TID
address is 0
** SERVER: trn::check_mask - From server (default 2pc)
** SERVER: check_mask::start - NO 2PC bit is set
** SERVER: ddtm_trn_cls::tm_is_tid_zero; TID contains all zeros
** SERVER: ddtm_trn_cls::tm_is_tid_zero; TID contains all zeros
** SERVER: trn:check_mask: write count=0, tid=0. Turning off 2pc
** SERVER: trn::start: 2pc involved =  0X0
** SERVER: trn::start; Parent node BLANCA
** SERVER: trn::start; db_obj =  0X33cfb8
** SERVER: trn::start - rci trn handle =  0Xe58114
** SERVER: trn::start - trn_db_count =  0X1
** SERVER:
** CLIENT: trn::start - rci trn handle =  0X37464c
** CLIENT: trn::start - trn_db_count =  0X1
** CLIENT:
Default alias:
    Rdb database in file longs::DISK$USR1:[LSMITH.RDB61]MF_PERSONNEL.RDB
** CLIENT:
** CLIENT: trn::rollback; trn_obj =  0X374540
** CLIENT: trn::rollback; calling engine - db_obj =  0X370358
** SERVER:
** SERVER: trn::rollback; trn_obj =  0Xe58008
** SERVER: trn::rollback; calling engine - db_obj =  0X33cfb8
** SERVER: sbtrn::~sbtrn - destructing sbtrn 0X1a5810
** SERVER: trn::rollback;  zero out in_transid->handle
** SERVER: trn::~rdb_trn_cls - TRN Deleted - trn_obj =  0Xe58008
** SERVER: trn::~rdb_trn_cls - TRN handle =  0Xe58114
** CLIENT: sbtrn::~sbtrn - destructing sbtrn 0X36afe8
** CLIENT: sbtrn::~sbtrn - freeing new remote handle 0X0
** CLIENT: trn::rollback;  zero out in_transid->handle
** CLIENT: trn::~rdb_trn_cls - TRN Deleted - trn_obj =  0X374540
** CLIENT: trn::~rdb_trn_cls - TRN handle =  0X37464c
** CLIENT: trn::clear_user_address; trn_obj =  0X374540
** CLIENT: trn::clear_user_address; user_address =  0X7fe813bc

LONGS>show system/network
OpenVMS V6.2  on node LONGS  17-FEB-1997 09:31:02.82  Uptime  69 08:52:10
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages
2E000092 EVL             HIB      6       73   0 00:00:00.16      1615     32  N
2E0000A1 SERVER_0050     LEF      6     5081   0 00:00:06.80      5233     82  N
2E000CB4 RDB_BG9250      LEF      4      324   0 00:00:00.67       576    693  N
2E0002E2 UCX$PORTM       LEF     10      222   0 00:00:00.31      1178     22  N
2E0027E8 UCX$FTPD        LEF     10      540   0 00:00:00.38       278    197  N
2E001B69 UCX$FTPC_1      LEF      6     5592   0 00:00:19.26       358    214  N
2E00276A UCX$FTPC_2      LEF      6     5617   0 00:00:19.91       367    211  N
2E00066C WWW server 8000 HIB      6   130408   0 00:00:42.61      7156     93  N
2E00066F SERVER_0002     LEF      6    75354   0 00:01:08.91     22349     97  N
2E000670 SERVER_0001     LEF      6      435   0 00:00:01.00       447     88  N


T.RTitleUserPersonal
Name
DateLines
5034.1NOVA::DICKSONMon Feb 17 1997 12:316
    "Proxy" access is a DECnet thing.   The DECnet protocols pass some
    account information along.  TCP/IP does not do this.
    
    Therefore you can't do VMS "proxy" access over a TCP/IP link.
    You must use the USER/USING fields, or put the account name and
    password in the RDB$CLIENT_DEFAULTS.DAT file.
5034.2Proxy access needed for the rdbserver accountM5::LSMITHMon Feb 17 1997 14:4514
    
    Thanks for the reply.
    
    Further testing showed that if I set up a proxy in TCP/IP on both the 
    source node and the target node for the account associated with the
    rdbserver object (in this case, rdb$remote), I could access the
    database.  Of course, I had to grant select+show access for the
    rdb$remote account on the database and tables.  This is a reasonable
    solution for read only access.  Actually, this seems to work similar to
    DECnet.
    
    Thanks again.
    
    Lisa
5034.3Digital states UCX does proxy accessM5::LSMITHMon Feb 17 1997 18:1839
    
    I'm afraid I still need some help with this.
    
    The customer wants to have individual authentication done.  He needs
    more then just read access, and he doesn't want to give rdb$remote
    write access.
    
    Actually, when I granted the rdb$remote account access to my db, and
    defined proxy access for rdb$remote in tcp/ip, I did not set up true 
    proxy access.
    
    The customer has called Digital and talked to them about proxy access
    via UCX (tcp/ip).  Digital stated to the customer, that UCX does allow
    proxy access to be done, but it is the responsibility of the
    application (Rdb) to check the proxy flag, and if it is set, then check
    the UCX proxy database to see if the proxy is defined.
    
    For example:  
    lsmith is defined in the UCX proxy database on the source and target nodes
    the proxy flag is on for the UCX rdbserver services
    rdb$share would check the proxy flag and see that it is on
    rdb$share would then check the proxy database for authentication
    the RDB_BGn service would be created under the username of lsmith
    database access would be done via lsmith
    
    The customer strongly believes that proxy access is possible via UCX,
    and that Rdb is lacking in functionality and not taking advantage of
    it.
    
    I would like to give him an official product response.
    
    Help is appreciated.
    
    Thanks,
    Lisa
    
    
    
    
5034.4NOVA::SMITHIDon't understate or underestimate Rdb!Tue Feb 18 1997 09:365
~    I would like to give him an official product response.

Then please use an official channel.

Ian
5034.5Is the TCP/IP protocols the limiting factorM5::LSMITHWed Feb 19 1997 16:5725
    
    RE: .1
    
    Maybe I am just not understanding your reply.  In .3, I was not
    discounting your answer in .1 as "unofficial", but was hoping 
    to get a detailed answer to provide to the customer.  If you 
    would please answer this reply, I would appreciate it.
    
    In my testing, I have found the following:
    1.  I can have a UCX proxy entry for the account associated with the 
    rdbserver service, thus eliminating the need for user/using
    
    2.  The drawback to 1 is that the RDB_BGn process on the target node 
    is created with the username associated with the rdbserver service, and 
    all db access is done via that username.
    
    Is it possible to modify Rdb so that UCX proxy access could be used,
    AND the RDB_BGn process on the target/remote node would be created using 
    the source/local username that initiated the request, or is 
    >"The DECnet protocols pass some account information along.  TCP/IP does
    >not do this"
    the limiting factor?
    
    Thanks,
    Lisa
5034.6DUCATI::LASTOVICAIs it possible to be totally partial?Thu Feb 20 1997 16:4120
re: .1
	At least with UCX, there does appear to be some ammount
of support for PROXY access.  Consider the ADD PROXY command in UCX:

       Format for Communication Proxies

                         { /HOST=host        }
         ADD PROXY  user { /REMOTE_USER=user } [ /PERMANENT ]
                         {                   }

	According to the UCX HELP ADD PROXY output:

       o  Communication proxy

          -  Provides an identity for users of RSH, RLOGIN, LPR/LPD,
             and customer-written services, if these services are
             marked with SET SERVICE /FLAGS=APPLICATION_PROXY.

	Presumably, Rdb could take advantage of this.  I imagine though
that it would require some ammount of coding.
5034.7ThanksM5::LSMITHThu Feb 20 1997 17:506
    
    re: .6
    
    Thanks Norm.  I appreciate it.
    
    Lisa