アーカイブ

2009 年 6 月 のアーカイブ

bookmarks 2009-06-11

2009 年 6 月 11 日 Comments off

Twitterは新世代メディアの中核になるのではないかという、きわめて素朴な発想

http://blogs.itmedia.co.jp/newtype/2009/06/twitter-4d44.html

クラウド時代のアイデンティティ管理に何が必要か技術論文を読んでマジメに考えてみよう

http://blogs.itmedia.co.jp/isago/2009/06/post-374c.html

サーバ実装「Apache Tomcat」に複数の脆弱性

http://japan.zdnet.com/news/sec/story/0,2000056194,20394765,00.htm?ref=rss

エスエムジー、Java品質診断/改善ツールをJRubyに対応

http://www.atmarkit.co.jp/news/200906/10/smg.html

App Engine/AptanaなどJavaクラウド4つを徹底比較

http://www.atmarkit.co.jp/fjava/rensai4/devtool05/devtool05_1.html

カテゴリー: 未分類 タグ:

SQL Server 2000 の ハードウェア障害の際の予備機への復旧手順

2009 年 6 月 10 日 Comments off

前提条件

本番機でオンラインバックアップを取得しており、そのバックアップファイルがある
本番機の *.ldf を取得できる
予備機に SQL Server2000 がインストールされており、サービスパック、HotFixが本番機と同様に適用されている
*.ldfのPATHは C:\SQL_DATA
*.mdfのPATHは F:\SQL_DATA
オンライン・フルバックアップがC:\SQL_BK\FULL にある
オンライン・トランザクションログバックアップがC:\SQL_BK\TRAN にある

工程1 クラッシュした本番機から、トランザクションログファイル(*.ldf)の取得

クラッシュした本番機のHDDを他サーバに接続する等して、本番機の*.ldfファイルを取得する。

※本番機の*.ldf ファイルの有無で、リカバリポイントが決まる。

*.ldfが有る -> 障害発生時点までリカバリ可能。

*.ldfが無い -> 障害発生時点までのリカバリ不可、巻き戻りが発生する。

工程2 オンラインバックアップファイルの確認

オンラインバックアップファイルが存在する事、およびファイルシステム上の更新日時を確認する
userdb1.BAK
userdb2.BAK
userdb3.BAK
master_full.BAK
model.BAK▲
msdb.BAK▲

▲印はシステムデータベースに付き、復旧出来なくても影響が軽微(ジョブが消えてしまう程度)なので無くても構わない

トランザクションログのオンラインバックアップファイルが存在する事、およびファイルシステム上の更新日時を確認する
userdb1_transaction.BAK
userdb2_transaction.BAK
userdb3_transaction.BAK

工程3 既存のデータベースファイルの移動

MSSQLSERVERサービスを停止し、データベースファイル達を、任意のディレクトリに移動する。

mkdir "C:\SQL_DATA\old"
mkdir F:\SQL_DATA\old
move C:\SQL_DATA\*.ldf "C:\SQL_DATA\old"
move F:\SQL_DATA\*.mdf F:\SQL_DATA\old

工程4 masterの再構築

シングルユーザモードで起動する
"C:\Program Files\Microsoft SQL Server\MSSQL\Binn\sqlservr.exe" -m -c
masterを再構築する
restore database master from disk= 'C:\SQL_BK\FULL\master_full.BAK'
go

工程5 クラッシュ時点までのトランザクションログのバックアップを取得する

本番機の最新の*.ldfを、本番機と同一パス(C:\SQL_DATA\)にコピー※する

※リストアに失敗したらデータが消えてしまうので、必ず移動ではなくコピーにする

予備機のMSSQLSERVERサービスを起動する
Enterprize Managerにて’sa’ユーザで接続し、各データベースの灰色のアイコン(未確認)があるか確認する
最新トランザクションログをバックアップ

※2回やっちゃ駄目。やったら工程4からやりなおし

backup log [userdb1] to disk='C:\SQL_BK\TRAN\userdb1_last_tran.bak' with no_truncate
go
backup log [userdb2] to disk='C:\SQL_BK\TRAN\userdb2_last_tran.bak' with no_truncate
go
backup log [userdb3] to disk='C:\SQL_BK\TRAN\userdb3_last_tran.bak' with no_truncate
go

工程6 システムデータベース(modelとmsdb)のりストア

restore database [model] from disk='C:\SQL_BK\FULL\model.BAK' with file = 1, recovery, replace
go
restore database [msdb] from disk='C:\SQL_BK\FULL\msdb.BAK' with file = 1, recovery, replace
go

工程7 フルバックアップをリストア

restore database [userdb1] from disk='C:\SQL_BK\FULL\userdb1.BAK' with file = 1, norecovery, replace
go
restore database [userdb2] from disk='C:\SQL_BK\FULL\userdb2.BAK' with file = 1, norecovery, replace
go
restore database [userdb3] from disk='C:\SQL_BK\FULL\userdb3.BAK' with file = 1, norecovery, replace
go

工程8 トランザクションログの復旧

前回のフルバックアップ取得時点から、1度でもトランザクションログバックアップを行っていた場合に必要
declare @i int
set @i = 1
while @i <= 3
begin
restore log [userdb1] from disk='C:\SQL_BK\TRAN\userdb1_transaction.BAK'
with file = @i, norecovery, replace
restore log [userdb2] from disk='C:\SQL_BK\TRAN\userdb2_transaction.BAK'
with file = @i, norecovery, replace
restore log [userdb3] from disk='C:\SQL_BK\TRAN\userdb3_transaction.BAK'
with file = @i, norecovery, replace
set @i = @i + 1
end

