データベースをオフラインにするのはなぜですか?


14

「オフラインにする」/ ALTER DATABASE dbName SET OFFLINE機能を使用する理由と状況は何ですか。

オフラインデータベースでどのようなタスクを実行できますか?オフラインデータベースでしか実行できないタスクは何ですか?

回答:


15

MDFファイルを別のサーバーに移動して、オンラインにすることができます。


4
1、または別のドライブ/フォルダ/ SAN ...
クリスS

それが「オフラインにする」ための唯一の使用ですか?
グレッグB

5
いいえ、他の理由を考えることができます。複数のアプリケーション用に複数のデータベースがあると想像してください。これらのアプリケーションの1つは、フロントエンドアプリケーション(Webアプリ、クライアント、知っている人)のアップグレードを取得しています。アップグレード中はだれでもデータベースへのアクセスを無効にしたいが、サーバー全体をダウンしたくない他のデータベースのため。それがオフラインにする理由かもしれません。あなたの想像力が他の理由も思いつくと思います。
mfinni

私の想像力を恐れることはできません。私は私がオフラインのアップグレードプロセスを支援することができ、それを取ってどのように表示されていないので、あなたは、オフライン時にデータベースを変更することができるとは思わなかった
グレッグB

2
Greg B-DBそのものではなく、フロントエンドのアップグレードを具体的に言った。説明したシナリオでは、DBは変更されません。移行中に誰もアクセスしないようにするために、オフラインにします。
mfinni

18

開発/ステージング環境では、データベースをオフラインにして、アプリケーション内のデータベースの適切なインスタンスに接続し、接続文字列がどこかに接続されていないことを確認すると便利な場合があります。

とはいえ、この状況では、異なる環境に異なるデータベース名を使用し、接続文字列を自動的に構成するビルドプロセスを使用することをお勧めします...

同様に、何らかの理由でデータベースをオンラインに戻す必要がある(それほどではない)偶然にデータベースを使用停止する前に、データベースを一定期間オフラインにするのが好きです。データベースを削除したいときに、データベースの1つに自分が知らないフックを持っている開発者に何度も噛まれました。オフラインにしておくと、必要に応じて削除して復元するよりもはるかに劇的で時間もかかりません。

別のことは、緊急時の安全装置としてのものです。私は以前これをしなければなりませんでした。悪質なバグではなくても、データベース内のデータが破損する可能性のある厄介なバグがアプリで見つかることがあります。データベースをオフラインにすることは、バグが特定されるまで出血を止める簡単な方法です。その後、データベースをオンラインに戻して、データベース内の損傷を評価できます。


2
削除する前にオフラインにするというアイデアが好きです
グレッグB

8
同上。運用前の環境には、4,000を超えるデータベースがあります。誰が何を所有しているかを知るのは難しい場合があります。オフラインにして鳴きを待つことが唯一の選択肢である場合があります。
マイケルグリーン14年

6

ここでの回答のいくつかは、アクセスが制限されているデータベースで何ができるかについていくつかのアイデアを提供するかもしれませんが、実際にはオフラインのデータベースではあまりできません。データの更新、アップグレード、追加、削除などはできません。


2
正しい。データベースで多くのことができるようにしたい場合は、シングルユーザーモードにすることをお勧めします。次に、アクセスを制限しますが、さらに多くのことができます。
ショーンハワット

名前を変更することもできません!
ディマFomin

0

私が最も重要な理由、私が列挙したいよりも頻繁にDBAに売らなければならない理由...

「SANを修復する必要があります。ドライブをホットスワップすることはできません。バックプレーン/コントローラーに障害があります。」

DBインスタンスは、ディスクがなくなると動作が非常に悪くなります。

したがって、SANをオフラインにする前にSQLインスタンスをシャットダウンし、リソースを競合させないように1つずつ戻します-最初のインスタンスはすべてのクラスターリソースを取得し、アクティブDBノードになり、後続のインスタンスが実行されますパッシブノードとして。


-3

これを行う必要がある理由はたくさんあります。

たとえば、

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

最も重要なポイント

Is taking a backup.. to get a perfect snapshot in time.. 

(一部のデータベースでは、すべてのテーブルにロックを作成するだけです)


+ 1、DBを最適化または縮小するための古いDBMS。
クリスS

1
re:「スキーマの変更またはアップグレード」、オンラインブックから「OFFLINEデータベースは閉じられ、正常にシャットダウンされ、オフラインとしてマークされます。データベースはオフライン中は変更できません。」この状況でスキーマをアップグレードするにはどうすればよいですか?
グレッグB

申し訳ありません。非アクティブなデータベースに変更を加えることに言及していました。 。おそらく、これを
省く

2
実際のデータベースは実際のバックアップをサポートしています。完璧な時間一貫性のあるバックアップを作成するために、何も手に入れる必要はありません。ロックまたはその他の愚かなメカニズムを必要とするdbは、おもちゃです。本当に。主要なデータベースはすべて、フルバックアップで問題なく、一貫性があり、頻繁に使用されます。
トムトム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.