我对Oracle有点新,主要使用SQL,因此我对oracle如何工作以及使用哪些用户/连接字符串的理解可能是错误的或不存在的。
我正在尝试使用roundhouse来创建/管理Oracle数据库。目前我正在尝试运行运行Windows 7和VS 2010的开发机器。我有一个简单的沙箱项目,我正在尝试创建一个测试数据库。我在我的机器上安装了Oracle 11g标准版。
第一个问题是,我是否能够使用roundhouse创建一个全新的数据库(Oracle数据库告诉我他们在Oracle中被称为'Schemas')?根据我的理解,与SQL服务器不同,没有Master
数据库和sa
用户可以创建任何数据库。
我在圆桌会议网站上找到了Oracle的维基页面,但它只涉及修改现有的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>
答案 0 :(得分:4)
我已经在一个正在生产的应用程序中使用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还没有能力指定 drop 脚本(据我所知)。您将需要一个单独的工具。
我最终使用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 Client;您只需要确保您的应用程序可以找到DLL。)您需要进行命令行调用才能使用它。当RoundhousE获得drop脚本时,如果可以,我打算转储它。
一旦你有一个架构,RoundhousE工作得相当好。不过,请查看Github和Google Code上的错误列表。有一些奇怪的问题。但是,一旦你越过它们,那么你付出的所有努力都是值得的。我差不多两年前编写了大部分数据库部署构建脚本,它们是经得起时间考验的事情之一。但它们是用PowerShell编写的,所以我不知道它在MSBuild中的表现如何。
自从我写这篇文章以来的几年里,Flyway受到了欢迎。考虑使用它或其他工具,因为它们可能对Oracle有更好的支持。 RoundhousE还没有解决几年前发现的很多问题。它似乎主要侧重于支持SQL Server。
答案 1 :(得分:1)
看看你来自哪里,可能是升级的时候了。
从我记得的Oracle和RH支持,这可能是可能的。管理连接字符串有一个开关 - CSA(连接字符串管理员),它将为您处理模式创建。是的,Oracle有不同的术语(数据库与sql server的服务器相同,架构是sql server的数据库)。
自从我检查了对Oracle的支持以来已经有一段时间了,但如果你看一下,你可能会发现更多的信息。