小さい頃はエラ呼吸

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


Oracle

Oracleがインストールされていない環境でdmpファイルを開く方法

はじめに Oracleデータベースをエクスポートするとdmpファイルができます。 dmpファイル内には、指定したテーブルの内容がすべて詰まっていて、データベースがどのような状態だったのかを確認することができますが、毎回Oracleのインストールされた環境にイ…

【Oracle】パーティション表を用いた高速なDelete処理

はじめに OracleのDelete処理は時間がかかります。そのため、大量のレコードを削除する際はあれこれ工夫が必要です。 この記事では、パーティション表を使った高速なデータ削除の方法を紹介します。 パーティション表とは? パーティション化された表(テー…

Oracleのプロセスとセッションはどう違うの?

はじめに Oracleのいうプロセスとセッションはどう違うのでしょうか。 ざっくり言うと Oracleに接続するとセッションが1つ生成される そのセッションを通じてSQL文を発行するとプロセスが生成される 通常は1セッション=1プロセスだけど、パラレル実行する…

Oracleで試すはじめてのビュー(view)

ビュー(view)とは ビューは、テーブルから作成される仮想的なテーブルです。ビューの中にはデータがありません。データが格納された実テーブルをどのように参照するのかを定義したものがビューになります。 この記事では、以下のテスト用のテーブル(table01)…

【原因】ORA-38301: リサイクルビンのオブジェクトにDDL/DMLを実行できません

はじめに 「ORA-38301: リサイクルビンのオブジェクトにDDL/DMLを実行できません」のエラーメッセージが出力される際の原因について書いています。 ORA-38301: リサイクルビンのオブジェクトにDDL/DMLを実行できません すでに削除済みのオブジェクトに対して…

【対処方法】ORA-12516: TNS: リスナーは、一致するプロトコル・スタックが使用可能なハンドラを検出できませんでした

はじめに とあるプログラムでOracleへの接続、切断を繰り返す処理があり、途中でORA-12516のエラーとなってしまいました。 ORA-12516: TNS: リスナーは、一致するプロトコル・スタックが使用可能なハンドラを検出できませんでした。 ORA-12516の解決方法につ…

【Oracle】わずか1行で各テーブルに格納されているレコード数を調べるSQL

はじめに Oracleの各テーブルに存在するレコード件数を調べるのに、select count(*) from tableAと1つずつ書いても良いのですが、テーブルの数が多いと面倒です。 そんなとき、user_tablesテーブルを参照すると、各テーブルごとのレコード数を一発で調べる…

Oracleマスターブロンズ試験の難易度はどれくらい?

はじめに Oracleマスターブロンズ試験を受験するにあたり、難易度について調べてみました。オラクルマスター教科書 Bronze Oracle Database DBA12cposted with amazlet at 15.02.22林 優子 翔泳社 Amazon.co.jpで詳細を見る 4択問題=正答率25%ではない Orac…

【Oracle】scott/tigerで使うEMPやDEPTテーブルの解説

はじめに scott/tigerのサンプルスキーマを作成した際に自動的に作成されるいくつかのテーブルがあります。 カラム名や職種が英語表記で、イマイチぴんとこないので、日本語にしてみました。オラクルマスター教科書 Bronze Oracle Database DBA12cposted wit…

【Oracle】はじめてオラクルマスターブロンズ(11g)資格取得するには

はじめに 仕事でOracleデータベースを扱っているのですが、せっかくなのでORACLE MASTER Bronze資格取得に挑戦してみようと思いました。ORACLE MASTERとは、Oracle Databaseについて体系立てた知識を持っていて、データベースに関する課題を解決することがで…

Oracle 11gでもインデックスを指定するヒント句は使える。

はじめに Oracle 11gでヒント句は使用できるのかを試してみました。 環境 Windows Server 2008 R2 Oracle Database 11g EE Release 11.2.0.1.0 ざっくり言うと Oracle 11gでもヒント句は使える ruleヒント以外のヒントはコストベースで動作する ヒント句を指…

Oracle 11gでEnterprise Managerをインストールして使ってみる。

はじめに Oracle 11gでEnterprise Managerをインストールして使ってみました。オラクルマスター教科書 Bronze Oracle Database DBA12cposted with amazlet at 15.02.15林 優子 翔泳社 Amazon.co.jpで詳細を見る 環境 Windows Server 2008 R2 Oracle Database…

ORA-01653: 表xxxを拡張できませんの対処方法

はじめに hogeユーザのtable01テーブルに大量のデータをinsertしていたら、ORA-01653のエラーが発生しました。 ORA-01653: 表HOGE.TABLE01を拡張できません(1024分、表領域USERS) ORA-01653の対処方法 表領域のサイズを拡張することで回避することができます…

【Oracle】11gでUNDO表領域を縮小するため削除して作り直す

はじめに Oracle 11gでUNDO表領域が肥大化していたので、縮小するために再作成を実施しました。石丸製麺 半生讃岐うどん包丁きり 3人前(300g)×6袋入りposted with amazlet at 15.02.14石丸製麺 (2010-12-13)売り上げランキング: 3,571Amazon.co.jpで詳細を見…

【Oracle】USERS表領域を縮小するため削除して作り直す

はじめに USERS表領域がいつのまにか肥大化していたので、縮小したいと考えました。インターネットで調べてみると、一度削除して作り直すと良いみたいなので、USERS表領域を削除してみました。TANITA 【体重50g単位表示】 & 【乗った人をピタリと当てる「乗…

【Oracle】11gの環境でscott/tigerを使いたい

Oracle 11g環境でscott/tigerを使いたい Oracle 11g環境でも、scott/tigerのスキーマを作れば、使えるようになりました。 DBのちょっとした動作確認に懐かしのscott/tigerスキーマを使いたい時がある。しかし、11gではサンプルスキーマとデータは入れてくれ…

【Oracle】ノーアーカイブログモードに変更する

はじめに アーカイブログを取得するモードからアーカイブログを取得しない(ノーアーカイブモード)に変更する方法です。 ノーアーカイブログモードに変更する 1.現在のアーカイブモードを確認します。 conn sys/pwd as sysdba ARCHIVE LOG LIST; ちなみに…

Oracle11gでData Pumpを使ったテーブルのインポートとエクスポート

はじめに Oracleデータベースでテーブル内のデータを一時的にバックアップしておきたいときは、Data Pumpという機能でファイルにエクスポートすることができます。 この記事では、Data Pumpを使ったテーブル単位でのエクスポートとインポートの方法について…

【Oracle】アーカイブログを削除してディスクの空き容量を増やす

はじめに アーカイブログモードで運用していると、どんどんログが溜まっていき、ある日突然ディスクの空き容量が枯渇してしまいます。 そうした場合に、不要なアーカイブログを一括で削除する方法を紹介します。*1【オラクル認定資格試験対策書】ORACLE MAST…

Oracle 10gからオプティマイザの仕様が変わりました。

はじめに Oracle 10gからオプティマイザの仕様が変わりました。 ルールベースオプティマイザ(CBO)が廃止され、コストベースオプティマイザ(RBO)に一本化されました。 ルールベースオプティマイザ廃止に伴う影響についてまとめてみました。完全合格 ORACLE MA…

【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とすれば、テーブル全体をロックされて新規レコードの挿入もブロックできるかと思っていましたが、新規レコードの挿入はブロックできないようです…