てきとーにのんびりだらだら

毎日更新目標!SEブログ!

週初め!今日は勉強のサイクルづくりをやっていくよ

おつおつー^^
今日は少し怠け気味だらだら過ごしておりますー
特に理由はないのですが...
早速oracleDB勉強しようと思ってはいたのですが、前々から勉強のサイクル作りたいなという思いがありました。
復習の時間を設けないとせっかくやった勉強も意味なく終わってしまうからです。
ということで、今日は今週一週間を効率よく過ごすために先週の振り返りと今週のサイクルづくりをします。

先週の振り返り


先週の勉強の仕方はこんな感じでした。

月曜 火曜 水曜 木曜 金曜 土曜 日曜
OracleDB3章 勉強なし OracleDB4章 OracleDB5章 勉強なし 勉強なし OracleDB5,6章

勉強なしが週3日...
とても鬱になりそう...
勉強なしは本当に勉強は一切なしとなっております。
ただ、勉強というのはITに関する勉強についてで実際、記事を書くために調べものはしていました。

先週やった勉強のことを振り返ったところで、1日どういった時間の使い方をしていたかこれも表でまとめました。

業務前 昼休憩 業務後
7時半~記事のネタ探しと記事書き、8時半過ぎ~睡眠 基本睡眠 oracleDB勉強

食後眠くなってしまうことが多く毎回寝ていました。
食後や夜に寝るときは大体ケータイを見ながら寝るのですが、一日あたりケータイを見ている時間は2~3時間の間となっています。
在宅勤務のため、平日は外に出ず朝起きてpcを付け、寝る前にpcをシャットダウンというように常にpcに向かって作業をしている状態です。
常にユーチューブは開きっぱなしです(動画見ているとは限りません)大体ユーチューブは2時間くらい見ています。
つまり、勉強と睡眠を除けば1日4時間は大体娯楽の時間として使っていることがわかります。
結果勉強に当てることができているのは多くても18時間起きているうちの4時間くらいとなっていそうです。

先週の振り返りを踏まえて以下の方針で今後進めていきます...

朝食後は寝る必要ない気がするため寝ないような工夫をしていきます。
記事のネタ探しも、ネタとするものはすぐに思いつくのですが内容が抽象的で結論を出すのに時間がかかるもととなっているため、
ネタをふと思いつき調査を朝から始めるという方針から、朝にやることを決めておいてそこで何か得たものを記事にできる場合はするという方針に変えていこうと思います。
朝にやることというのも、抽象的な調べものはなしにして○○の本を読む、javaのコーディングをするといった目に見えてやることをやったとわかるものをしていきたいと思います。
時間に少し空きができると実感できるところまで一旦抽象的な調べものはなしとして進めます。
※普通の人はやること(タスク)を優先し、何かを考えるという行為は基本的にしていない気がします、平日に。

では何をするのか、何をすべきなのか前から何をしたいと思っていたのか。

今後やりたいと思っていることは以下のものです。
* javaの勉強(すっきりわかるjava入門、サーブレットJSP入門、本格入門JAVA、effectiveJava)
* 一日一回の読書(独学大全、webAPI)
* 資格や次の現場に向けての勉強
* 新聞を読む
* vbaの勉強(参考本はないため購入必要)

週単位での勉強サイクル


週単位での勉強サイクルといいましたが、

月曜 火曜 水曜 木曜 金曜 土曜 日曜
java,他の勉強 java,他の勉強 java,他の勉強 java,他の勉強 java,他の勉強 一週間の復習 java,他の勉強

実質こうなります。
ここでの「他の勉強」は今勉強しているoracleDBのように何か新しく習得しようとしているものになります。
土曜日は実質休みのような日として、何か予定を入れるにも土曜、適当に遊んで過ごすのもお酒を飲むのも土曜。
そうしたいと思います。

一日のサイクルですが、

時間 やること
6時30分 起床
朝ごはん前 javaのコーディング
業務前 読書や勉強
昼休み 睡眠
業務後 他の勉強と記事作成
やること終わり次第 自由時間

にしたいと思います。

目標よりもまずはやる。

今日はたんまり勉強デー!目標は6章まで勉強完了へ!

おつおつー^^
今日はきっちり7時半に起きました←
勉強は8時半からスタートしております。
午前は本屋に行って金曜日に更新しようとした記事更新のために調べものをして、午後から勉強でちょっと怠けたところもあったけど気づいたら21時半です...
この後は金曜日の記事更新もして22時半くらいになるかなーやること終わるのは...
今日は結構勉強突っ走ったせいで何も記事になるようなものありませんでした!
余力があったら22時半以降に何か追加でこの記事更新して書ければなーなんて思っています!
では残りの記事はすべて勉強した内容です!

ラクインスタンスの管理


インスタンスの起動停止

インスタンスを起動してからデータベースを使えるようにするまで4つのステップが存在します。
それぞれのステップを以下の表にまとめました。

