From 07cfb272788ea0d434e26fa2976b8472e6dc514e Mon Sep 17 00:00:00 2001 From: Alex Keh Date: Mon, 23 Oct 2023 10:16:03 -0700 Subject: [PATCH 01/30] Update and rename README.txt to README.md (#323) --- samples/{README.txt => README.md} | 156 +++++++++++++++--------------- 1 file changed, 80 insertions(+), 76 deletions(-) rename samples/{README.txt => README.md} (68%) diff --git a/samples/README.txt b/samples/README.md similarity index 68% rename from samples/README.txt rename to samples/README.md index 2337b8e7..1fd65d9d 100644 --- a/samples/README.txt +++ b/samples/README.md @@ -1,12 +1,12 @@ Managed ODP.NET and ODP.NET Core Code Samples ============================================= You must have managed ODP.NET or ODP.NET Core installed. To run the samples, follow these directions: -1) Modify the Data Source attribute in the connection strings to connect to an Oracle database via Easy Connect, TNS connect descriptor, or TNS alias. -2) Most of these samples use the SCOTT or Human Resources (HR) schema. -The SCOTT schema create scripts are located here: https://github.com/oracle/dotnet-db-samples/tree/master/schemas +1) Modify the Data Source attribute in the connection strings to connect to an Oracle database via Easy Connect (Plus), TNS connect descriptor, or TNS alias. +2) Most of these samples use the SCOTT or Human Resources (HR) schema.
+The SCOTT schema create scripts are located here: https://github.com/oracle/dotnet-db-samples/tree/master/schemas
The HR schema create scripts are located here: https://github.com/oracle/db-sample-schemas 3) Add Oracle.ManagedDataAccess.dll to the sample application. -4) Read \doc\Readme.html, if any. +4) Review the README file in the samples subdirectory, if any. While these samples are designed for managed ODP.NET or ODP.NET Core, they generally can use unmanaged ODP.NET by incorporating Oracle.DataAccess.dll and adding the unmanaged ODP.NET namespace reference (i.e. "using Oracle.DataAccess.Client;" and "using Oracle.DataAccess.Types;"). @@ -14,150 +14,154 @@ adding the unmanaged ODP.NET namespace reference (i.e. "using Oracle.DataAccess. Running ODP.NET Core Samples from Command Line ============================================== 1) Install .NET Core SDK from Microsoft's website: https://dotnet.microsoft.com/download -2) Open a terminal such as PowerShell, command prompt, or bash. Enter the following commands to create and setup your ODP.NET Core sample: - A) dotnet new console --output - B) dotnet add package Oracle.ManagedDataAccess.Core --version -3) Replace the contents of Program.cs with the GitHub sample code of interest. -4) Insert your user id, password, and data source. The sample will have its own README or comments to indicate additional configuration that may be required. -5) Run using the following command: dotnet run --project +2) Open a terminal such as PowerShell, command prompt, or bash. Enter the following commands to create and setup your ODP.NET Core sample:
+ A) dotnet new console --output (Sample Name)
+ B) dotnet add package Oracle.ManagedDataAccess.Core --version (e.g. 3.21.120) +4) Replace the contents of Program.cs with the GitHub sample code of interest. +5) Insert your user id, password, and data source. The sample will have its own README or comments to indicate additional configuration that may be required. +6) Run using the following command: dotnet run --project (Sample Name) -Below is a list of topics that the samples cover: +Below is the feature list the samples cover. Each feature's sample has its own subdirectory. Application Continuity -====================== +---------------------- Sample 1: Unmanaged ODP.NET Application Continuity code sample with setup and runtime demo instructions. Parameter Array Binding -======================= +---------------------- Sample 1: Demonstrates parameter array binding. ASP.NET Core -============ -ASP.NET Core 2.x: Demonstrates a simple ASP.NET Core 2.x web app to connect and retrieve data. -ASP.NET Core 3.x: Demonstrates a simple ASP.NET Core 3.x web app to connect and retrieve data. -ASP.NET Core 6: Demonstrates a simple ASP.NET Core 6 web app to connect and retrieve data. +------------ +ASP.NET Core 2.x: Demonstrates a simple ASP.NET Core 2.x web app to connect and retrieve data.
+ASP.NET Core 3.x: Demonstrates a simple ASP.NET Core 3.x web app to connect and retrieve data.
+ASP.NET Core 6: Demonstrates a simple ASP.NET Core 6 web app to connect and retrieve data. PL/SQL Associative Array -======================== +------------------------ Sample 1: Demonstrates PL/SQL Associative Array binding. Autonomous Database -=================== -ODP.NET Core Samples: Demonstrates how to connect ODP.NET Core to Oracle Autonomous Database via a console and an ASP.NET Core web app. -Managed ODP.NET Samples: Demonstrates how to connect managed ODP.NET to Oracle Autonomous Database via a console and an ASP.NET web app. +------------------- +ODP.NET Core Samples: Demonstrates how to connect ODP.NET Core to Oracle Autonomous Database via a console and an ASP.NET Core web app.
+Managed ODP.NET Samples: Demonstrates how to connect managed ODP.NET to Oracle Autonomous Database via a console and an ASP.NET web app.
Unmanaged ODP.NET Sample: Demonstrates how to connect unmanaged ODP.NET to Oracle Autonomous Database via a console app. Azure Active Directory -====================== +---------------------- Demonstrates connecting to Oracle Autonomous Database using an Azure Active Directory token with ODP.NET Core, managed, and unmanaged. Bulk Copy -========= +--------- Sample 1: Demonstrates how to use ODP.NET bulk copy. Sample works for both managed and core ODP.NET. Client Factory -============== +-------------- Sample 1: Demonstrates how to use the OracleClientFactory class. Command Builder -=============== -Sample 1: Demonstrates OracleCommandBuilder's SchemaSeparator property. -Sample 2: Demonstrates OracleCommandBuilders's QuoteIdentifier method. +--------------- +Sample 1: Demonstrates OracleCommandBuilder's SchemaSeparator property.
+Sample 2: Demonstrates OracleCommandBuilders's QuoteIdentifier method.
Sample 3: Demonstrates OracleCommandBuilders's UnquoteIdentifier method. Configuration API -================= +----------------- Samples demonstrate how to use the OracleConfiguration, OracleDataSourceCollection, and OracleOnsServerCollection classes. Connection -========== -Sample 1: Demonstrates OracleConnection's GetSchema() method. -Sample 2: Demonstrates all variations of OracleConnection's GetSchema(string) method overload. +---------- +Sample 1: Demonstrates OracleConnection's GetSchema() method.
+Sample 2: Demonstrates all variations of OracleConnection's GetSchema(string) method overload.
Sample 3: Demonstrates all variations of OracleConnection's GetSchema(string, string[]) method overload. Connection String Builder -========================= +------------------------- Sample 1: Demonstrates how to use the OracleConnectionStringBuilder class. DataReader -=========== -Unmanaged ODP.NET Sample: Demonstrates OracleDataReader's VisibleFieldCount and HiddenFieldCount properties. +---------- +Unmanaged ODP.NET Sample: Demonstrates OracleDataReader's VisibleFieldCount and HiddenFieldCount properties.
ODP.NET Core Sample: Demonstrates how to connect and retrieve data using ODP.NET Core via a console app. Data Source Enumerator -====================== +---------------------- Sample 1: Demonstrates the functionality of OracleDataSourceEnumerator class. DataSet -======= -Sample 1: Demonstrates data manipulation language (DML) operations on a Dataset. -Sample 2: Demonstrates how to populate a DataSet using C#. -Sample 3: Demonstrates DML operations on LOB columns. -Sample 4: Demonstrates how to populate a DataSet from multiple output Ref Cursors from a stored procedure. +------- +Sample 1: Demonstrates data manipulation language (DML) operations on a Dataset.
+Sample 2: Demonstrates how to populate a DataSet using C#.
+Sample 3: Demonstrates DML operations on LOB columns.
+Sample 4: Demonstrates how to populate a DataSet from multiple output Ref Cursors from a stored procedure.
Sample 5: Demonstrates how to populate a DataSet using Visual Basic .NET (VB.NET). Entity Framework Core -===================== -Autonomous Database Sample: Demonstrates Oracle EF Core connecting to Oracle Autonomous Database. -Dependency Injection Sample: Demonstrates using dependency injection and ASP.NET Core with Oracle EF Core. -Getting Started Sample: Demonstrates a basic Oracle EF Core scenario using migrations and scaffolding. -Keyless Entity Types Sample: Demonstrates Oracle EF Core keyless entity types with relational and materialized views. -Stored Procedure Result Set Samples: Demonstrates using PL/SQL that returns either an explicitly or implicitly bound REF Cursor. +--------------------- +Autonomous Database Sample: Demonstrates Oracle EF Core connecting to Oracle Autonomous Database.
+Dependency Injection Sample: Demonstrates using dependency injection and ASP.NET Core with Oracle EF Core.
+Getting Started Sample: Demonstrates a basic Oracle EF Core scenario using migrations and scaffolding.
+Keyless Entity Types Sample: Demonstrates Oracle EF Core keyless entity types with relational and materialized views.
+Stored Procedure Result Set Samples: Demonstrates using PL/SQL that returns either an explicitly or implicitly bound REF Cursor. Event Handler -============= +------------- Sample 1: Demonstrates how to trap the OracleRowUpdatingEvent and OracleRowUpdatedEvent using VB.NET. Oracle Identity and Access Management -===================================== +------------------------------------- Sample 1: Demonstrates how to use OCI .NET SDK to retrieve, authenticate, and refresh Oracle database tokens. JSON -==== -Select JSON Sample: Demonstrates row insert into and query against a JSON table. +---- +Select JSON Sample: Demonstrates row insert into and query against a JSON table.
Select JSON CLOB Sample: Demonstrates row insert into and query against a JSON table using CLOB storage. LOB -=== -Sample 1: Demonstrates how to populate and obtain LOB data from a DataSet. -Sample 2: Demonstrates how an OracleClob object is obtained as an output parameter of an anonymous PL/SQL block. -Sample 3: Demonstrates how an OracleClob object is obtained from an output parameter of a stored procedure. -Sample 4: Demonstrates how the LOB column data can be read as a .NET type by utilizing stream reads. -Sample 5: Demonstrates how to bind an OracleClob object as a parameter and refetch the newly updated CLOB data using an OracleDataReader and an OracleClob object. -Sample 6: Demonstrates LOB updates using row-level locking. -Sample 7: Demonstrates LOB updates using result set locking. +--- +Sample 1: Demonstrates how to populate and obtain LOB data from a DataSet.
+Sample 2: Demonstrates how an OracleClob object is obtained as an output parameter of an anonymous PL/SQL block.
+Sample 3: Demonstrates how an OracleClob object is obtained from an output parameter of a stored procedure.
+Sample 4: Demonstrates how the LOB column data can be read as a .NET type by utilizing stream reads.
+Sample 5: Demonstrates how to bind an OracleClob object as a parameter and refetch the newly updated CLOB data using an OracleDataReader and an OracleClob object.
+Sample 6: Demonstrates LOB updates using row-level locking.
+Sample 7: Demonstrates LOB updates using result set locking.
BFile Sample: Demonstrates accessing BFILEs through ODP.NET. +OpenTelemetry +------------- +Sample: Demonstrates using managed ODP.NET or ODP.NET Core with OpenTelemetry + Performance Counters -==================== +-------------------- Sample 1: Demonstrates how to programmatically use ODP.NET performance counters. Ref Cursor -========== -Sample 1: Demonstrates how a REF Cursor is obtained as an OracleDataReader. -Sample 2: Demonstrates how a REF Cursor is obtained as an OracleDataReader through the use of an OracleRefCursor object. -Sample 3: Demonstrates how multiple REF Cursors can be accessed by a single OracleDataReader. -Sample 4: Demonstrates how a DataSet can be populated from a REF Cursor. The sample also demonstrates how a REF Cursor can be updated. -Sample 5: Demonstrates how a DataSet can be populated from an OracleRefCursor object. -Sample 6: Demonstrates how to populate a DataSet with multiple REF Cursors selectively. +---------- +Sample 1: Demonstrates how a REF Cursor is obtained as an OracleDataReader.
+Sample 2: Demonstrates how a REF Cursor is obtained as an OracleDataReader through the use of an OracleRefCursor object.
+Sample 3: Demonstrates how multiple REF Cursors can be accessed by a single OracleDataReader.
+Sample 4: Demonstrates how a DataSet can be populated from a REF Cursor. The sample also demonstrates how a REF Cursor can be updated.
+Sample 5: Demonstrates how a DataSet can be populated from an OracleRefCursor object.
+Sample 6: Demonstrates how to populate a DataSet with multiple REF Cursors selectively.
Sample 7: Demonstrates how to selectively obtain OracleDataReader objects from REF Cursors. Statement Cache -=============== +--------------- Sample 1: Demonstrates performance improvement when statement caching is enabled. Transaction -=========== -Sample 1: Demonstrates the usage of EnlistTransaction API. -Sample 2: Demonstrates the usage of TransactionScope. +----------- +Sample 1: Demonstrates the usage of EnlistTransaction API.
+Sample 2: Demonstrates the usage of TransactionScope.
Sample 3: Demonstrates nested transactions with savepoints. User-Defined Types (UDT) -======================== -Nested Table Sample: Demonstrates how to map, fetch, and manipulate a nested table of UDTs that has an inheritance hierarchy (i.e. parent and child types). -Object UDT Sample: Demonstrates how to map, fetch, and manipulate an Oracle UDT as a .NET custom object. -Spatial UDT Sample: Demonstrates how to map and fetch types similar to Oracle Spatial types as custom types. -Ref Sample: Demonstrates how to fetch UDTs referenced by REFs. -Ref Inheritance Sample: Demonstrates how to obtain and update Custom Type objects from OracleRef objects. +------------------------ +Nested Table Sample: Demonstrates how to map, fetch, and manipulate a nested table of UDTs that has an inheritance hierarchy (i.e. parent and child types).
+Object UDT Sample: Demonstrates how to map, fetch, and manipulate an Oracle UDT as a .NET custom object.
+Spatial UDT Sample: Demonstrates how to map and fetch types similar to Oracle Spatial types as custom types.
+Ref Sample: Demonstrates how to fetch UDTs referenced by REFs.
+Ref Inheritance Sample: Demonstrates how to obtain and update Custom Type objects from OracleRef objects.
VARRAY Sample: Demonstrates how to map, fetch, and manipulate the Oracle VARRAY as a custom object. From 7a6b9417323f8274366e77fe1e9a624f2dea9a70 Mon Sep 17 00:00:00 2001 From: Alex Keh Date: Mon, 23 Oct 2023 10:17:18 -0700 Subject: [PATCH 02/30] Create async.cs (#319) --- samples/async/async.cs | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 samples/async/async.cs diff --git a/samples/async/async.cs b/samples/async/async.cs new file mode 100644 index 00000000..92c11489 --- /dev/null +++ b/samples/async/async.cs @@ -0,0 +1,70 @@ +using Oracle.ManagedDataAccess.Client; +using System.Threading.Tasks; +using System.Threading; +using System; + +// This code sample demonstrates using asynchronous ODP.NET (managed or core) and times its execution time. +// This sample uses the Oracle HR sample schema. + +class ODPNET_Async +{ + public static async Task Main() + { + // Add password and data source to connect to your Oracle database + string conString = @"User Id=hr;Password=;Data Source=;"; + + using (OracleConnection con = new OracleConnection(conString)) + { + // Measure time OpenAsync takes before next operation can start execution + DateTime start_time = DateTime.Now; + Task task = con.OpenAsync(); + DateTime end_time_open = DateTime.Now; + + // Simulate operation that takes one second + Thread.Sleep(1000); + + string cmdText = "SELECT * FROM EMPLOYEES FETCH FIRST 100 ROWS ONLY"; + using (OracleCommand cmd = new OracleCommand(cmdText, con)) + { + // Retrieve open connection with "await" + await task; + + // Execute SELECT statement asynchronously + using (OracleDataReader reader = await cmd.ExecuteReaderAsync()) + { + // Retrieve results asynchronously + await reader.ReadAsync(); + } + } + // Measure time all the async operations took + DateTime end_time_all = DateTime.Now; + + // Calculate connection open time and write result to console + TimeSpan ts_open = end_time_open - start_time; + double ts_open1 = Math.Round(ts_open.TotalSeconds, 2); + Console.WriteLine("Asynchronous connection open time: " + ts_open1 + " seconds"); + + // Calculate overall operation time and write to console + TimeSpan ts_all = end_time_all - start_time; + double ts_all1 = Math.Round(ts_all.TotalSeconds, 2); + Console.WriteLine("Asynchronous ODP.NET operations time: " + ts_all1 + " seconds"); + } + } +} + +/* Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved. */ + +/****************************************************************************** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *****************************************************************************/ From dd72b074b90a9672ecb31281ca4d28f6936dc1aa Mon Sep 17 00:00:00 2001 From: Alex Keh Date: Mon, 23 Oct 2023 10:17:29 -0700 Subject: [PATCH 03/30] Create sync.cs (#320) --- samples/async/sync.cs | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 samples/async/sync.cs diff --git a/samples/async/sync.cs b/samples/async/sync.cs new file mode 100644 index 00000000..3bfba4dc --- /dev/null +++ b/samples/async/sync.cs @@ -0,0 +1,64 @@ +using Oracle.ManagedDataAccess.Client; +using System.Threading; +using System; + +// This code sample demonstrates using synchronous ODP.NET (managed or core) and times its execution time. +// This sample uses the Oracle HR sample schema. + +class ODPNET_Sync +{ + static void Main() + { + // Add password and data source to connect to your Oracle database + string conString = @"User Id=hr;Password=;Data Source=;"; + + using (OracleConnection con = new OracleConnection(conString)) + { + // Measure time Open takes before next operation can start execution + DateTime start_time = DateTime.Now; + con.Open(); + DateTime end_time_open = DateTime.Now; + + // Simulate operation that takes one second + Thread.Sleep(1000); + + string cmdText = "SELECT * FROM EMPLOYEES FETCH FIRST 100 ROWS ONLY"; + using (OracleCommand cmd = new OracleCommand(cmdText, con)) + { + using (OracleDataReader reader = cmd.ExecuteReader()) + { + reader.Read(); + } + } + // Measure time all the sync operations took + DateTime end_time_all = DateTime.Now; + + // Calculate connection open time and write result to console + TimeSpan ts_open = end_time_open - start_time; + double ts_open1 = Math.Round(ts_open.TotalSeconds, 2); + Console.WriteLine("Synchronous connection open time: " + ts_open1 + " seconds"); + + // Calculate overall operation time and write result to console + TimeSpan ts_all = end_time_all - start_time; + double ts_all1 = Math.Round(ts_all.TotalSeconds, 2); + Console.WriteLine("Synchronous ODP.NET operations time: " + ts_all1 + " seconds"); + } + } +} + +/* Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved. */ + +/****************************************************************************** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *****************************************************************************/ From 96fba8f5af19c449bf00620187028edd5a4d0584 Mon Sep 17 00:00:00 2001 From: Alex Keh Date: Mon, 23 Oct 2023 10:17:40 -0700 Subject: [PATCH 04/30] Create opentelemetry.cs (#322) --- samples/opentelemetry/opentelemetry.cs | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 samples/opentelemetry/opentelemetry.cs diff --git a/samples/opentelemetry/opentelemetry.cs b/samples/opentelemetry/opentelemetry.cs new file mode 100644 index 00000000..b7f63a7a --- /dev/null +++ b/samples/opentelemetry/opentelemetry.cs @@ -0,0 +1,85 @@ +// ODP.NET OpenTelemetry Demo +// This sample demonstrates using managed ODP.NET or ODP.NET Core with OpenTelemetry using the HR schema. +// To setup, add NuGet packages: Oracle.ManagedDataAccess.OpenTelemetry, OpenTelemetry, and an OpenTelemetry exporter. +// This sample is configured to use the Console Exporter (OpenTelemetry.Exporter.Console), but can be modified to another exporter. +// Provide the Oracle database password and data source information for the connection string. + +using System.Diagnostics; +using OpenTelemetry; // for Sdk +using OpenTelemetry.Trace; // for TracerProvider and TracerProviderBuilder +using Oracle.ManagedDataAccess.Client; // for ODP.NET +using Oracle.ManagedDataAccess.OpenTelemetry; // for ODP.NET OpenTelemetry + +class ODP_OTel_Demo +{ + static TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder() + .AddOracleDataProviderInstrumentation(o => // ODP.NET OpenTelemetry extension method + { + o.EnableConnectionLevelAttributes = true; + o.RecordException = true; + o.InstrumentOracleDataReaderRead = true; + o.SetDbStatementForText = true; + }) + .AddSource("ODP.NET App") + .AddConsoleExporter() // OpenTelemetry.Exporter.Console NuGet package extension method + //.AddZipkinExporter() // OpenTelemetry.Exporter.Zipkin NuGet package extension method + .Build()!; + + static ActivitySource activitySource = new ActivitySource("ODPNET"); + + static string conString = @"User Id=hr;Password=;Data Source=;"; + + static void Main() + { + using (OracleConnection con = new OracleConnection(conString)) + { + using (OracleCommand cmd = con.CreateCommand()) + { + try + { + con.Open(); + cmd.CommandText = "select * from employees"; + + // Start OpenTelemetry activity + using (Activity activity = activitySource.StartActivity("Retrieve data")!) + { + OracleDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + // Use query results + } + reader.Dispose(); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } + } +} + +/****************************************************************************** +* The MIT License (MIT) +* +* Copyright (c) 2015, 2023 Oracle +* +* 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. + *****************************************************************************/ From b9428b4a6d1874c1474a9f45005305655c259ef5 Mon Sep 17 00:00:00 2001 From: Alex Keh Date: Mon, 23 Oct 2023 11:07:15 -0700 Subject: [PATCH 05/30] Update README.md (#324) --- samples/README.md | 133 ++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 64 deletions(-) diff --git a/samples/README.md b/samples/README.md index 1fd65d9d..8bf41b1a 100644 --- a/samples/README.md +++ b/samples/README.md @@ -26,142 +26,147 @@ Below is the feature list the samples cover. Each feature's sample has its own s Application Continuity ---------------------- -Sample 1: Unmanaged ODP.NET Application Continuity code sample with setup and runtime demo instructions. +* Sample 1: Unmanaged ODP.NET Application Continuity code sample with setup and runtime demo instructions. Parameter Array Binding ---------------------- -Sample 1: Demonstrates parameter array binding. +* Sample 1: Demonstrates parameter array binding. ASP.NET Core ------------ -ASP.NET Core 2.x: Demonstrates a simple ASP.NET Core 2.x web app to connect and retrieve data.
-ASP.NET Core 3.x: Demonstrates a simple ASP.NET Core 3.x web app to connect and retrieve data.
-ASP.NET Core 6: Demonstrates a simple ASP.NET Core 6 web app to connect and retrieve data. +* ASP.NET Core 2.x: Demonstrates a simple ASP.NET Core 2.x web app to connect and retrieve data.
+* ASP.NET Core 3.x: Demonstrates a simple ASP.NET Core 3.x web app to connect and retrieve data.
+* ASP.NET Core 6: Demonstrates a simple ASP.NET Core 6 web app to connect and retrieve data. PL/SQL Associative Array ------------------------ -Sample 1: Demonstrates PL/SQL Associative Array binding. +* Sample 1: Demonstrates PL/SQL Associative Array binding. + +Async +----- +* Async Sample: Demonstrates using asynchronous ODP.NET (managed or core) and times its execution time.
+* Sync Sample: Demonstrates using synchronous ODP.NET (managed or core) and times its execution time. Autonomous Database ------------------- -ODP.NET Core Samples: Demonstrates how to connect ODP.NET Core to Oracle Autonomous Database via a console and an ASP.NET Core web app.
-Managed ODP.NET Samples: Demonstrates how to connect managed ODP.NET to Oracle Autonomous Database via a console and an ASP.NET web app.
-Unmanaged ODP.NET Sample: Demonstrates how to connect unmanaged ODP.NET to Oracle Autonomous Database via a console app. +* ODP.NET Core Samples: Demonstrates how to connect ODP.NET Core to Oracle Autonomous Database via a console and an ASP.NET Core web app.
+* Managed ODP.NET Samples: Demonstrates how to connect managed ODP.NET to Oracle Autonomous Database via a console and an ASP.NET web app.
+* Unmanaged ODP.NET Sample: Demonstrates how to connect unmanaged ODP.NET to Oracle Autonomous Database via a console app. Azure Active Directory ---------------------- -Demonstrates connecting to Oracle Autonomous Database using an Azure Active Directory token with ODP.NET Core, managed, and unmanaged. +* Demonstrates connecting to Oracle Autonomous Database using an Azure Active Directory token with ODP.NET Core, managed, and unmanaged. Bulk Copy --------- -Sample 1: Demonstrates how to use ODP.NET bulk copy. Sample works for both managed and core ODP.NET. +* Sample 1: Demonstrates how to use ODP.NET bulk copy. Sample works for both managed and core ODP.NET. Client Factory -------------- -Sample 1: Demonstrates how to use the OracleClientFactory class. +* Sample 1: Demonstrates how to use the OracleClientFactory class. Command Builder --------------- -Sample 1: Demonstrates OracleCommandBuilder's SchemaSeparator property.
-Sample 2: Demonstrates OracleCommandBuilders's QuoteIdentifier method.
-Sample 3: Demonstrates OracleCommandBuilders's UnquoteIdentifier method. +* Sample 1: Demonstrates OracleCommandBuilder's SchemaSeparator property.
+* Sample 2: Demonstrates OracleCommandBuilders's QuoteIdentifier method.
+* Sample 3: Demonstrates OracleCommandBuilders's UnquoteIdentifier method. Configuration API ----------------- -Samples demonstrate how to use the OracleConfiguration, OracleDataSourceCollection, and OracleOnsServerCollection classes. +* Samples demonstrate how to use the OracleConfiguration, OracleDataSourceCollection, and OracleOnsServerCollection classes. Connection ---------- -Sample 1: Demonstrates OracleConnection's GetSchema() method.
-Sample 2: Demonstrates all variations of OracleConnection's GetSchema(string) method overload.
-Sample 3: Demonstrates all variations of OracleConnection's GetSchema(string, string[]) method overload. +* Sample 1: Demonstrates OracleConnection's GetSchema() method.
+* Sample 2: Demonstrates all variations of OracleConnection's GetSchema(string) method overload.
+* Sample 3: Demonstrates all variations of OracleConnection's GetSchema(string, string[]) method overload. Connection String Builder ------------------------- -Sample 1: Demonstrates how to use the OracleConnectionStringBuilder class. +* Sample 1: Demonstrates how to use the OracleConnectionStringBuilder class. DataReader ---------- -Unmanaged ODP.NET Sample: Demonstrates OracleDataReader's VisibleFieldCount and HiddenFieldCount properties.
-ODP.NET Core Sample: Demonstrates how to connect and retrieve data using ODP.NET Core via a console app. +* Unmanaged ODP.NET Sample: Demonstrates OracleDataReader's VisibleFieldCount and HiddenFieldCount properties.
+* ODP.NET Core Sample: Demonstrates how to connect and retrieve data using ODP.NET Core via a console app. Data Source Enumerator ---------------------- -Sample 1: Demonstrates the functionality of OracleDataSourceEnumerator class. +* Sample 1: Demonstrates the functionality of OracleDataSourceEnumerator class. DataSet ------- -Sample 1: Demonstrates data manipulation language (DML) operations on a Dataset.
-Sample 2: Demonstrates how to populate a DataSet using C#.
-Sample 3: Demonstrates DML operations on LOB columns.
-Sample 4: Demonstrates how to populate a DataSet from multiple output Ref Cursors from a stored procedure.
-Sample 5: Demonstrates how to populate a DataSet using Visual Basic .NET (VB.NET). +* Sample 1: Demonstrates data manipulation language (DML) operations on a Dataset.
+* Sample 2: Demonstrates how to populate a DataSet using C#.
+* Sample 3: Demonstrates DML operations on LOB columns.
+* Sample 4: Demonstrates how to populate a DataSet from multiple output Ref Cursors from a stored procedure.
+* Sample 5: Demonstrates how to populate a DataSet using Visual Basic .NET (VB.NET). Entity Framework Core --------------------- -Autonomous Database Sample: Demonstrates Oracle EF Core connecting to Oracle Autonomous Database.
-Dependency Injection Sample: Demonstrates using dependency injection and ASP.NET Core with Oracle EF Core.
-Getting Started Sample: Demonstrates a basic Oracle EF Core scenario using migrations and scaffolding.
-Keyless Entity Types Sample: Demonstrates Oracle EF Core keyless entity types with relational and materialized views.
-Stored Procedure Result Set Samples: Demonstrates using PL/SQL that returns either an explicitly or implicitly bound REF Cursor. +* Autonomous Database Sample: Demonstrates Oracle EF Core connecting to Oracle Autonomous Database.
+* Dependency Injection Sample: Demonstrates using dependency injection and ASP.NET Core with Oracle EF Core.
+* Getting Started Sample: Demonstrates a basic Oracle EF Core scenario using migrations and scaffolding.
+* Keyless Entity Types Sample: Demonstrates Oracle EF Core keyless entity types with relational and materialized views.
+* Stored Procedure Result Set Samples: Demonstrates using PL/SQL that returns either an explicitly or implicitly bound REF Cursor. Event Handler ------------- -Sample 1: Demonstrates how to trap the OracleRowUpdatingEvent and OracleRowUpdatedEvent using VB.NET. +* Sample 1: Demonstrates how to trap the OracleRowUpdatingEvent and OracleRowUpdatedEvent using VB.NET. Oracle Identity and Access Management ------------------------------------- -Sample 1: Demonstrates how to use OCI .NET SDK to retrieve, authenticate, and refresh Oracle database tokens. +* Sample 1: Demonstrates how to use OCI .NET SDK to retrieve, authenticate, and refresh Oracle database tokens. JSON ---- -Select JSON Sample: Demonstrates row insert into and query against a JSON table.
-Select JSON CLOB Sample: Demonstrates row insert into and query against a JSON table using CLOB storage. +* Select JSON Sample: Demonstrates row insert into and query against a JSON table.
+* Select JSON CLOB Sample: Demonstrates row insert into and query against a JSON table using CLOB storage. LOB --- -Sample 1: Demonstrates how to populate and obtain LOB data from a DataSet.
-Sample 2: Demonstrates how an OracleClob object is obtained as an output parameter of an anonymous PL/SQL block.
-Sample 3: Demonstrates how an OracleClob object is obtained from an output parameter of a stored procedure.
-Sample 4: Demonstrates how the LOB column data can be read as a .NET type by utilizing stream reads.
-Sample 5: Demonstrates how to bind an OracleClob object as a parameter and refetch the newly updated CLOB data using an OracleDataReader and an OracleClob object.
-Sample 6: Demonstrates LOB updates using row-level locking.
-Sample 7: Demonstrates LOB updates using result set locking.
-BFile Sample: Demonstrates accessing BFILEs through ODP.NET. +* Sample 1: Demonstrates how to populate and obtain LOB data from a DataSet.
+* Sample 2: Demonstrates how an OracleClob object is obtained as an output parameter of an anonymous PL/SQL block.
+* Sample 3: Demonstrates how an OracleClob object is obtained from an output parameter of a stored procedure.
+* Sample 4: Demonstrates how the LOB column data can be read as a .NET type by utilizing stream reads.
+* Sample 5: Demonstrates how to bind an OracleClob object as a parameter and refetch the newly updated CLOB data using an OracleDataReader and an OracleClob object.
+* Sample 6: Demonstrates LOB updates using row-level locking.
+* Sample 7: Demonstrates LOB updates using result set locking.
+* BFile Sample: Demonstrates accessing BFILEs through ODP.NET. OpenTelemetry ------------- -Sample: Demonstrates using managed ODP.NET or ODP.NET Core with OpenTelemetry +* Sample: Demonstrates using managed ODP.NET or ODP.NET Core with OpenTelemetry Performance Counters -------------------- -Sample 1: Demonstrates how to programmatically use ODP.NET performance counters. +* Sample 1: Demonstrates how to programmatically use ODP.NET performance counters. Ref Cursor ---------- -Sample 1: Demonstrates how a REF Cursor is obtained as an OracleDataReader.
-Sample 2: Demonstrates how a REF Cursor is obtained as an OracleDataReader through the use of an OracleRefCursor object.
-Sample 3: Demonstrates how multiple REF Cursors can be accessed by a single OracleDataReader.
-Sample 4: Demonstrates how a DataSet can be populated from a REF Cursor. The sample also demonstrates how a REF Cursor can be updated.
-Sample 5: Demonstrates how a DataSet can be populated from an OracleRefCursor object.
-Sample 6: Demonstrates how to populate a DataSet with multiple REF Cursors selectively.
-Sample 7: Demonstrates how to selectively obtain OracleDataReader objects from REF Cursors. +* Sample 1: Demonstrates how a REF Cursor is obtained as an OracleDataReader.
+* Sample 2: Demonstrates how a REF Cursor is obtained as an OracleDataReader through the use of an OracleRefCursor object.
+* Sample 3: Demonstrates how multiple REF Cursors can be accessed by a single OracleDataReader.
+* Sample 4: Demonstrates how a DataSet can be populated from a REF Cursor. The sample also demonstrates how a REF Cursor can be updated.
+* Sample 5: Demonstrates how a DataSet can be populated from an OracleRefCursor object.
+* Sample 6: Demonstrates how to populate a DataSet with multiple REF Cursors selectively.
+* Sample 7: Demonstrates how to selectively obtain OracleDataReader objects from REF Cursors. Statement Cache --------------- -Sample 1: Demonstrates performance improvement when statement caching is enabled. +* Sample 1: Demonstrates performance improvement when statement caching is enabled. Transaction ----------- -Sample 1: Demonstrates the usage of EnlistTransaction API.
-Sample 2: Demonstrates the usage of TransactionScope.
-Sample 3: Demonstrates nested transactions with savepoints. +* Sample 1: Demonstrates the usage of EnlistTransaction API.
+* Sample 2: Demonstrates the usage of TransactionScope.
+* Sample 3: Demonstrates nested transactions with savepoints. User-Defined Types (UDT) ------------------------ -Nested Table Sample: Demonstrates how to map, fetch, and manipulate a nested table of UDTs that has an inheritance hierarchy (i.e. parent and child types).
-Object UDT Sample: Demonstrates how to map, fetch, and manipulate an Oracle UDT as a .NET custom object.
-Spatial UDT Sample: Demonstrates how to map and fetch types similar to Oracle Spatial types as custom types.
-Ref Sample: Demonstrates how to fetch UDTs referenced by REFs.
-Ref Inheritance Sample: Demonstrates how to obtain and update Custom Type objects from OracleRef objects.
-VARRAY Sample: Demonstrates how to map, fetch, and manipulate the Oracle VARRAY as a custom object. +* Nested Table Sample: Demonstrates how to map, fetch, and manipulate a nested table of UDTs that has an inheritance hierarchy (i.e. parent and child types).
+* Object UDT Sample: Demonstrates how to map, fetch, and manipulate an Oracle UDT as a .NET custom object.
+* Spatial UDT Sample: Demonstrates how to map and fetch types similar to Oracle Spatial types as custom types.
+* Ref Sample: Demonstrates how to fetch UDTs referenced by REFs.
+* Ref Inheritance Sample: Demonstrates how to obtain and update Custom Type objects from OracleRef objects.
+* VARRAY Sample: Demonstrates how to map, fetch, and manipulate the Oracle VARRAY as a custom object. From 2b5599c8460d23f305912298ad5900ae7eb40972 Mon Sep 17 00:00:00 2001 From: Christian Shay Date: Tue, 24 Oct 2023 11:14:22 -0700 Subject: [PATCH 06/30] Add files via upload --- .../odtvscodescreenshots/sqlmonitorlist.png | Bin 0 -> 199536 bytes .../odtvscodescreenshots/sqlmonitorreport.png | Bin 0 -> 70856 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 session-demos/2019/odtvscodescreenshots/sqlmonitorlist.png create mode 100644 session-demos/2019/odtvscodescreenshots/sqlmonitorreport.png diff --git a/session-demos/2019/odtvscodescreenshots/sqlmonitorlist.png b/session-demos/2019/odtvscodescreenshots/sqlmonitorlist.png new file mode 100644 index 0000000000000000000000000000000000000000..c0fc6ca6b6bae30884fc46e0f7986ef41d1dc2f9 GIT binary patch literal 199536 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¥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 z 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