1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CAN_REDEF_TABLE でオンライン再定義可能かチェックする

1
Last updated at Posted at 2026-09-07

アプリ (DML) を止めずにテーブルレイアウトの変更などを可能にするオンライン再定義ですが、CAN_REDEF_TABLEプロシージャを使用することで、オンライン再定義可能なテーブルか確認することが可能です。

167.7.4 CAN_REDEF_TABLE Procedure

主キーがないテーブル (testtab) を作成しCAN_REDEF_TABLEプロシージャで確認するとエラーとなりました。
オンライン再定義には PK方式と ROWID方式があり、PK方式の場合は主キーが必要なためです。(デフォルトは PK方式)

SQL> info testtab
TABLE: TESTTAB
         LAST ANALYZED:
         ROWS         :
         SAMPLE SIZE  :
         INMEMORY     :DISABLED
         COMMENTS     :

Columns
NAME         DATA TYPE           NULL  DEFAULT    COMMENTS
 COL1        NUMBER              Yes
 COL2        VARCHAR2(30 BYTE)   Yes


SQL> BEGIN
  2    DBMS_REDEFINITION.CAN_REDEF_TABLE(
  3      uname        => 'admin',
  4      tname        => 'testtab'
  5      );
  6  END;
  7* /
BEGIN
*
ERROR at line 1:
ORA-12089: cannot online redefine table "ADMIN"."TESTTAB" with no primary key  ★
ORA-06512: at "SYS.DBMS_REDEFINITION", line 363
ORA-06512: at "SYS.DBMS_REDEFINITION", line 6836
ORA-06512: at line 2

https://docs.oracle.com/error-help/db/ora-12089/


More Details :
https://docs.oracle.com/error-help/db/ora-12089/
https://docs.oracle.com/error-help/db/ora-06512/
SQL>

方式を変更するにはoptions_flagオプションを指定します。
dbms_redefinition.cons_use_pkを指定すると PK方式、dbms_redefinition.cons_use_rowidを指定すると ROWID方式です。
このオプションはSTART_REDEF_TABLEプロシージャにも存在します。

dbms_redefinition.cons_use_rowidを指定することで正常終了しました。

SQL> BEGIN
  2    DBMS_REDEFINITION.CAN_REDEF_TABLE(
  3      uname        => 'admin',
  4      tname        => 'testtab',
  5      options_flag => DBMS_REDEFINITION.CONS_USE_ROWID  ★ROWID方式
  6      );
  7  END;
  8* /

PL/SQL procedure successfully completed.

SQL>

制約は他にもいくつかあるので、机上チェックだけでなくCAN_REDEF_TABLEプロシージャを使用して確認しておくと安心です。

Restrictions for Online Redefinition of Tables

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?