ステップ 説明
SHUTDOWN インスタンス停止し、データベースが稼働していない状態
NOMOUNT 初期パラメータファイルを読み込み、インスタンスが起動される。インスタンスのみ起動された状態。 バッググラウンドプロセスも起動
MOUNT 初期パラメータ情報をもとに制御ファイルを読み込む。制御ファイルが読み書き可能な状態(オープン)
OPEN 制御ファイルの情報をもとにREDOログファイル、データファイルを利用可能にする。データベースがオープンの状態で一般ユーザーも利用可能に

※補足ですが、NOMOUNTからMOUNT状態へ移る際、初期化パラメータファイルにあるCONTROL_FILESを取得し、ここに格納されているファイル名を持つすべての制御ファイルがオープンとなります。
また、制御ファイルのオープンに失敗した場合はMOUNT状態にはなりません。
OPENの説明でも書きましたが、OPEN状態を除くステップではsysDBA権限などを持つユーザーでのみoracleデータベースに接続可能です。
各ステップにおいて読み込むファイルに障害が起きていた場合、次のステップに遷移せずインスタンス起動処理は停止します。

SQL*plusによるインスタンス起動

インスタンス起動にはSQL*PlusでsysDBA権限など管理権限を持つユーザーで接続し、「startup」とコマンドで実行する必要があります。
startupではOPEN状態までインスタンスを起動するものの、「startup」の後ろには「nomount」「mount」「open」を引数のようにして実行することでその状態までもっていくことができます。
データベースの手動作成、制御ファイルの再作成時にnomountを引数としたコマンド、データベースファイルの改名/削除やデータベースの復旧時にmountを引数としたコマンドを実行するそうです。

初期化パラメータ

初期化パラメータは各メモリー領域のサイズや各機能のON/OFF、プロセスの動作設定などインスタンスの動作特性を決定するパラメータです。
ラクルのバージョンによって個数に差がありますが、数百もの初期化パラメータ―が用意されています。 以下にパラメータをまとめました。

パラメータ 説明 起動中の変更
CONTROL_FIlES 制御ファイルのファイル名。複数指定可能 ×
DISPATCHERS ディスパッチャプロセスの構成
MEMORY_MAX_TARGET MEMORY_TARGET初期化パラメータの上限値
MEMORY_TARGET すべてのSGAコンポーネントと全プロセスのPGAの合計サイズ。自動メモリー管理使用時に設定する ×
PGA_AGGREGATE_TARGET 全プロセスのPGAの合計サイズの目標値。自動PGAモリー管理使用時に設定する
SHARED_POOL_SIZE 共有プールのサイズ
SGA_MAX_SIZE すべてのSGAコンポーネントの合計サイズの上限値 ×
SGA_TARGET すべてのSGAコンポーネントと全プロセスのPGAの合計サイズ。自動共有メモリー管理使用時に設定する
UNDO_RETENTION UNDO保存の下限値(秒)

起動中に初期化パラメータを変更できるものを動的パラメータといい、変更できないものを静的初期化パラメータといいます。
静的初期化パラメータは「SCOPE=SPFILE」コマンドを使用して起動時に変更ができますが、変更した値はインスタンス再起動後に変更できます。

ALTER SYSTEM SET パラメータ名 = 値;  
ALTER SYSTEM SET パラメータ名 = 値 SCOPE=SPFILE;

初期化パラメータファイルについてですが、初期化パラメータファイルはサーバーパラメータファイル(SPFILE)とテキスト形式の初期化パラメータファイル(PFILE)の2種類あります。
主流はSPFILEとなっており、相違点としてはSPFILEはバイナリ形式でユーザーが直接編集できないためSQLを使用し、PFILEはテキスト形式て直接変更可能(SQLでは変更不可)な点です。
SPFILEとPFILEどちらも存在する場合SPFILEが優先的に使用されます。 インスタンス再起動後も有効にするにはSPFILEの設定を変更する必要があります。また設定値はSQL(ALTER SYSTEMコマンド)で変更できます。

インスタンスの停止

OSの再起動やメンテナンス作業をする際はインスタンスを停止する必要があります。
インスタンスを停止するにはSQL*Plusでshutdownコマンドを使用しますが、SYSDBA権限などの管理権限がないと実行できません。 shutdownコマンドを以下の表にまとめました。

