2

私はほとんど SQL を使用していたので、Oracle に少し慣れていないため、Oracle の仕組みと使用するユーザー/接続文字列についての私の理解の一部が間違っているか、存在しない可能性があります。

roundhouse を使用して Oracle データベースを作成/管理しようとしています。今のところ、Windows 7 と VS 2010 を実行している開発マシンで作業しようとしています。テスト データベースを作成しようとしている単純なサンドボックス プロジェクトがあります。マシンに Oracle 11g 標準版をインストールしました。

最初の質問は、ラウンドハウスを使用して、まったく新しいデータベースを作成することさえできるでしょうか (Oracle db は、Oracle では「スキーマ」と呼ばれていることを教えてくれます)。私の理解では、SQLサーバーとは異なり、任意のデータベースを作成できるユーザーをMaster持つデータベースはありません。sa

roundhouse サイトで Oracle の wiki ページを見つけましたが、既存の Oracle データベースの変更についてのみ説明されており、新しいデータベースの作成については説明されていません。必要なテーブル、ストアド プロシージャなどを作成する前に、ラウンドハウスを使用して 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>
4

2 に答える 2

4

私は、現在運用中のアプリケーションで Roundhouse を使用して 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 には create スクリプトを指定する機能があります。これを利用してスキーマを作成できるかもしれませんが、RoundhouseE にはまだドロップスクリプトを指定する機能がありません (私の知る限り)。そのためには、別のツール必要になります。

SQL*Plus Instant Client を使用して、ビルド スクリプト内でスキーマの作成と削除を管理することになりました: http://www.oracle.com/technetwork/topics/winsoft-085727.htmlinstantclient-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のいずれかが必要です。(新しいバージョンは問題ありません。一致するバージョンを取得するようにしてください。)それらを同じディレクトリに解凍します。(ちなみに、Oracle Client をインストールする代わりに、basic-nt または basiclite-nt を使用できます。必要なのは、アプリケーションが DLL を見つけられることを確認することだけです。)これを機能させるには、コマンド ライン呼び出しを行う必要があります。 . RoundhouseE がドロップ スクリプトを取得したら、可能であればこれをダンプするつもりです。

スキーマを配置すると、RoundhouseE はかなりうまく機能します。ただし、Github と Google Code のバグ リストを確認してください。いくつかの奇妙な問題があります。ただし、それらを乗り越えると、それに費やしたすべての努力に見合うだけの価値があります。私はほぼ 2 年前にほとんどのデータベース展開ビルド スクリプトを作成しましたが、それらはプロジェクトで長年の試練に耐えてきたものの 1 つです。ただし、それらは PowerShell で記述されているため、これが MSBuild でどのように機能するかはわかりません。

アップデート:

私がこれを書いてから数年で、Flyway は人気を博しました。Oracle のサポートが優れている可能性があるため、それまたは他のツールの使用を検討してください。RoundhouseE は、数年前に特定された問題の多くを修正していません。主に SQL Server のサポートに重点を置いているようです。

于 2013-07-01T22:26:46.383 に答える
1

あなたがどこから来たのかを見ると、おそらくアップグレードする時が来ました。

Oracle と RH のサポートについて私が覚えていることから、これは可能かもしれません。スキーマの作成を処理する管理接続文字列 - CSA (接続文字列管理者) のスイッチがあります。はい、Oracle には異なる専門用語があります (データベースは SQL サーバーのサーバーと同じで、スキーマは SQL サーバーのデータベースです)。

Oracle のサポートを確認してからしばらく経ちましたが、調べてみると、さらに詳しい情報が見つかるかもしれません。

于 2013-03-19T02:14:41.830 に答える