Oracle.ManagedDataAccess package added, related changes, ver. 2.26.1765

This commit is contained in:
Milan Hanajik 2021-10-01 10:59:19 +02:00
parent e6d35e5178
commit f854bf2277
21 changed files with 988 additions and 2 deletions

View File

@ -7,7 +7,11 @@ using System.Windows.Forms;
using log4net; using log4net;
using TBF.BenchControl.Sequences; using TBF.BenchControl.Sequences;
using TBF.Resources; using TBF.Resources;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client; using Oracle.DataAccess.Client;
#endif
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;

View File

@ -7,7 +7,11 @@ using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
using log4net; using log4net;
using NHibernate; using NHibernate;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client; using Oracle.DataAccess.Client;
#endif
using TracingDB; using TracingDB;
using TracingDB.Entities; using TracingDB.Entities;
using TBF.BenchControl.Sequences; using TBF.BenchControl.Sequences;

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("2.26.1764.0")] [assembly: AssemblyVersion("2.26.1765.0")]
[assembly: AssemblyFileVersion("2.26.1764.0")] [assembly: AssemblyFileVersion("2.26.1765.0")]

View File

@ -133,6 +133,9 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Oracle\Oracle.DataAccess.dll</HintPath> <HintPath>..\packages\Oracle\Oracle.DataAccess.dll</HintPath>
</Reference> </Reference>
<Reference Include="Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
<HintPath>..\packages\Oracle.ManagedDataAccess.19.11.0\lib\net40\Oracle.ManagedDataAccess.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet"> <Reference Include="Renci.SshNet">
<HintPath>..\packages\Renci.SshNet\Renci.SshNet.dll</HintPath> <HintPath>..\packages\Renci.SshNet\Renci.SshNet.dll</HintPath>
</Reference> </Reference>

View File

@ -6,7 +6,11 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using log4net; using log4net;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client; using Oracle.DataAccess.Client;
#endif
using Common; using Common;
using Config.Entities; using Config.Entities;
using Results.Output; using Results.Output;

View File

@ -3,7 +3,11 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using NHibernate; using NHibernate;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client; using Oracle.DataAccess.Client;
#endif
using Common; using Common;
using TBF.Resources; using TBF.Resources;
using TBF.BenchControl.Output.DB.SensusOracle; using TBF.BenchControl.Output.DB.SensusOracle;

View File

@ -6,7 +6,11 @@ using System.Collections.Generic;
using System.Windows.Forms; using System.Windows.Forms;
using NHibernate; using NHibernate;
using log4net; using log4net;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client; using Oracle.DataAccess.Client;
#endif
using Common; using Common;
using Results; using Results;
using Results.Entities; using Results.Entities;

View File

