如何在不指定数据库名的情况下连接到Oracle服务器

时间:2014-02-25 10:08:20

标签: c# database oracle tns

我的应用程序具有连接到4个不同数据库服务器(MS SQL,MySql,SQLite和Oracle)的功能,如果不存在数据库,它将创建一个具有指定数据库名称的新数据库。此逻辑适用于所有服务器,Oracle除外。如果数据库存在,我可以在所有四个服务器上连接它,所以我认为问题与我的tns,或者错误的dll或类似的东西无关,但在这种情况下我的connectionstring可能是错误的。

Oracle服务器版本是11.0.0.1,我安装了必要的odac驱动程序。我的电脑上设置了一个tns,当数据库存在时,一切正常。在这种情况下,connectionstring看起来像这样:

User Id=<myuser>; Password=<mypassword>; POOLING=true; Connection Lifetime=15;
Connection Timeout=15; incr pool size=10; Data Source=
(
DESCRIPTION=
(ADDRESS=
 (PROTOCOL=TCP)
 (HOST=<myserveraddress>)
 (PORT=<myport>)
)
(
 CONNECT_DATA=
 (SID=<mysid>)
 (SERVICE_NAME=<mydatabasename>)
)
);

现在,如果我从连接字符串中删除了servicename部分,我得到一个“ORA-12505:TNS:监听器当前不知道连接描述符中给出的SID”异常。

当我只想连接服务器而不是直接连接到数据库时,我该怎么办?

2 个答案:

答案 0 :(得分:0)

oracle数据库创建的概念与其他数据库不同。

请点击以下链接

http://docs.oracle.com/cd/E16655_01/index.htm

并选择选项“2 Day DBA”

创建数据库的最佳方法是使用oracle提供的图形界面,即以dbca.bat开头

答案 1 :(得分:0)

你误解了这里发生了什么。

在Oracle中,您不会在您的情况下创建数据库,而是创建用户/表空间。

甲骨文:

服务器&gt;实例(数据库)&gt;表

其他:

服务器&gt;实例&gt;数据库