• ベストアンサー

レプリケーションについて

oracle9iでマスターサイトとマテリアライズドビューの レプリケーション環境を構築していますが、 主キーがないマスター表に対して "DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT"を 実行すると"主キーなし"エラーになります。 この場合、必ずエラーとなるのでしょうか? もしくは"DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT"自体 実行する必要がないのでしょうか?

  • Oracle
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.1

遅延トランザクションで列が更新されたことを識別するために主キーが必要となるわけです。もし、主キーを使いたくないというのであれば、DBMS_REPCAT.SET_COLUMNS プロシージャを使用して代替キーを指定してあげる必要があります。 ただし、表の構造によっては主キーが必須となる場合もあるようです。

ora-ora
質問者

お礼

ありがとうございました。うまくいきました。

関連するQ&A

  • Oracle7とOracle R8.1.7環境でのレプリケーションについて

    Oracle初心者です。 Oracle7側をマスター表、Oracle8i R8.1.7 側をマテリアライズド・ビューとする構成でレプリケーションしようと思っているのですが、うまくいきません。 定期的(日次)に、Oracle7の5つの表を、Oracle8側に複製したいのですが、リプレケーション以外で簡単に行える方法はありますでしょうか?

  • SQL 主キーによる自動的な表の結合

    複数の表を主キーで結合する際、そのままWHERE句に条件を列挙するのが普通ですが、 主キーの数が多いので、これを簡単に記述方法はないでしょうか? できれば Natural Join のようにテーブル名のみを記述し、 DBMS(Oracle)が主キーのみを自動的に結合してくれればベストです。 Natural Join を使用できない理由の1つは、複数の表に登録日という列があり、 Natural Joinすると主キーでない登録日まで結合してしまうからです。 SQLは次のようになっています SELECT * FROM TBL_A NATURAL JOIN TBL_B NATURAL JOIN TBL_C ... ※join using, join on 句は使用できないようです。 ※登録日の列名は変更できません。 Oracle Database 9.2.0.4

  • SFTPで/var/lib/mysql/にPUT

    MySQL5.5でレプリケーション(準同期)を構築しています。 http://it.sifr.me/mysql-semi-synchronous-replication/ 上記のサイトを参考に、マスターサーバー(192.168.100.101)からスレーブサーバー(192.168.100.105)にレプリケーションの予定です。 上記サイトをもとに構築していたのですが、レプリケーションの前の段階の 「SFTPで/var/lib/mysql/に接続、PUT」するという単純なことが出来ません。 下記のように192.168.100.101にあるSQLをスレーブサーバー192.168.100.105にSFTPで接続してPUTするという作業をしたころ Couldn't get handle: Permission denied になってしまっています。 [root@sv1 ~]# cd /var/lib/mysqll      //192.168.100.101のマスターサーバー上でcd [root@sv1 mysql]# sftp -oPort=22 replica@192.168.100.105 //スレーブに接続 Connecting to 192.168.100.105... replica@192.168.100.105's password: sftp> cd /var/lib/mysql      //192.168.100.105のスレーブサーバー上でcd sftp> put master-mysql-data.tar.gz   //192.168.100.105のスレーブサーバーにput Uploading master-mysql-data.tar.gz to /var/lib/mysql/master-mysql-data.tar.gz Couldn't get handle: Permission denied  //エラー sftp> 現在のユーザー設定は以下の通りです。 ユーザー名はいずれも replica で 192.168.100.101(マスター) ●linuxユーザー(ユーザー名 replica) ●mySQLユーザー(ユーザー名 replica)    ホスト192.168.100.105 スレーブレプリケーションの許可 192.168.100.105(スレーブ) ●linuxユーザー(ユーザー名 replica)(グループ mysql) ●mySQLユーザー(ユーザー名 replica)     ホスト192.168.100.101    スレーブレプリケーションの許可&クライアントレプリケーションの許可 と設定しています。 尚、PUT先の192.168.100.105 の/var/lib/mysql/の所有者はユーザー、グループともmysqlです。 mysqlユーザーで行えばput可能のでしょうが、どのサイトを見てもreplication専用ユーザーを作って対応することとなっており、安全上の面からも機能限定のユーザーでputしたく考えております。 対応方法についてご教授いただきたくお願いいたしします。

    • ベストアンサー
    • MySQL
  • Windows server 2003から2012

    はじめて投稿致します。 自社の、「Windows Server 2003 Standard Edition」から「Windows Server 2012 Essentials」への移行を行っているのですが、「2003側」の「移行準備ツール」をインストール中に「DNSレプリケーションサービスが実行されていません。DFSレプリケーションサービスが、このサーバー上で実行されていません。既定では、このサービスが実行され、スタートアップの種類は[自動]に設定されています。」というエラーが表示され、「次へ」のボタンをクリックすることができません。 「サービス」内の「Distributed File System」や「File Replication Service」の状態を確認しましたが、「自動」「開始」に設定されています。 どの部分の設定を操作しないといけないんでしょうか? もともと自分が設定したサーバーではないとは言え、移行は引き受けてしまった以上なんとかやり遂げたいと思っています。 無知な自分にどうかお力添えお願い致します。

  • 異なるスキーマのビューを元にしたマテリアライズドビューの作成

    「所有していないマテリアライズド・ビューのマスター表にアクセスする場合は、各表に対するSELECTオブジェクト権限またはSELECT ANY TABLEシステム権限が必要です。」 ということから、selectオブジェクト権限をつけた『ビュー』をもとに、マテリアライズドビューの作成はできないのでしょうか? 例)Aスキーマが所有するTESTビュー表をもとに、Bスキーマでマテリアライズドビューを作成する。 create materialized view mview as select * from A.TESTビュー; create materialized view 権限は付与しました。 A.TESTビューに対するSELECTオブジェクト権限は付与しました。 結果としては、表またはビューがありません。とエラーがでます。 しかし、Aスキーマが所有するテーブルに対しては、問題なくマテリアライズドビューの作成はできます。 異なるスキーマの『ビュー』を元にマテリアライズドビューの作成は できない。といった記述はないのですが、実際に作成ができません。 ご教授ください。

  • 表の切り替えについて

    お尋ねします。 富士通のDBMSであるSymfoWAREを使用して業務構築を検討しておりますが、実現方式に不明な点がありますので質問させていただきます。 (処理概要) 1.定義情報のまったく同じ、表Aと表Bが存在する。 2.表Aにユーザアプリが登録・照会処理を行っている間  に、表Bに対してバッチ処理でデータの入れ替えを行  う。 3.バッチ処理完了後は、表Bをユーザーアプリに表Bを参 照させる。 (質問) 1.ユーザーアプリに判定処理を入れる事無く表Aを参照し  ていたのを表Bに参照させる事は可能でしょうか? 2.仮に不可能である場合、類似の実現方法はありますでし  ょうか? 3.DBMSがオラクルであれば実現できますでしょう   か? 以上、お手数をおかけ致しますがよろしくお願いします。

  • VM環境のみメモリリーク発生

    Oracle11gをLocal上とVM1、VM2に構築(内容は同じ)(Windows7) 同じアプリをLocal(LocalのOracle)、VM1(VM1のOracle)、VM2(VM2のOracle)で実行 VM1上のみアプリ(MFC)がメモリリーク発生 LocalのアプリをVM1のOracleに接続→アプリのメモリリーク発生 VM2のアプリをVM1のOracleに接続→アプリのメモリリーク発生 アプリ(MFC)自体はセレクト文の連続実行程度でVM1のみリークが発生します。 Windowsのパッチ適応は同じ アラートログ、リスナーログにエラー表示等はありません VM1のOracleの使用メモリは400M程度です 再起動をしてみたり、表領域を大きくしてみましたが発生します。 他にどんな所を調べみたらいいかアドバイスをお願いします。

  • ActiveX DLLでのオラクルのトランザクション

    VB6とOracle9iのOO4Oにてシステムを構築しておりますが、一つ解らないことがありましたので、どなたかご教授願います。 あるPG(通常のEXEです)よりActiveX DLLを呼び出してOracleの表へデータを挿入する処理があります。呼び出し元となる通常のEXEはまずOracleの接続処理を記述しています。正常に接続が完了したならトランザクションを開始し、表のDeleteを実行します。その後ActiveX DLLを呼び出して表のInsertを実行しています。再び通常のEXEに制御が戻り、トランザクションの完了(COMMIT)または破棄(ROLLBACK)を行います。しかし、最後のトランザクションのCOMMIT(ROLLBACK)を行うと『コッミト(ロールバック)時にアクティブなトランザクションがありません』というエラーが発生してしまいます。正しくBegin Transactionを実行しているのに、これはどういうこと何のでしょうか。ご存知の方がいらっしゃましたら教えてください。

  • [PL/SQL]セキュリティ違反でエラー

    はじめまして Oracle初心者のエンジニアです。 あるプロシージャを実行すると 添付のようなアラートが出てエラーになります。 ただ、エラーにならないで処理が成功する人もいて 原因不明です。 原因や対処法をご存じの方、ご教授お願いできますか? ちなみに他のプロシージャは正常に実行できます。 オブジェクトブラウザの出力 【 実行後パラメータ値 】 V_SHEMA_NAME : BTOB 【 DBMS_OUTPUT 値 】 BTOBスキーマへデータ反映失敗: -53203ORA-53203: セキュリティ違反です。

  • ORACLEのテーブルスペースについて

    OS:AIX Ver.4.3 DB:ORACLE(Ver.8.1.6) でSQL*Loaderを実行していたのですが、 "エラーコード -2 STDERR 書込不可"? ↑ (ログを消してしまってはっきりは覚えてないのですが) というエラーログが出力され、その後、ロードする テーブルのTABLESPACEについて "ORA-01536: 表領域 TABLESPACEXXXに対して割り当てられた領域を使い果たしました。" というORACLEのエラーが発生し始めました。 その後、CREATEは上記ORACLEエラーにより実行不可、 その後のINSERTは途中までできていたのですが、途中から 同様のORALCEエラーにより実行不可、 という状態になっています。 (直前まで通常にデータの更新は行えていました) ちなみに該当するTABLESPACEに割り付けられたデータ ファイルにはまだ十分領域が空いています。 該当するTABLESPACEのデータファイルに対する割付領域を "ALTER TABLE ~" で拡大できたと思うのですが、 方法がはっきり分かりません。 どなたかご存知の方、また、このエラー自体の原因が 分かる方、いらっしゃったらお願いします。