我对Oracle还是个新手,主要使用过SQL,所以我对oracle的工作原理以及要使用的用户/连接字符串的一些理解可能是错误的,或者根本不存在。
我正在尝试使用roundhouse来创建/管理Oracle数据库。现在,我正试着在我的开发机器上工作,运行Windows7和VS2010。我有一个简单的沙箱项目,我正在尝试创建一个测试数据库。我已经在我的机器上安装了Oracle 11g标准版。
第一个问题是,我是否能够使用roundhouse创建一个全新的数据库( Oracle数据库告诉我它们在Oracle中被称为'Schemas‘)?据我所知,与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>发布于 2013-03-19 10:14:42
看看你来自哪里,可能是升级的时候了。
根据我对Oracle和RH支持的记忆,这可能是可能的。有一个用于管理连接字符串的开关- CSA (连接字符串admin),它将为您处理模式创建。是的,Oracle有不同的行话(数据库与sql server的服务器相同,模式是sql server的数据库)。
自从我检查了对Oracle的支持已经有一段时间了,但是如果你看一下,你可能会发现更多的信息。
发布于 2013-07-02 06:26:46
我用RoundhousE在一个现已投入生产的应用程序上运行过Oracle。
RoundhousE不适合从无到有创建Oracle数据库。我所见过的Oracle数据库使用模式作为主要的逻辑部分;换句话说,在Oracle中,您使用模式的方式与在SQL Server中使用数据库的方式基本相同。此外,数据库本身通常已经设置好了,您不需要创建新的数据库。这更像是一个安装步骤;在设置数据库之前,您甚至不能形成网络连接。粗略地说:
SQL Server | Oracle
----------------+------------------------------------
Server install | Server install & database set up
Database | Schema所以不要让RoundhousE设置Oracle数据库。假设这已经完成了;可以将其视为一个安装步骤。您不会期望RoundhousE安装或配置SQL Server。
也就是说,RoundhousE有一个用于指定创建脚本的工具。您也许能够利用它来创建您的模式,但是RoundhousE还不能指定一个删除脚本(据我所知)。为此,您需要一个单独的工具。
我最终使用SQL*Plus Instant Client在我的构建脚本中管理模式的创建和删除:http://www.oracle.com/technetwork/topics/winsoft-085727.html。您需要instantclient-sqlplus-nt-11.2.0.3.0.zip和instantclient-basiclite-nt-11.2.0.3.0.zip或instantclient-basic-nt-11.2.0.3.0.zip.中的一个(较新的版本也可以;只需确保获得匹配的版本即可。)将它们解压缩到相同的目录。(顺便说一句,您可以使用basic-nt或basiclite-nt来代替安装Oracle客户机;您只需要确保您的应用程序可以找到DLL。)您需要进行命令行调用才能使其正常工作。当RoundhousE获得drop脚本时,我打算尽可能地将其转储。
一旦你有了一个合适的模式,RoundhousE就能很好地工作。不过,一定要检查一下Github和Google Code上的bug列表。有一些奇怪的问题。不过,一旦你克服了这些障碍,你所付出的一切努力都是值得的。我几乎在两年前编写了大多数数据库部署构建脚本,它们是在项目中经受住了时间考验的东西之一。它们是用PowerShell编写的,所以我不知道这在MSBuild中会怎么样。
更新:
在我写这篇文章后的几年里,Flyway变得流行起来。考虑使用它或其他工具,因为它们可能具有对Oracle的高级支持。RoundhousE还没有修复很多几年前就发现的问题。它似乎主要专注于支持SQL Server。
https://stackoverflow.com/questions/15469634
复制相似问题