DB2データベースに対して開発していますが、新しい列を追加しようとするとエラーコード "-670"が表示されます。 エラーコードは、テーブルスペースのサイズが不十分であることを示しています。とにかく、DESCRIBEコマンドを実行したところ、テーブルの幅が17Kを超えていないと推測します( "Length"とにかく、私はBLOBカラムがたくさんあるので、その推定値はわかりません。テーブル幅に関する正確な情報を取得するために使用できるSQLコマンド(またはDB2コマンドラインユーティリティ)がありますか?プログラムで新しい列を追加すると、DB2エラーコード-670が返されます
0
A
答えて
0
このスクリプトは自分自身に質問をしてくれます。
select SUM(300) from sysibm.syscolumns where tbname = 'MY_TABLE' and (typename = 'BLOB' or typename = 'DBCLOB')
select 2 * SUM(length) from sysibm.syscolumns where tbname = 'MY_TABLE' and typename = 'VARGRAPHIC'
select SUM(length) from sysibm.syscolumns where tbname = 'MY_TABLE' and typename != 'BLOB' and typename != 'DBCLOB' and typename != 'VARGRAPHIC'
1
DESCRIBE TABLEコマンドの出力のLENGTH値の合計は、BLOB、CLOB、またはLONG VARCHARの列をカウントしない場合は、かなり正確な行幅のゲージです列のそのレポートには表示されないオーバーヘッドバイトは少量ですが、通常はテーブルの重要な部分ではありません。 DB2は歴史的に大きなオブジェクトを別々に保管していたため、表の残りのデータの管理性とパフォーマンスが向上しました。 DB2は最近、圧縮とバッファリングを使用するために大きなオブジェクトをインラインで格納することをサポートしていますが、広く使用されているとは思われていません。
大きなページ・サイズの表スペースにテーブルを再配置するようになったようです。すでに32Kページを超えていない限り、表をより大きなバッファー・プールと表スペースに移行することでページ・サイズを2倍にすることができます。古いテーブルからデータを保持する必要がある場合は、同じデータベース内のあるテーブルから別のテーブルに大量のデータを簡単にコピーできます。もう1つの選択肢は、テーブルの内容をフラットファイルにエクスポートして、より広いテーブルスペース内のテーブルを削除して再作成できるようにすることです。
関連する問題
- 1. 新しい列に日付を追加するとエラーが返されます
- 2. TableRowで新しいボタンをプログラムで追加すると、アンドロイドでXMLと同じ結果が返されない
- 3. エンティティに新しいレコードを追加すると、DbUpdateExceptionが返されます
- 4. 列を追加した後にdb2テーブルに新しく追加された行を取得する方法
- 5. 新しい列を追加するとシステムの効率を向上させる行が追加されます
- 6. Spinnerの代わりに配列を追加すると、新しいエントリが追加されます
- 7. 新しいデータが追加されると、新しいテキストビューを追加する方法
- 8. 追加を使用すると[オブジェクト]が返されますか?
- 9. geoDataFrame.plotに `column`を追加するとTypeErrorが返されます
- 10. プログラムでrecyclerviewに新しい項目を追加しますか?
- 11. ASP.Net DetailsViewに新しいボタンをプログラムで追加します。
- 12. UIViewサブクラスをプログラムで追加すると描画されない
- 13. DB2、エラーコードSQLCODE = -104
- 14. ゼロ配列がJavaプログラムの配列に追加されています
- 15. mousedownにコントロールを追加して新しいコントロールを追加すると、マウスが表示されます
- 16. 新しいクチコミを追加するとメールが通知されます - Magento
- 17. ボタンをクリックすると新しいdivが追加されます
- 18. プログラムでUIImageViewにSegueを追加すると、新しいViewControllerに転送されますObjective C?
- 19. MailChimpに新しい加入者を追加するとBad Requestが返される
- 20. 新しいキューランナーを追加するとプログラムが早期に終了する
- 21. 新しいQGraphicsItemをシーンに追加するとC++プログラムがクラッシュする
- 22. プログラムで追加されたビューにマージンを追加する
- 23. 新しいURLにlocalhost URLが追加されています
- 24. XULボタンを作成すると「コンポーネントのエラーコード」が返される
- 25. c#オブジェクトコンテキストに新しいオブジェクトを追加すると、「エントリの更新中にエラーが発生しました」というメッセージが返されます。
- 26. プログラムで表示されないlableを追加しました
- 27. WPF Datagridに列と行をプログラムで追加します。
- 28. EPiServer 9 - 新しいページにブロックをプログラムで追加する
- 29. zuulプロキシにプログラムで新しいルートを追加する
- 30. 要素間のマージンを追加すると、要素に新しい行が追加されます
実際には、私たちは既に32Kの限界に達しています(これは私たちが現在推測しているものです)。 DB2のマニュアルで見ることができるように、BLOB記述子の最大サイズは約300バイトです。このサイズを考えると、20K未満でなければなりませんが、カラムが作成されているので特定のAPI呼び出し時にサードパーティのアプリケーションによって、インラインでコンテンツが追加されている可能性があります。そのため、テーブルの幅の制限がなくなります。コンテンツがインラインで追加されているかどうかを知る方法があるかどうかは分かりますか? 以前の回答はかなり良かったです、ありがとう! –