小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracle

OracleのSQL*Plusと自動コミットについて

はじめに Oracleには自動コミットという機能があり、明示的にcommit命令を発行しなくても変更を確定してくれる機能があります。 この自動コミットはデフォルトOFFなのですが、SQL*Plusでは自動コミットの設定にかかわらずコミットされるケースがあるため、注…

Oracle 11g XEでSQLの実行計画を取得してみる

はじめに Oracle Database Express Edition 11g(XE)でSQLの実行計画を取得する方法について、まとめてみました。 オラクル実行計画メモ(Hishidama's Oracle Explain Memo) 新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection…

Oracleで一定時間処理をスリープ(Sleep)させる方法

はじめに Oracleで一定時間処理をsleepさせたいことがあると思います。 PL/SQLのDBMS_LOCK.SLEEPを使うと、指定した時間だけ処理を待機させることができます。 事前準備(DBMS_LOCK権限を付与する) DBMS_LOCK.SLEEPを使うには、実行ユーザにDBMS_LOCKの権限…

Oracleでロックタイムアウト時間を設定する方法

photo credit: dzarro72 via photopin cc はじめに Oracleで行または表に対して他のプロセスからの参照/更新をブロックするには、select文の最後にfor updateを指定します。 以下の例ではtable01テーブルに対してテーブルロックがかかります。 select * fro…

PLS-00201: 識別子DBMS_LOCKを宣言してください。

はじめに PL/SQLでDBMS_LOCKを使って以下のエラーが発生した場合、実行ユーザに対してDBMS_LOCKの権限を付与する必要があります。 PLS-00201: 識別子DBMS_LOCKを宣言してください。 DBMS_LOCK権限を付与する 以下の例ではhogeユーザに対して、DBMS_LOCKの権…

Eclipse 4.2からDBViewerでOracle DBに接続する

はじめに DBViewerというプラグインを使うと、EclipseからOracle DBに接続してテーブルの参照やSQLの実行を行うことができます。 この記事では、DBViewerのインストールからOracle DBへの接続までの手順をまとめています。新・門外不出のOracle現場ワザ エキ…

一般ユーザでOracleのv_$sessionを参照する方法

一般ユーザでv_$sessionを参照するには 一般ユーザでv_$sessionを参照するには、sysユーザでgrant文を実行して、v_$sessionのselect権限を付与してあげれば良い。 Oracle Technology Network (OTN) Japan - 掲示板 : v$sessionのSELECT権限 ... connect sys/…

Windows8にOracle Database 11g Express Editionをインストールしてみた。

はじめに Windows8にOracle Database 11g Express Editionをインストールしてみました。はじめてのOracle 11g データベース構築・管理入門編 (TECHNICAL MASTER)posted with amazlet at 12.11.18長岡 秀明 秀和システム 売り上げランキング: 312687Amazon.co…

Oracleのv$sql_bind_captureで実行したSQLのバインド変数を調べる方法

はじめに Oracleを使ったアプリケーションにおいて、ある操作によって実行されたSQLとそのとき渡されたバインド変数の値を調べたいときがあります。 ソースコードを見れば実行されるであろうSQLは推測することができますが、実際にどんな値がSQLに渡っている…

Oracleの同時接続数と最大接続数を確認する

はじめに この記事ではOracleに接続しているセッションの数を調べる方法について書いています。Oracleの基本 ~データベース入門から設計/運用の初歩までposted with amazlet at 19.09.29渡部 亮太 相川 潔 日比野 峻佑 岡野 平八郎 宮川 大地 技術評論社 売…

Oracle 11gのLike検索における特殊文字%と_の違い

photo credit: guidosportaal via photopin cc はじめに Oracleでlike句を使ったあいまい検索をする際、気をつけなければいけない特殊文字に%と_があります。 この記事では、特殊文字の動作とエスケープの仕方をまとめてみました。検索エンジンはなぜ見つけ…

Oracle 11g XEでUndo表領域を再作成して縮小する方法

photo credit: naoyafujii via photopin cc はじめに Oracle DBに対してinsert/update/deleteを繰り返していると、Undo表領域が肥大化していきます。ディスクの空き容量が枯渇してしまわないよう、Undo表領域を再作成して縮小する方法をまとめてみました。 …

Oracle 11g XEでSYSAUX表領域とUNDO表領域のデータファイルが逆転している件

はじめに Oracle 11g XEで、SYSAUX表領域とUNDO表領域のデータファイルが逆になっているのに気がつきました。 col tablespace_name for a10 col file_name for a60 col mb for 999999 select tablespace_name,file_name,bytes/1024/1024 mb from dba_data_fi…

Oracle 11gでアーカイブログモードを確認する方法

アーカイブログモードを確認する方法1 connect sys/oracle as sysdba ARCHIVE LOG LIST アーカイブログモードを確認する方法2 connect sys/oracle as sysdba SELECT LOG_MODE FROM V$DATABASE; 関連エントリ Oracle 11gのLike検索における特殊文字%と_の違…

Oracle 11g XEでSTATSPACKで分析レポートを出力してみる

はじめに Oracle 11g XEでパフォーマンス分析ツールSTATSPACKによる分析レポートを出力する方法をまとめてみました。 この記事を書くにあたり、以下の記事を参考にしました。 STATSPACKのインストールと使用 - とあるSIerの憂鬱 パフォーマンス改善と事前対…

Oracle 11g XEに性能分析ツールSTATSPACKをインストールしてみる

photo credit: SalFalko via photopin cc はじめに Oracle DBの性能分析ができるSTATSPACKというツールがあることを知り、Oracle 11g XEにインストールしてみました。新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)post…

