[Oracle]「ORA-01792:テーブルまたはビューの列の最大数は 1000 です」が発生する説明 Oracle クエリで以下のエラーが発生する場合があります。[Oracle]「ORA-01792:テーブルまたはビューの列の最大数は 1000 です」 これは、CMDB テーブルまたはタスクなどのテーブルで発生する可能性があります。 再現手順 このエラーは、CMDB などの大きなテーブルの ALTER TABLE ステートメントで発生します。また、タスクの列数が 1000 を超えておらず、出力用に定義された列数も超えていない場合でも、タスクの SELECT JOIN (rm_story からの再帰など) で発生することがあります。 ワークアラウンド <!-- ul { list-style: disc outside none; margin-left: 0; } li { padding-left: 1em; } --> 次のいずれかのワークアラウンドを選択します。 列数の少ないビューを指定してみます。詳細については、ドキュメントのトピック「返すフィールドの指定」を参照してください。Oracle が提供する修正プログラムを適用します。My Oracle Support によると、ORA-01792 は未公開のバグが原因で発生します。Oracle は、このエラーを回避するために、クエリ定義やビュー定義を変更することを提案しています。ただし、SQL を調整できない場合は、次のコマンドで検査を無効にすることができます。SQL> alter system set "_fix_control"='17376322:OFF';または、暫定パッチ (Patch 19509982) を適用して、デフォルトでエラーの発生を抑止することもできます。参照: バグ 19509982 デフォルトで ORA-01792 の発生を無効にする (https://support.oracle.com/epmos/faces/DocumentDisplay?id=19509982.8)Select ステートメントが ORA-01792 エラーをスローする (https://support.oracle.com/epmos/faces/DocumentDisplay?id=1951689.1) この変更の適用後、インスタンスを再起動します。 この修正は 2017 年 6 月頃から利用可能であり、1 回限りのパッチとして適用できます。 この修正を含む 2017 年 10 月のパッチセットアップデートとバンドルパッチセットアップデートがリリースされています。バンドルパッチセットアップデートにはオプティマイザーの修正が含まれており、Oracle が推奨するパッチ適用方法となっています。ただし、バンドルパッチセットアップデートを適用する前に、まずパッチセットアップデートをアンインストールする必要があります。 関連する問題:PRB732366