読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

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


【Oracle】アーカイブログモードは処理時間にどの程度影響を与えるか。

はじめに Oracleのアーカイブログモードは、処理時間にどの程度影響するのでしょうか。 アーカイブログを取得するモードのほうがログを出力する分、処理時間がかかりそうですが、ノーアーカイブモードと比較して、どのくらい遅くなるのか検証してみました。…

【Oracle】select count (*)してからDeleteすると速くなるのか?

はじめに Delete処理の前に、一度削除対象テーブルに対してselect count (*)を実行すると、その後のdelete処理が高速化されるそうです。 DELETE処理の前に対象テーブルにselect count (*)を実行すると なぜか、DELETE処理が速くなります。 Oracle Technology…

【Oracle】PL/SQLでdeleteやupdate文で更新した件数を取得する

はじめに PL/SQLでdeleteやupdate文で更新した件数を取得するには、SQL%ROWCOUNTを参照します。以下のようにSQL%ROWCOUNTを変数に格納して、デバッグ画面に出力することもできます。 delete from table01 where 'A' = 'A' rownum <= 1000; vDelCount := SQL%…

【Oracle】大量レコードのDeleteが遅いので改善したい。

はじめに Oracleのdelete文は遅いというのが通説ですが、本当に遅いのか気になったので検証してみました。 PL/SQLで100万件のレコードを用意してdeleteしてみました。 オラクルマスター教科書 Bronze Oracle Database 12c SQL基礎posted with ヨメレバ株式会…

【Oracle】表領域のオートエクステント(自動拡張)設定を確認する

はじめに Oracleの表領域のオートエクステント(自動拡張)設定を確認するには、以下のコマンドを実行します。 conn sys/oracle as sysdba; select substr(file_name, 1, 40),autoextensible from dba_data_files;AUTOEXTENSIBLEがyesなら自動拡張がONになって…

【Oracle】すべての表領域を一覧表示して確認する

はじめに Oracle 11gで表領域の一覧を取得するには、以下のコマンドをsysdbaで実行します。 conn sys/oracle as sysdba; SELECT * FROM dba_tablespaces; 関連記事 ORA-14400: 挿入されたパーティション・キーはどのパーティションにもマップされません。 OR…

ORA-14400: 挿入されたパーティション・キーはどのパーティションにもマップされません。

