【发布时间】:2012-04-05 01:02:27
【问题描述】:
我们公司继承了一些在 C# Visual Studio 2010、Windows 7 和 Oracle 11g 上运行的软件。经过一番努力,我们让软件运行起来,并建立了一个稳定的数据库(模式)。
我们现在开始将一些数据从旧系统迁移到这个“新”系统。但是,我不想弄乱我们的工作模式,因为我预计我们的数据导入需要进行一些反复试验。
我想做以下事情: 假设我们现有的模式称为 PROD。我想创建一个名为 TEST 的第二个模式,我们可以将其用于导入的数据。然后,在 C# 代码中,我可以在两个数据库模式之间切换时切换数据源的名称。问题是此连接的用户名和密码出现在代码中分散的许多地方。为了避免每次在“数据库环境”之间切换时都必须在多个位置更改用户凭据,我想创建一个用户来访问 PROD 和 TEST。
但是,how to grant user privilege on specific schema? 表示这是不可能的。 Correct way to give users access to additional schemas in Oracle 建议了一种在对象级别授予访问权限的方法,但这还不够:我基本上希望一个用户可以访问两个相同的模式(PROD 和 TEST)。完成此操作后,我想开始修改 TEST 以开始我们的数据导入。
我也尝试在不同的端口上将 TEST 创建为单独的 Oracle 数据库安装,但是当尝试在这个新实例上创建我的用户时,我仍然遇到用户已经存在的冲突(因为它是在原始数据库安装)。
我的用户已经存在并且可以访问 PROD。我如何让他也可以访问 TEST?或者如何解决更普遍的问题,即在使用 Oracle 的应用程序中定义 PROD 和 TEST 数据库?
在 MySQL 中这将是微不足道的,但我不知道如何在 Oracle 中执行此操作。我对 Oracle 很陌生。
【问题讨论】:
-
one single user to have access to two identical schemas是什么意思?在 oracle db 中,用户与模式几乎相同。哪个用户has access to PROD是什么意思? -
澄清:在代码中,我们定义了用于连接到 oracle 数据库的用户名和密码。此用户名和密码在不同位置的代码中进行了硬编码。此用户名/密码用于连接到模式,例如 A(正确地,仅在一个地方定义)。现在我想创建第二个模式,比如 B,在其上对数据导入进行一些测试。 B 必须使用与 A 相同的用户名/密码,因此我不必在整个应用程序中更改这些详细信息。然后我可以通过在一个地方更改架构名称来简单地在应用程序中的 A 和 B 之间切换。
-
在 oracle DB schema=db 用户中。您可以在asktom.oracle.com/pls/asktom/… 阅读语义上的差异。现在,你说
connect to schema A是什么意思?你的意思是你从你的应用程序中以用户 A 的身份连接到数据库吗?还是对架构 A 中的对象(= 用户 A 拥有的对象)具有权限的不同数据库用户? -
感谢 asktom 链接 - 它解释了我遇到困难的原因。我希望同一个用户可以访问(或成为所有者)两个不同的数据库(模式)。在 MySQL 中,我会简单地创建一个具有两个数据库的用户,并赋予两个数据库的用户权限。然后我会按名称引用正确的数据库。
标签: c# windows visual-studio-2010 oracle11g