タグ

ブックマーク / www.shift-the-oracle.com (5)

  • CSV 出力を10倍高速にする方法 - オラクル・Oracle PL/SQL 入門

    PARALLEL_EXECUTE パッケージ・モジュール ジョブを使用してマルチタスク処理させるためのフロント・モジュール このモジュールから UNLOAD のプロシージャを複数個、並列化して呼び出す。 仕様と制限 物理 ROWID を使用してデータの格納ブロックによってチャンク分割を行なっている。 論理 ROWID を使用する 索引構成表、外部表、および、ビュー などには使用できないため、別の分割方法を組み込んでカスタマイズする必要がある。NTILE 分析関数などは簡単なバケット分割方法であるがパフォーマンスを上げるひと工夫が必要だろう。 BIGFILE 表領域 に対してもソースの変更作業が必要となる(※2) DBMS_SCHEDULER 組み込みパッケージを使用しているため、Oracle 10g 以上の環境が必要。 ファイルの結合処理は含まれていない:ファイルを1つに結合したい場合には

  • データ型 - オラクル・Oracleをマスターするための基本と仕組み

    (※1) Oracle 12c において、初期化パラメータ COMPATIBLE = 12.0.0.0以上、MAX_STRING_SIZE = EXTENDED でデータベースを構築またはアップグレードしておく必要がある。従来型と異なる表外格納形式、索引が桁あふれから特殊な方式になることもあってか現行のデフォルト設定ではない。(Oracle12c R2 時点) (※2) 上限が 4000 バイトの場合、UTF8(1〜4byte) 最短 1333 文字 AL32UTF8(1〜4,6 byte) Oracle 10g R2 (Unicode 4.0) では 最短 666 文字、Oracle 11g (Unicode 5.0) では 1000 文字となる。 Oracle 12c で 初期化パラメータ MAX_STRING_SIZE = EXTENDED で 構築している場合には 8191 文字が

    learn
    learn 2010/05/04
  • PL/SQL データタイプ - オラクル・Oracle PL/SQL プログラミング

    PL/SQL 変数のデータタイプ 、PL/SQL 固有のデータタイプ PL/SQL はデータベースに格納できるデータタイプとは種類や精度が異なるものある。 データベースのデータの内部構造と PL/SQL のデータの格納構造の違いはわかりません。( DUMP 関数が使用できないため ) SYS.ANY DATA 型のタイプコードの多くがデータベースのそれと一致しないところからみると、内部では違う形式で格納されていることを連想させる。 参照: データベース上のデータタイプ / コレクション(配列)型 / レコード型 PL/SQL 変数のデータタイプ一覧

  • PL/SQL コレクション型 - オラクル・Oracle PL/SQL プログラミング

    PL/SQL の配列 = コレクション型 PL/SQL コレクション型には 大きく分けて PL/SQL 表と VARRAY(可変長配列) が存在する。 PL/SQL 表 PL/SQL 表とは、オラクルのコレクション型の一種。 結合配列(索引付き表) と ネストした表 (NESTED TABLE) が PL/SQL 表と呼ばれている。 昔のオラクルには 索引付き表しかなく、索引付き表はデータベースに格納できず PL/SQL でしか扱えなかったため PL/SQL 表と呼ばれたと思われる。 現在は ネストした表 も PL/SQL 表に含まれているが、こちらは テーブルに格納可能。 PL/SQL 表 という言葉が正確な意味をあらわしていないため、その表現は消えつつある(と思う)。 結合配列 (索引付の表) マニュアルには結合配列と訳されているが、原文では Associative Array (=連

  • PL/SQL ブロックを実行する - オラクル・Oracle SQL*Plus リファレンス

    PL/SQL ブロックの実行 データベースにアクセスする SQL コマンドの実行 SQL*Plus のコマンド・プロンプト から PL/SQL を入力する。 PL/SQL コマンドの入力したのち最終行にスラッシュ(/) を入力して改行することで入力した PL/SQL が実行される。 PL/SQL ブロックの入力と実行 SQL> conn rivus/rivus_pass SQL> set serveroutput on 接続されました。 SQL> declare 2     vName   VARCHAR2(10); 3  begin 4     for vRec in (select user_name from account) 5     loop 6             dbms_output.put_line(vRec.user_name); 7     end loop;

  • 1