У меня есть приложение ASP.NET MVC 4, чья база данных (Oracle 10g) находится на удаленном сервере.Как решить «ORA-6413: соединение не открыто». на windows 7
Теперь я хочу, чтобы он работал с локальным сервером базы данных (на той же машине). Я установил Oracle 10G Express Edition. Настройка прошла успешно, и я могу получить доступ к базе данных с помощью SQL plus. Но мое приложение просто не подключается к нему (используя Oracle.DataAccess.dll).
Я много искал в Интернете и выяснил, что это может быть потому, что на пути к каталогу, где установлен Visual Studio 2010 (программные файлы (x86)), есть специальный символ. Поэтому я удалил его и установил его по другому пути без специальных символов.
Тем не менее приложение просто не подключается к локальному серверу oracle.
Для тестирования я создал еще одно простое консольное приложение и написал код для подключения к локальной базе данных в функции Main() и успешно подключен. Точно такой же код в приложении не работает.
ошибка, что я получаю:
ORA-6413: Connection not open.
Oracle.DataAccess.Client.OracleException was unhandled by user code
Message=ORA-6413: Connection not open.
Source=Oracle Data Provider for .NET
DataSource=""
Number=6413
Procedure=""
StackTrace:
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
at Oracle.DataAccess.Client.OracleConnection.Open()
at IBeam.Common.Repositories.SessionProvider.GetSessionFactory(String groupCode, String companyCode) in D:\Projects\IBeamNewRepo\IBeamCopy\Src\Trunk\IBeam.Common\Repositories\SessionProvider.cs:line 61
at IBeam.Common.Repositories.SessionProvider.GetSession() in D:\Projects\IBeamNewRepo\IBeamCopy\Src\Trunk\IBeam.Common\Repositories\SessionProvider.cs:line 191
at IBeam.Controllers.AccountController.Login(String url) in D:\Projects\IBeamNewRepo\IBeamCopy\Src\Trunk\IBeam\Controllers\AccountController.cs:line 38
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeSynchronousActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
at System.Web.Mvc.Async.AsyncResultWrapper.End[TResult](IAsyncResult asyncResult, Object tag)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49()
Мой код для подключения к Oracle:
var connection = new OracleConnection();
var str =
@"Data Source = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mridula-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
);
User Id=app$security;
Password=appsecurity;";
connection.ConnectionString = str;
connection.Open(); <- Exception Here
Моя ОС Windows 7
.
Но это о клиенте. Что относительно 10G экспресс-сервера? Нужно ли мне это обновить? – mridula
Попробуйте обновить, он должен работать :) – mrinal