@ -0,0 +1,41 @@
$categoryName = "ODP.NET, Managed Driver"
try{
$categoryHelp = "$categoryName Performance Counter"
$categoryType = [System.Diagnostics.PerformanceCounterCategoryType]::MultiInstance
$categoryExists_reg = [System.Diagnostics.PerformanceCounterCategory]::Exists($categoryName)
if($categoryExists_reg)
{
[System.Diagnostics.PerformanceCounterCategory]::Delete($categoryName)
}
$counterCreationDataList = New-Object -TypeName System.Diagnostics.CounterCreationDataCollection
$counterCreationDataList.Clear()
$RateOfCountsPerSecond64 = [System.Diagnostics.PerformanceCounterType]::RateOfCountsPerSecond64
$NumberOfItems64 = [System.Diagnostics.PerformanceCounterType]::NumberOfItems64
$counterCreationData1 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'HardConnectsPerSecond', [string]::Empty, $RateOfCountsPerSecond64
$counterCreationData2 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'HardDisconnectsPerSecond', [string]::Empty, $RateOfCountsPerSecond64
$counterCreationData3 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'SoftConnectsPerSecond', [string]::Empty, $RateOfCountsPerSecond64
$counterCreationData4 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'SoftDisconnectsPerSecond', [string]::Empty, $RateOfCountsPerSecond64
$counterCreationData5 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfActiveConnectionPools', [string]::Empty, $NumberOfItems64
$counterCreationData6 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfInactiveConnectionPools',[string]::Empty, $NumberOfItems64
$counterCreationData7 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfActiveConnections', [string]::Empty, $NumberOfItems64
$counterCreationData8 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfFreeConnections', [string]::Empty, $NumberOfItems64
$counterCreationData9 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfPooledConnections', [string]::Empty, $NumberOfItems64
$counterCreationData10 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfNonPooledConnections', [string]::Empty, $NumberOfItems64
$counterCreationData11 = New-Object -TypeName System.Diagnostics.CounterCreationData -ArgumentList 'NumberOfReclaimedConnections', [string]::Empty, $NumberOfItems64
$counterCreationDataList.Add($counterCreationData1) | out-null
$counterCreationDataList.Add($counterCreationData2) | out-null
$counterCreationDataList.Add($counterCreationData3) | out-null
$counterCreationDataList.Add($counterCreationData4) | out-null
$counterCreationDataList.Add($counterCreationData5) | out-null
$counterCreationDataList.Add($counterCreationData6) | out-null
$counterCreationDataList.Add($counterCreationData7) | out-null
$counterCreationDataList.Add($counterCreationData8) | out-null
$counterCreationDataList.Add($counterCreationData9) | out-null
$counterCreationDataList.Add($counterCreationData10) | out-null
$counterCreationDataList.Add($counterCreationData11) | out-null
[System.Diagnostics.PerformanceCounterCategory]::Create($categoryName, $categoryHelp, $categoryType, $counterCreationDataList) | out-null
write-host("$categoryHelp was registered successfullly.")
}
catch{
write-host("ERROR: $categoryHelp registration failed.")
}

View File

@ -0,0 +1,12 @@
$categoryName = "ODP.NET, Managed Driver"
try{
$categoryExists_unreg = [System.Diagnostics.PerformanceCounterCategory]::Exists($categoryName)
if($categoryExists_unreg)
{
[System.Diagnostics.PerformanceCounterCategory]::Delete($categoryName) | out-null
}
write-host("$categoryName Performance Counter was un-registered successfullly.")
}
catch{
write-host("ERROR: $categoryName Performance Counter un-registration failed.")
}

View File

@ -0,0 +1,115 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configSections xdt:Transform="InsertIfMissing">
</configSections>
<configSections xdt:Transform="InsertBefore(/configuration/*[1])">
</configSections>
<!-- remove existing entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>
<!-- insert new entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</configSections>
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- If system.data tag is absent -->
<system.data xdt:Transform="InsertIfMissing">
<DbProviderFactories>
</DbProviderFactories>
</system.data>
<!-- If system.data tag is present, but DbProviderFactories tag is absent -->
<system.data>
<DbProviderFactories xdt:Transform="InsertIfMissing">
</DbProviderFactories>
</system.data>
<!-- remove existing ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>
<!-- add new ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Insert"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</DbProviderFactories>
</system.data>
<!-- If runtime tag is absent -->
<runtime xdt:Transform="InsertIfMissing">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>
<!-- If runtime tag is present, but assembly binding tag is absent -->
<runtime>
<assemblyBinding xdt:Transform="InsertIfMissing" xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>
<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- insert new entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Insert">
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- If oracle.manageddataaccess.client tag is absent -->
<oracle.manageddataaccess.client xdt:Transform="InsertIfMissing">
<version number="*">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- If version tag is absent -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="InsertIfMissing">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- If dataSources tag is absent -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="InsertIfMissing">
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- add entry if missing -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="InsertIfMissing" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>

View File

@ -0,0 +1,4 @@
<configuration>
<configSections>
</configSections>
</configuration>

View File

@ -0,0 +1,64 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- remove existing entry -->
<configSections>
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>
<!-- remove if section is empty -->
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>
<!-- remove if section is empty -->
<system.data>
<DbProviderFactories xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</system.data>
<system.data xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- remove if section is empty -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</runtime>
<runtime xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="Remove" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- remove if section is empty -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</version>
</oracle.manageddataaccess.client>
<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</oracle.manageddataaccess.client>
<oracle.manageddataaccess.client xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</configuration>

