問題タブ [sqlcl]
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.
performance - csv ファイルへのデータのエクスポート: sqlplus vs sqlcl parallel vs pl/sql utl_file dbms_parallel_execute、どちらが高速か
私の最後のプロジェクトでは、膨大なデータ (4,000 万行) を読み取る必要があり、行ごとにプロセスをトリガーする必要があるという要件に取り組んでいました。設計の一環として、各スレッドが Jdbc カーソルを使用して特定のパーティションのデータをフェッチするマルチスレッドを使用し、フェッチ サイズを設定しました。ただし、Prod 環境のアプリケーションでジョブを実行すると、データベースからのデータのクエリに時間がかかるため、処理が遅くなることがわかりました。
ジョブ実行の完了までに非常にタイトなタイム ラインがあったため、データが SQL Developer から csv ファイル形式でエクスポートされ、小さなファイルに分割される場所を回避する方法を考え出しました。これらのファイルはジョブに提供されます。これにより、仕事のパフォーマンスが大幅に向上し、時間通りに仕事を完了するのに役立ちました。
上記のように、データをファイルにエクスポートするために手動の手順を使用しました。このステップを自動化する必要がある場合、たとえば Java アプリからのエクスポート ステップを実行すると、以下のオプション (Web で提案されている) のいずれかが高速になります。
- sqlplus (sqlplus へのネイティブ呼び出しを行う Java)
- sqlcl 並列スプール
- utl_file および dbms_parallel_execute を使用した pl/sql プロシージャ
以下のリンクは上記の詳細を示していますが、統計はありません。
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9536328100346697722
現在、私はこの Oracle 環境にアクセスできないため、私の側からはテストできませんでした。また、私はアプリケーション開発者であり、DB 側の専門知識はあまりありません。そのため、以前に同様のユースケースに取り組んだことのある人、または関連する専門知識を持っている人からのアドバイスを探しています.
前もって感謝します。
oracle - ファイルのフォーマット時に Oracle sqlcl フォーマットがカスタム ルールを無視する
sqlcl は、バッファーをフォーマットするときにフォーマット規則を使用しているように見えますが、ファイルをフォーマットする場合はそれらを無視します。
入力ファイル (test.sql) とフォーマット ルールの小さなセット (format.xml) があります。
ファイルではなくバッファに適用されるルールを示す sqlcl セッション:
SQLFORMATPATH の設定も機能しません。
windows-10 - Adoptopenjdk を使用した SQLCL
いくつかの「魔法」を理解したいのですが、再現方法は次のとおりです。
ここで SQLCL を入手してください: https://www.oracle.com/fr/database/technologies/appdev/sqlcl.html
ただし、SQLCL には jre 1.8 が必要なので、ここで AdoptOpenJDK 8 を入手してください: https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot
java_home が設定され、 path に sqlcl がある場合:
私が見つけた2つの解決策:
- 最新の公式 JRE 1.8 をインストールします。
- aptopenjdk next (および NOT IN) から jre を sqlcl フォルダーにコピーします。
注:openjdkはデフォルトのフォルダーにインストールしましたが、sqlclは同じドライブのカスタムフォルダーにインストールしました。
それをどう説明しますか?
(私はopenjdkを使いたいので、最初の解決策はあまり好きではなく、2番目の解決策は少し汚いと思います...)
java - oracle - sqlcl.exe ログイン エラー: クラス sun.management.ManagementFactoryHelper を初期化できませんでした
Oracle の sqlcl を使用して、SPOOL を使用して開発用コンピューターにデータ ダンプ ファイルを作成することができました。ただし、Java がインストールされている Windows サーバーで sqlcl を実行しようとすると、次のエラーが発生しました。
C:\path>sql.exe ユーザー名/パスワード@接続文字列
SQLcl: 2021 年 1 月 8 日金曜日 13:41:39 に 20.3 プロダクションをリリース
Copyright (c) 1982, 2021, オラクル. 全著作権所有。
ユーザー = ユーザー名
URL = jdbc:oracle:thin:@connection_string
エラーメッセージ = クラス sun.management.ManagementFactoryHelper を初期化できませんでした
SQL開発者を使用してデータベースにアクセスできたため、リモートデータベースサーバーによって拒否されたようには見えません。開発用コンピューターで同じコマンドをテストしたところ、動作したため、ログイン資格情報または接続文字列のエラーではないようです。
周りを検索しましたが、関連するトピックはありませんでした。
SQLcl バージョン: リリース 20.3 プロダクション
Java バージョン: 「1.8.0_271」
Java(TM) SE ランタイム環境 (ビルド 1.8.0_271-b09)
Java HotSpot(TM) 64 ビット サーバー VM (ビルド 25.271-b09、混合モード)
############ 編集:
環境変数については、次のとおりです。
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1. 0;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Amazon\cfn-bootstrap;C:\Java\jre1.8.0_271; C:\Java\jre1.8.0_271\bin;C:\Java;C:\oracle\instantclient;C:\oracle