はじめに パーティションテーブルで指定したキー以外のカラムを挿入すると、以下のエラーになります。 ORA-14400: 挿入されたパーティション・キーはどのパーティションにもマップされません。 例 以下のテーブルを用意する。 create table table01 ( id cha…

ORA-14402: パーティション・キー列を更新するとパーティションが変更されます。

はじめに パーティションテーブルのキー列を変更したときに、以下のエラーが出たときの対処方法 ORA-14402: パーティション・キー列を更新するとパーティションが変更されます。 ORA-14402の対処方法 パーティションの移動を伴う更新を許可するパラメータを…

Oracle 11gでパーティションテーブルを作成する

はじめに Oracle 11gでパーティションテーブルを作成する方法。 前提条件 Enterprise Editionであること。 以下のようなテーブルを性別でパーティンションを分けてみます。 create table table01 ( id char(8), --ID name varchar(50), --名前 furigana varc…

【Oracle】テーブル全体をロックして並行プロセスのinsertをブロックする

はじめに Oracleでレコードをロックするには、SELECT FOR UPDATEを使います。 select * from table for updateとすれば、テーブル全体をロックされて新規レコードの挿入もブロックできるかと思っていましたが、新規レコードの挿入はブロックできないようです…

PL/SQLでモジュラス11ウェイト2~7(M11W2~7)を実装してみた。

はじめに OracleのPL/SQLでモジュラス11ウェイト2~7(M11W2~7)方式でチェックディジットを計算する関数を実装してみました。独習Oracle PL/SQLposted with amazlet at 14.10.09林 優子 翔泳社 売り上げランキング: 200,248Amazon.co.jpで詳細を見るモジュラス…

【Oracle】REDOログバッファサイズとredo buffer allocation retries

はじめに 先日、Oracle DBにデータをinsertするとき、1件ずつコミットするのと、全部まとめてコミットするのとで、どちらが速いかをサンプルプログラムを作って検証してみました。 【Oracle】1件ずつコミットとまとめてコミットはどちらが早いか? - 小さい…

【Oracle】REDOログバッファサイズを拡張する方法

はじめに Oracle DBでREDOログバッファサイズを拡張してみました。 環境 Oracle Database 11g Release 11.2.0.1.0 現在のREDOログバッファサイズを確認する log_bufferパラメタを参照することで、現在のログバッファサイズを確認することができます。 show p…

【Oracle】1件ずつコミットとまとめてコミットはどちらが早いか?

はじめに Oracle DBにデータを1件ずつinsertしていく際、1件ずつコミットするのと、全部まとめてコミットするのとでどちらが早いでしょうか。 サンプルプログラムを作って計測してみました。 環境 Windows Server 2008 R2 Oracle Database 11g Release 11.2…

【Oracle】アラートログ(alert log)の出力先を調べる

はじめに Oracle DBでエラーなどが発生した場合に、alert logを見ることで原因を突き止めることができます。 アラートログの出力先は、以下のコマンドで調べることができます。 アラートログの出力先を調べる show parameter BACKGROUND_DUMP_DESTNAME TYPE …

ORA-00060: リソース待機の間にデッドロックが検出されました。

はじめに Oracleには、デッドロックを検出してエラーにする機能があることを知りました。 デッドロックを起こしてみる。 まず、SQL*Plusのコンソールを2つ立ち上げます。 1.トランザクション1がID1のレコードをロックします。 select * from table01 whe…

【Oracle】JOINを使ったUPDATE文で複数レコードを同時に更新する

はじめに OracleでテーブルAとテーブルBを結合して、条件にマッチするレコードを複数レコード同時に更新する方法について書いています。オラクルマスター教科書 Gold Oracle Database 12c Upgrade 新機能編posted with amazlet at 14.09.15株式会社システム…

【Oracle】SQL Developer起動時に一部のモジュールをインストールできませんでしたのエラー

はじめに Oracle SQL Developerの起動時に、以下のエラーが発生した場合の対処方法をまとめました。 警告 - 一部のモジュールをインストールできませんでした oracle.external.jdbc - org.netbeans.InvalidException: Netigso: C:\sqldev\sqldeveloper-4.0.1…

ORA-01126:データベースはこのインスタンスでマウントし、どのインスタンスでもオープンしないでください

はじめに Oracleのアーカイブログの設定を無効から有効に変更しようとしたら、以下のエラーが出てしまった。 SQL> alter database archivelog; ORA-01126: データベースはこのインスタンスでマウントし、どのインスタンスでもオープンしないでください 原因 …

【Oracle】ORA-10636: ROW MOVEMENT is not enabled

はじめに ALTER TABLE table01 SHRINK SPACEであるテーブルをシュリンク(縮小)しようとしたら、以下のエラーになりました。 SQLエラー: ORA-10636: ROW MOVEMENT is not enabled 10636. 00000 - "ROW MOVEMENT is not enabled" *Cause: To shrink a data s…

【Oracle】レコードの中身をバイナリダンプする方法

はじめに この記事では、Oracleデータベース内に格納したデータをバイナリダンプするには、dump関数というのが使えます。DUMP - オラクル・Oracle SQL 関数リファレンス 新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)p…

Oracle SQL Developerでカラムにnullを挿入する

はじめに Oracle SQL Developerでカラムにnullを挿入する方法です。 Oracle SQL Developerでカラムにnullを挿入する方法 データを挿入したいレコードのカラムを選択し、すべての文字を削除します。 Enterキーを押して、コミットするとnullが挿入されます。た…

【Oracle】all_catalogテーブルを用いた高速なテストデータの作成

はじめに Oracleを使ったアプリケーションの開発で大量のテストデータが必要になることがあります。 テストデータを作成するために、その都度PL/SQLを書いてInsert文を大量に発行していたんだけど、数百万件とかのオーダになると時間がかかってしまう。時間…

【Oracle】lpad関数で数字の先頭から0埋め(ゼロ埋め)する

はじめに Oracle DBで5桁の数値項目をゼロ埋め(00001のような表記)したい場合は、lpad関数を使います。 lpadの使い方 select lpad(rownum, 5, '0') from dual; -- 00001となる lpadの第一引数に変換したい数値、第二引数に桁数、最後に埋めるための文字を指…

OracleでBツリーインデックスの高さ(深さ)を確認する

photo credit: blmiers2 via photopin cc はじめに Oracleのインデックスは通常Bツリーと呼ばれる二分木で管理されます。レコードが削除されると、Bツリーの高さが高くなり、レコードのへのアクセス効率が悪くなります。プロとしてのOracle PL/SQL入門 【第3…

Oracle SQL Developerで行番号を表示する方法

はじめに Oracle SQL Developerで行番号を表示する方法を紹介します。 Oracle SQL Developerで行番号を表示する 1.メニューバーからツール(T)→プリファレンス(P)を選択します。 2.コード・エディタ→行の左余白を選択し、行番号の表示(N)にチェックを入れ…

ORA-01480: STRバインド値に終了のNULLがありません。

はじめに Pro*Cでデータベースに値をInsertしようとしたら、以下のエラーになってしまいました。 ORA-01480: STRバインド値に終了のNULLがありません。 原因 insert文に使用しているバインド変数がNULL止めになっていなかったことが原因でした。Oracle/ProC -…

Oracle 11gでAWRのレポートを取得する方法

はじめに Oracle Database 11gでAWR(自動ワークロード・リポジトリ)のレポートを取得してみました。Oracle データベース ポケットリファレンス ~Oracle11g/12c対応posted with amazlet at 14.06.17若杉 司 技術評論社 売り上げランキング: 95,277Amazon.co.j…

Oracleでユーザのパスワードを変更する

管理者権限で以下のクエリを実行します。これによって、sysユーザのパスワードをoracleに変更されます。 ALTER USER sys IDENTIFIED BY "oracle";

Oracle 11gでテーブルをロックしたままのセッションを削除する

はじめに Oracleのテーブルをロックするようなプログラムを作成中に、ロールバック処理に不備があるとテーブルがロックされたままになってしまいます。 こうなってしまった場合に、ロックしているセッションを強制的に終了させる方法をまとめました。機能で…

ダイレクト・パスのマルチスレッド最適化が使用禁止です

はじめに 前回、SQL*Loaderの記事を書いたのですが、SQL*Loaderの実行ログに以下のようなメッセージが出力されていることに気づきました。 ダイレクト・パスのマルチスレッド最適化が使用禁止です エラーメッセージと勘違いしましたが、マルチスレッドのオプ…

Oracle SQL*Loaderを使ったデータ挿入の方法

photo credit: Sprengben [why not get a friend] via photopin cc はじめに SQL*Loaderは、CSVファイルからデータを読み取って、テーブルにデータを挿入するツールです。大量のデータをテーブルに挿入する際、ループ文を使ってinsert文を何度も発行するより…

SQL DeveloperでIo Exception: Got minus one from a read call

はじめに Oracle SQL DeveloperでクライアントマシンからDBサーバに接続する際、以下のエラーが出ました。 Io Exception: Got minus one from a read call 許可/除外リストが怪しい 原因が良くわからないんだけど、TCP.VALIDNODE_CHECKINGパラメータが怪しい…

Oracle SQL DeveloperでSQLの実行計画を取得する

photo credit: candrews via photopin cc はじめに Oracle DBを操作するOracle SQL DeveloperでSQLの実行計画を取得する方法を紹介します。図解入門よくわかる最新Oracleデータベースの基本と仕組み (How‐nual Visual Guide Book)posted with amazlet at 14.…

OracleでSQLの実行計画を調べる3つの方法まとめ

photo credit: __MaRiNa__ via photopin cc はじめに Oracle DBでSQLの実行計画を取得するにはいくつかの方法があります。 この記事では実行計画を取得する3つの方法をまとめました。新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (D…