問題タブ [oracle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - Oracle ダンプを別のテーブルスペースにインポートする方法
Oracle ダンプを別のテーブルスペースにインポートしたいと考えています。
ユーザー A が使用するテーブルスペース A があります。このユーザーの DBA を取り消し、接続とリソースの付与を許可しました。次に、コマンドですべてをダンプしました
exp a/*** owner=a file=oracledump.DMP log=log.log compress=y
ここで、ユーザー B が使用するテーブルスペース B にダンプをインポートしたいので、接続とリソース (DBA なし) に対する権限を彼に与えました。次に、次のインポートを実行しました。
imp b/*** file=oracledump.DMP log=import.log fromuser=a touser=b
結果は、多くのエラーを含むログです。
IMP-00017: 次のステートメントが ORACLE エラー 20001 で失敗しました: "BEGIN DBMS_STATS.SET_TABLE_STATS IMP-00003: ORACLE エラー 20001 が発生しました ORA-20001: 無効または矛盾した入力値です
その後、同じインポート コマンドを試しましたが、オプション statistics=none を使用しました。これにより、次のエラーが発生しました。
ORA-00959: 表領域'A_TBLSPACE'が存在しません
これはどのように行うべきですか?
注: 多くの列は CLOB 型です。問題はそれと関係があるようです。
注 2: Oracle のバージョンは、9.2、10.1、および 10.1 XE が混在しています。しかし、バージョンとは関係ないと思います。
.net - Oracle 10g でバイナリ ファイルを保存および取得する最良の方法は何ですか?
ユーザーが PDF または Microsoft PowerPoint ドキュメントを「アップロード」できるようにする機能をアプリケーションに実装しようとしています。これにより、アプリケーションはビューアーで他のユーザーが利用できるようにします (そのため、「ダウンロード」することはありません)。 「名前を付けて保存..」の意味で)。
データベース列に任意のバイナリ情報を保存および取得する方法は既に知っていますが、これはアプリケーションの一般的に使用される機能であるため、ソリューションが非常に大きなデータベース テーブルにつながるのではないかと心配しています (顧客の 1 人が配置したいと考えているため)。 PowerPoint ドキュメントのビデオ)。
Oracle で「ディレクトリ」オブジェクトを作成する方法があることは知っていますが、この機能を使用して、データベース サーバーの別の場所に保存されているバイナリ ファイルを格納および取得する方法はありますか?
それとも、データベースのサイズについて過度に偏執的ですか?
(完全を期すために、アプリケーションは、Oracle 10g への CoreLab / DevArt OraDirect.Net ドライバーを使用する .Net WinForms です)
java - JPA/Toplink を使用したバッチ挿入
HTTP インターフェイスを介してメッセージを受信する Web アプリケーションがあります。
このリクエストには、送信者の ID、受信者の ID、およびメッセージのテキストが含まれています。
このメッセージは次のように処理する必要があります。
- ソースと宛先の両方に一致する User オブジェクトをデータベースから検索する
- オブジェクトのツリーの作成: メッセージ テキスト用のフィールドと、ソースと宛先用の 2 つの User オブジェクトを含む Message
- このツリーをデータベースに永続化します。
ツリーは、私が触れることができない他のアプリケーションによって読み込まれます。
Oracle をバッキング データベースとして使用し、JPA と Toplink をデータベース処理タスクに使用しています。可能であれば、私はこれらにとどまります。
多くの最適化を行わなくても、私の環境では最大 30 リクエスト/秒のスループットを達成できます。それほど多くはありません。1 秒あたり約 300 リクエストが必要です。そのため、パフォーマンスのボトルネックがどこにあるかを測定したところ、呼び出しにem.persist()
ほとんどの時間がかかっていることがわかりました。その行を単にコメントアウトすると、スループットは 1000 リクエスト/秒をはるかに超えます。
簡単な JDBC 呼び出しを使用して同じデータベースに 100 万のメッセージを永続化する小さなテスト アプリケーションを作成しようとしました。バッチ処理を使用しました。つまり、100 回の挿入とコミットを行い、すべてのレコードがデータベースに入るまで繰り返しました。このシナリオで 1 秒あたり約 500 リクエストのスループットを測定しましたが、これは私のニーズを満たすものでした。
ここで挿入パフォーマンスを最適化する必要があることは明らかです。ただし、前述したように、純粋な JDBC ではなく、JPA と Toplink を引き続き使用したいと考えています。
JPA と Toplink を使用してバッチ挿入を作成する方法を知っていますか? JPA 永続化のパフォーマンスを向上させるための他の手法をお勧めできますか?
追加情報:
「リクエスト/秒」とは、リクエストの合計数 / テストの開始からデータベースに書き込まれた最後のレコードまでの合計時間を意味します。
em.persist()
サーブレットとパーシスタの間にメモリ内キューを作成して、非同期呼び出しを試みました。パフォーマンスに大きく貢献しました。ただし、キューは非常に急速に増加し、アプリケーションは 1 秒あたり最大 200 のリクエストを継続的に受信するため、これは私にとって受け入れられる解決策ではありません。
この分離されたアプローチではem.persist()
、トランザクションをコミットする前に、100 ミリ秒のリクエストを収集し、収集したすべてのアイテムを呼び出しました。EntityManagerFactory は、各トランザクション間でキャッシュされます。
java - Oracle 8.x シリーズでプログラムによって文字を置き換える方法
Java アプリケーションの 1 つで繰り返されるエラーのため:
理想的にはプログラムによる方法で、Oracle データベースの一部の Unicode 文字を「修正」する必要があります。特定したら、それを「検索して置き換える」簡単な方法は何でしょうか?
database - Oracle データベースから CSV ファイル (またはその他のカスタム テキスト形式) としてデータを取得する
Oracle データベースに接続し、単純な SELECT クエリを実行し、結果を CSV 形式で stdout に吐き出すサンプル perl スクリプトは素晴らしいでしょう。Python や、典型的な UNIX ディストリビューションで利用可能なその他の言語も問題ありません。
リモート Oracle データベースのユーザー名とパスワードだけでゼロから始めていることに注意してください。これには、適切なオラクル接続ライブラリがあるだけではありませんか?
Mathematica でこれを直接行う方法があれば、それが理想的です (おそらく、J/Link (mathematica の Java 統合機能) で可能になるはずです)。
oracle - Lisp から Oracle plsql プロシージャを実行するにはどうすればよいですか?
どうすれば始められますか?
database - パフォーマンスとスケーラビリティの問題なしにデータベース アクティビティを監査する方法
アプリケーションからのものであるか、他の手段でSQLを発行した人であるかに関係なく、すべてのデータベースアクティビティを監査する必要があります。したがって、監査はデータベース レベルで行う必要があります。問題のデータベースは Oracle です。私は、トリガーを介してそれを行うことを検討しました。また、オラクルが提供するファイングレイン監査と呼ばれるものを介して行うことも検討しました。どちらの場合も、特定のテーブルと特定の列の監査を有効にしました。ただし、これらの方法のいずれかを使用すると、パフォーマンスが本当に悪いことがわかりました.
データのプライバシーに関する規制により、監査は絶対に必要であるため、パフォーマンスを大幅に低下させずにこれを行うにはどうすればよいかを考えています。誰かがこれに関してOracle固有の経験を持っている場合、それは役に立ちますが、データベースアクティビティの監査に関する一般的な慣行だけでなくても問題ありません。
sql - sqlplus または rman を使用した Oracle 10g テスト用のデータベースのバックアップ/復元
テスト サーバーで Oracle 10g を使用して、データベースを静的なポイントにバックアップおよび復元する最も効率的で簡単な方法は何ですか。
ユースケースの例は次のとおりです。
- すべてのソフトウェアをインストールして構成する
- データをベース テスト ポイントに変更する
- どういうわけかバックアップを取ります(これは質問の一部です、これを行う方法)
- テストをする
- ステップ 3 の状態に戻る (バックアップ ポイントに復元します。これが質問の残りの半分です)
これは、sqlplus、rman、またはその他のスクリプト可能な方法で完了するのが最適です。
c# - C# から Oracle DB の最後の INSERT/UPDATE を監視するためのスニペット?
Oracle データベースを監視し、基本的に最後の更新を確認するための C# コードの簡単なサンプル スニペットを探しています。コマンドライン (Nagios との将来の統合に最適) または GUI のいずれかです。私はいくつかのプロトタイプを作成しましたが、まだ言語を学習しているため、コードが長くなる傾向があります。
任意の提案/コメントをいただければ幸いです。
sql - Oracleでストアドプロシージャを作成および編集するために何を使用しますか?
Oracleでストアドプロシージャを編集および作成するための多くのオプションがあります。あなたに最適なツールは何ですか、そしてその理由は何ですか?(回答ごとに1つのツール。)