View File

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<configSections xdt:Transform="InsertIfMissing">
</configSections>
<configSections xdt:Transform="InsertBefore(/configuration/*[1])">
</configSections>
<!-- remove existing entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>
<!-- insert new entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</configSections>
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- If system.data tag is absent -->
<system.data xdt:Transform="InsertIfMissing">
<DbProviderFactories>
</DbProviderFactories>
</system.data>
<!-- If system.data tag is present, but DbProviderFactories tag is absent -->
<system.data>
<DbProviderFactories xdt:Transform="InsertIfMissing">
</DbProviderFactories>
</system.data>
<!-- remove existing ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>
<!-- add new ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Insert"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</DbProviderFactories>
</system.data>
<!-- If runtime tag is absent -->
<runtime xdt:Transform="InsertIfMissing">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>
<!-- If runtime tag is present, but assembly binding tag is absent -->
<runtime>
<assemblyBinding xdt:Transform="InsertIfMissing" xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>
<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- insert new entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Insert">
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- If oracle.manageddataaccess.client tag is absent -->
<oracle.manageddataaccess.client xdt:Transform="InsertIfMissing">
<version number="*">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- If version tag is absent -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="InsertIfMissing">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- If dataSources tag is absent -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="InsertIfMissing">
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- add entry if missing -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="InsertIfMissing" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>

View File

@ -0,0 +1,4 @@
<configuration>
<configSections>
</configSections>
</configuration>

View File

@ -0,0 +1,64 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- remove existing entry -->
<configSections>
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>
<!-- remove if section is empty -->
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>
<!-- remove if section is empty -->
<system.data>
<DbProviderFactories xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</system.data>
<system.data xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- remove if section is empty -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</runtime>
<runtime xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="Remove" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<!-- remove if section is empty -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</version>
</oracle.manageddataaccess.client>
<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</oracle.manageddataaccess.client>
<oracle.manageddataaccess.client xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</configuration>

View File

