「データベース」カテゴリーアーカイブ

SQL:システム日付(現在日付)を取得する方法

SQLでシステム日付を取得するにはMySQLやPostgreSQlとOracleでは少し異なるのでメモしておきます。

システム日付を取得するSQL:MySQL、PostgreSQL

date型で取得、time型で取得、timestamp型で取得する方法がありますがOracleのsysdateに相当するという意味でtimestamp型の方法をご紹介します。

または

システム日付を取得するSQL:Oracle

 

PostgreSQL:年、月、日、時、分、秒以下を切り捨てて取得する方法

OracleでのTRUC関数と類似したものにPostgreSQLではDATE_TRUNC関数があります。

DATE_TRUNC関数は「DATE_TRUNC([‘精度’],[列名])」形式で指定する事で取得できます。

使用例

サンプルテーブル「goods」

クエリー(SQL)

サンプルテーブル「goods」のtype_code=’102’のadd_dateをサンプルとしてDATE_TRUNC関数で抽出してみます。

出力結果

データベース製品のライセンス一覧

データベース製品のライセンス一覧です。

製品名オープンソース/商用ライセンスデータ
モデル
料金
DB2商用IBMORDBMS1プロセッサ
・461万7000円
2年目から5年目の保守料
・88万700円/年
1プロセッサで5年間運用した場合のコスト
・813万9800円
HiRDB商用日立製作所RDBMS同時接続数ライセンス
・120,000円
1プロセッサ
・1,800,000円
MySQLオープンソースGPL or 商用RDBMS1-4 ソケットサーバー 1台/年(税抜)
・Standard Edition:240,000
・Enterprise Edition:600,000
・Cluster Carrier Grade Edition:1,200,000
5+ ソケット・サーバー/年(税抜)
・Standard Edition:480,000
・Enterprise Edition:1,200,000
・Cluster Carrier Grade Edition:2,400,000
Oracle Database商用オラクルRDBMS
PostgreSQLオープンソースBSDORDBMS無料

Oracle:リカバリとリストアの違い

Oracleデータベースのリカバリとリストアの概念が少し理解しずらかったので整理しておこうと思います。
基本的にはパソコンのOSなどにおけるリカバリ(復旧)/リストア(復元)と言葉的な概念は同じですが、実作業は異なるものだと別物と覚えたほうが良さそうです。

リストアとは

  • 一般的にパソコンのリストアといえばバックアップデータを用いてOSなどのデータを元の状態に戻す(復元)することを指します。
  • Oracleデータベースのリストアとは、バックアップ媒体から元の場所もしくは新しい場所へデータベースを構成する物理ファイルをコピーして復元することを指します。

リカバリとは

  • 一般的にパソコンのリカバリといえばパソコンにインストールされているOSを出荷時の状態に戻す(復旧する)作業のことをいいます。
  • Oracleデータベースのリカバリとは、REDOログファイル(バックアップ取得~現在までのトランザクションの変更情報が保存されています)を使用してバックアップ後に作成されたデータベースへ変更情報を反映してデータを復旧することを指します。

Oracle Bronze DBA11g 合格!

本日、「ORACLE MASTER Bronze DBA11g」を受験してきました。

