【问题标题】:How to connect to Oracle server without specifying database name如何在不指定数据库名称的情况下连接到 Oracle 服务器
【发布时间】:2014-02-25 10:08:20
【问题描述】:

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

Oracle 服务器版本是 11.0.0.1,我安装了必要的 odac 驱动程序。我的电脑上有一个 tns 设置,当数据库存在时一切正常。在这种情况下,连接字符串如下所示:

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:listener 目前不知道连接描述符中给出的 SID”异常。

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

【问题讨论】:

  • 您想检查给定的service name 是否启动并运行?
  • 如果不是数据库,你到底想连接什么?
  • 我想把服务名从连接字符串中去掉,就像我在连接到 MSSQL 服务器时那样。所以,我想连接到服务器,而不是数据库。想象一个没有任何数据库的全新服务器。你会在 servicename 变量中指定什么? :)
  • 我认为这里存在术语问题。没有数据库实例,Oracle 中就没有任何东西可以连接。
  • 安装 Oracle 服务器时,您没有数据库。我的程序想要连接到服务器,然后创建一个新数据库。创建新数据库后,我可以使用上面的连接字符串连接到它。我可以在其他 3 个数据库中做到这一点,但不能使用 Oracle。

标签: c# database oracle tns


【解决方案1】:

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

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

甲骨文:

服务器 > 实例(数据库)> 表空间

其他:

服务器 > 实例 > 数据库

【讨论】:

    【解决方案2】:

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

    请点击以下链接

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

    并选择选项“2 天 DBA”

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

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 2015-07-25
      • 2013-05-04
      • 2012-09-05
      • 1970-01-01
      • 2020-12-27
      相关资源
      最近更新 更多