gpt4 book ai didi

oracle - 我可以使用 roundhouse 创建一个全新的 oracle db/schema 吗?

转载 作者:行者123 更新时间:2023-12-02 05:11:01 26 4
gpt4 key购买 nike

我对 Oracle 有点陌生,主要使用 SQL,所以我对 oracle 的工作原理以及要使用的用户/连接字符串的一些理解可能是错误的或不存在的。

我正在尝试使用 roundhouse 创建/管理 Oracle 数据库。现在我正在尝试在我的运行 Windows 7 和 VS 2010 的开发机器上工作。我有一个简单的沙箱项目,我正在尝试创建一个测试数据库。我已经在我的机器上安装了 Oracle 11g 标准版。

第一个问题是,我什至可以使用 roundhouse 创建一个全新的数据库(Oracle 数据库告诉我它们在 Oracle 中称为“模式”)吗?据我了解,与 SQL Server 不同,不存在具有可以创建任何数据库的 sa 用户的 Master 数据库。

我在 roundhouse 站点上找到了 Oracle 的 wiki 页面,但它只讨论修改现有的 Oracle 数据库,而不是创建新数据库。我无法找到在创建所需表、存储过程等之前使用 roundhouse 在 Oracle 中创建全新数据库的示例。

如果可能,我需要做什么/设置什么?我应该如何设置我的配置文件?给出的是我当前的配置文件。

<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="DBDeploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Visit http://roundhouse.googlecode.com/ for details -->

<UsingTask AssemblyFile="roundhouse.tasks.dll" TaskName="roundhouse.tasks.Roundhouse" />

<PropertyGroup>
<DBServer>dev-mac-303.qtest.local</DBServer>
<DBName>RoundhouseSandbox.OracleRoundhouse</DBName>
<Environment>DEV</Environment>
<DBConnectionString>Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dev-mac-303.qtest.local)(PORT = 1521)))(CONNECT_DATA = (SID = DEVEL)));User Id=mytest;Password=mytestdevel;Persist Security Info=false;</DBConnectionString>
</PropertyGroup>


<Target Name="ApplyDatabaseChanges">
<Roundhouse
ServerName="$(DBServer)"
DatabaseName="$(DBName)"
ConnectionString="$(DBConnectionString)"
ConnectionStringAdmin="$(DBConnectionString)"
CommandTimeout="60"
CommandTimeoutAdmin="300"
VersionFile="OracleRoundhouse.dll"
AlterDatabaseFolderName="alterDatabase"
UpFolderName="mytest\updates"
RunFirstAfterUpFolderName="mytest\runFirstAfterUp"
FunctionsFolderName="mytest\functions"
ViewsFolderName="mytest\views"
SprocsFolderName="mytest\storedprocedures"
IndexesFolderName="mytest\indexes"
PermissionsFolderName="mytest\permissions"
SchemaName="Change"
VersionTableName="Version"
ScriptsRunTableName="ScriptsRun"
ScriptsRunErrorsTableName="ScriptsRunErrors"
EnvironmentName="$(Environment)"
DoNotCreateDatabase="false"
OutputPath="C:\temp\test.mytest.Database\ChangeTracking\"
WarnOnOneTimeScriptChanges="false"
Silent="true"
DatabaseType="roundhouse.databases.oracle.OracleDatabase, roundhouse.databases.oracle"
WithTransaction="false"
RunAllAnyTimeScripts="false"
DisableTokenReplacement="false"
Debug="true"
/>
</Target>

<Target Name = "DBDeploy"
DependsOnTargets="
ApplyDatabaseChanges;
"
>
</Target>

</Project>

最佳答案

我已经在一个正在生产的应用程序上使用 RoundhouseE 完成了 Oracle。

RoundhouseE 不适合从无到有地创建 Oracle 数据库。我见过的 Oracle 数据库使用模式作为主要的逻辑划分;换句话说,在 Oracle 中,您使用模式的方式与在 SQL Server 中使用数据库的方式非常相似。此外,数据库本身通常已经设置好,您不需要创建新的数据库。这更像是一个安装步骤;在设置数据库之前,您甚至无法建立网络连接。粗略地说:

SQL Server      |  Oracle                             
----------------+------------------------------------
Server install | Server install & database set up
Database | Schema

所以不要让 RoundhouseE 设置 Oracle 数据库。假设已经完成;将其视为安装步骤。您不会期望 RoundhouseE 安装或配置 SQL Server。

也就是说,RoundhouseE 具有指定创建脚本的工具。您也许可以利用它来创建您的模式,但 RoundhouseE 还不能指定 drop 脚本(据我所知)。为此,您需要一个单独的工具。

我最终使用 SQL*Plus Instant Client 在我的构建脚本中管理模式的创建和删除:http://www.oracle.com/technetwork/topics/winsoft-085727.html .您需要 instantclient-sqlplus-nt-11.2.0.3.0.zipinstantclient-basiclite-nt-11.2.0.3.0.zip 之一或 instantclient-basic-nt-11.2.0.3.0.zip。 (较新的版本很好;只要确保您获得匹配的版本即可。)将它们解压缩到同一目录。 (附带说明,您可以使用 basic-nt 或 basiclite-nt 而不是安装 Oracle Client;您只需要确保您的应用程序可以找到 DLL。)您需要进行命令行调用才能使其正常工作.当 RoundhouseE 获得丢弃脚本时,我打算尽可能地丢弃它。

一旦您有了一个合适的模式,RoundhouseE 就可以很好地工作。不过,请务必检查 Github 和 Google Code 上的错误列表。有几个奇怪的问题。不过,一旦你通过了它们,你所付出的所有努力都是值得的。我大约 2 年前编写了大部分数据库部署构建脚本,它们是项目中经得起时间考验的内容之一。不过,它们是用 PowerShell 编写的,所以我不知道这在 MSBuild 中的表现如何。

更新:

在我写这篇文章后的几年里,Flyway 变得流行起来。考虑使用它或其他工具,因为它们可能对 Oracle 有更好的支持。 RoundhouseE 没有解决很多几年前发现的问题。它似乎主要侧重于支持 SQL Server。

关于oracle - 我可以使用 roundhouse 创建一个全新的 oracle db/schema 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15469634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com