結果は68%でギリギリで合格でした(^^;;
正直、試験終了時には落ちててもおかしくないなあという手応えだったので、運良く拾ったという感じでした。

学習期間

    学習期間はおよそ3週間程で時間的には30~40時間程。

学習教材

    使用したテキストはamazonで評価の高い「ORACLE MASTER Bronze[Bronze DBA11g](試験番号:1Z0-018)完全詳解+精選問題集」のみ使用しました。
    章末問題を3週、巻末の模擬試験2つを9割以上正解(5週)するまで学習しました。
    章末問題と模擬試験を限りなく100%の正答率で且つ内容をきっちり理解しておく必要があります。
    正解だけ覚えていると実際の試験で足元救われる可能性も十分あるように思いました。

Oracleの業務経験

    SQLを少々触った程度の経験しかないのでDBA関連の知識はほぼ初心者レベル。

実際の試験難易度

    上記テキストの模擬試験よりは難易度は高めです。
    テキストと同様の問題は3~4割程度で大半は模擬試験問題の応用編という印象でした。
    選択式も2つより3つ選択する問題の方が多かった印象なので、曖昧な理解のままだと危ないです。

Oracleの試験はピアソンVUEですが、以前は試験終了後に即合否がわかりましたが、今は受験後30後位にメールで送られてきてOracleのサイトにアクセスする事で合否が確認出来る形式になっています。そのメールが来るまでの間がなんとも気持ち悪かった・・・。
今回は何とか合格は出来ましたが、理解度はまだまだなので引き続き学習は必要です。

さて次は何受けようかな。

TRUNCATEとDELETEの違い

テーブルのデータを削除する方法として「DELETE」コマンドと「TRUNCATE TABLE」コマンドの2つがあります。
両者を使用する場合、どのような用途で使用するべきか違いについてまとめておきます。

DELETE文

  • DELETEはTABLEのレコードを行単位で削除する事も可能。
  • DELETEはデータ削除のみ実施するだけでで「AUTO_INCREMENT」の値は初期化しません。
  • DELETE後にROLLBACK可能

TRUNCATE文

  • TRUNCATEはTABLEをDROP後にCREATEする為、行単位での削除は不可能。
  • TRUNCATEは「AUTO_INCREMENT」が設定されている場合は値が初期化されます。
  • TRUNCATE後にROLLBACKは不可能。
  • DELETEより高速。

比較的新しいデータベース資格

データベースの資格と言えばオラクルが有名ですが、LINUXの資格であるLPICで有名なLPI-JAPANがOSS-DB技術者認定試験というものを実施しています。
オープンソースデータベース技術者のための技術者認定試験ということで年々受験者が増えているそうです。

ここでオープンソースデータベースなのだからMySQLなどの問題もでるのかと思ったらそうではなく、PostgreSQLがメインとなっています。
そのため、これではオープンソースデータベースではなくてPostgreSQLのための資格試験ではないかという批判もあるようです。
データベーススペシャリストとオラクル、OSS-DBとデータベースに関する有意な資格がみっつできたことは喜ばしいことかもしれません。

オラクルは高額すぎて会社で取らせて貰えなかったら手が出せない人もいるかもしれません。そういった場合にデータベーススペシャリストもそうですがOSS-DBも選択肢のひとつに入るでしょう。
OSS-DBはSilverとGoldにわかれていて難易度が違います。受験料も共に15000円とオラクルに比べれば低額となっています。

まだまだこれからという試験ではありますが、技術者としての腕を証明するためのひとつとして活用していきたいですね。

MySQLからMariaDBへ

ちょっとした案件でデータベースというとMySQLをとりあえず使っておこうという人はそれなりにいたかと思いますが、いまはその状況が変わってきています。

MySQLのオリジナルコードの作者のひとりがMySQLのコードをフォークして新しいプロジェクトを立ち上げたからです。
MariaDBという新しいデータベースプロジェクトです。MySQLと互換性も高く機能の取り込みも早いとの話です。
GoogleもMySQLからMariaDBに乗り換えたという話が出てきています。
よく使われるLinuxディストリビューションのひとつであるCentOSの標準環境もMySQLからMariaDBに変わりました。バージョン7からです。
CentOSだけではなくFedoraなどもMariaDBを標準に採用しているということだそうです。このことからもわかるとおりにMySQLからMariaDBへの移行が進んでいます。

CentOSさえもMariaDBを標準で採用したことからもわかるとおりに、この流れは止まらないことでしょう。
もしも乗り換える際は当たり前の話ですがきちんと検証してから使っていきたいですね。

バックアップの種類

現代は顧客の情報や、企業の商品の情報など様々な情報がデーターベースに記録されています。
このデーターベースは、企業活動や社会活動の中で非常に大きな役割を果たしており、それなしでは今の情報化社会を営んでいくにあたり大きな支障をきたすことになります。
それゆえに、そのバックアップを取得し万が一の事態へ備えることは非常に重要なことになります。
データーベースのバックアップ方法は大きくコールドバックアップ(オフラインバックアップ)とオンラインバックアップの二種類に分けられる。
コールドバックアップとは、データーベースを停止(Shutdown)させて取得するバックアップのことであり、オンラインバックアップとはデーターベースを停止させない状態のまま取得するバックアップのことである。
コールドバックアップではデーターベースを停止させるため、その間データーベースへのアクセスが出来なくなるというデメリットはあるが、データーベースを停止させ、その時の状態を取得することで、障害時にはこのバックアップのみ使用し、簡単迅速にリカバリできるというメリットがあります。
これに対してオンラインバックアップではデーターベースを停止させないため、サービスを運用状態でバックアップが取れるが、障害時はバックアップデータに加えてアーカイブログが必要となるなど、リカバリに手間と時間がかかる問題があります。
どちらも一長一短ですが、上手く目的に応じて両方を組み合わせるなど適切な方法を使用していきたいものです。

データーベースの排他制御についての概要

少しIT関連に詳しい人なら不思議に思うことがありませんか?

データーベースに対して同時に書き込むことがあってもなぜデーターは正しく処理されるのか。あるいは同時に書き込もうとした場合に書き込みトランザクションはなぜエラーにならないのだろうかと。

OracleやMS SQL Serverなどのデーターベース管理システムでは、ある処理がデーターベースに書き込み中に他の処理がデーターベースに書き込もうとすると、排他制御と呼ばれる仕組みが働いて書き込めないようになっています。
このことにより、同時に複数のトランザクションがデーターベースの更新を行うことでデーターが壊れてしまったりすることを防いでいます。

その仕組みは大まかに以下の概要となります。

  1. 特定のトランザクションがデーターベースに書き込みに行く
  2. データーベースはそのトランザクションにのみアクセスを許可。他のトランザクションからはアクセス出来ないロック状態となります。
  3. 最初のトランザクション処理が実行されます。
  4. 処理中のトランザクション処理が完了すれば、他のトランザクションのアクセスが可能となります。

基本的にデータベース管理システムでは上記の様な方法で、複数トランザクションからの同時実行を制御しています。