@ -0,0 +1,298 @@
You have downloaded Oracle Data Provider for .NET from Oracle, the license agreement to which is available at https://www.oracle.com/downloads/licenses/distribution-license.html
The following software may be included in Oracle Data Provider for .NET:
Kerberos
Copyright (C) 1985-2010 by the Massachusetts Institute of Technology.
All rights reserved.
Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person or organization contemplating export to obtain such a license before exporting.
WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Furthermore if you modify this software you must label your software as modified software and not distribute it in such a fashion that it might be confused with the original MIT software. M.I.T. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Individual source code files are copyright MIT, Cygnus Support, Novell, OpenVision Technologies, Oracle, Red Hat, Sun Microsystems, FundsXpress, and others.
Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, and Zephyr are trademarks of the Massachusetts Institute of Technology (MIT). No commercial use of these trademarks may be made without prior written permission of MIT.
"Commercial use" means use of a name in a product or other for-profit manner. It does NOT prevent a commercial firm from referring to the MIT trademarks in order to convey information (although in doing so, recognition of their trademark status should be given).
-----------------------------------------
Portions of src/lib/crypto have the following copyright:
Copyright (C) 1998 by the FundsXpress, INC.
All rights reserved.
Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person or organization contemplating export to obtain such a license before exporting.
WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of FundsXpress. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. FundsXpress makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------------------
The following copyright and permission notice applies to the OpenVision Kerberos Administration system located in kadmin/create, kadmin/dbutil, kadmin/passwd, kadmin/server, lib/kadm5, and portions of lib/rpc:
Copyright, OpenVision Technologies, Inc., 1996, All Rights Reserved
WARNING: Retrieving the OpenVision Kerberos Administration system source code, as described below, indicates your acceptance of the following terms. If you do not agree to the following terms, do not retrieve the OpenVision Kerberos administration system.
You may freely use and distribute the Source Code and Object Code compiled from it, with or without modification, but this Source Code is provided to you "AS IS" EXCLUSIVE OF ANY WARRANTY, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY OTHER WARRANTY, WHETHER EXPRESS OR IMPLIED. IN NO EVENT WILL OPENVISION HAVE ANY LIABILITY FOR ANY LOST PROFITS, LOSS OF DATA OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, INCLUDING, WITHOUT LIMITATION, THOSE RESULTING FROM THE USE OF THE SOURCE CODE, OR THE FAILURE OF THE SOURCE CODE TO PERFORM, OR FOR ANY OTHER REASON.
OpenVision retains all copyrights in the donated Source Code. OpenVision also retains copyright to derivative works of the Source Code, whether created by OpenVision or by a third party. The OpenVision copyright notice must be preserved if derivative works are made based on the donated Source Code.
OpenVision Technologies, Inc. has donated this Kerberos Administration system to MIT for inclusion in the standard Kerberos 5 distribution. This donation underscores our commitment to continuing Kerberos technology development and our gratitude for the valuable work which has been performed by MIT and the Kerberos community.
-----------------------------------------
Portions contributed by Matt Crawford <crawdad@fnal.gov> were work performed at Fermi National Accelerator Laboratory, which is operated by Universities Research Association, Inc., under contract DE-AC02-76CHO3000 with the U.S. Department of Energy.
-----------------------------------------
The implementation of the Yarrow pseudo-random number generator in src/lib/crypto/yarrow has the following copyright:
Copyright 2000 by Zero-Knowledge Systems, Inc.
Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Zero-Knowledge Systems, Inc. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Zero-Knowledge Systems, Inc. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
ZERO-KNOWLEDGE SYSTEMS, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ZERO-KNOWLEDGE SYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-----------------------------------------
The implementation of the AES encryption algorithm in src/lib/crypto/aes has the following copyright:
Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK. All rights reserved.
LICENSE TERMS
The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that:
1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer;
2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials;
3. the copyright holder's name is not used to endorse products built using this software without specific written permission.
DISCLAIMER
This software is provided 'as is' with no explicit or implied warranties in respect of any properties, including, but not limited to, correctness and fitness for purpose.
-----------------------------------------
Portions contributed by Red Hat, including the pre-authentication plug-ins framework, contain the following copyright:
Copyright (c) 2006 Red Hat, Inc.
Portions copyright (c) 2006 Massachusetts Institute of Technology
All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of Red Hat, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------
The implementations of GSSAPI mechglue in GSSAPI-SPNEGO in src/lib/gssapi, including the following files:
lib/gssapi/generic/gssapi_err_generic.et
lib/gssapi/mechglue/g_accept_sec_context.c
lib/gssapi/mechglue/g_acquire_cred.c
lib/gssapi/mechglue/g_canon_name.c
lib/gssapi/mechglue/g_compare_name.c
lib/gssapi/mechglue/g_context_time.c
lib/gssapi/mechglue/g_delete_sec_context.c
lib/gssapi/mechglue/g_dsp_name.c
lib/gssapi/mechglue/g_dsp_status.c
lib/gssapi/mechglue/g_dup_name.c
lib/gssapi/mechglue/g_exp_sec_context.c
lib/gssapi/mechglue/g_export_name.c
lib/gssapi/mechglue/g_glue.c
lib/gssapi/mechglue/g_imp_name.c
lib/gssapi/mechglue/g_imp_sec_context.c
lib/gssapi/mechglue/g_init_sec_context.c
lib/gssapi/mechglue/g_initialize.c
lib/gssapi/mechglue/g_inquire_context.c
lib/gssapi/mechglue/g_inquire_cred.c
lib/gssapi/mechglue/g_inquire_names.c
lib/gssapi/mechglue/g_process_context.c
lib/gssapi/mechglue/g_rel_buffer.c
lib/gssapi/mechglue/g_rel_cred.c
lib/gssapi/mechglue/g_rel_name.c
lib/gssapi/mechglue/g_rel_oid_set.c
lib/gssapi/mechglue/g_seal.c
lib/gssapi/mechglue/g_sign.c
lib/gssapi/mechglue/g_store_cred.c
lib/gssapi/mechglue/g_unseal.c
lib/gssapi/mechglue/g_userok.c
lib/gssapi/mechglue/g_utils.c
lib/gssapi/mechglue/g_verify.c
lib/gssapi/mechglue/gssd_pname_to_uid.c
lib/gssapi/mechglue/mglueP.h
lib/gssapi/mechglue/oid_ops.c
lib/gssapi/spnego/gssapiP_spnego.h
lib/gssapi/spnego/spnego_mech.c
and the initial implementation of incremental propagation, including the following new or changed files:
include/iprop_hdr.h
kadmin/server/ipropd_svc.c
lib/kdb/iprop.x
lib/kdb/kdb_convert.c
lib/kdb/kdb_log.clib/kdb/kdb_log.h
lib/krb5/error_tables/kdb5_err.et
slave/kpropd_rpc.c
slave/kproplog.c
and marked portions of the following files:
lib/krb5/os/hst_realm.c
are subject to the following license:
Copyright (c) 2004 Sun Microsystems, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------------------------------------
MIT Kerberos includes documentation and software developed at the University of California at Berkeley, which includes this copyright notice:
Copyright (C) 1983 Regents of the University of California.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------
Portions contributed by Novell, Inc., including the LDAP database backend, are subject to the following license:
Copyright (c) 2004-2005, Novell, Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
The copyright holder's name is not used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------
Portions funded by Sandia National Laboratory and developed by the University of Michigan's Center for Information Technology Integration, including the PKINIT implementation, are subject to the following license:
COPYRIGHT (C) 2006-2007
THE REGENTS OF THE UNIVERSITY OF MICHIGAN
ALL RIGHTS RESERVED
Permission is granted to use, copy, create derivative works and redistribute this software and such derivative works for any purpose, so long as the name of The University of Michigan is not used in any advertising or publicity pertaining to the use of distribution of this software without specific, written prior authorization. If the above copyright notice or any other identification of the University of Michigan is included in any copy of any portion of this software, then the disclaimer below must also be included.
THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-----------------------------------------
The pkcs11.h file included in the PKINIT code has the following license:
Copyright 2006 g10 Code GmbH
Copyright 2006 Andreas Jellinghaus
This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved.
This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------------------
Portions contributed by Apple Inc. are subject to the following license:
Copyright 2004-2008 Apple Inc. All Rights Reserved.
Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person or organization contemplating export to obtain such a license before exporting.
WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Apple Inc. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Apple Inc. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
THIS SOFTWARE IS PROVIDED "AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------------------
The implementations of strlcpy and strlcat in src/util/support/strlcat.c have the following copyright and permission notice:
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-----------------------------------------
The implementations of UTF-8 string handling in src/util/support and src/lib/krb5/unicode are subject to the following copyright and permission notice:
The OpenLDAP Public License
Version 2.8, 17 August 2003
Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
Redistributions in source form must retain copyright statements and notices,
Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution, and
Redistributions must contain a verbatim copy of this document.
The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use this Software under terms of this license revision or under the terms of any subsequent revision of the license.
THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS CONTRIBUTORS "AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The names of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission. Title to copyright in this Software shall at all times remain with copyright holders.
OpenLDAP is a registered trademark of the OpenLDAP Foundation.
Copyright 1999-2003 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distribute verbatim copies of this document is granted.
-----------------------------------------
Marked test programs in src/lib/krb5/krb have the following copyright:
Copyright (c) 2006 Kungliga Tekniska H<>gskolan
(Royal Institute of Technology, Stockholm, Sweden).
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of KTH nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,247 @@
Oracle.ManagedDataAccess NuGet Package 19.11.0 README
=====================================================
Release Notes: Oracle Data Provider for .NET, Managed Driver
March 2021
This document provides information that supplements the Oracle Data Provider for .NET (ODP.NET) documentation.
You have downloaded Oracle Data Provider for .NET from Oracle, the license agreement to which is available at
https://www.oracle.com/downloads/licenses/distribution-license.html
TABLE OF CONTENTS
*New Features
*Bug Fixes
*Installation and Configuration Steps
*Installation Changes
*Documentation Corrections and Additions
*ODP.NET, Managed Driver Tips, Limitations, and Known Issues
Note: The 32-bit "Oracle Developer Tools for Visual Studio" download from https://otn.oracle.com/dotnet is
required for Entity Framework design-time features and for other Visual Studio designers such as the
TableAdapter Wizard. This NuGet download does not enable design-time tools; it only provides run-time support.
This version of ODP.NET supports Oracle Database version 11.2.0.4 and higher.
New Features
============
1) Allowing Deserialization of Oracle Provider Types into DataSet/DataTable
This version introduces a new AddOracleTypesDeserialization() method on the OracleConfiguration class.
This new method can be called to add ODP.NET-specific data types to the "allow" list, so that they can
be deserialized into DataSet/DataTable. If an attempt is made to deserialize ODP.NET-specific types
without adding them to the "allow" list, an ODP.NET type initializer exception will be encountered.
If your app or third-party software you use adds data types to the allow list as well, be careful not to
overwrite the ODP.NET allowed types by appending to the allow list.
// C# snippet enbling Oracle data type deserialization, then loading them from an XML file
static void Main(string[] args)
{
OracleConfiguration.AddOracleTypesDeserialization();
DataSet ds = new DataSet();
ds.ReadXml("OracleTypes.xml"); // The xml file name will depend on your application.
}
2) Suppress GetDecimal Invalid Cast Exception
The SuppressGetDecimalInvalidCastException property has been added to the OracleDataReader and
OracleDataAdapter classes in ODP.NET 19.10. It specifies whether to suppress the InvalidCastException and
return a rounded-off 28 precision value if the Oracle NUMBER value has more than 28 precision.
OracleDataAdapter.SuppressGetDecimalInvalidCastException API description:
https://docs.oracle.com/en/database/oracle/oracle-data-access-components/19.3.2/odpnt/DataAdapterSuppressGetDecimalInvalidCastException.html
OracleDataReader.SuppressGetDecimalInvalidCastException API description:
https://docs.oracle.com/en/database/oracle/oracle-data-access-components/19.3.2/odpnt/DataReaderSuppressGetDecimalInvalidCastException.html
3) Bulk Copy
ODP.NET 19.10 now supports bulk copy, which allows fast data transfer between .NET and Oracle databases.
It supports the same bulk copy APIs as unmanaged ODP.NET. These APIs are documented in the ODP.NET Developer's Guide.
4) GetDecimalRetainTrailingZeros Configuration Parameter
ODP.NET 19.11 supports a config parameter called GetDecimalRetainTrailingZeros that can be set in .NET config or by setting the
OracleConfiguration.GetDecimalRetainTrailingZeros property. By default, it's false. If it's set to true, the Oracle NUMBER
column value that eventually gets retrieved as a .NET decimal through OracleDataReader's GetDecimal() method will retain a
trailing 0 if the number of digits on the right hand side of the decimal point is odd in number.
Bug Fixes since Oracle.ManagedDataAccess NuGet Package 19.10.1
==============================================================
32185056 : ORA-01017 WHILE PASSING PASSWORD WITH TRAILING EQUAL SIGN
32370414 : ENCOUNTER SEMAPHOREFULLEXCEPTION WHEN OPEN CONNECTIONS IN HEAYY LOAD
32466408 : EXPOSE GETDECIMALRETAINTRAILINGZEROS CONFIG
Installation and Configuration Steps
====================================
The downloads are NuGet packages that can be installed with the NuGet Package Manager. These instructions apply
to install ODP.NET, Managed Driver.
1. Un-GAC and un-configure any existing assembly (i.e. Oracle.ManagedDataAccess.dll) and policy DLL
(i.e. Policy.4.122.Oracle.ManagedDataAccess.dll) for the ODP.NET, Managed Driver, version 4.122.19.1
that exist in the GAC. Remove all references of Oracle.ManagedDataAccess from machine.config file, if any exists.
2. In Visual Studio, open NuGet Package Manager from an existing Visual Studio project.
3. Install the NuGet package from NuGet Gallery (nuget.org).
From Local Package Source
-------------------------
A. Click on the Settings button in the lower left of the dialog box.
B. Click the "+" button to add a package source. In the Source field, enter in the directory location where the
NuGet package(s) were downloaded to. Click the Update button, then the Ok button.
C. On the left side, under the Online root node, select the package source you just created. The ODP.NET NuGet
packages will appear.
From Nuget.org
--------------
A. In the Search box in the upper right, search for the package with id, "Oracle.ManagedDataAccess". Verify
that the package uses this unique ID to ensure it is the official Oracle Data Provider for .NET, Managed Driver
download.
B. Select the package you wish to install.
4. Click on the Install button to select the desired NuGet package(s) to include with the project. Accept the
license agreement and Visual Studio will continue the setup.
5. Open the app/web.config file to configure the ODP.NET connection string and connect descriptors.
Below is an example of configuring the net service aliases and connect descriptors parameters:
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<!-- Customize these connection alias settings to connect to Oracle DB -->
<dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
After following these instructions, ODP.NET is now configured and ready to use.
IMPORTANT: Oracle recommends configuring net service aliases and connect descriptors in a .NET config file to
have the application configuration be self-contained rather than using tnsnames.ora or TNS_ADMIN.
NOTE: ODP.NET, Managed Driver comes with one set of platform specific assemblies for Kerberos support: Oracle.ManagedDataAccessIOP.dll.
The Oracle.ManagedDataAccessIOP.dll assembly is ONLY needed if you are using Kerberos5 based external
authentication. Kerberos5 users will need to download MIT Kerberos for Windows version 4.0.1 from
https://web.mit.edu/kerberos/dist/
to utilize ODP.NET, Managed Driver's support of Kerberos5.
The asssemblies are located under
packages\Oracle.ManagedDataAccess.<version>\bin\x64
and
packages\Oracle.ManagedDataAccess.<version>\bin\x86
depending on the platform.
If these assemblies are required by your application, your Visual Studio project requires additional changes.
Use the following steps for your application to use the 64-bit version of Oracle.ManagedDataAccessIOP.dll:
1. Right click on the Visual Studio project.
2. Select Add -> New Folder.
3. Name the folder x64.
4. Right click on the newly created x64 folder.
5. Select Add -> Existing Item.
6. Browse to packages\Oracle.ManagedDataAccess.<version>\bin\x64 under your project solution directory.
7. Choose Oracle.ManagedDataAccessIOP.dll.
8. Click the 'Add' button.
9. Left click the newly added Oracle.ManagedDataAccessIOP.dll in the x64 folder.
10. In the properties window, set 'Copy To Output Directory' to 'Copy Always'.
For x86 targeted applications, name the folder x86 and add assemblies from the
packages\Oracle.ManagedDataAccess.<version>\bin\x86 folder.
To make your application platform independent even if it depends on Oracle.ManagedDataAccessIOP.dll, create both x64 and x86 folders with the necessary assemblies added to them.
Installation Changes
====================
The following app/web.config entries are added by including the "Official Oracle ODP.NET, Managed Driver" NuGet package
to your application:
1) Configuration Section Handler
The following entry is added to the app/web.config to enable applications to add an <oracle.manageddataaccess.client>
section for ODP.NET, Managed Driver-specific configuration:
<configuration>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
</configuration>
Note: If your application is a web application and the above entry was added to a web.config and the same config
section handler for "oracle.manageddataaccess.client" also exists in machine.config but the "Version" attribute values
are different, an error message of "There is a duplicate 'oracle.manageddataaccess.client' section defined." may be
observed at runtime. If so, the config section handler entry in the machine.config for
"oracle.manageddataaccess.client" has to be removed from the machine.config for the web application to not encounter
this error. But given that there may be other applications on the machine that depended on this entry in the
machine.config, this config section handler entry may need to be moved to all of the application's .NET config file on
that machine that depend on it.
2) DbProviderFactories
The following entry is added for applications that use DbProviderFactories and DbProviderFactory classes. Also, any
DbProviderFactories entry for "Oracle.ManagedDataAccess.Client" in the machine.config will be ignored with the following
entry:
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
</configuration>
3) Dependent Assembly
The following entry is created to ignore policy DLLs for Oracle.ManagedDataAccess.dll and always use the
Oracle.ManagedDataAccess.dll version that is specified by the newVersion attribute in the <bindingRedirect> element.
The newVersion attribute corresponds to the Oracle.ManagedDataAccess.dll version which came with the NuGet package
associated with the application.
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.122.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
4) Data Sources
The following entry is added to provide a template on how a data source can be configured in the app/web.config.
Simply rename "MyDataSource" to an alias of your liking and modify the PROTOCOL, HOST, PORT, SERVICE_NAME as required
and un-comment the <dataSource> element. Once that is done, the alias can be used as the "data source" attribute in
your connection string when connecting to an Oracle Database through ODP.NET, Managed Driver.
<configuration>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>
Documentation Corrections and Additions
=======================================
None
ODP.NET, Managed Driver Tips, Limitations, and Known Issues
===========================================================
None
Copyright (c) 2020, 2021, Oracle and/or its affiliates.