月別アーカイブ: 2014年11月

DB内のオブジェクトを更新日が新しい順に取得

今回は、SQLServerに関する話です。

稼働中のシステムを改修し、本番環境へ反映する際に、
プログラムの入替のみではなく、
データベースの更新作業が必要なことがあります。

あまり考えたくありませんが、
例えば、テーブルやビューにフィールドの追加や
新しく作成したストアドプロシージャやユーザー関数を追加などです。

確実なのは、作業リストを作成し、
改修した機能について、どのテーブル・ビューなどが改修されたか記録を取ることでしょう。

ただし、改修に時間が掛かったり、
複数の機能改修をまとめて反映する際には、
記録漏れが出ることも有ります。

これを回避するため、
DB内のテーブル・ビュー・ユーザー関数を更新された順に取得したいと思います。

該当のDBに対し、以下のSQLを実行します。


SELECT name, modify_date
FROM sys.objects
WHERE type in ('V', 'U', 'FN', 'P')
ORDER BY modify_date desc

sys.objects はデータベース内のオブジェクトを管理しているテーブルです。

SELECT句にはオブジェクト名(name), 更新日(modify_date)を指定します。
WHERE句には抽出する条件を指定します。
今回は、新しく更新された順に、
テーブル名・ビュー名・関数名・ストアドプロシージャが取得できればよいので、
U:テーブル(ユーザー定義)
V:ビュー
FN:スカラー関数
P:ストアドプロシージャ
の4文字をtypeに指定します。
ORDER BYにて、変更日の降順に出力すれば、
変更日が新しい順に更新したテーブル等が確認できる、ということになります。

typeはこれ以外にもありますが、
改修時に変更の頻度が高いのは上記の4つかな、と思いましたので、
この様に記述しています。

sys.objectsについて、詳しくはこちらに記述が有ります。
sys.objects(Transact-SQL)

[Oracle初心者運用メモ]リスナーのHOST名変更

Oracle DBサーバとして使用しているPCをドメイン参加に変更したところ、
Oracle DBへ接続できなくなってしまいました。

よく考えたら、ドメイン参加にしたことで
コンピュータ名が下記のように変わったためでした。
「pcname.testdomain.local」

DBサーバのリスナー(listener.ora)で指定しているHOST名を変更し
接続できるようになりました。

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = pcname.testdomain.local)(PORT = 1521))
)
)

ちなみに、リスナーを変更した場合、リスナー再起動が必要です。