タグ

Oracleに関するreplicationのブックマーク (276)

  • 複合インデックスは、構成列のどの列を指定すれば選択候補に挙がるのか。 - sgyatto's blog

    複合インデックスについて、「構成列の一部が指定された場合でも効く」というのはなんとなく知っていたのですが、その組み合わせの範囲とやらがわかっていなかったので、公式ドキュメントをベースに調べてみました。対象は、Oracle Database, MySQL, PostgreSQLです。 前提 あくまで「複合インデックスが選択される可能性がある」というだけです。先頭列を抽出条件に含まなかったり、偏った部分集合を抽出条件とした場合などは、別のスキャン方法が選択される可能性が高いです。どのインデックスが選択されるかは、オプティマイザが総合的に判断するということを前提としてください。 想定する状況 あるテーブルのカラム(C1, C2, C3) に対して複合インデックスを貼っている状況を考えます。C1, C2, C3 の順で順序付けされています。 上記カラムをSQLで指定した場合に、どのような組み合わせ

    複合インデックスは、構成列のどの列を指定すれば選択候補に挙がるのか。 - sgyatto's blog
  • 初期化パラメータ PROCESSES はいくつにすれば良い? - ablog

    PROCESSESには、Oracleに同時に接続できるオペレーティング・システムのユーザー・プロセスの最大数を指定します。この値は、ロック、ジョブ・キュー・プロセス、パラレル実行プロセスなどのすべてのバックグラウンド・プロセスを考慮して設定する必要があります。 http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05771-03/initparams.htm#97571 ということらしいが、いまいちよくわからないので、ちょっと検証してみた。 初期化パラメータ PROCESSES は 30 SQL> select value from v$parameter where name ='processes'; VALUE ----- 30初期化パラメータ SESSIONS は 38 SQ

    初期化パラメータ PROCESSES はいくつにすれば良い? - ablog
  • count(*)とcount(1)では性能は変わらない

    ORACLEの組み込み関数の一つであるCOUNTは引数を一つとることができ、「count(*)」と、「count(1)」といった書き方がされますが、 count(*)とcount(1)では性能は変わらず結果も同一となります。この理由及び性能が向上する書き方について解説します。 何故COUNT(*)とCOUNT(1)の性能は変わらないか これはCOUNT(*)とCOUNT(1)は全く同じ結果が戻る構文であり、これにより採択される実行計画のバリエーションも同じであるためとなります。 実行計画が同じであればパース以降の実際に処理する処理時間も基的に変わりません。 性能が向上するCOUNT関数の書き方 いくつかの条件を満たした場合に「count(<列名>)」という記載に変更すると性能が向上するケースがあります。 また、COUNT(*)と結果が同一になる条件もあることには注意してください。 性能が

  • ORA-12514: TNS: リスナーは現在、接続識別子でリクエストされているサービスを認識していません(TNS-12514) | 技術情報 | 株式会社コーソル

    02.ORA-12514 の一般的な発生要因と対処 ORA-12514は一般に以下の要因で発生します。 リスナーにサービスが登録されていない クライアントの接続定義が誤っている リスナーにサービスが登録されていない lsnrctl servicesコマンドを用いて、リスナーに登録されているサービスを確認します。 c:¥>lsnrctl services LSNRCTL for 32-bit Windows: Version 11.2.0.2.0 - Production on 02-2月 -2012 17:20:22 Copyright (c) 1991, 2010, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=C10203477)(PORT=1521)))に接続中 サービスのサマリー...

  • Oracle SQL Developer で、Enterも、DELもBackSpaceも効きません・・・・ - 自堕落な投資ずきSEの日記

    orz.......。 ということで解決策を。 Tools > Preferences > Accelerators > Load Preset を押す ということらしいです。キーボード関連の設定がぶっ壊れることがあるらしく、それは上記の操作で直るとのこと。私はXPですが、 Oracle SQL Developer 1.5.4 for MacOSXでキーボードプリセットがロードされていない件 が参考になりました。 その他の症状としては、 Ctrl+C でコピーできない Ctrl+V でペーストもできない 立ち上げなおしてもなおらない ↑↓キーで、Windowがスクロールしてしまう(カーソルが動かない) といった感じでした。原因は、重いSQLで返事がなくなったため、プロセスを強制終了を連打していたことと思われるのですが、当のところは分かりません。

    Oracle SQL Developer で、Enterも、DELもBackSpaceも効きません・・・・ - 自堕落な投資ずきSEの日記
  • Oracle Database 12c の新機能「適応計画と自動再最適化」 | 株式会社NTTデータ先端技術

    今号では、 Oracle Database 12c の新機能である適応計画と自動再最適化をご紹介します。ぜひご一読ください。 統計情報と実行計画 Oracle Database では、SQL の実行計画を決定する際、事前に採取した統計情報を参照して処理の対象となる表のデータ傾向を把握します。この傾向に基づいて最も処理コストが低くなると予測されるアクセスパス、結合順序、結合方式などを決定します。 しかしながら、統計情報はリアルタイムで更新されるものではなく、頻繁に大量の更新が行われる表では統計情報と実際の表のデータ傾向に大きな乖離が生じる場合があります。 このような状況では、Oracle Database が処理対象となる表の状況を「勘違い」してSQL のコスト計算を行うため、Oracle Database が見積もった予測よりも遥かに大きな処理コストが必要な実行計画を採用し、大きなパフォー

    Oracle Database 12c の新機能「適応計画と自動再最適化」 | 株式会社NTTデータ先端技術
  • 「WHERE句の指定順序とパフォーマンス」(1) Database Expert - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

  • Oracleのパフォーマンス問題はCOUNT(*)の廃止で解決!? - PL/SQL Programing

    移行予定です。 http://oracle.tf17.net/plsql/ −−−−−−−− あるプロジェクトで知り合いのDBコンサルタントから助言されました。 「パフォーマンスの問題は、ソースコード見て、データの存在チェックにCOUNT(*)使っているところを直せば、9割方解決する。」 具体的にはこういうことです。 仕様で、 テーブルAにデータが1件も存在してなかったらエラーにする。 というロジックがあったとします。 これに対して、下記のようなプログラムを書いているのですよ!! : SELECT COUNT(*) INTO I FROM A -- IF I = 0 THEN ERROR! END IF; : 有り得ませんっ! こんなロジックで問題の9割を占めているとは、非常に驚きでした。 正しくは、下記のようになります。 : IS CURSOR C IS SELECT 1 FROM A;

  • Oracle DBアップグレード時のSQLテストの手法を知る

    連載では第1回でOracle Databaseにおけるプライベートクラウド構築の特徴的な技術とその利点を紹介、第2回では、プライベートクラウド構築に向けた具体的なアップグレード手法を解説してきた。 第3回の今回は、アップグレードの際に避けては通れないSQLのテスト手法について、最新の情報を紹介する。 データベースアップグレードの最大の関門は「SQLテスト」 Oracle Databaseをアップグレードする際、多くの企業が気に掛けるのが、SQLの実行計画の変更に伴う影響だ。読者の中にも、「SQLの実行速度が低下した」「旧バージョンで動作していたSQLがエラーになる」「実行結果が以前と変わってしまった」という経験をした方がおられるかもしれない。 アプリケーションで使われているSQLを全て把握するのは難しいという根的な問題もある。小規模なアプリケーションでもない限り、実際にどれだけのSQL

    Oracle DBアップグレード時のSQLテストの手法を知る
  • ORACLE 11g 検証 ~ フラッシュバックバージョン問い合わせ機能の利用 : オラクる。

    フラッシュバックバージョン問い合わせは、ある時点からある時点までに変更された行の変更履歴を表示する機能です。 どのような経緯で現在のデータになったのかを確認することが出来ます。 また、この機能はUNDOデータを利用する機能です。 今回はテスト表に対してトランザクションを実行してみます。 SQL> INSERT INTO test_table VALUES (1,'tadashi'); 1行が作成されました。 SQL> COMMIT; コミットが完了しました。 SQL> DELETE FROM test_table WHERE no = 1; 1行が削除されました。 SQL> COMMIT; コミットが完了しました。 SQL> INSERT INTO test_table VALUES (2,'suzuki'); 1行が作成されました。 SQL> COMMIT; コミットが完了しました。 S

    ORACLE 11g 検証 ~ フラッシュバックバージョン問い合わせ機能の利用 : オラクる。
  • Oracle Database 12cで非推奨となった機能とサポートが終了した機能

    8 Oracle Database 12cで非推奨となった機能とサポートが終了した機能 Oracle Database 12cでは、新機能に加え、データベースの動作変更が導入されました。変更された動作には、非推奨になったかサポートが終了した初期化パラメータ、オプション、構文および機能とコンポーネントの非推奨およびサポート終了が含まれます。 この章では、このリリースで非推奨になったか、サポートが終了した機能での動作の変更について説明します。この章では、Oracle Database 12cで導入された新しい機能およびOracle Databaseの以前のリリースでの変更については説明しません。 この章の内容は次のとおりです。 Oracle Databaseの変更点 Oracleビジネス・インテリジェンスおよびデータ・ウェアハウスの変更点 Oracle Database Securityの変更

  • Oracleデータベース作成時の自動メンテナンスタスクとは - kenken0807_DBメモ

    Oracle11gR2でDBCAを使用してデータベースを作成していると、↓のような自動メンテナンスタスクのチェックボックスを選択する項目がある。 この自動メンテナンスタスクはもちろんONにしたほうが良いが(defalt ON)何をやっているのか調べてみた。 自動メンテナンスタスクの機能 以下、三つの機能を実行する。 1. 自動オプティマイザ統計収集 2. 自動セグメント・アドバイザ 3. 自動SQLチューニング・アドバイザ(EEのみ) 自動メンテナンスタスクの実行される時間 デフォルトでは、7種類のメンテナンス・ウィンドウが事前定義されており、それぞれが曜日を表し、各windowに時間が設定されている。 その時間内にOracleが自動で負荷の少ない時間帯を判断し、上記の自動メンテナンスタスクの機能を実行する。 select WINDOW_NAME, AUTOTASK_STATUS,OPTI

    Oracleデータベース作成時の自動メンテナンスタスクとは - kenken0807_DBメモ
  • Oracle:リカバリとリストアの違い - 覚え書き.com

    Oracleデータベースのリカバリとリストアの概念が少し理解しずらかったので整理しておこうと思います。 基的にはパソコンのOSなどにおけるリカバリ(復旧)/リストア(復元)と言葉的な概念は同じですが、実作業は異なるものだと別物と覚えたほうが良さそうです。 リストアとは 一般的にパソコンのリストアといえばバックアップデータを用いてOSなどのデータを元の状態に戻す(復元)することを指します。 Oracleデータベースのリストアとは、バックアップ媒体から元の場所もしくは新しい場所へデータベースを構成する物理ファイルをコピーして復元することを指します。 リカバリとは 一般的にパソコンのリカバリといえばパソコンにインストールされているOSを出荷時の状態に戻す(復旧する)作業のことをいいます。 Oracleデータベースのリカバリとは、REDOログファイル(バックアップ取得~現在までのトランザクション

    Oracle:リカバリとリストアの違い - 覚え書き.com
  • 『[Oracle] shutdown normalでOracleインスタンスが停止しない。』

    [Oracle] shutdown normalでOracleインスタンスが停止しない。 | Archive Redo Blog shutdownコマンドには標準(normal)、トランザクション(transaction)、即時(immediate)、異常終了(abort)の4つのモードがありますが、shutdown normalで停止しようとした場合、接続中のセッションが存在するとそのセッションが終了するまでOracleインスタンスは停止しません。 ということは常識なのですが、ではセッションを切断してやれば停止できるのかとALTER SYSTEM KILL SESSIONコマンドを実行して、サーバー側から強制的に切断してみてもやはりOracleインスタンスは停止しません。 この時、v$sessionを確認すると select sid, serial#, username, status,

    『[Oracle] shutdown normalでOracleインスタンスが停止しない。』
  • 内部犯行を抑制するデータベース監査

    「第4回Oracleデータベースで活用したい『データの保護』と『暗号化』」では、Oracleデータベースの暗号化機能を利用した保存データの暗号化について説明した。今回は、データベース監査つまり保存データを監視するための機能について紹介する。 データベース監査の効果とは なぜ、データベース監査を行うのだろうか? 昨今、顧客情報保護の重要性が叫ばれており、社内のユーザーからの不正行為が顧客情報流出の原因の大部分を占めているという報告もあり、データベース監査は社内向け侵入検知システム(IDS)のような位置付けとなり得るということがあるためだ。 また、データベース監査の利用効果として、悪意を持った社内ユーザーなどのデータベースへの不正な動作を監視(記録・統計)するとともに、データベース監査しているということを社内的にアナウンスするだけで、ある程度の抑止効果も同時に生むことが考えられる。≪ ●Ora

    内部犯行を抑制するデータベース監査
  • Oracle Database 11g の標準セキュリティ設定について#1

    最近、DBバージョンアップ&移行案件のDB設計をやっているので、 ただでさえ多いベーシックネタが更に多くなります。 自分へのメモだけど、誰かの一助になれば。。 (バージョンアップの時にこういうところも気にしているんだとかね。) さて、今回はOracle Database 11g での標準セキュリティ設定について。 ここ数年の世相を受けてデフォルトがいくつか変わっています。 バージョンアップしてから、「え?そうなの?」というのはお粗末な話。 (割とよく聞くけど。。) 11gで大きく変わったセキュリティ関連の設定は3つ 1)Auditの監査設定が標準設定されている 2)DEFALUTプロファイルのパスワード関連の設定が強固に 3)パスワードの大文字小文字を区別するようになった では、見ていきます。 ■環境 Windows7 64Bit Oracle Database 11g Enterpris

  • 監査ログ(AUDIT_TRAIL)の変更・不要データの削除 | Oracle使いのネタ帳

    高度セキュリティ設定を維持 を指定すると、パスワード有効期限や 失敗許容回数など、プロファイルが厳格になりセキュリティが強化される。 よって運用ルールに合わせて設定値の見直しを行ったりする。 DBCAの高度セキュリティ設定維持 詳細内容はOracle11gのDBCAで高度セキュリティ設定を維持を選択すると?で前に書いたが、 11gR2からは有無を言わさず必須となった模様。 プロファイル系のセキュリティ設定のみとうっかりスルーしていたが、 監査ログが有効になるのを忘れてはいけなかった(恥)。 監査ログの初期化パラメータ audit_trail を確認すると、 VALUE が DBDB監査が設定されていることが分かる。 ちなみに OS 監査なら VALUE が OS 、未設定なら NONE となる。 SQL> show parameter audit_trail NAME TYPE VA

    監査ログ(AUDIT_TRAIL)の変更・不要データの削除 | Oracle使いのネタ帳
  • オラクル数値判断メモ(Hishidama's Oracle IS_NUMBER Memo)

    データIDが0001のときは商品データを示し、データ1には商品番号、データ2には商品名、データ3には定価が入るものとする。 データIDが1111のときは販売データを示し、データ1には顧客番号、データ2には販売金額が入るものとする。 すると、データ2だけを見た場合、文字列(商品名)や数値(金額)が入り混じることになる。 販売金額が1000円以上のものだけを取り出したいとすると、以下のようなSQLを書きたくなる。 select * from 汎用テーブル where データID = '1111' and TO_NUMBER(データ2) >= 1000 ; しかし、SQLの実行計画では「データ1の条件を先に判断して、そこで条件外だったときに後の条件を無視する(処理しない)」とは限らない。 データIDが0001であってもTO_NUMBER()が実行されてしまい、(数値でない)文字列なのでエラーにな

  • UNDO表領域の使用率

    UNDO表領域の使用率はdba_undo_extentsから計算します。 UNDOエクステントは、使用された後も一定期間は解放されないため dba_free_spaceでは正確にはわかりません。 そこで、dba_undo_extentsのstatusを確認し、次のように計算します。 UNDO表領域の使用率 = [A] / [A]+[B]+[C] [A] 使用中のUNDO = statusがACTIVE + UNEXPIRED col bytes for 999,999,999,999 select status, sum(bytes) as bytes from dba_undo_extents where tablespace_name = 'UNDOTBS1' and status in ('ACTIVE','UNEXPIRED') group by status; [B] 使用後のU

  • Oracle の B*Tree インデックスの内部構造についてお勉強中(その2)

    まずは前エントリで書いた Oracle のインデックス構造図解を再掲から。 題です。Oracle のインデックスの内容をダンプする TreeDump の使い方と解析方法について説明をします。これも定型文なので、覚えておいて損はないかと思います。特にインデックスに関して深追いするなら必須のテクニックです。参考にしたページは下記の2つです。 Bツリーインデックスに最高のパフォーマンスを(1/4) − @IT パフォーマンス劣化はインデックスのせいなのか!? をみっちり検証 − @IT 特に株式会社インサイトテクノロジーの記事が秀逸です。この会社の Oracle スキルは尋常じゃぁありませんね。お仕事で見ている DB システムでは、同社が開発している Performance Insight というツールを導入して Oracle を運用管理しているのですが、パフォーマンスチューニング、障害監視な