рдирдорд╕реНрдХрд╛рд░, рдкреНрдпрд╛рд░реЗ рдЦрдмреНрд░реЛрд╡рд┐рддреНрд╕ред рдЖрдЬ рдореИрдВ ODP.NET, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдмреАрдЯрд╛ 11.2.0.3.60 рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЕрдм
рдУрд░реЗрдХрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ ODP.NET рдХреНрдпрд╛ рдмрди рдЬрд╛рдПрдЧрд╛ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ)ред
рддреЛ, ODP.NET, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ:
- 100% рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рджрд╛рддрд╛
рдЪреВрдВрдХрд┐ рдУрд░реЗрдХрд▓ рдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдЬреЛрд░ рджрд┐рдпрд╛ рд╣реИ, ODP.NET, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреНрд▓рд╛рд╕рд┐рдХ ODP.NET рдХреЗ рд╡рд┐рдкрд░реАрдд рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рджрд╛рддрд╛ рд╣реИред - рдПрдХ ~ 150 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдвреЗрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ ~ 6 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ Oracle.ManagedDataAccess.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВред
- Oracle рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Oracle рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЧреЛрд▓реА рдЯреИрдмрд▓реЗрдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред - 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рдг
рдЖрдкрдХреЛ 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рджрд╛рддрд╛ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред - OUI рдФрд░ xcopy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред - Oracle 10.2 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рдирд╡реАрдирддрдо рддреАрди рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред - рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ 4 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдФрд░ 2012 рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрд┐рдд
рдорд░рд╣рдо рдореЗрдВ рдЙрдбрд╝рдирд╛
рдлрд┐рд▓рд╣рд╛рд▓, рдкреБрд░рд╛рдиреЗ ODP.NET рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ, рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, odp.net, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ odp.net, рдорд╛рдирд╡рд░рд╣рд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд▓реЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рджреЗрдЦреЗрдВ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Microsoft рд╡рд┐рддрд░рд┐рдд рд▓реЗрди-рджреЗрди рд╕рдордиреНрд╡рдпрдХ API рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЕрд╕рд╣рдиреАрдп рд╣реИрдВ (рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ Oracle рдФрд░ Microsoft 100% рдкреНрд░рдмрдВрдзрдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд╕рд░ рд╣реИрдВ), рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдПрдордЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП Oracle рд╕реЗрд╡рд╛рдПрдБ рдХреЗрд╡рд▓ рдорд╛рдирд╡ рд░рд╣рд┐рдд ODAC рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ (рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдУрд░реЗрдХрд▓ рд╣реЛрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ), рддреАрд╕рд░рд╛, рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд Oracle.ManagedDataAccessDTC.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рджреЛ рд╕рдВрд╕реНрдХрд░рдг: 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ) рдЦреАрдВрдЪрдирд╛ рд╣реЛрдЧрд╛
ODP.NET рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд╛рд╕рди, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡
рддреЛ, рдЕрдм рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдЪрд╛рд▓рдХ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдлрд▓ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рдирдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдирд╛рдо рд╕реНрдерд╛рди рдХреА рдЬрдЧрд╣ рд▓реЗрдВ, рдФрд░ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
ODP.NET, рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд▓рд┐рдП рд╣реИрд▓реЛ рд╡рд░реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдВ:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Oracle.DataAccess.Client; using Oracle.DataAccess.Types; namespace ConsoleUnmanagedTest { class Program { static void Main(string[] args) { string constr = "user id=scott;password=tiger;data source=orcl"; OracleConnection con = new OracleConnection(); con.ConnectionString = constr; con.Open(); Console.WriteLine("Connected to: " + con.DatabaseName); using (OracleCommand cmd = con.CreateCommand()) { cmd.CommandText = "select ename from scott.EMP where deptno = 30"; using (OracleDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine("Name: " + reader.GetString(0)); } } } con.Close(); con.Dispose(); Console.ReadLine(); } } }
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдлрд┐рд░ рд╣рдо рдУрдбреАрдкреА.рдиреЗрдЯ рд╡рд┐рддрд░рдг,
рдУрд░реЗрдХрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВрдиреЗ рдПрдХреНрд╕рдХреЛрдкреА рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░.рдмреИрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛)ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, "рдкреБрд░рд╛рдиреЗ" рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ Oracle.ManagedDataAccess.dll рдЬреЛрдбрд╝реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдмрджрд▓рддреЗ рд╣реИрдВ:
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ... рдФрд░ рд╣рдореЗрдВ "ORA-12545: рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ: рдХрдиреЗрдХреНрдЯ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде" рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ ODP.NET рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЕрдм рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдУрд░реЗрдХрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдУрд░реЗрдХрд▓ рд╣реЛрдо рдореЗрдВ tnsnames.ora рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рдХрдиреЗрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ tnsnames.ora рдлрд╝рд╛рдЗрд▓ рдХреЛ exe рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред рдкрд░рд┐рдгрд╛рдореА exe- рдлрд╝рд╛рдЗрд▓, Oracle.ManagedDataAccess.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ tnsnames.ora рдлрд╝рд╛рдЗрд▓ рдХреЛ Oracle рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╣рд╛рдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк TNS рдирд╛рдо рдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- Tnsnames.ora рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░реЗрдВ
<?xml version="1.0" encoding="utf-8" ?> <configuration> <oracle.manageddataaccess.client> <version number ="4.112.3.60"> <settings> <setting name="TNS_ADMIN" value="D:\OracleTestNetwork\"/> </settings> </version> </oracle.manageddataaccess.client> </configuration>
- рд░рдЬрд┐рд╕реНрдЯрд░ рдЙрд░реНрдл:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <oracle.manageddataaccess.client> <version number ="4.112.3.60"> <dataSources> <dataSource alias="orcl" descriptor ="(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))"/> </dataSources> </version> </oracle.manageddataaccess.client> </configuration>
рдирд┐рд╖реНрдХрд░реНрд╖
рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдирдпрд╛ ODP.NET рдкреНрд░рджрд╛рддрд╛, рдкреНрд░рдмрдВрдзрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░, рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред рдкреНрд░рдмрдВрдзрдиреАрдпрддрд╛ рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреА, рдФрд░ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░, рдУрд░реЗрдХрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рдУрдПрд╕ рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рддреИрдирд╛рддреА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдЧреАред рдпрд╣ рдХреЗрд╡рд▓ рдзреИрд░реНрдп рд░рдЦрдиреЗ рдФрд░ рдУрд░реЗрдХрд▓ рд╢реБрднрдХрд╛рдордирд╛рдУрдВ рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред