TDBXMetaDataError Metadata GetIndexes

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for Oracle in Delphi and C++Builder
Post Reply
Eurocg
Posts: 14
Joined: Tue 15 Jul 2008 08:11
Location: Germany

TDBXMetaDataError Metadata GetIndexes

Post by Eurocg » Wed 31 Jan 2018 10:43

Hey Guys,

we have some strange problem at one of our customers.

We get the following error when our application tries to open a dataset from one table. This error occurs only by this customer. We already dump the complete database into our Oracle installation (Same Version as the customer has: 11.2.0.4.0), and we dont get this error. So we cant reproduce the error in our test-environment.

Whats happening:

Code: Select all

...
dm1.SQLDataSet1.Close;
dm1.SQLDataSet1.CommandText := 'SELECT * FROM T_DruDoc WHERE drdnr = ' + nr1;
dm1.SQLDataSet1.Open; << Line 649 from FormDLL.pas
dm1.SQLDataSet1.First;
...
Class: TDBXMetaDataError
Message: Der Metadatenbefehl Getlndexes konnte nicht analysiert werden. Problem befindet sich in der Nähe von: Originalabfrage: Getlndexes eurowigT.mainz.de. DB3219 . T_DRUDOC ."

Stacktrace:
[0E5A0DFAKeurowig_report.dll} Data.DBXMetaDataReader.TDBXBaseMetaDataReader.ParseDone [0E5A062EKeurowig_report.dll} Data.DBXMetaDataReader.TDBXBaseMetaDataReader.ParseGetObjectName [0E59FECBHeurowig_report.dll} Data.DBXMetaDataReader.TDBXBaseMetaDataReader.ParseMetaDataCommand [0E5A0E7B]{eurowig_report.dll} Data.DBXMetaDataReader.TDBXBaseMetaDataReader.FetchCollection [0E485F87Heurowig_report.dll} Data.DBXCommon.TDBXCommand.GetText
[0E5A6CF3Heurowig_report.dll} Data.DBXMetaDataCommandFactory.TDBXMetaDataCommand.DerivedExecuteQuery
[0E485D95Keurowig_report.dll} Data.DBXCommon.TDBXCommand.ExecuteQuery
[0E4862E3]{eurowig_report.dll} Data.DBXCommon.TDBXMorphicCommand.ExecuteQuery
[0E522C1C]{eurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.OpenSchema
[0E520BAE]{eurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.ExecuteStatement
[0E519D2CHeurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.InternalOpen
[0E3FDEEEKeurowig_report.dll} Data.DB.TDataSet.DolnternalOpen
[0E3FDF9EHeurowig_report.dll} Data.DB.TDataSet.OpenCursor
[0E519E67]{eurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.OpenCursor
[0E3FDE55]{eurowig_report.dll} Data.DB.TDataSet.SetActive
[0E51728E]{eurowig_report.dll} Data.SqlExpr.TSQLConnection.OpenSchemaTable
[0E521ADEKeurowig_report.dll} Data.SqlExpr.TCustomSQLDataSetAddlndexDefs
[0E5232EC]{eurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.PSGetKeyFields
[0E3FE5B2Heurowig_report.dll} Data.DB.SetKeyFields
[0E3FE873Heurowig_report.dll} Data.DB.TDataSet.CreateFields
[0E519D78Heurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.InternalOpen
[0E3FDEEEKeurowig_report.dll} Data.DB.TDataSet.DolnternalOpen
[0E3FDF9EHeurowig_report.dll} Data.DB.TDataSet.OpenCursor
[0E519E67]{eurowig_report.dll} Data.SqlExpr.TCustomSQLDataSet.OpenCursor
[0E3FDE55]{eurowig_report.dll} Data.DB.TDataSet.SetActive
[0E3FDC91 Heurowig_report.dll} Data.DB.TDataSet.Open
[0E9B9DC7Keurowig_report.dll} FormDLLTfrmDLLbtnBioLifePrintClick (Line 649, "FormDLLpas")
[0E9C546EKeurowig_report.dll} FormDLLTfrmDLLMYMessage (Line 2470, "FormDLLpas")
[0E2CB62EKeurowig_report.dll} Vcl.Controls.TControl.WndProc
[0E2D01A1]{eurowig_report.dll} Vcl.Controls.TWinControl.WndProc
[0E179E30]{eurowig_report.dll} System.TMonitor.TryEnter
[0E17998C]{eurowig_report.dll} System.TMonitor.Enter
[0E17980C]{eurowig_report.dll} System.TMonitor.CheckOwningThread
[0E179B1AKeurowig_report.dll} System.TMonitor.Exit
[0E179B6B]{eurowig_report.dll} System.TMonitor.Exit
[0E2A15C7Keurowig_report.dll} Vcl.Graphics.FreeMemoryContexts
[0E2CF7C0Heurowig_report.dll} Vcl.Controls.TWinControl.MainWndProc
[0E2CF7D5Heurowig_report.dll} Vcl.Controls.TWinControl.MainWndProc
[0E248760]{eurowig_report.dll} System.Classes.StdWndProc
[0E2D01A1]{eurowig_report.dll} Vcl.Controls.TWinControl.WndProc
[0E3AD599Keurowig_report.dll} Vcl.Forms.TCustomForm.WndProc
[0E2CF7C0Heurowig_report.dll} Vcl.Controls.TWinControl.MainWndProc
[0E248760]{eurowig_report.dll} System.Classes.StdWndProc
[0E3B6F37Keurowig_report.dll} Vcl.Forms.TApplication.ProcessMessage
[0E3B6F7AHeurowig_report.dll} Vcl.Forms.TApplication.HandleMessage
[0E3B2336Keurowig_report.dll} Vcl.Forms.TCustomForm.ShowModal
[0E9C6E2BHeurowig_report.dll} FormDLL.Eurowig_ShowForm (Line 2851, "FormDLLpas")

Environment:
Clients:
Windows 8.1 and Windows 10
Oracle 32bit Client 11.2.0.4
Server:
Linux
Oracle 64bit Server 11.2.0.4

Our Approaches so far:
  • Select in SQL Plus or SQL Developer with same User Account / Schema => Worked
  • Tried with SELECT * FROM T_DRUDOC and also specified some Columns testwise (SELECT col1, col2 FROM T_DRUDOC) => Worked not, same error
  • DB-Connection-User owned the DBA Right => Worked not, same error
  • Imported database to our testsystem => Worked
Do you guys have any idea whats happening here?
Last edited by Eurocg on Thu 01 Feb 2018 07:47, edited 1 time in total.

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

Re: TDBXMetaDataError Metadata GetIndexes

Post by MaximG » Wed 31 Jan 2018 15:58

Unfortunately, the information you provided is not sufficient to reproduce the problem in our environment. Please try to execute the query against the T_DruDoc table without using our driver (for example in the SQL*Plus utility) and let us know about the results. Perhaps, you can provide a remote limited access to the database instance that your customer is working with.

Eurocg
Posts: 14
Joined: Tue 15 Jul 2008 08:11
Location: Germany

Re: TDBXMetaDataError Metadata GetIndexes

Post by Eurocg » Thu 01 Feb 2018 07:45

Thanks for your replay, but:

1. We can't reproduce the problem by our testservers as well. So for sure, my informations aren't enough for you too, to reproduce the problem, we can't do it as well. ;-)
2. The select to this table is working great in sql developer or sql plus with the used database user. In front of this, is a seperate application wich uses a different technologie, wich can read / write to the specified table.
3. I don't think a remote debug session is possible.

Any Ideas what we can test / do now?

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

Re: TDBXMetaDataError Metadata GetIndexes

Post by MaximG » Fri 02 Feb 2018 15:21

Unfortunately, we cannot give you any recommendations, following which it would be possible to fix the error that occurs. For this, we need to investigate the reasons for its occurrence, and without reproducing the issue, this is impossible. Test the behavior of your application in another environment using the same
server.

Eurocg
Posts: 14
Joined: Tue 15 Jul 2008 08:11
Location: Germany

Re: TDBXMetaDataError Metadata GetIndexes

Post by Eurocg » Wed 02 May 2018 06:11

Hello Guys,

we could finally find the problem. It occurs when a ".mydomain.de" is appended to the TNSNAMES connection name. The TNS-Names entry at our Customer looks like the following:

Code: Select all

eurowig[b].mydomain.de[/b] = 
   (DESCRIPTION = (SDU=32767) 
      (ADDRESS_LIST = 
             (ADDRESS = (PROTOCOL = TCP) (HOST = d2-l-orac-01.ad.mydomain.de)(PORT = 1521)) 
         (ADDRESS = (PROTOCOL=TCP)(HOST= d2-l-orap-01.ad.mydomain.de)(PORT=1521)) 
         (ADDRESS = (PROTOCOL=TCP)(HOST= d2-l-oras-01.ad.mydomain.de)(PORT=1521)) 
      ) 
      (FAILOVER=YES) 
      (CONNECT_DATA = 
         (SERVICE_NAME = eurowiC) 
      ) 
   ) 
If our customer removes the .mydomain.de of the TNS Names Entry, all seems to work great. An very old Version of the dbexpoda40.dll (5.0.1.0 from 2011-09-16) doesn't have any problems with this syntax. But when we upgrade our program and the correspoding dbexpoda40.dll (6.10.15.0 from 2017-04-27), we get the already named problem. Please test this at your labs and give us feedback.

Our customer cannot remove this domain-syntax cause he has more than 20 tns entries and multiple domains, so this issue has to be fixed.

Thanks in advance,
Graack

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

Re: TDBXMetaDataError Metadata GetIndexes

Post by MaximG » Sat 05 May 2018 06:30

Thank you for providing the information. TNSNAMES.ORA is a configuration file for SQL*Net. It's Oracle client that exclusively processes the addresses indicated in it and we cannot affect this behavior. You can test the ability to connect to the database using the provided alias "eurowig.mydomain.de" without using our driver with any convenient tool, for example Oracle SQL*Plus or Oracle SQLDeveloper.

Post Reply