Oracle Single Client Access Name (SCAN)

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
darkeagle
Posts: 2
Joined: Tue 24 Nov 2015 06:08

Oracle Single Client Access Name (SCAN)

Post by darkeagle » Tue 24 Nov 2015 06:13

Hi,

does uniDAC support a login with the Oracle Single Client Access Name (Scan)?

For more informations: http://www.oracle.com/technetwork/produ ... 129069.pdf

Thanks

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: Oracle Single Client Access Name (SCAN)

Post by MaximG » Tue 24 Nov 2015 09:14

Oracle Single Client Access Name provides access to Oracle RAC with the EZConnect technology. UniDAC supports EZConnect for connection to Oracle. Therefore there mustn't be any issues when using Oracle SCAN with UniDAC. However, we haven't tested such connections in our test environment.

darkeagle
Posts: 2
Joined: Tue 24 Nov 2015 06:08

Re: Oracle Single Client Access Name (SCAN)

Post by darkeagle » Tue 24 Nov 2015 09:31

Thank you for this information. I found in the history that this feature was added in April 2015.
Is there any example how to connect in direct mode to with ORACLE RAC?

In the documentation I found nothing for EZCONNECT and ORACLE RAC.

Thanks

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: Oracle Single Client Access Name (SCAN)

Post by MaximG » Tue 24 Nov 2015 13:35

A small test application demonstrates the specificity of connection to Oracle using EZConnect in Direct Mode :

Code: Select all

program Connect2SCANApp;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, DB, Ora;

var
  OraSession: TOraSession;
begin
  OraSession := TOraSession.Create(nil);
  try
    OraSession.Options.Direct := True;
    OraSession.Server := '< SCAN Name >:1521/< SID Name>';
    OraSession.Username := '< User Name >';
    OraSession.Password := '< Password >';
    OraSession.Connect;
    if OraSession.Connected then
      WriteLn('Connected !');
    ReadLn;
    OraSession.Disconnect;
  finally
    OraSession.Free;
  end;
end.

WaD
Posts: 2
Joined: Mon 14 Dec 2015 15:50

Re: Oracle Single Client Access Name (SCAN)

Post by WaD » Mon 14 Dec 2015 16:21

Hello,

I received a strange error message right after i tried to connect to an Oracle 12c DB via SCAN (UniDAC 6.2.8 for RAD Studio 2010, Direct connection without Oracle Client):

"Net: Invalid port: ."

ORA-12505 pops up when i try to connect to a non existing SID so the server property is correct because the listener answers it.

Could you please help me to fix this problem?

Here are the details:

Code: Select all

[0B5F1EBE]{oraprovider140.bpl} Oraclassesuni.TOCIConnection.OraError + $1CE
[0B5F1CE8]{oraprovider140.bpl} Oraclassesuni.TOCIConnection.Check + $18
[0B5F2F90]{oraprovider140.bpl} Oraclassesuni.TOCIConnection.InitSessionParameters + $944
[0B5F36BF]{oraprovider140.bpl} Oraclassesuni.TOCIConnection.Connect + $213
[069ACF66]{unidac140.bpl} Uni.TUniConnection.GetITransactionClass + $22
[067C27BB]{dac140.bpl  } Craccess.TCRConnection.SetServer + $B
[067977D6]{dac140.bpl  } Dbaccess.TCustomDAConnection.DoConnect + $DE
[069AD537]{unidac140.bpl} Uni.TUniConnection.DoConnect + $2F
[06797B0F]{dac140.bpl  } Dbaccess.TCustomDAConnection.PerformConnect + $37
[0689EC8B]{dcldac140.bpl} Daconnectioneditor.TDAConnectionEditorForm.PerformConnect + $B
[0689EA4B]{dcldac140.bpl} Daconnectioneditor.TDAConnectionEditorForm.btConnectClick + $3F
[502963DB]{vcl140.bpl  } Controls.TControl.Click (Line 7178, "Controls.pas" + 9) + $8
[501EDED2]{vcl140.bpl  } StdCtrls.TCustomButton.Click (Line 4516, "StdCtrls.pas" + 3) + $2
[501EE938]{vcl140.bpl  } StdCtrls.TCustomButton.CNCommand (Line 4953, "StdCtrls.pas" + 1) + $D
[50295E70]{vcl140.bpl  } Controls.TControl.WndProc (Line 7062, "Controls.pas" + 91) + $6
[5029A738]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9819, "Controls.pas" + 144) + $6
[501EDB98]{vcl140.bpl  } StdCtrls.TButtonControl.WndProc (Line 4364, "StdCtrls.pas" + 13) + $4
[50295A94]{vcl140.bpl  } Controls.TControl.Perform (Line 6840, "Controls.pas" + 10) + $8
[5029A88B]{vcl140.bpl  } Controls.DoControlMsg (Line 9888, "Controls.pas" + 12) + $11
[5029B2F3]{vcl140.bpl  } Controls.TWinControl.WMCommand (Line 10160, "Controls.pas" + 1) + $5
[50295E70]{vcl140.bpl  } Controls.TControl.WndProc (Line 7062, "Controls.pas" + 91) + $6
[5029A838]{vcl140.bpl  } Controls.TWinControl.DefaultHandler (Line 9860, "Controls.pas" + 30) + $17
[50295E70]{vcl140.bpl  } Controls.TControl.WndProc (Line 7062, "Controls.pas" + 91) + $6
[5029A738]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9819, "Controls.pas" + 144) + $6
[5007519D]{rtl140.bpl  } Classes.TComponent.UpdateAction (Line 12193, "Classes.pas" + 1) + $6
[20D8C74E]{designide140.bpl} DeskUtil.SetFocusHook (Line 454, "DeskUtil.pas" + 4) + $C
[50299DD8]{vcl140.bpl  } Controls.TWinControl.MainWndProc (Line 9540, "Controls.pas" + 3) + $6
[50076408]{rtl140.bpl  } Classes.StdWndProc (Line 13015, "Classes.pas" + 8) + $0
[5029A738]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9819, "Controls.pas" + 144) + $6
[50009F92]{rtl140.bpl  } System.@IsClass (Line 9738, "System.pas" + 1) + $8
[5029A838]{vcl140.bpl  } Controls.TWinControl.DefaultHandler (Line 9860, "Controls.pas" + 30) + $17
[5029682C]{vcl140.bpl  } Controls.TControl.WMLButtonUp (Line 7311, "Controls.pas" + 1) + $6
[50295E70]{vcl140.bpl  } Controls.TControl.WndProc (Line 7062, "Controls.pas" + 91) + $6
[50299FCB]{vcl140.bpl  } Controls.TWinControl.IsControlMouseMsg (Line 9596, "Controls.pas" + 1) + $9
[5029A738]{vcl140.bpl  } Controls.TWinControl.WndProc (Line 9819, "Controls.pas" + 144) + $6
[501EDB98]{vcl140.bpl  } StdCtrls.TButtonControl.WndProc (Line 4364, "StdCtrls.pas" + 13) + $4
[50299DD8]{vcl140.bpl  } Controls.TWinControl.MainWndProc (Line 9540, "Controls.pas" + 3) + $6
[50076408]{rtl140.bpl  } Classes.StdWndProc (Line 13015, "Classes.pas" + 8) + $0
[502C8775]{vcl140.bpl  } Forms.TApplication.ProcessMessage (Line 9760, "Forms.pas" + 30) + $1
[502C87BA]{vcl140.bpl  } Forms.TApplication.HandleMessage (Line 9790, "Forms.pas" + 1) + $4
[502C3FE5]{vcl140.bpl  } Forms.TCustomForm.ShowModal (Line 6643, "Forms.pas" + 33) + $5
[0689E3F6]{dcldac140.bpl} Daconnectioneditor.TDAConnectionEditorForm.SetComponent + $E
[0688A7B8]{dcldac140.bpl} Crdesign.TCRComponentEditor.ShowEditorEx + $8C
[0688A706]{dcldac140.bpl} Crdesign.TCRComponentEditor.ShowEditor + $32
[068A8E96]{dcldac140.bpl} Dadesign.TDAComponentEditor.ShowEditor + $46
[068A8EAC]{dcldac140.bpl} Dadesign.TDAComponentEditor.ShowEditor + $5C
[0688AAD1]{dcldac140.bpl} Crdesign.TCRComponentEditor.Edit + $D
[20DD68F1]{designide140.bpl} ComponentDesigner.TInternalItem.Edit (Line 7085, "ComponentDesigner.pas" + 1) + $F
[20DAECC8]{designide140.bpl} Designer.TDesigner.Edit (Line 965, "Designer.pas" + 0) + $4
[20DB0F3F]{designide140.bpl} Designer.TDesigner.MouseDown (Line 1659, "Designer.pas" + 45) + $6
[51A190AD]{vcldesigner140.bpl} VCLSurface.TComponentToolWindow.WndProc (Line 1327, "VCLSurface.pas" + 16) + $32
[51A19B4A]{vcldesigner140.bpl} VCLSurface.TContainer.WndProc (Line 1627, "VCLSurface.pas" + 39) + $6
[51A18ECF]{vcldesigner140.bpl} VCLSurface.TDesignerToolWindow.MainWndProc (Line 1262, "VCLSurface.pas" + 2) + $7
[50076408]{rtl140.bpl  } Classes.StdWndProc (Line 13015, "Classes.pas" + 8) + $0
[5029098A]{vcl140.bpl  } Controls.FindControl (Line 3377, "Controls.pas" + 6) + $9
[502C8775]{vcl140.bpl  } Forms.TApplication.ProcessMessage (Line 9760, "Forms.pas" + 30) + $1
[502C87BA]{vcl140.bpl  } Forms.TApplication.HandleMessage (Line 9790, "Forms.pas" + 1) + $4
[502C8AE5]{vcl140.bpl  } Forms.TApplication.Run (Line 9927, "Forms.pas" + 26) + $3
[004369AE]{bds.exe     } bds.bds (Line 200, "" + 8) + $FFFB

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: Oracle Single Client Access Name (SCAN)

Post by MaximG » Tue 15 Dec 2015 14:56

Please clarify whether you can connect to the database in the OCI mode (e.g., using SQL*Plus). Unfortunately, we can't test connection to Oracle 12c DB via SCAN. Could you provide us access to your DB (with Connect Only permissions) for further investigation.

WaD
Posts: 2
Joined: Mon 14 Dec 2015 15:50

Re: Oracle Single Client Access Name (SCAN)

Post by WaD » Wed 16 Dec 2015 09:38

Hello MaximG,

I can connect to the database without any problem using the Oracle client (SQL*Plus) and instant client as well. Unfortunatley I can not grant access to the DB (security policy) but I will try to get help from our Oracle expert - maybe he can set up a local listener on both nodes. The connection is fine (via UniDAC) to an other Oracle 12c DB where SCAN is not used.

MaximG
Devart Team
Posts: 1822
Joined: Mon 06 Jul 2015 11:34

Re: Oracle Single Client Access Name (SCAN)

Post by MaximG » Wed 16 Dec 2015 11:59

Thank you for being interested in our products. In case if you can give us limited access to your Oracle 12c DB via SCAN, we will be able to investigate the issue in more details.

Post Reply