以下のようなエラーが表示されても無視する
デバイス 'C:\SQL_BK\TRAN\userdb1_transaction.BAK' にファイル ID 7 が見つかりません。
サーバー : メッセージ 3013、レベル 16、状態 1、行 21
RESTORE LOG が異常終了しました。

工程9 最後のトランザクション(工程5で取得)を復旧

restore log [userdb1] from disk='C:\SQL_BK\TRAN\userdb1_last_tran.bak' with norecovery
restore log [userdb2] from disk='C:\SQL_BK\TRAN\userdb2_last_tran.bak' with norecovery
restore log [userdb3] from disk='C:\SQL_BK\TRAN\userdb3_last_tran.bak' with norecovery, stopat='2009-06-10 10:00:00'
go

工程10 データベースを有効化

restore database [userdb1] with recovery
restore database [userdb2] with recovery
restore database [userdb3] with recovery
go

工程11 復旧後処理

SQL認証のGIDを確認する

use [userdb1]

go

select m.sid as master_sid ,a.sid as account_sid ,m.name as master_name ,a.name as accouunt_name

from master.dbo.sysusers as m

right outer join sysusers as a on a.name = m.name

where m.sid is not null

GO

本番機のNT認証を削除する

exec sp_revokelogin ‘本番機\Administrator’

GO

各データベース認証を削除する

use [userdb1]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

use [userdb2]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

use [userdb3]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

use [master]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

use [model]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

use [msdb]

exec sp_revokedbaccess ‘user_a’

exec sp_revokedbaccess ‘user_b’

exec sp_revokedbaccess ‘Administrator’

予備機のNT認証を登録する
カテゴリー: sqlserver, データベース タグ:

bookmarks 2009-06-10

2009 年 6 月 10 日 Comments off

クラウド環境ではデータベースは「非正規化」して使う? - @IT

http://www.atmarkit.co.jp/news/200906/09/gae.html

仮想化はオンプレミスとクラウドを結びつけるキーテクノロジー - Blog on Publickey

http://www.publickey.jp/blog/09/post_25.html

Google Waveはどこまで破壊的になりうるか - Blog on Publickey

http://www.publickey.jp/blog/09/google_wave.html

「充実感」を感じやすい人、できない人:日経ビジネスオンライン

“没頭”を解明するフロー理論~浅川希洋志・法政大学教授(前編)

http://business.nikkeibp.co.jp/article/life/20090608/197029/

「やせない」の理由は、食事の時刻にあった!:日経ビジネスオンライン

http://business.nikkeibp.co.jp/article/life/20090602/196476/

グーグル、「Apps Sync for Outlook」を提供–Google AppsとOutlookを自動同期 – インターネット – ZDNet Japan

http://japan.zdnet.com/news/internet/story/0,2000056185,20394668,00.htm

Enterprise 2.0の視点から見た「Google Wave」(前編) – インターネット – ZDNet Japan

http://japan.zdnet.com/news/internet/story/0,2000056185,20394667,00.htm

カテゴリー: 未分類 タグ:

3値論理

2009 年 6 月 9 日 Comments off

NULLを許容したくないデータベース屋のわたしが、NULLを気にしないSEやプログラマに3値論理を説明しなければいけないときに使うポインタ。

ここまで纏まっているサイトは他にないと思う。

ミックのページ

http://www.geocities.jp/mickindex/database/db_3vl.html :3値論理 ―― 神のいない論理]

http://www.geocities.jp/mickindex/database/db_getout_null.html :NULL撲滅委員会]

CODDの論文は読んだことないけど、いつか読破したいナァ。

カテゴリー: knowledge, データベース タグ:

LogParserでイベントログをダンプのバッチ

2009 年 6 月 9 日 Comments off

LogParserを使って、hostname.txt上のコンピュータ名達のNTイベントログをダンプするバッチ作りました。

set logdir=.
set user=administrator
set pass=hogehoge
:NBT セッションをオープン----------------------------------------------------------------
for /F %%F IN (hostname.txt) do net use \\%%F %pass% /u:%%F\%user%
echo on
:日付サフィックス作成--------------------------------------------------------------------
set today=%date:~-10%
set suf=%today%
:ログファイル指定------------------------------------------------------------------------
set basedir=%logdir%\%suf%
:%logdir% フォルダが存在しなければ作成する ***-------------------------------------------
if not exist %logdir% md %logdir%
:%logdir%\%suf%フォルダが存在しなければ作成する------------------------------------------
if not exist %basedir% md %basedir%
:イベントログをCSVにダンプする-----------------------------------------------------------
for /F %%F IN (hostname.txt) do LogParser.exe "select TimeGenerated,EventID,EventType,EventTypeName,EventCategory,EventCategoryName,ComputerName,Message,Data into %basedir%\%%F_system.csv from \\%%F\system where '%today%' = TO_STRING(TimeGenerated,'yyyyMMdd') " -i:evt -o:csv
for /F %%F IN (hostname.txt) do LogParser.exe "select TimeGenerated,EventID,EventType,EventTypeName,EventCategory,EventCategoryName,ComputerName,Message,Data into %basedir%\%%F_security.csv from \\%%F\security where '%today%' = TO_STRING(TimeGenerated,'yyyyMMdd') " -i:evt -o:csv
for /F %%F IN (hostname.txt) do LogParser.exe "select TimeGenerated,EventID,EventType,EventTypeName,EventCategory,EventCategoryName,ComputerName,Message,Data into %basedir%\%%F_apprication.csv from \\%%F\apprication where '%today%' = TO_STRING(TimeGenerated,'yyyyMMdd') " -i:evt -o:csv
for /F %%F in (hostname.txt) do net use \\%%F /delete
exit
カテゴリー: インフラ タグ: