Sql Server 2014データベースをOracleに移行する必要があります。最良のオプションは、移行ツールに付属のSQL Developerを使用することです。
説明されている手順を実行した後、SQL Serverのバージョンがサポートされていないために失敗します。 2012はOracleによるとサポートされていますが、2014と同じエラーで失敗します。そのため、少し問題が発生していると思います。私はInspirer MnMTKと呼ばれるツールを試しましたが、このツールはインストールさえできません(会社の問題を引き起こしました)。
今、私はこれを手動で行う段階にありますが、それは数時間かかるでしょう、私はDDL作成スクリプト変換でさえ満足しています。
助言がありますか?
[〜#〜]編集[〜#〜]
SQL Server 2014と2012の両方に対して発生するエラーは次のとおりです。
Java.lang.Exception: The plugin used to capture this model is not available. Please re-install the plugin and try again before convert.
at Oracle.dbtools.migration.workbench.core.ui.quickmigrate.QMWizard$ContextHelper.getMigrationPluginOnline(QMWizard.Java:918)
at Oracle.dbtools.migration.workbench.core.ui.quickmigrate.CapturePageMigration.initPageState(CapturePageMigration.Java:312)
at Oracle.dbtools.migration.workbench.core.ui.quickmigrate.CapturePageMigration.onEntry(CapturePageMigration.Java:81)
at Oracle.ide.wizard.FSMWizard.gotoPanel(FSMWizard.Java:743)
at Oracle.ide.wizard.FSMWizard.setSelectedPage(FSMWizard.Java:463)
at Oracle.bali.ewt.wizard.BaseWizard.selectPage(BaseWizard.Java:1964)
at Oracle.ide.wizard.FSMWizard.selectPage(FSMWizard.Java:447)
at Oracle.ide.wizard.FSMWizard.doNext(FSMWizard.Java:322)
at Oracle.bali.ewt.wizard.BaseWizard$Action$1.run(BaseWizard.Java:3944)
at Java.awt.event.InvocationEvent.dispatch(InvocationEvent.Java:209)
at Java.awt.EventQueue.dispatchEventImpl(EventQueue.Java:679)
at Java.awt.EventQueue.access$400(EventQueue.Java:81)
at Java.awt.EventQueue$2.run(EventQueue.Java:640)
at Java.awt.EventQueue$2.run(EventQueue.Java:638)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.Java:86)
at Java.awt.EventQueue.dispatchEvent(EventQueue.Java:649)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.Java:269)
at Java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.Java:184)
at Java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.Java:178)
at Java.awt.Dialog$1.run(Dialog.Java:1052)
at Java.awt.Dialog$3.run(Dialog.Java:1104)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.awt.Dialog.show(Dialog.Java:1102)
at Java.awt.Component.show(Component.Java:1615)
at Java.awt.Component.setVisible(Component.Java:1567)
at Java.awt.Window.setVisible(Window.Java:846)
at Java.awt.Dialog.setVisible(Dialog.Java:987)
at Oracle.bali.ewt.wizard.WizardDialog.runDialog(WizardDialog.Java:382)
at Oracle.bali.ewt.wizard.WizardDialog.runDialog(WizardDialog.Java:298)
at Oracle.ide.dialogs.WizardLauncher.runDialog(WizardLauncher.Java:51)
at Oracle.dbtools.migration.workbench.core.ui.quickmigrate.QMWizard.launch(QMWizard.Java:117)
at Oracle.dbtools.migration.workbench.core.QMLauncher.launch(QMLauncher.Java:40)
at Oracle.dbtools.raptor.controls.sqldialog.ObjectActionController.handleEvent(ObjectActionController.Java:195)
at Oracle.ide.controller.IdeAction.performAction(IdeAction.Java:529)
at Oracle.ide.controller.IdeAction.actionPerformedImpl(IdeAction.Java:884)
at Oracle.ide.controller.IdeAction.actionPerformed(IdeAction.Java:501)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.Java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.Java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.Java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.Java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.Java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.Java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.Java:850)
at Java.awt.Component.processMouseEvent(Component.Java:6329)
at javax.swing.JComponent.processMouseEvent(JComponent.Java:3275)
at Java.awt.Component.processEvent(Component.Java:6094)
at Java.awt.Container.processEvent(Container.Java:2040)
at Java.awt.Component.dispatchEventImpl(Component.Java:4692)
at Java.awt.Container.dispatchEventImpl(Container.Java:2098)
at Java.awt.Component.dispatchEvent(Component.Java:4520)
at Java.awt.LightweightDispatcher.retargetMouseEvent(Container.Java:4574)
at Java.awt.LightweightDispatcher.processMouseEvent(Container.Java:4235)
at Java.awt.LightweightDispatcher.dispatchEvent(Container.Java:4165)
at Java.awt.Container.dispatchEventImpl(Container.Java:2084)
at Java.awt.Window.dispatchEventImpl(Window.Java:2492)
at Java.awt.Component.dispatchEvent(Component.Java:4520)
at Java.awt.EventQueue.dispatchEventImpl(EventQueue.Java:681)
at Java.awt.EventQueue.access$400(EventQueue.Java:81)
at Java.awt.EventQueue$2.run(EventQueue.Java:640)
at Java.awt.EventQueue$2.run(EventQueue.Java:638)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.Java:86)
at Java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.Java:97)
at Java.awt.EventQueue$3.run(EventQueue.Java:654)
at Java.awt.EventQueue$3.run(EventQueue.Java:652)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.Java:86)
at Java.awt.EventQueue.dispatchEvent(EventQueue.Java:651)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.Java:269)
at Java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.Java:184)
at Java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.Java:174)
at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:169)
at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:161)
at Java.awt.EventDispatchThread.run(EventDispatchThread.Java:122)
調べてみましたが、このプラグインが見つからないというエラーは、SQL Serverのバージョンがサポートされていないことに関連しています。
これは、「ソースデータベース」と「キャプチャ」の間を移動する移行ウィザードの同じ時点で発生します。
私が使用しているjtdsのバージョンは1.2です。これは、SQL Developerがサポートできる最新バージョンです。より新しいバージョンを使用しようとしましたが、接続できません(このバージョンの制限を確認したのはこのときでした)。
*編集2 *
オフラインで移行することで回避策を見つけました。データベースキャプチャスクリプトを作成する必要があります。ただし、これの最大SQLサーバーバージョンは2008です。念のため、これを2012年に対して実行してみましたが、どちらも機能しません。
私の場合、ErwinのようなERDツールを使用してデータベースのERD図を生成します。 Erwinを使用してSQL Server ERDを取得し、同等のOracleを生成できます。次に、ERDツールから作成したすべてのテーブルを生成し、ツールを使用するか、制約、インデックス、およびトリガーのDDLを手動で生成します。
これを行うと、必要なすべてのテーブルを含むスキーマを作成し、異種サービスを使用してSQL Serverへのデータベース接続を作成できます。この時点で、制約、インデックス、トリガーなしでOracleに必要なすべてのテーブルが揃いました。各SQL Serverテーブルを調べ、選択したとおりに挿入を実行できます。最後に、スクリプトを実行して、制約、インデックス、トリガーを作成します。 T-SQLとPL/SQLには互換性がないため、トリガーを含め、ストアドプロシージャを手動で書き直す必要があります。
Erwinには、SQL ServerまたはPL/SQLのいずれかに変換できるコードを誰かが記述できるマクロ言語があり/あり、私は約15年前に両方で動作するアプリケーションを管理しました。ただし、一度移行する場合は、気にしません。個人的な経験に基づくと、このプロセスは、プロセスをスクリプト化して、移行プロセスの多くの反復を実行できる場合に最適に機能します。次に、各反復後にテストします。