オプション 説明 既存接続の扱い 実行中SQL
NORMAL インスタンスの停止処理を行う。オプション未指定時のデフォルト ユーザーが接続を終了するまで待機 何もしない
TRANSCTIONAL インスタンスの停止処理を行う。 トランザクション終了時に切断される トランザクション終了を待機
IMMEDIATE インスタンスの停止処理を行う。 切断される 取り消す(ロールバック
ABORT インスタンスを強制終了する 切断される 強制終了(取り消し処理を実行しない)

shutdown abortはosレベルでのプロセスkillと同等なので、日々の運用での使用はしないでください。
使用した場合はデータベースファイル整合性は取れてない状態となり、次回インスタンス起動時に自動回復となります。
ちなみに、その他のオプションの場合は整合性は取れた状態となります。

メモリコンポーネントの自動調整機能と各メモリー管理について

モリー領域に必要なサイズはoralceデータベースで実行される処理内容や処理の曜日や時間帯によって変化するため、oracleにはSGAとPGAのメモリーサイズを自動調整する機能があります。
REDOログバッファのサイズは自動調整の対象外です。
自動メモリー管理により、SGAとPGAのサイズを自動調整し、さらにその中でSGAを対象とした自動共有メモリー管理やPGAを対象とした自動PGAモリー管理が自動調整します。
自動メモリ―管理はMEMORY_TARGETをもとに合計サイズを超えないよう調整しますが、MEMORY_TARGETの値を設定しないか0にすることで自動メモリー管理を無効化することができます。
自動メモリー管理でのSGAとPGAのサイズ下限値はそれぞれの初期化パラメータであるtargetに基づき、それを下回ることはありません。
自動共有メモリー管理ではSGA全体のメモリーサイズはSGA_TARGETの設定値となり、固定です。各コンポーネントのサイズを自動調整を行います。
自動共有メモリー管理を無効化するには自動メモリー管理を無効化したうえでSGA_TARGETに何も設定しないか0を設定します、このことを手動共有メモリー管理といいます。
手動共有メモリー管理とした場合、次の初期化パラメータで設定したサイズに各コンポーネントは固定されます。
「LOG_BUFFER」「DB_CACHE_SIZE」「SHARED_POOL_SIZE」「JAVA_POOL_SIZE」「LARGE_POOL_SIZE」
自動PGAモリー管理も自動共有メモリー管理と同様の仕様です。自動共有メモリー管理の有効/無効にかかわらず有効にできます。

データベース記憶域構造の管理


データベースファイルについて

oracleデータベースが読み書きするファイルを表にまとめました。以下のファイルは記憶域(ストレージ)にあります。

ファイル 説明
データファイル 表や索引などのデータが格納
REDOログファイル(オンラインREDOログファイル) データベースに対して行われた更新情報すべてが記録
制御ファイル データファイル名やREDOログファイル名を含むデータベースの構成情報及び管理情報が格納
初期化パラメータファイル 初期化パラメータのリストおよび各パラメータの値が格納
パスワードファイル SYSDBAなどの管理権限を持つユーザーのパスワードを管理する
アーカイブログファイル REDOログファイルのコピー

今回はREDOログファイルと制御ファイルについて詳しく説明していきます。
REDOログファイルはインスタンスが異常終了した場合やデータファイルが破損した際に障害復旧するのですが、記録された更新履歴をもとに更新処理を再実行することをロールフォワードと呼ぶことがあります。(インスタンス回復やクラッシュリカバリと呼ばれることも)
インスタンス異常終了によって、データベースファイルは一貫性がとれてない不整合な状態になり、また更新されていない状態となります。その際に復旧させることをインスタンスリカバリといいます。
REDOログファイルは多重化されています。多重化構成におけるREDOログファイルをメンバー、多重化されたメンバーの集合をグループ(ロググループ)と呼び、グループを複数用意された状態で複数グループでログスイッチを順次行っています。ログスイッチの基準は「カレントグループにいっぱいまで書き込んだら」でグループ内のメンバーに書き込まれるREDOデータは同一になります。これらはローテーション形式といえます。
REDOログファイルのサイズは自動的に拡張されません。 制御ファイルでは先ほどでもあったログファイルの構成(グループ数、メンバーのファイル名など)も記録されているため重要なものです。多重化は推奨でされており、またデフォルトで制御ファイルも多重化されています。

表領域について

oracleデータベースに表や索引などのデータを格納するときに指定するのが表領域です。表領域の仕組みを全く理解していないためより詳しく見ていきます。
表領域にも種類がありますが、1つ以上のデータファイルをグループ化されてできています。表や索引などの記憶域は、指定された表領域を構成するデータファイルから割り当てられます。
割り当てについて、基本的にオブジェクトとセグメント(記憶域)は1対1で対応しますが、データを保持しないオブジェクトであるビューを例にすべてのオブジェクトにセグメントが対応されるわけではありません。
データファイルは固定サイズ(2KB~32KB)に分割して使用されており、この分割されたものをデータブロックといいます。
データブロックの中にオブジェクトのデータが入ります。例えば、表の行データはセグメントのデータブロックの中に保管されます。
データブロックは小さいため、エクステント(連続したデータブロック)で構成としてまとめてセグメントに割り当てをする。
セグメントの空き容量が不足した場合は、セグメントにエクステントを追加することが可能です。
少し自分自身で分かりにくかったため整理しますと、データベースには表領域が複数存在します。また、表領域には、1つ以上のデータファイルで構成でき且つ1つ以上のセグメントで格納されます。(オブジェクトもセグメントで対応しているが表領域ではありません)
これから特殊な役割の表領域ですが、動作に必要なものであるためoracleデータベース作成時に自動的に作成されます。
SYSTEM表領域
データディクショナリが格納され、表領域名は変えることができない表領域となっています。
SYSTEM表領域は常に使用可能な状態(オンライン)である必要があり、SYSTEM表領域を構成するデータファイルが破損してSYSTEM表領域が使用できなくなった場合はインスタンスは異常終了します。
SYSAUX表領域
SYSTEM表領域の補助的な役割でデータベースの動作を補助する様々な管理情報が格納されています。
AWRと呼ばれる表の集合もSYSAUX表領域に格納されています。表領域名はSYSTEM表領域同様変更できません。 UNDO表領域 UNDOセグメントという特殊なセグメントを格納するための表領域で、表や索引などの通常オブジェクトのセグメントは格納できません。
表領域名は変更可能であり、またDBCAでデータベース作成した場合「UNDOTBS1」という表領域名となります。
また、データファイルから構成されます。 一時表領域 一時セグメントという特殊なセグメントを格納するための表領域で、UNDO同様通常オブジェクトのセグメントは格納できません。
表領域名は変更可能であり、またDBCAでデータベース作成した場合「TEMP」という表領域名となります。
また、一時ファイルから構成されます。

表領域の作成・拡張・削除

SQL*Plusを用いた表領域作成手順やサイズ拡張、削除について説明していきます。
まず前提として、データベース作成したところでアプリケーション用の表領域はないため作成が必要です。
作成する際、CREATE TAVLESPACEコマンドを使うのですが一旦以下に2つのデータファイルで構成される表領域のコマンドの例を記載します。

CREATE TABELESPACE 表領域名  
 DATAFILE ファイルパス  
 SIZE 初期サイズ  
 AUTOEXTEND 自動拡張(ONorOFF)  
 ファイルパス(2番目のデータファイル)  
 SIZE 初期サイズ(2番目のデータファイル)  
 AUTOEXTEND ON;(2番目のデータファイル)

比較対象によってはここで作成した表領域を永続表領域と呼ばれることやsmallfile表領域と呼ばれることがあります。

次に表領域の拡張についてですが、表領域のデータファイルをリサイズしてデータファイルのサイズを大きくするかもしくは表領域に新しいデータファイルを追加することで拡張できます。
先ほどコードとして記載したAUTOEXTENDがONに設定されている場合、表領域の空き領域が不足した場合自動でサイズが拡張されます。

ALTER TABLESPACE 表領域  
 ADDDATAFILE ファイルパス SIZE 値;
or
ALTER TABLESPACE 表領域  
 ADDDATAFILE ファイルパス
 RESIZE 値;

最後に表領域の削除ですが「空の表領域の削除」、「表領域に格納されているオブジェクトと表領域を削除」、また「表領域に格納されているオブジェクトと表領域およびデータファイルを削除」でコマンドが異なります。

DROP TABLESPACE 表領域 ;
DROP TABLESPACE 表領域 INCLUDING CONTENTS;
DROP TABLESPACE 表領域 INCLUDING CONTENTS AND DATAFILES;

表領域の作成に関係することで、先ほど話したsmallfile表領域の対となるbigfile表領域なるものが存在します。
oracle Database 10gで導入されたものですが、smallfile表領域はデータファイルサイズが32GB(データブロックが8KBの場合)であり、数TBを超える表領域を作成しようとするとデータファイルが多くなり管理しづらくなります。begfile表領域は32TB(データブロックが8KBの場合)であるため問題を回避できます。bigfile表領域は1つのデータファイルだけでしか構成できずまた、ファイル追加もできません。

UNDO表領域と一時表領域

UNDO表領域は先ほど説明したとおり、UNDOデータを保管するUNDOセグメントのみ格納できる表領域です。
oralceによりUNDOセグメントおよびUNDOデータ管理が自動的に行われており自動的に削除されます。 1つのデータベースに複数のUNDO表領域を作成することができますが、稼働中のデータベースは最低1つのUNDO表領域が使用可能な状態である必要があり、また使用可能にできるのは1つだけとなっています。
UNDOデータの用途ですが、
トランザクションロールバック
読取り一貫性の保証
一部のフラッシュバック機能 となっています。
一部のフラッシュバック機能とは表データを過去の状態に戻す機能になります。
読取り一貫性の保証とは、selectコマンド実行中にほかのユーザーがデータを変更した場合でも、select時点のデータをUNDO表領域から読み込むことで一貫性を保証できるということです。
ただ、大量更新であった場合UNDO表領域で保管できるUNDOデータには制限があるため読取り一貫性エラー(ORA-01555スナップショットが古すぎます)が発生する可能性があります。
解決する方法としては、一応初期パラメータのUNDO_RETENTIONに想定される問い合わせ時間よりも大きな時間(単位:秒)で設定することです。また、UNDO表領域を構成するデータファイルの自動拡張を有効にすることも有効となります。

一時表領域はメモリー上で処理ができない大量データを処理する場合に使用される表領域です。
ソート処理などを行う場合、データをPGAに展開できる場合は、PGAすなわちメモリー上で処理が実行されますが、PGAに展開できないほど大きいデータサイズとなった場合は一時セグメントに展開され、ストレージを使って処理が実行されます。ただ、処理速度は低下されます。
UNDO表領域同様自動的に実行されるためPGAを使用するか一時セグメントを使用するかの判断はできません。

緩みっぱなし2日目突入~明日は朝7時から必ず勉強10時には本屋~

おつおつー^^
えー、今日は珍しく外界の方と会話しましたー
コロナ入ってから直接会ったのは一部友人を除いて初のこと...
いやー頑張ったなー俺よく我慢したわー
まぁ今日は特に何事もなく、メールに書いてあった贈答品禁止の項目読まず買っていって結局同期に渡して本日終了。
よし、ただお菓子を同期に配ったおじさんだ。満足満足。
コロナ終わったら絶対飲みいくコロナ終わったら絶対飲み行く....
えーと今日も勉強せずの1日でした。

失った時間は後戻りはできないため、誓ったこと守ってちゃんと勉強しないと...
明日します勉強←
一応、少し昨日のブログ更新しました。けれどもまだ更新中となっているため早めに終わらせたいと思います(そのための明日本屋

日常のサイクル作るの難しいと実感する金曜日@在宅勤務でもできる脳に刺激を与える方法とは⁉

おつおつー^^

最近、いろいろなものを抑えすぎてフロー状態にない日々が続いています。  

受験の時を思い出すといろいろな学習のノウハウがあった気がしているので、いったんまとめてみました! (脳死

  • ただ無意識に、感情を切ってやりこむと決めた教本をひたすら勉強していた
  • 3つの教科、そして複数内容の勉強(単語記憶や問題解くなど)があったため時間を区切ってサイクルさせて勉強をしていた
  • 試験始める前や起きた後など奮い立たせるある特定の曲を聴いていた

つい脳死で思いついたものを書いちゃいました笑   フロー状態にない日々が続いていると書いちゃったからフロー状態になりたくなってしまった...  

受験についての記事は後日あげるとして今日は、昨日の考察である「悪夢を見るのはコロナ影響によるもので刺激が足りていないからなのではないか」これについて解決法を探りたいと思います。



在宅勤務でもできる脳に刺激を与える方法とは⁉


調べてみた結果ですが、以下の行動に尽きると思います。

  • 新しいことを始める
  • 外に出る
  • 気分を上げる

どれも普通の結論に至ってしまったのですが、調べた内容や考察を以下に説明していきますね。
※4/25更新 「調べてみた結果ですが、以下の行動に尽きると思います」と3つ挙げましたが、本屋に行って調べものをした結果、結果が変わりましたので更新します!

  • 新しいことを始める(興味を持つ)
  • ランニング
  • 気分を上げる(ストレスを避ける)
  • よく噛む
悪夢の原因はズバリ!過去の記憶も正しく思い出せず自身で作り上げた記憶で上書きされてしまっているから!

今回悪夢を見てしまう原因を調査するにあたって使ったキーワードは「脳」「刺激」「五感」「新しいこと」です。
在宅勤務で調べると大体疲れや運動不足というワードがひっかかり、結局リフレッシュするには五感刺激することが大事という結論がとても多く感じました。
もともと調査にすでに五感を使っている可能性もありますが、それは置いておいて
記事や悩みを抱えている人はすぐに結論を出し、また求めたがる人が多いなと感じました。
私は根拠がないと動きたくない人であるため、少しでも根拠あるものにするために脳科学の論文を少し探しました。

Winsonは「夢は記憶の再生と再処理過程で生じる」
Winsonの説とは逆に、「夢は不要な記憶を消去するために見る」

bsd.neuroinf.jp

これが今の研究で明らかになっている夢の役割です。
どちらも記憶とは関係してそうですよね。

~~※以下4/25更新分~~~~~~~~

『脳の取り扱い説明書』にて木ノ本氏は「適切な時期に復習することやアウトプットすることが記憶の定着へ関係している」としています。
つまり、アウトプットがされないと記憶があいまいなものになってしまうということになります。 コロナ時期で友人に会うことが少なくなり、おそらく過去の出来事をテーマに会話することも少なくなったであろう今は記憶があいまいになり、勝手に記憶を変えてしまっているという可能性があります。
どの本で読んだか忘れたのですが、自己他己ともにアイデンティティエピソード記憶であり、自分の記憶は一番信用ならないと研究者は口をそろえて言うとのことだったため、他人と過去の出来事を話すことは勝手に記憶をゆがめない唯一の手段であったはずです。

それでもコロナはコロナであるためどうしようもありません。
会えないものは会えない。

木ノ本氏は先ほどの文章に続けて「それ(アウトプットすること)以外の方法では興味や感情が記憶に関係している」とあり、さらにこのようなことをつづっています。
「年を重ねるごとに記憶が悪くなるのは日々の出来事に興味を持てなくなったから」
さらにEichとMetcalfe(どちらも研究者)は「気分が記憶想起の手がかりとなることを示している」としており、
つまりコロナ時期、人と会えない中、記憶定着には「気分」「興味」となりそうです。

今は記憶定着について話しましたが、もとより記憶力を鍛えることも大事なことではあります。
木ノ本氏は記憶に関係する「海馬」を育てるには以下のことを本で勧めていました。

  • 適度なランニング
  • よく噛むこと
  • 社交的な場に出ること
  • ストレスを避けること

総括


色々調べてみて脳科学はいろいろ難しいなと感じたのはさておき、
金曜から毎日ちょっとずつ調べてましたが結構時間をかけてしまいました...
結局私が見てた悪夢は久しぶりに友人と会うことですぐに解消してしまったわけですが、それでも調べたことは無駄になりませんでした。
最後に、睡眠専攻は様々な分野の知識を有していないと専攻できないと本であり、
その中に心理学もあったのですが、フロイト夢分析という分野にも手をかけていたそうです。
実際本屋にも夢分析という分野があり、「無意識世界を知るためのもっとも有効な心理学手段」と位置づけられていたため、
夢分析』気になる方は調べてみてはいかがでしょうか。
もしそんなもの興味ないし、本は嫌いという方がいらっしゃいましたら以下を実行してみては? brand.taisho.co.jp

今日は6時半起き!始業前から勉強始めて質のいい一日にするぞー!@意外とない⁉いい夢を見る方法を調べてみた

おつおつー^^
えーと、今朝の夢はと。
飛行機乗ってて何かに追いかけられてて、その追いかけられてる人と降りるタイミングずらせたっていう夢と旅の目的地が三陸のどこかで電車が一向に来なくて旅行諦めたら実は数分後に来ていたっていう夢。 あとは、なぜか中学で楽器の演奏会があってフルートをなぜかやっててフルートの接合部分の滑りがよくておとしちゃったり、練習は当日まで全然やってなかったりっていう夢。
えーなんですか(´・_・`)
昨日いい夢見て寝ようと願って寝たのにこの有様は笑
3つの夢すべて悪夢笑
これはちょっとなにかおかしいですね笑
もし夢の内容をいいものに変えられるなら朝から変にストレス抱えることはないでしょうということでネットで記事を探してみました笑(執念


意外とない⁉いい夢を見る方法


冒頭でも話したとおり、悪夢が続くなかいい夢みたいと思い安易な考えで「夢」「幸せ」で調べるとずらっと怪しいサイトが上がっていたため、
検索するワードをそのまま変えずにCiNiiで検索をかけてみましたが、それも不発。
逆に悪夢などで調べてみると「コロナウイルスパンデミック・ドリーム」が検索にひっかかりました。
論文に出ていた内容とかではなく記事にあったものなので、信憑性に欠けますがウィキペディアにも一応ありました。

コロナウイルスパンデミック・ドリーム(英: Coronavirus Pandemic Dream)は、新型コロナウイルス感染症(COVID-19)の流行の影響により、悪夢や睡眠障害が増加する現象[1]。

ja.wikipedia.org

ウィキペディアによると
『その原因として、それ以前の日常的な環境や日々の刺激がなくなったことで、インスピレーションが不足し、潜在意識が夢の題材を過去の記憶からより多く引き出すことを余儀なくされている、と考える夢の専門家もいる。』
そうなので、これは自分の夢と共通してるかもなんて思いました^^;
解決方法は日々家にいても刺激を得ること?なんて思っているため明日のブログは家でも刺激を感じられるにはどうしたらいいか調べてみようかなーなんて思っています!
では今日も勉強に移りましょう!
※5章が終わりませんでした、原因は理解しようと少し調べものをしてしまったこと、業後は休みの時間はとっていなかったもののほかのところで無駄に動画を見てしまったことが原因です。


oracleインスタンス管理について


oracleデータベースの常駐部分であるインスタンスについて解説しようと思います。
SGAとバックグラウンドプロセスから構成され、インスタンスを起動させておかないとデータベースの使用はできません。 インスタンスを構成するSGAとバックグラウンドプロセスはあくまで総称であってさらにその中でも様々なメモリー領域やプロセスに分かれます。
ちなみに、バッググラウンドプロセスはサーバープロセスとは異なり特定の接続に限定されないプロセスで、SGAはインスタンス起動時に割り当てられるメモリ領域です。 SGAにはプロセス間で共有されるデータが保管されます。 また内容については後程詳しく見ていきますが、インスタンスはデータベースファイルと対となる必要があります、1対1の関係です。

バッググラウンドプロセスとSGAの主な種類

以下にそれぞれの具体的なプロセスとコンポーネントを表でまとめました。

コンポーネント 説明
データベースライター(DBWn) データベースバッファキャッシュ内の更新済ブロックをデータファイルに書き込む
ログライター(LGWR) REDOログバッファのREDOデータ(更新履歴情報)をREDOログファイルに書き出す
チェックポイント(CKPT) DBWnに対してブロック書き出し指示を出す。制御ファイルにチェックポイント情報を書き込む
システムモニター(SMON) インスタンス異常終了の場合に、次回インスタンス起動時にデータベースファイルの整合性を復旧する処理を実行する
プロセスモニター(PMON) プロセスが以上終了した場合、そのプロセスが使用していたデータやリソースの後処理(クリーンアップ)を実行する
管理モニター(MMON) 性能分析などで使用される統計情報を定期収集する
アーカイバ(ARCn) ログスイッチの発生後、REDOログファイルのREDOデータをアーカイブログファイルとしてコピーする
プロセス名 説明
データベースバッファキャッシュ データファイルから読み込んだブロックをキャッシュする。更新済ブロックを一時的に保管(バッファ機能)
共有プール 解析済のSQLデータディクショナリの情報などをキャッシュする
REDOログバッファ REDOログファイルに書き込む前のREDOデータを一時的に保管する
Javaプール Java言語で記述されたストアドプログラムの実行に使用される
ラージプール バックアップや並列処理などの作業領域として使用される

この中のうちの一部を説明していきたいと思います(黒本に則り)

データベースバッファキャッシュ

このコンポーネントはブロックの読み出し書き込みの性能向上のためのメモリー領域です。表や索引のデータはブロックとしてデータファイルに記録されています。サーバープロセスとデータファイルの間にあるのがデータバッファキャッシュです。
データバッファキャッシュの機能としてキャッシュ機能とバッファ機能(遅延書き込み)がありこれらが性能向上に関係しています。
キャッシュ機能はサーバープロセスからブロックをデータファイルから読み出した際にデータバッファキャッシュにキャッシュしておくことで2回目もし同じブロックを読み出すというときにキャッシュから読み出せます。
バッファ機能についてはその逆でサーバープロセスが書き込みを行う際、データファイルのブロックではなくデータベースバッファキャッシュのブロックに書きこみます。 その後DBWnが書き込みを行います。
これを遅延書込みといいますが、これによってブロックの更新についてデータバッファキャッシュの更新だけで済みます。また、ストレージ装置(データファイル)の処理能力を超えるようなブロック更新の場合、一度にすべてではなくタイミングずらして書込みを行うことができ処理負荷を平準化できます。

REDOログバッファ、共有プール

このコンポーネントはサーバープロセスがブロック更新するタイミングでREDOデータを生成しますが、そのREDOデータをトランザクションコミット(更新を確定)までの間、一時保管しておく領域となります。 REDOデータを残す理由としてはデータベースバッファキャッシュへ保管される際にインスタンスで障害があるとブロックの更新が失われてしまうためです。
LGWRはREDOログバッファからREDOログファイルにデータを移す際に使用されます。 共有プールは解析済のSQLの情報をキャッシュし、同一のSQL実行の場合の時間短縮やサーバーへの負荷の軽減へつなげる役割や、データディクショナリのキャッシュの役割がある。
データディクショナリとはデータベースの内部管理情報のことで様々な処理でこの情報にアクセスをしている。ちなみにデータディクショナリはSYSTEM1表領域に格納されています。

PGA(プログラムグローバル領域)

PGAとはプロセスごとの専用メモリー領域で、プロセス専用のデータを保管します。プロセスごとのPGAは共有されませんが、SGAはデータの共有が可能です。

今週半ば!昨日勉強できなかった分とりかえしてかんと!4章の勉強やっていくよー

おつおつー^^
昨日は残業で22時までだったものの、今日は早めに上がれたということでちゃっちゃと勉強はじめちゃいましょー!
え、始業までの間何してたって?すみません、今日も限界まで寝てました笑
明日はこの勉強前のブログの内容も価値あるものにできたらと思っております...

ORACLEDBへ接続するソフトウェアについて

以前触れた、データベースへネットを通して接続する方法でクライアント/データベースサーバー型というシステム構成があるというという話ですが、このデータベースへの接続に関してはoracleNetというソフトウェアがあります。oracleNetを用いてシステム構成の主流となっているのはクライアント/データベース型とwebアプリケーション型の二つです。
webアプリケーション型ではクライアントはwebブラウザで使用しているため、webアプリケーションサーバーからデータベースサーバー間でのやり取りで、クライアント/データベース型ではoracleクライアントが入っているクライアントコンピュータからデータベースサーバーへの接続の際にoracleNetを用いています。
oracleNetの構成を支援するツールとしては、「oracle enterprise manager cloud control」、「oracle Net Manager(NETMGR)」、「oracle net configration assistant(NetCA)」があります。 oracleNetを構成するファイルで唯一必須のものであるlistener.oraはリスナーの構成/設定を行うファイルです。oracleNetとは少し離れますが、システム構成の話もあったため本編に入る前にリスナーを必要とするリモート接続について話したいと思います。

リモート接続について

リモート接続とはクライアントコンピュータ上のアプリケーションがネットワークにあるデータベースに接続することを指します。接続の際はリスナーが必須なのですが、接続について少しまとめました。

  • データベースサーバーでリスナーを起動させ、リスナーに対してクライアント側はデータベースサーバーのホスト名(IPアドレス)とポート番号を送信します。
  • リスナーには設定されたポート番号で接続要求を待ち、要求を受け取った場合、データベースサービス名(=グローバルデータベース名)に対応するoracleDBに接続を中継する

リモート接続方法はsqlplus ユーザー名/パスワード@接続識別子ですが、ローカル接続の場合は接続識別子は必要ありません。リモート接続の場合はoracleNetの構成が必要ですがローカル接続の場合は必要ありません。後程、話しますがこの接続識別子がoracleNetにおいて重要となってきます。
一応ちょっとした知識なのですがユーザー名とパスワード、および接続識別子からなる文字列を接続文字列といいます。また、ローカル接続の場合接続識別子が必要ないといいましたが、その代わり環境変数であるORACLE_SIDには接続先インスタンスのSIDを指定しておく必要があるそうです。

リスナーについて

リスナーとは先述の通り、データベースへの中継を役割としているプロセスです。インスタンスとは別の独立したプロセスであるためインスタンスが起動していたとしてもインスタンスが起動しているかどうかはわかりません。ここではoracleNetを前提としているため、listener.oraについてふれていきます。
listerner.oraについても先述の通りなのですが、リスナーの構成/設定を行うファイルであるため、このファイルにて「プロトコル」「リスナーが起動するデータベースサーバーのホスト名」「ポート番号」を指定する必要があります。リスナーは1つのデータベースに対して1つという決まりはありませんが、ポート番号は異なる必要があります。listener.oraはテキストエディタでも編集可能ですがoracle Net Managerを用いて編集も可能です。
そもそもの話なのですが、リスナーにはデフォルト値があるため、リスナー名やポート番号、プロトコルを変更しない場合はデフォルトリスナーを使用し、listener.oraへの記載は必要ありません。

リスナー制御についてですが、リスナーの起動停止を含むリスナーを行えるリスナー制御ユーティリティ(lsnrctl)というツールがあります。これはコマンドプロンプトや、ターミナルからの実行です。
「lsnrctl start リスナー名」「lsnrctl stop リスナー名」「lsnrctl status リスナー名」「lsnrctl services リスナー名」を基本コマンドとしていますservicesはstatusとは違い、よりデータベースサービスの詳細情報を確認できるコマンドになりますが、リスナーに登録されているデータベースサービスはstatusともに確認できますがサマリーログファイルの出力先はstatusでのみ確認できます。基本リスナー名は省略できませんが、リスナー名がLISTENERであった場合は省略可能です。リスナーの制御はlsnrctlだけでなく、oracle enterprise manager cloud controlでも可能です。

接続識別子とネーミングメソッドについて

ネーミングメソッドとは接続識別子を接続先情報として解決する方法を指します。
ネーミングメソッドには4つの解決方法がありそれぞれ、「簡易接続ネーミング」「ローカルネーミング」「ディレクトリネーミング」「外部ネーミング」があります。どのネーミングメソッドにも接続識別子と接続先情報を記載しておくのですが、ディレクトリネーミングはLDAP準拠のディレクトリサーバーに記載し、外部ネーミングは外部ネーミングサービスに記載をしておくことで解決させます。その一方簡易接続ネーミングとローカルネーミングに関しては、ローカルにて解決できます。
簡易接続ネーミングについてはファイルを必要としないため動作確認やテスト時に有効です。記載方法は以下の通りです。

sqlplus ユーザー名/パスワード @<データベースサーバーホスト名>:<ポート番号>/<データベースサービス名>

ローカルネーミングについては、接続識別子にネットサービス名指定することでtnsnames.oraを呼び、tnsnames.oraに記載したデータベースホスト名やデータベースサービス名、ポート番号を取得します。tnsnames.oraを見ればわかるのですがコードとしては、ネットサービス名=接続記述子(ここで接続先情報を記載)という記載方法となっています。
oracleNetは先述した「listeners.ora」「tnsnames.ora」以外に「sqlnet.ora」というファイルが存在します。slqnet.oraはなくてもデフォルトの値となって実行されるのですが、このファイルでできることを一応挙げておくと、ネーミングメソッドの優先順位設定、ロギング機能とトレース機能の有効化などができます。

今週まだ火曜日、今日は4章を勉強していくよー(できませんでした)

おつおつー^^
昨日ブログの冒頭文章の途中で終わらせてブログあげてしまいました。
昨日いろいろありまして...
目を完全に覚ましたのは9時でした笑
テレワークはこれでも間に合ってしまうのはいいですねー
考え事が頭から離れない離さないどちらもの圧をかけていて昼休み中ですが、すでにいつもの2倍くらい疲れがたまっています。
少し話が飛ぶのですが、社会人2年目の時に父の単身赴任先を旅行先として一人旅を5日間したのですが、そのうちの3日は京都のとあるお寺に修行しに行っていました 。
その時に作務というのが日中ありまして、作務では掃除や草むしりなどをするのですが作務はただの雑用という意味ではなく、作務を行うことは雑念をなくす意味があると知りその時はそう思いながら作務をしていました。その作務の教えは今使い時じゃないかと朝から考えてはいたのですが、なくすことはなんとなく逃げなような気がして昼まで悶々としております。
進捗が悪くならない限り午後もこの悶々とする中、仕事しようかなと。
勉強しようと思ったのですが、10時まで残業により勉強できませんでした。 明日の朝早起きしてがんばります。