Oracleの勉強!(2017/10/29)

超入門!Oracleデータベースって何だ!?

前回、動画がネット上にあることを知ったので、試しに初級編っぽいものから見ました。

OTN セミナー オンデマンド コンテンツ一覧 | Oracle オラクルエンジニア通信 - 技術資料、マニュアル、セミナー Blog

 

 「セッションタイトル:超入門!Oracleデータベースって何だ!?」

最初、10分くらいは社会人1年生用の為の講義かなと思い、飛ばしましたが途中から「あれ、1回聞いたことあるな・・・」と思って調べたりしたのでメモ。(どんだけ、忘れやすいんだ)

 

「ACID」って前に検索したことあるな~。

①ACID :関連する複数の処理を一つの処理単位にまとめて管理するトランザクション処理に求められる4つの特性
•A: Atomicity (原子性):トランザクションを構成する一連の処理は、全部なされるか、いっさいなされないか、のどちらかの状態を取ること
•C: Consistency (一貫性):多数のトランザクションが並列に実行されてもシステム全体のデータの一貫性が失われないこと
•I: Isolation (分離性):並行して実行される他のトランザクションの影響を受けないこと/データをロックする機能を持つこと
•D: Durability (永続性):処理内容をいったん確定(commit)させた後、確定した内容は失われないこと

 

②読み取り一貫性

昔、神奈川の天〇〇で働いてた時にこの対応やったな~。データ構造が複雑で難しかった。 

 

③マテビュー

最近、よく聞くけどイマイチ分かってなかったもの。

下記を見て理解出来た(はず)。

【Oracle】ビューとマテリアライズド・ビュー(マテビュー)について - rey’s developer blog

 

Oracleの勉強!(2017/10/28)

弱点のアーキテクチャ

仕事をしていてOracleの知識がないなぁと痛感し始めたので勉強!

自身の弱点であるアーキテクチャ

http://www.oracle.com/technetwork/jp/ondemand/db-basic/0420-1330-oracle-architecture-366291-ja.pdf

 

気になった事をメモ。。。。

Oracle Databaseのプロセスの種類 

  • リスナー・プロセス:Oracle Databaseへの接続リクエストを転送
  • サーバ・プロセス:ユーザ毎に起動され、リクエストされた処理を実行
  • バックグラウンド・プロセス:ディスクへの変更反映などの内部処理を実行

Oracle Databaseのメモリの種類 

  • システム・グローバル領域(SGA):表データや実行計画をキャッシュし、ユーザ間で共有することによってディスクI/Oを減らし、効率を上げるためのメモリ領域
  • プログラム・グローバル領域(PGA):プロセスごとに確保される領域

Oracle Databaseへの接続の仕組み

Tnsnames.oraファイルはよく見るな~。

Oracle Databaseの処理の仕組み(検索処理)

Oracle Databaseの処理の仕組み(更新処理)

Oracle Databaseの処理の仕組み(内部処理)

今回、勉強しなきゃと思った起因の実行計画らへんの話。

⑦【補足】SGAコンポーネントの詳細

⑧【補足】バックグラウンド・プロセスの詳細

REDOログしか知らなかった。。。

Oracle Databaseのメモリ管理

これも勉強しなきゃと思った起因の性能の話。

Oracle Databaseのファイル群

覚えること多いな~と思い始めた・・・。リカバリする際にはこの辺の知識がないとダメなのね。

Oracle Enterprise Managerで可能な管理作業

  • データベースの起動停止
  • データベースの状態の確認(CPU使用率やセッション数の確認等)
  • データベース・ファイル(表領域等)の作成と管理
  • データベース・オブジェクトの作成と管理
  • パフォーマンス劣化の検知とチューニング
  • バックアップおよび障害発生時のリカバリ

最後まで見たけど「動画」があるらしい。

blogs.oracle.com

 

地道にやるか・・・。

勉強する習慣をつけねば。

 

(2017/10/29 追記)

動画参照。音声があった方がgood。

 

 

MERGE文に助けられた話

SQLにて複雑な更新処理で困った時には・・・

 仕事で複数のテーブルを表結合して、レコードを更新する際にUPDATE文だと実現が難しくて「う~ん。どうしよう。1回SELECT文発行して検索結果単位でループ処理でUPDATE文に主キーのパラメーターを渡そうかな。いや、Java処理内であんまり書きたくないな~。困った。」という際に使用しているDBがOracle11gだったのでMERGE文が使えると気付き、解決したという話。

以下を参考に記載。

第30回 UPDATEについて

SQL

MERGE INTO テーブルA
USING (複数のテーブルを表結合)
ON (テーブルA.主キー = 表結合.主キー)
WHEN MATCHED THEN UPDATE SET テーブルA.削除フラグ = 1(論理削除)

 

「よっしゃ、これで解決!」と思って実行すると・・・・
ORA-30926(ソース表の安定したセット行を取合致得できません)

うーん、相変わらず分かり辛いっす。原因は表結合して条件に合致したレコードが複数取得されてレコードが増えた事でON句でシバかれたという話。DISTINCTで重複レコードを削除して解決。

 

かなめさんの説明を見て理解。助かります。

kanamelogic.com

 

ツール紹介

今回はよく使うツールを紹介します。

私は効率化大好き人間なので、ツールを探したり、作ったりするの好きなんですよね。

社会人2年目の時に金融系の職場でExcelの設計書を全てセルのA1に設定するという仕事をしたことがあって、今回紹介するツールを知っていれば・・・・(白目)。

「RelaxTools Addin」の作者はExcelの中の人より優秀な気がします。秀逸。

 

■その①
ソフト名:「HNXgrep」
機能説明:複数のファイルを対象に文字列を一括検索できるソフト。

設定で「xdoc2txt.exe」を使えるようにすれば、Excel/Word/PDFファイル等から文字列の検索が可能。
VBAgrepしたりするツールとは違い、処理が軽い。唯一惜しいのは置換が出来ないこと。
過去の職場ではよく、処理でエラーになった際にエラーコードを検索キーに設計書をgrepしたりして重用しました。


■その②
ソフト名:「Clibor」
機能説明:コピーしたものを履歴として残せるソフト。

エディタの「秀丸」でも似た機能がありますが個人的にはこっちがあすすめです。
コピペしない人はいないと思うので。
「CLCL」と比較しても操作性はこちらの方が好き。


■その③
ソフト名:「CLCL」
機能説明:コピーしたものを履歴として残せるソフト。

こちらは「Clibor」と違ってコピーした画像を保存できる。
エビデンスの取り直しという悲劇回避可能。


■その④
ソフト名:「RelaxTools Addin」
機能説明:Excelのアドインソフト。

その他機能はたくさんあるのでVBAで作ろうかなと思う前に是非試して下さい。
自分がよく使う機能はこんな感じですね。
・保存時に、カーソルをセルのA1に自動設定する。
・簡易的な目次を自動で作成(ハイパーリンク付き)。
・ファイルを右クリックから読み取り専用で開ける。

スプレットシートのQUERY関数に感激

 Select文が書ける!?

個人的にはExcel先生のVLOOKUP関数より使えるなという印象。

下の画像では”休暇”or"遅刻"or”早退”という文言を条件に抽出。

う~む、震えました。

f:id:hayashiharasho:20171021005255p:plain