タグ

oracleに関するmfhamのブックマーク (58)

  • Style Guide — Oracle SQL & PL/SQL Optimization for Developers 3.1.0 documentation

    mfham
    mfham 2021/01/26
  • Oracle APEX

    Oracle APEXとは Oracle APEXは、世界有数のエンタープライズ・ローコード・アプリケーション・プラットフォームです。世界クラスの機能を使って、クラウドでもオンプレミスでも、どこにでもデプロイできる、スケーラブルでセキュアなWebおよびモバイル・アプリケーションを構築できます 開発者はAPEXを使用することで、現実の問題を解決してすぐに価値を生み出す、魅力的なアプリケーションを迅速に開発してデプロイできます。洗練されたソリューションを生み出すために、無数にあるWebテクノロジのエキスパートになる必要はありません。問題の解決に集中し、残りの仕事Oracle APEXに任せてください。 ロー・コードについてさらに学習 機能の探索

    mfham
    mfham 2020/12/15
  • Oracle11g→12cへ移行した際の実行計画の変動について - chanting an air of joyous bliss

    Oracle11g→12cへ移行した際に同一SQLが移行前後で劣化していないか検証しているのだが、実行計画がHashJoin結合からNestedLoop結合変更されているケースがちらほら散見されている。 一般的にHashJoin結合とNestedLoop結合を比較した場合、駆動表となるテーブルのレコード数が少ない場合はNestedLoop結合が、多い場合はHashJoin結合が有利になる。 11g→12cで実行計画がHashJoin結合からNestedLoop結合変更になったことでSQLの実行が早くなったものもあれば遅くなったものあるが、色々検証した結果、今回の実行計画の変動は正直、NestedLoop結合になったことによるメリットより、デメリットのほうが上回る結果となった。 というのも既存のSQLはNestedLoop結合になるようにチューニングされており、実行計画がHashJoin結合

    Oracle11g→12cへ移行した際の実行計画の変動について - chanting an air of joyous bliss
    mfham
    mfham 2020/12/11
  • BULK COLLECTとFORALLによるバルク処理 | Oracle 日本

    PL/SQLの理解と利用に関するシリーズ記事のパート9 このシリーズの前回の記事では、PL/SQLのコレクションについて説明しました。コレクションというデータ構造は、プログラム・データのリストを操作するアルゴリズムを実装する場合に非常に便利ですが、さらにPL/SQLにおける一部の強力なパフォーマンス最適化機能の主要な要素でもあります。 この記事では、パフォーマンス最適化機能のうちもっとも重要な、BULK COLLECTとFORALLについて取り上げます。 BULK COLLECT:1回のフェッチで複数の行を取得するSELECT文。データ取得が高速化される FORALL:コレクションを使用してデータの複数行をすばやく変更するINSERT、UPDATE、DELETE ここでのすばやくとはどういう意味か、これらの機能が持つ実際の影響度はどれほどなのかという疑問を持つかもしれません。実際の結果は、

    mfham
    mfham 2020/12/10
  • Efficient way to UPDATE bulk of records in Oracle Database

    mfham
    mfham 2020/12/10
  • コーソルDatabaseエンジニアのBlog

    コーソル DatabaseエンジニアBlog へようこそ コーソル DatabaseエンジニアBlogでは、 コーソル所属のエンジニアOracle Databaseを中心としたDatabaseに関わる技術情報を発信しています。 コーソルでは、Oracle Databaseをはじめとするデータベース全般に関わるサービス(コンサルティング、設計、構築など)、オラクル製品のプロダクトサポートサービスを提供しています。 また、不定期で無償の技術セミナーを開催しています。 株式会社コーソル - サービス案内 株式会社コーソル - セミナー情報 コーソルでは、Oracle DatabaseスペシャリストになりたいエンジニアOracle Database技術を活かして働きたいエンジニアを絶賛募集中です。 コーソルについて知るためには・・・ 株式会社コーソル - 会社情報 人事ブログ - 『コー

    mfham
    mfham 2020/12/08
  • 【Oracle】ビューとマテリアライズド・ビュー(マテビュー)について - Seita developer blog

    今回は、Oracleのビューとマテリアライズド・ビュー(マテビュー)について説明したいと思います。 [ビューとは] ビューとは、複数のテーブル(表)を結合し、その結果をテーブルのように見せる表現のことです。 結果をテーブルのように見せるだけなので、バックグラウンドではSELECTは走っています。 利用シーンとしては、正規化したデータを崩さずに参照しやすくするためなどに使います。 ビューとは、別の表または表の組合せの論理表現です。 引用:ビュー、順序およびシノニムの管理 DDLで書くとこんな感じです。 CREATE VIEW rey_view AS SELECT a.* FROM rey_tbl1 a, rey_tbl2 WHERE a.empNo = b.empNo; [ビューとマテビューの違い] マテリアライズド・ビューとは、ビューと同じく複数のテーブルを結合し、その結果をテーブルのよう

    【Oracle】ビューとマテリアライズド・ビュー(マテビュー)について - Seita developer blog
  • マテリアライズド・ビューの概要とアーキテクチャ

    3 マテリアライズド・ビューの概要とアーキテクチャ この章では、マテリアライズド・ビューの概念およびアーキテクチャについて説明します。 この章には、次の項が含まれます。 マテリアライズド・ビューの概要 マテリアライズド・ビューのアーキテクチャ マテリアライズド・ビューの概要 Oracleでは、マテリアライズド・ビュー(以前はスナップショットと呼ばれていたもの)を使用して、レプリケーション環境のマスター・サイト以外のサイトにデータをレプリケートし、コストのかかる問合せをデータ・ウェアハウス環境にキャッシュします。この章およびこのマニュアル全体では、レプリケーション環境で使用するマテリアライズド・ビューについて説明します。 この項には、次の項目が含まれます。 マテリアライズド・ビューについて マテリアライズド・ビューの使用目的 読取り専用、更新可能および書込み可能のマテリアライズド・ビュー 使

  • エスケープシーケンス - オラクル・Oracle PL/SQL 入門

    エスケープ・シーケンス 単一引用符(') を表現するための様式として単一引用符を2回連続して記述するという「シークエンス(シーケンス)」がある。 シーケンスとは 順序番号のシーケンス というより、スペースシャトル発射までの 「発射シークエンス」 という意味合いに近い。英語では同じ SEQUENCE。 元々のエスケープシーケンスとは、画面には直接表示されない文字列で、 [ESC] 文字コード + コマンド記号 + (パラメータ)というシーケンス(=定義済みの一連の動作)をあらわすものである。一般に '〜Term' と呼ばれる端末エミュレータ、VT-100 互換のターミナルエミュレータのカーソル移動なども、このエスケープシーケンス処理で行なわれている。これら様々な特殊なコマンドセットの総称をエスケープシーケンスと呼んでいる。 C言語 などの開発言語では [ESC] ではないエスケープ文字(\)

    mfham
    mfham 2017/01/18
  • 11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に - 開発の風景 〜KKZのSE日記〜

    以前にMySQLのGROUP_CONCAT関数についてのエントリーを書いていたのですが、あれから5年。 1対多の関係を持つ親子テーブルがあった場合、1つの主キーに対して結合結果が複数行になることはよくあると思いますが、 MySQLでは上記の関数を使うことで複数行内の列をひとつの文字列としてまとめることができます。 ・ ・ ・Oracleでも出来なくはないんですが、かなり面倒なんですよねぇ。 Oracleでも11g R2から同様の集計関数 LISTAGGが追加されており、容易に対応が実施できるようになりました。 まず私の目を惹いたのは、LISTAGG(LIST AGGREGATE)です。簡単にいうと、グループ化された行に存在する値を集約し、1つのリストを生成します。 従業員のリストを例にとってみましょう。LISTAGGはCOUNTの機能のように、この表を集約し、すべての文字列を1つの大きな文

    11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に - 開発の風景 〜KKZのSE日記〜
  • 複数行をまとめて1行に集約(LISTAGG関数) - Qiita

    LISTAGG(集約対象の列名, セパレート文字列) WITHIN GROUP (order by 集約対象のソート指定列(指定なしの場合はnull)) 公式リファレンス 公式のSQLリファレンスはこちらになります。 LISTAGGは、指定されたメジャーについて、 ORDER BY句に指定された各グループ内でデータを順序付け、 メジャー列の値を結合します。 - 単一セットの集計ファンクションとして使用すると、 LISTAGGはすべての行に対して操作を行い、1つの出力行を戻します。 - グループ・セットの集計に使用すると、 このファンクションはGROUP BY句に定義されたグループごとに操作を行い、 そのグループごとに1つの出力行を戻します。 - 分析ファンクションとして使用すると、 LISTAGGはquery_partition_clauseに指定された1つ以上の式に基づくグループに、 問

    複数行をまとめて1行に集約(LISTAGG関数) - Qiita
  • 同一グループの中で最大のレコードを取得する SQL を書く | Webシステム開発/教育ソリューションのタイムインターメディア

    +----+----------+------------+---------+ | id | group_id | updated_at | comment | +----+----------+------------+---------+ | 1 | 1 | 2013-12-01 | C | | 2 | 2 | 2013-12-01 | A | | 3 | 1 | 2013-12-02 | B | | 4 | 2 | 2013-11-30 | D | +----+----------+------------+---------+ CREATE TABLE sample_table ( id int(11) NOT NULL, group_id int(11) NOT NULL, updated_at date NOT NULL, comment varchar(60) NOT NU

    同一グループの中で最大のレコードを取得する SQL を書く | Webシステム開発/教育ソリューションのタイムインターメディア
  • rubyからociでつないだoracleのフェッチが異様に遅かった話 - Qiita

    リモートのoracleからデータを抜いてローカルのoraceにコピーしようとしたら、抜いてくる段階で異様に時間がかかってしまいはまりました。。 環境 MacOS X Yosemite Ruby 2.1.5 ruby-oci8 oracle11.2.0.4 やりたかったこと リモートのマスターDBからデータをCSVで抜いて、ローカルの開発用DBにコピーしたい 問題 テスト環境では問題ないのに、DBにつなぐとSELECTした後のfetchが異様に遅い 題 とあるシステムの開発のために、リモートのDBから定期的にローカルにデータをコピーしてくる必要がありました。 rubyからoracleにつなぐのは初めてだったんですが、とりあえず調べながらさくっと作ったコードが以下 @conn = OCI8.new('scott','tiger','hogehogetns') sql = 'select

    rubyからociでつないだoracleのフェッチが異様に遅かった話 - Qiita
  • Windows版 オラクル完璧削除 - Railsプロになろう!

    仕事Oracleをよく使うので、インストールしたり、アンインストールしたすることが多いです。 しかし、アンインストールはなかなか綺麗にアンインストールは難しいです。 Windows版 オラクル完璧削除(クリーンな状態)な資料を見つかったので、ここで載せます。 1.前準備 下記の手順を行う前に、以下の場所を記録してください。 1-1 □ ORACLE_HOME ディレクトリの場所 レジストリ、HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEn\ORACLE_HOMEで確認できます。 1-2 □ ORACLE 関連のディレクトリの場所 各インスタンスごとに設定されている ORACLE_BASE(データファイルおよびアラートファイル等のログファイルの格納ディレクトリ)のディレクトリ、アーカイブログの出力先ディレクトリを記録してください。 2.Administrat

    Windows版 オラクル完璧削除 - Railsプロになろう!
    mfham
    mfham 2014/11/28
  • 『[Oracle] ORA-01410: ROWIDが無効です。』

    ORA-01410: ROWIDが無効です。 何度か出くわしたことのあるこのエラー。 Oracle内部での処理の競合によってごくまれに発生することがあるそうです。 その事例の1つとして、インデックスの再作成(ALTER INDEX ~ REBUILD)の実行中に該当テーブルに対する問い合わせを実行した時に発生するというものがあります。 偶発的で再現性もないため、ついつい原因追究をうやむやにしがちなのですが、私の出くわしたケースも、ちゃんと調べてみると、大体、この事例にあてはまります。 インデックスの再作成は運用中にも可能な作業ではありますが、使用状況によっては実行のタイミングを慎重に検討した方がいいようです。

    『[Oracle] ORA-01410: ROWIDが無効です。』
  • ListAgg in Oracle 10g - オラクル・Oracle SQL 関数リファレンス

    ListAgg in Oracle 10g Top | Knowledge| DB構築| 文字列関数| 日付関数| 集計関数| SQL関数(アルファベット順) SQL(抽出・更新)| SQL*Plus| PL/SQL| Utility| Structure| スキーマ| チューニング| 用語| 参考書 ListAgg 集計ファンクションを Oacle 10g で実現する。 ListAgg ファンクションは Oralce 11g R2 から利用できる集計関数、分析関数である。 MySQL における group_concat 関数の Oracle 10g 版である。 ListAgg 相当の機能を Oracle 10g、11g R1 で実現するには ListAgg 相当の機能を実現するには、いくつかの方法がある。 実現方式案 データ・カートリッジ機能によるユーザー定義の集計関数を作成する Ora

    mfham
    mfham 2014/10/24
  • Oracleの階層問い合わせ(5) (ListAgg関数を模倣)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Oracleの階層問い合わせ(5) (ListAgg関数を模倣)
    mfham
    mfham 2014/10/24
  • Oracle の隠し関数 wmsys.wm_concat が非常に強力な件について

    Oracle には非公開の隠し関数やパラメータが非常に多く存在します。そんな中でもつい最近知った wmsys.wm_concat という関数が非常に強力です。機能としては集約関数に相当するもので、正規化したテーブルを非正規化して出力するような要件にピッタリですが、Oracle 11g のマニュアルにも記載されていないので Undocumented な関数であることを理解して使用する必要があります。(※つまりは Oracle 保守でもサポート外ってわけです。) さて、実際どのようなことができるかをみてみます。例えばポイントサイトのようなサービスにおけるポイント管理テーブルを考えてみます。たとえば、以下のような簡易なテーブル構造であったとします。※このエントリ用の仮想的なテーブルですので実用的ではないです。 名前 NULL? 型 備考 ----------------- -------- --

    mfham
    mfham 2014/10/24
  • でイメージするOracle DatabaseのSQL全集 第3回 分析関数 | Oracle 日本

    全称肯定,全称否定,存在肯定,存在否定 複数行にまたがった条件のチェック 全ての行が条件を満たすか? 全ての行が条件を満たさないか? 少なくとも1行が条件を満たすか? 少なくとも1行が条件を満たさないか? といった複数行にまたがったチェックをしたい時には、分析関数のmin関数やmax関数と、case式を組み合わせると有効です。 create table BoolSample(ID,Val) as select 111,3 from dual union all select 111,3 from dual union all select 111,3 from dual union all select 222,3 from dual union all select 222,1 from dual union all select 333,0 from dual union all se

    mfham
    mfham 2014/10/24
  • Oracleの階層問い合わせ(5) (ListAgg関数を模倣)

    はじめに Oracleの階層問い合わせについて、基事項から使用例まで、SQLのイメージを交えて解説します。稿ではsys_connect_by_path関数の応用例として、Oracle 11g R2の新機能のListAgg関数を模倣する方法と、all_dependenciesデータディクショナリビューに対する階層問い合わせを扱います。 対象読者 Oracleの階層問い合わせを使いたい方 OracleSQLの理解を深めたい方 必要な環境 稿で扱うSQLは、Oracle 11.1.0.6.0で動作確認しました。 1. ListAgg関数を模倣 MySQLのGroup_Concat関数のように文字列を連結する関数として、Oracleでは、wmsys.wm_concat関数というマニュアルにのってない隠し関数がありますが、同等の機能を持つListAgg関数がOracle 11g R2で正式に

    Oracleの階層問い合わせ(5) (ListAgg関数を模倣)
    mfham
    mfham 2014/10/24