Oracleでrownum order byを使ったページング処理の注意点

photo credit: Silvia Sala via photopin cc はじめに Oracleでページング処理を実装するときに、rownumの性質を正しく理解していなかったため、ソート指定した際にハマりました。 この記事では、Oracleでrownumを使ったページング処理の書き方を調べてまと…

Oracleで適切なバッファキャッシュサイズを見極めるポイント

photo credit: nickwheeleroz via photopin cc はじめに Oracle DBは、SQLの結果を一時的なメモリ領域(バッファキャッシュ)に記憶して、次に同じような問い合わせがあった場合に、いちいちディスクを読みに行かずにバッファキャッシュから結果を取得するこ…

Oracle 11gでアーカイブログの出力先を確認する

アーカイブログの出力先を確認する方法1 connect sys/oracle as sysdba show parameter db_recovery_file_dest アーカイブログの出力先を確認する方法2 connect sys/oracle as sysdba select name from v$recovery_file_dest; 関連エントリ Oracle 11gのLi…

Oracleのトレースログをtkprofで整形するバッチファイル

はじめに Oracleのtkprofユーティリティを使うと、トレースログファイルを見やすい形で整形することができます。 tkprofコマンドを毎回入力するのが面倒なので、ドラッグ&ドロップでtrcファイルをtxtファイルに変換するバッチファイルを書いてみました。 Or…

Oracleのtkprofでトレースログを劇的に見やすくする

はじめに Oracleに付属しているtkprofユーティリティを使うと、トレースログを整形し、見やすくすることができます。 この記事では、トレースログの出力からtkprofによる変換までの手順について書いています。新・門外不出のOracle現場ワザ エキスパートが明…

SP2-0042: 不明なコマンドです("tkprof")。

はじめに Oracleでtkprofコマンドを実行しようとしたら、以下のエラーが出てしまい、インストールされていないのかなと思って調べてみたら、大きな勘違いをしてしまいました。 SP2-0042: 不明なコマンドです("tkprof")。行の残りは無視されました。 tkprofは…

ORA-30657: 外部構成表で操作がサポートされていません

はじめに Oracleで外部表に対してinsert文を発行したら、以下のようなエラーになりました。 ORA-30657: 外部構成表で操作がサポートされていません 1週間でORACLE MASTERの基礎が学べる本 (徹底攻略) 外部表に対する更新はできない Oracleの外部表はWindows…

OracleでCSVファイルをあたかもテーブルのように扱う方法(外部表)

はじめに Oracleの外部表という機能を使うと、Windows上に存在するファイルを取り込んであたかもテーブルが存在しているかのように、SQLから操作することができます。パフォーマンス改善と事前対策に役立つ Oracle SQLチューニングSQLチューニング (DB SELEC…

ORA-30653: 拒否の制限に到達しました

はじめに Oracle DBで外部表を取り込もうとしたら、以下のようなエラーになってしまいました。 SQLエラー: ORA-29913: ODCIEXTTABLEFETCHコールアウトの実行中にエラーが発生しました。 ORA-30653: 拒否の制限に到達しました 29913. 00000 - "error in execu…

Oracle DBでインデックスを使った検索が行われているかを確認する方法

photo credit: koalazymonkey via photopin cc はじめに Oracle DBで任意のテーブルを検索するSQLを実行する際、インデックスを使った高速な検索が行われているか確認する方法を紹介します。 インデックスが効いているか確認する インデックスを使った検索が…

Oracleでカーソル共有(CURSOR_SHARING)の設定値を確認する

OracleでCURSOR_SHARINGの設定値を確認する connect sys/oracle as sysdba; SHOW PARAMETER CURSOR_SHARING CURSOR_SHARINGの設定値を変更する --システムレベルの変更 ALTER SYSTEM SET cursor_sharing = EXACT; --セッションレベルの変更 ALTER SESSION SE…

Oracle DBの共有プール(SHARED_POOL)をクリアするコマンド

Oracle DBの共有プールをクリアする Oracle DBの共有プールをクリア(フラッシュ)するには、sysユーザで以下のコマンドを実行する。 connect / as sysdba; ALTER SYSTEM FLUSH SHARED_POOL; >system FLUSHが変更されました。

OracleでNULLを特定の文字に置き換える方法

はじめに Oracle DBのレコードを検索する際に、カラムの値がNULLであれば、何か別の文字に置き換えて出力する方法を紹介します。【オラクル認定資格試験対策書】ORACLE MASTER Silver[Silver DBA11g](試験番号:1Z0-052)完全詳解+精選問題集 (オラクル…

SP2-0749: シノニム"xx"の循環パスを解決できません。

はじめに Oracleで次のようなメッセージが出た場合、 SP2-0749: シノニム"xx"の循環パスを解決できません。 考えられる原因としては以下の2つがあります。 あるシノニムを指す、同じ名前のシノニムを作成した シノニムをつけた先のテーブルが存在しないか、…