300以上の列と数十万のレコードを持つテーブルがあります。既存の列の1つに名前を変更する必要があります。
気になることはありますか?この操作は、説明プランなどに影響しますか?
ノート:
Oracle11gでライブの本番データベースに取り組んでいます。
この列は現在使用されていません。どの行にも入力されておらず、既存のクエリでこの列を参照していないことを100%確信しています。
300以上の列と数十万のレコードを持つテーブルがあります。既存の列の1つに名前を変更する必要があります。
気になることはありますか?この操作は、説明プランなどに影響しますか?
ノート:
Oracle11gでライブの本番データベースに取り組んでいます。
この列は現在使用されていません。どの行にも入力されておらず、既存のクエリでこの列を参照していないことを100%確信しています。
「ライブの本番データベースで作業する」ということは、人々が作業しているときに、より低い環境でテストせずにこれを実行しようとすることを意味する場合、その計画には強く注意します。
DDLを実行しているテーブルを含む既存のクエリプランは無効になるため、これらのクエリを再度ハード解析する必要があります。このようなクエリが多数ある場合、これは簡単にコストのかかる操作になる可能性があります。他の何かが変更されたために一部のクエリプランが変更される可能性は確かにあります(つまり、統計が異なる、設定が異なる、バインド変数が異なるなど)。列名が変更されたために変更されませんが、列名が変更される可能性があります。計画が変更されます。
実行しているクエリは、明らかに、列の名前を変更するとすぐに新しい名前を使用する必要があります。これは通常、コード(ストアドプロシージャを含む)と列名を変更する協調リリースを実行する必要があることを意味します。つまり、一般的には、少なくとも少しのダウンタイムを含むビルドの一部としてこれを実行していることを意味します。エンタープライズエディションを使用している場合は、ダウンタイムなしでエディションベースの再定義を実行できますが、プロセスが複雑になり、製品に実装する前に徹底的にテストする必要があります。