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

小さい頃はエラ呼吸

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


Oracle

【Oracle】はじめてのRMAN バックアップ&リストア編

はじめに OracleデータベースをバックアップするにはRecovery Manager(RMAN)という付属ツールが使えます。 RMANでバックアップとリストアを試してみました。 blogs.oracle.com リストアとリカバリ リストアとリカバリは同じ意味に聞こえますが、過去にとった…

【Oracle】SQL DevelopperでSQLチューニング・アドバイザを試してみる

はじめに SQLチューニング・アドバイザは、SQL文を分析して、どうチューニングしたら良いかアドバイスしてくれます。提示される推奨事項やアドバイスは、オブジェクトの統計情報の収集、新規索引の作成、SQL文の再構築、SQL Profileの作成などと関連していま…

Oracle 11gの監査機能で実行されたSQLを採取してみる

はじめに Oracleの監査機能を使うと、あるテーブルに対する操作をバインド変数含め、SQLレベルで記録できると聞いたので試してみました。【オラクル認定資格試験対策書】ORACLE MASTER Gold[Gold DBA11g](試験番号:1Z0-053)完全詳解+精選問題集 (オラ…

【Oracle】indexの貼られたテーブルを全件deleteしてみた

はじめに インデックスの貼られたテーブルを全件deleteしたときのインデックスツリーの変化を見ていきます。 環境 Oracle Database 12c EE 12.1.0.1.0 テスト用のテーブル CREATE TABLE T_GAKUSEI ( gakusekiNo NUMBER,--学籍番号 classNo NUMBER,--クラスid…

【Oracle】インデックスのTreeDumpを取得してみる

photo credit: Tramonto - Sunset via photopin (license) はじめに OracleのインデックスをダンプできるTreeDump機能を使ってみました。 テスト用のテーブル CREATE TABLE T_GAKUSEI ( gakusekiNo NUMBER,--学籍番号 classNo NUMBER,--クラスid name VARCHA…

【Oracle】indexをリーフ分割させながらデータを挿入する

はじめに この記事では、Oracle DBでインデックスのリーフ分割を発生させながらデータを挿入する方法について書いています。以前、テストデータを大量に作成するためのtips記事を書きました。replication.hatenablog.com このときのSQLは、以下の画像のよう…

Oracle 12cでユーザ登録からテーブル作成までをやってみた。

はじめに Oracle Database 12cをインストールして、テーブル作成、ユーザ登録、データの取得までをやってみました。機能で学ぶOracle Datebase入門 (DB Selection)posted with amazlet at 15.08.02一志 達也 翔泳社 売り上げランキング: 351,551Amazon.co.jp…

Windows8.1+Visual Studio 2015でOracle Pro*cファイルをビルドする

はじめに Windows8.1+Visual Studio 2015 CommunityでOracle Pro*cファイルをビルドする方法をまとめました。図解入門よくわかる最新Oracleデータベースの基本と仕組み[第4版] (How‐nual Visual Guide Book)posted with amazlet at 15.08.02水田 巴 秀和システム…

Windows8.1にOracle Database 12c Clientをインストールする

はじめに Windows8.1にOracle Database 12c Release 1 Client をインストールしてみました。Oracleの現場を効率化する100の技posted with amazlet at 15.08.02技術評論社 (2015-05-29)売り上げランキング: 12,298Amazon.co.jpで詳細を見る 環境 Windows8.1 3…

【INS-32025】選択したインストールは、指定したOracleホームにすでにインストールされているソフトウェアと競合します。

はじめに Oracle 12cをインストールしていたら、最後にディスクの空き容量が足りなくてエラーになりました。 空きディスクを確保してもう一度やりなおしたら、Oracleホームがすでに使用されているということで、以下のエラーになってしまいました。 [INS-320…

【Oracle】特定のテーブルが削除された日時を調べる方法

はじめに Oracleで、あるテーブルがいつ削除されたものかを調べるには、RECYCLEBINテーブルを見ると良いです。 RECYCLEBINテーブル RECYCLEBINをdescすると、以下の結果が得られます。OBJECT_NAMEはオブジェクトの名前でテーブル以外のファンクションやイン…

【Oracle】特定のテーブルの作成日時を調べる方法

はじめに Oracleで、あるテーブルがいつ作成されたものかを調べるには、USER_OBJECTSテーブルを見ると良いです。 USER_OBJECTSテーブル USER_OBJECTSをdescすると、以下の結果が得られます。OBJECT_NAMEはオブジェクトの名前でテーブル以外のファンクション…

【サンプルあり】Oracle DBMS_CRYPTOを使った暗号化・復号化

はじめに OracleのDBMS_CRYPTO.ENCRYPT/DBMS_CRYPTO.DECRYPTを使うとデータを暗号化したり、復号化することができます。 試しに使ってみました。Oracleの現場を効率化する100の技posted with amazlet at 15.06.13技術評論社 (2015-05-29)売り上げランキング…

【Oracle】データ・アクセス方式の違いによる性能差

はじめに Oracleには、6つのデータ・アクセス方式があります。 全表スキャン(TABLE ACCESS FULL) 索引一意スキャン(INDEX UNIQUE SCAN) 索引レンジスキャン(INDEX RANGE SCAN) 索引フルスキャン(INDEX FULL SCAN) 索引スキップスキャン(INDEX SIKP SCAN) 索…

【Oracle】v$sqlテーブルをクリアする

はじめに v$sqlテーブルには、SQLの実行履歴が保存されています。 このv$sqlテーブルをクリアしたい場合は、共有プールをクリアします。 conn sys/pwd as sysdba select count(*) from v$sql; >4686共有プールをクリアする。 Oracleのキャッシュをクリアする…

【Oracle】直近5分以内に実行したSQLの履歴とバインド変数を確認する

はじめに アプリケーションから発行したSQLがうまく動作しない場合、発行したSQLが分かれば調査の手がかりとなります。Oracleのv$sqlを参照すると、実行したSQLの履歴とバインド変数を確認することができます。 ざっくり言うと SQLの実行履歴はv$sqlテーブル…

オフライン環境でOracleのエラーコードからメッセージを取得する

はじめに データセンターなどオフラインの環境でOracleのエラーコードからエラーメッセージを取得したい場合、PL/SQLでエラーコードからエラーメッセージが引けます。Oracleの現場を効率化する100の技posted with amazlet at 15.05.26鈴木 健吾 玉置 雄大 塩…

【原因】ORA-01775: シノニム定義がループしています。

はじめに シノニムの参照先テーブルが存在しない場合、ORA-01775: シノニム定義がループしています。のエラーが発生することがあります。Oracleの現場を効率化する100の技posted with amazlet at 15.05.25鈴木 健吾 玉置 雄大 塩原 浩太 小林 修 大森 慎司 …

Oracleの「SQLcl」を使ってテーブルデータをCSVファイルに出力する

はじめに OracleのCommand Lineツール「SQLcl」を使ってテーブルの内容をCSVファイルに出力してみます。 環境 Windows Server 2008 R2 Oracle Database 11g 11.2.0.1.0 JRE Version8 Update 45 Oracleの現場を効率化する100の技posted with amazlet at 15.05…

【Oracle】トリガーを使ってチェックディジットを検証する

はじめに Oracleのトリガーを使って、コード値のチェックディジットを検証してNGなら例外を発生させてInsertを取り消すサンプルプログラムを作ってみました。プロとしてのOracle PL/SQL入門 【第3版】(Oracle 12c、11g、10g対応) (Oracle現場主義)posted wit…

【Oracle】トリガーによるInsert直前のデータバリデーション

はじめに Oracleデータベースを使ったアプリケーションの開発でデータベースの誤更新やデータ破壊を防ぐ方法について考えてみました。 不良データを入れさせない データベースの誤更新やデータ破壊を防ぐには、不良データを入れさせなければ良いのです。その…

select count(*)するときのrownum指定による性能差

はじめに ある条件に合致するレコードがあるかないかを調べるとき、select count(*) from table where 条件;とするのと、select count(*) from table where 条件 and rownum とするのではどれだけ性能差があるのか調べてみました。 ざっくり言うと rownumを…

【Oracle】startupでORA-03113 通信チャネルでend-of-fileが検出されました

はじめに Oracle 11gのstartupコマンドで「ORA-03113 通信チャネルでend-of-fileが検出されました」のエラーが発生しました。 以下のページの指示に従って解決することができました。Oracle の startup でORA-03113: end-of-file on communication chan - あ…

【Oracle】UNDOログとREDOログの違いが分からないのでまとめてみたよ。

はじめに OracleのUNDOログとREDOログの違いが分からないのでまとめてみました。OracleのUNDOとREDOの違いが良く分かりません。 どちらも表に対… - 人力検索はてな Oracleバックアップ・リカバリ実践テクニックposted with amazlet at 15.05.05青木 浩朗 ソ…

【Oracle】REDOログを削除して作り直す

はじめに Oracle 11gでREDOログを削除して、作り直してみました。プロとしてのOracleアーキテクチャ入門 [第2版](12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義)posted with amazlet at 15.05.05株式会社コーソル 渡…

【Oracle】シーケンスを使って簡単に連番を採番する

はじめに アプリケーションの中で重複しない連番の採番を実装することがあるかと思います。 連番用をテーブルを作って、そこで管理することもできますが、Oracleのシーケンスを使うともっと簡単に連番の採番機構を実装することができます。 シーケンスの作成…

【Oracle】SQL DeveloperでSQLをきれいに整形する

はじめに SQL DeveloperにはSQLの整形機能があって、見にくいPL/SQLなどを見やすく整形することができます。 SQLの整形 ワークシート上で、Ctrl + Shift + F7でSQLを整形することができます。 出力先としてエディタを選択すると、ワークシート上のSQLが直接…

SQL Developerからデータポンプでdmpファイルを出力する

はじめに SQL DeveloperのData Pump機能を使って、dmpファイルにエクスポートしてみます。オラクルマスター教科書 Bronze Oracle Database DBA12cposted with amazlet at 15.03.28株式会社システム・テクノロジー・アイ 林 優子 翔泳社 売り上げランキング: …

SQL Developer 4.xでDBAビューが表示されない

はじめに SQL Developer 4.xでDBAビューが表示されないことがあります。 DBA View not start in SQL Developer 4.0.2 | Oracle Community DBAビューが表示されない場合の対処方法 DBAビューが表示されない場合は、ウインドウの設定を出荷時の設定にリセット…

ORA-08002: 順序xxx.CURRVALはこのセッションではまだ定義されていません

はじめに Oracleのシーケンスを使っていて、ORA-08002のエラーになりました。 ORA-08002: 順序xxx.CURRVALはこのセッションではまだ定義されていません ORA-08002の原因 同一のセッション内で、xxx.NEXTVALを実行していないにもかかわらず、xxx.CURRVALを呼…

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…