SQLでシステム日付を取得するにはMySQLやPostgreSQlとOracleでは少し異なるのでメモしておきます。
システム日付を取得するSQL:MySQL、PostgreSQL
date型で取得、time型で取得、timestamp型で取得する方法がありますがOracleのsysdateに相当するという意味でtimestamp型の方法をご紹介します。
または
|
SELECT CURRENT_TIMESTAMP; |
システム日付を取得するSQL:Oracle
|
SELECT SYSDATE FROM DUAL; |
OracleでのTRUC関数と類似したものにPostgreSQLではDATE_TRUNC関数があります。
DATE_TRUNC関数は「DATE_TRUNC([‘精度’],[列名])」形式で指定する事で取得できます。
使用例
サンプルテーブル「goods」
クエリー(SQL)
サンプルテーブル「goods」のtype_code=’102’のadd_dateをサンプルとしてDATE_TRUNC関数で抽出してみます。
|
SELECT DATE_TRUNC('year',add_date), -- 精度に'year' を指定し年で切り捨て DATE_TRUNC('month',add_date), -- 精度に'month' を指定し月で切り捨て DATE_TRUNC('day',add_date), -- 精度に'day' を指定し日で切り捨て DATE_TRUNC('hour',add_date), -- 精度に'hour' を指定し時で切り捨て DATE_TRUNC('minute',add_date), -- 精度に'minute'を指定し分で切り捨て DATE_TRUNC('second',add_date) -- 精度に'second'を指定し秒で切り捨て FROM goods WHERE type_code = '102'; |
出力結果
データベース製品のライセンス一覧です。
製品名 | オープンソース/商用 | ライセンス | データ
モデル | 料金 |
DB2 | 商用 | IBM | ORDBMS | 1プロセッサ
・461万7000円
2年目から5年目の保守料
・88万700円/年
1プロセッサで5年間運用した場合のコスト
・813万9800円 |
HiRDB | 商用 | 日立製作所 | RDBMS | 同時接続数ライセンス
・120,000円
1プロセッサ
・1,800,000円 |
MySQL | オープンソース | GPL or 商用 | RDBMS | 1-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 | オープンソース | BSD | ORDBMS | 無料 |
Oracleデータベースのリカバリとリストアの概念が少し理解しずらかったので整理しておこうと思います。
基本的にはパソコンのOSなどにおけるリカバリ(復旧)/リストア(復元)と言葉的な概念は同じですが、実作業は異なるものだと別物と覚えたほうが良さそうです。
リストアとは
- 一般的にパソコンのリストアといえばバックアップデータを用いてOSなどのデータを元の状態に戻す(復元)することを指します。
- Oracleデータベースのリストアとは、バックアップ媒体から元の場所もしくは新しい場所へデータベースを構成する物理ファイルをコピーして復元することを指します。
リカバリとは
- 一般的にパソコンのリカバリといえばパソコンにインストールされているOSを出荷時の状態に戻す(復旧する)作業のことをいいます。
- Oracleデータベースのリカバリとは、REDOログファイル(バックアップ取得~現在までのトランザクションの変更情報が保存されています)を使用してバックアップ後に作成されたデータベースへ変更情報を反映してデータを復旧することを指します。
本日、「ORACLE MASTER Bronze DBA11g」を受験してきました。
結果は68%でギリギリで合格でした(^^;;
正直、試験終了時には落ちててもおかしくないなあという手応えだったので、運良く拾ったという感じでした。
学習期間
学習期間はおよそ3週間程で時間的には30~40時間程。
学習教材
Oracleの業務経験
SQLを少々触った程度の経験しかないのでDBA関連の知識はほぼ初心者レベル。
実際の試験難易度
上記テキストの模擬試験よりは難易度は高めです。
テキストと同様の問題は3~4割程度で大半は模擬試験問題の応用編という印象でした。
選択式も2つより3つ選択する問題の方が多かった印象なので、曖昧な理解のままだと危ないです。
Oracleの試験はピアソンVUEですが、以前は試験終了後に即合否がわかりましたが、今は受験後30後位にメールで送られてきてOracleのサイトにアクセスする事で合否が確認出来る形式になっています。そのメールが来るまでの間がなんとも気持ち悪かった・・・。
今回は何とか合格は出来ましたが、理解度はまだまだなので引き続き学習は必要です。
さて次は何受けようかな。
テーブルのデータを削除する方法として「DELETE」コマンドと「TRUNCATE TABLE」コマンドの2つがあります。
両者を使用する場合、どのような用途で使用するべきか違いについてまとめておきます。
DELETE文
TRUNCATE文
データベースの資格と言えばオラクルが有名ですが、LINUXの資格であるLPICで有名なLPI-JAPANがOSS-DB技術者認定試験というものを実施しています。
オープンソースデータベース技術者のための技術者認定試験ということで年々受験者が増えているそうです。
ここでオープンソースデータベースなのだからMySQLなどの問題もでるのかと思ったらそうではなく、PostgreSQLがメインとなっています。
そのため、これではオープンソースデータベースではなくてPostgreSQLのための資格試験ではないかという批判もあるようです。
データベーススペシャリストとオラクル、OSS-DBとデータベースに関する有意な資格がみっつできたことは喜ばしいことかもしれません。
オラクルは高額すぎて会社で取らせて貰えなかったら手が出せない人もいるかもしれません。そういった場合にデータベーススペシャリストもそうですがOSS-DBも選択肢のひとつに入るでしょう。
OSS-DBはSilverとGoldにわかれていて難易度が違います。受験料も共に15000円とオラクルに比べれば低額となっています。
まだまだこれからという試験ではありますが、技術者としての腕を証明するためのひとつとして活用していきたいですね。
ちょっとした案件でデータベースというと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などのデーターベース管理システムでは、ある処理がデーターベースに書き込み中に他の処理がデーターベースに書き込もうとすると、排他制御と呼ばれる仕組みが働いて書き込めないようになっています。
このことにより、同時に複数のトランザクションがデーターベースの更新を行うことでデーターが壊れてしまったりすることを防いでいます。
その仕組みは大まかに以下の概要となります。
- 特定のトランザクションがデーターベースに書き込みに行く
- データーベースはそのトランザクションにのみアクセスを許可。他のトランザクションからはアクセス出来ないロック状態となります。
- 最初のトランザクション処理が実行されます。
- 処理中のトランザクション処理が完了すれば、他のトランザクションのアクセスが可能となります。
-
基本的にデータベース管理システムでは上記の様な方法で、複数トランザクションからの同時実行を制御しています。
「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。