as of timestamp to_timestamp(フラッシュバッククエリの使い方。)

「オペレーションでミスした。どうしようデータを元に戻さないと。orz」みたいなことがあった場合のデータ復旧方法(oracle)

オペレーションのミスで誤ってDBのデータを更新したことや削除してしまったことは、
Web開発をしている人を含め、特に運用業務をやったことがある人は経験があると思います。
そういう時に便利な小技としてoracleの”フラッシュバッククエリ”を使うと
過去のレコードを参照することができるので、即時のデータ復旧をすることができます。
※私は調査でも使ったことがあります。結構使えます。
注意点としては数時間経つと、参照できなくなってしまうことですね。
トラブルなどでDBのデータを元に戻さないといけない時は、即座に更新前のバックアップを取ることが重要だと思います。

フラッシュバッククエリの使い方

<1.時間を指定する場合>
指定した時間のデータの状態を参照することができるので非常に便利

select
  *
from
  m_customer
as of timestamp to_timestamp(‘2013/01/30 11:30:00′,’YYYY/MM/DD HH24:MI:SS’);

<2.現在から指定した時間前で指定する場合>
基本的には1.を使えば良いと思います。

select
  *
from
  m_customer
as of timestamp (systimestamp – interval ‘1’ minute );
↑hourやdayでも指定可能。
例)
as of timestamp (systimestamp – interval ‘1’ hour );
as of timestamp (systimestamp – interval ‘1’ day );

トラブル時のデータを復旧などに利用してみてください。
このクエリに対して非常に感謝すると思います。(^^)y

スポンサードリンク

postfix: 自ドメイン宛てにメールを送信した時に「cannot open file: Is a directory」とエラーメールが返ってきた場合の対応

postfixでsmtpサーバを構築して
他ドメインから自ドメインへメールを送信した時に
以下のようなエラーメールが返ってきました。

This is the mail system at host mail.xxx.com.

I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

: cannot update mailbox /home/ユーザー名/Maildir for user ユーザー名.
cannot open file: Is a directory

Reporting-MTA: dns; mail.xxx.com
X-Postfix-Queue-ID: B00AA4E016A
X-Postfix-Sender: rfc822; xxxxx@mail.xxxxx.ne.jp
Arrival-Date: Thu, 24 Jan 2013 01:40:25 +0900 (JST)

Final-Recipient: rfc822; xxxxx@xxx.com
Original-Recipient: rfc822;xxxxx@xxx.com
Action: failed
Status: 5.2.0
Diagnostic-Code: X-Postfix; cannot update mailbox /home/ユーザー名/Maildir for user
ユーザー名. cannot open file: Is a directory

原因

設定のミスであった。
postfixでは/etc/postfix/main.cfの

home_mailbox = Maildir

が「Maildir/」となっていると Maildir 形式、
「Maildir」となっていると mbox 形式 となるようで
Maildir 形式でディレクトリが作成されてるのに設定がmbox 形式になっていたため、エラーになっていたようだった。
それで

home_mailbox = Maildir/

に変更したところエラーが解消しました。
細かい設定なので気を付けたいところです。
参考にしたサイト
http://phpgraher.blogspot.jp/2012/09/postfix-maildirmailbox.html
どうもありがとうございました!

スポンサードリンク

puttyで公開鍵認証をする。

putty

今日はLinuxでの公開鍵認証の方法をご紹介します。

手順

1.puttyをダウンロードする。

※ssh/telnet接続をすることができるターミナルエミュレーターです。

(1)以下URLからダウンロードする。
http://ice.hotmint.com/putty/
最新版をダウンロードする。

image_20120103_01

(2)ダウンロードしたファイルを解凍する。
image_20120103_02

2.puttyを日本語化する。

(1)解凍したフォルダの中の日本語用ファイル「/puttyフォルダ/ja-JP/putty.lng」を
「/puttyフォルダ」直下にコピーします。

→以下のフォルダ(/puttyフォルダ/ja-JP)の中にある・・・
image_20120103_03

→以下のファイル(/puttyフォルダ/ja-JP/putty.lng)を・・・
image_20120103_04

→以下のフォルダ(/puttyフォルダ)にコピーする。
image_20120103_05

(2)putty.exeを起動して、日本語化されているか確認する。
※以下のように表示されれば、正常に日本語化されています。
image_20120103_06

3.puttygenを日本語化する。(鍵生成アプリです。)

2.と同じ手順で「/puttyフォルダ/ja-JP/puttygen.lng」を
「/puttyフォルダ」直下にコピーしてください。

4.公開鍵と秘密鍵を生成する。

(1)puttygen.exeを起動する。

(2)[生成]ボタンを押す。
image_20120104_01

(3)「乱数を生成するために空白エリア上でマウスを動かしてください。」とのメッセージ通り、
空白エリアでマウスを動かしてください。(マウスの動きを鍵の生成時に使用しているようです。)
image_20120104_02

(4)しばらくすると以下のような画面になり、鍵の生成が完了しますので
公開鍵(赤で囲っている部分)をコピーして、保存する。
image_20120105_01

(5)秘密鍵を保存する。
鍵のパスフレーズとパスフレーズの確認のそれぞれを入力して
[秘密鍵の保存]ボタンを押す。
image_20120105_02

5.公開鍵をサーバに登録する。

(1)putty.exeを使い、サーバにログインする。
※パスワード認証でログインできることを前提とします。

(2)鍵認証をさせたいユーザのホームディレクトリに移動する。
cd /home/ユーザ名

(3).sshディレクトリを作成する。
mkdir .ssh

(4).sshディレクトリに公開鍵を保存するファイルを作成する。
touch .ssh/authorized_keys

(5)authorized_keysファイルにさきほど生成した公開鍵を保存する。
※viなどのエディタを使用して保存する。
vi .ssh/authorized_keys
image_20120105_03
(6)公開鍵と.sshディレクトリの権限を変更する。
chmod 700 .ssh
chmod 700 .ssh/authorized_keys
※こちらについては、権限がユーザ以外にあると鍵認証でのログイン時にエラーになるためです。
/var/log/secure に以下のようなエラーが出力されます。
ディレクトリの所有権がbadだと言ってますね。

Authentication refused: bad ownership or modes for directory /home/ユーザ名/.ssh

(7)秘密鍵を使い、ログインしてみる。
※puttyでは秘密鍵を以下のように設定します。
接続->ssh->認証
image_20120105_04

ユーザ名入力
image_20120105_05

パスフレーズ入力
image_20120105_06

ログインできれば完了です。

スポンサードリンク