Skip to Main Content

ALTER TABLE MOVE encrypted column + CLOB

Solomon YakobsonAug 19 2022

Version: 19.13.0.0.0
Issue:

DROP TABLE TEST_TBL_MOVE PURGE
/
CREATE TABLE TEST_TBL_MOVE(
                           ENCRYPTED_COLUMN VARCHAR2(9 CHAR) ENCRYPT USING 'AES192' 'SHA-1' NO SALT  NOT NULL ENABLE, 
                           CLOB_COLUMN      CLOB
                          )
  TABLESPACE USERS
  LOB(CLOB_COLUMN) STORE AS SECUREFILE
/
INSERT
  INTO TEST_TBL_MOVE
  SELECT  '123456789',
          'X'
    FROM  DUAL
/
COMMIT
/
ALTER TABLE TEST_TBL_MOVE MOVE TABLESPACE USERS LOB(CLOB_COLUMN) STORE AS SECUREFILE(TABLESPACE USERS)
/
ALTER TABLE TEST_TBL_MOVE MOVE TABLESPACE USERS LOB(CLOB_COLUMN) STORE AS SECUREFILE(TABLESPACE USERS)
*
ERROR at line 1:
ORA-12899: value too large for column ??? (actual: 25, maximum: 9)

SQL>

If we remove CLOB column table move works fine:

DROP TABLE TEST_TBL_MOVE PURGE
/
CREATE TABLE TEST_TBL_MOVE(
                           ENCRYPTED_COLUMN VARCHAR2(9 CHAR) ENCRYPT USING 'AES192' 'SHA-1' NO SALT  NOT NULL ENABLE
                          )
  TABLESPACE USERS
/
INSERT
  INTO TEST_TBL_MOVE
  SELECT  '123456789'
    FROM  DUAL
/
COMMIT
/
ALTER TABLE TEST_TBL_MOVE MOVE TABLESPACE USERS
/

Table altered.

SQL>

If we add CLOB back and don't encrypt other column:

DROP TABLE TEST_TBL_MOVE PURGE
/
CREATE TABLE TEST_TBL_MOVE(
                           UNENCRYPTED_COLUMN VARCHAR2(9 CHAR) NOT NULL ENABLE, 
                           CLOB_COLUMN      CLOB
                          )
  TABLESPACE USERS
  LOB(CLOB_COLUMN) STORE AS SECUREFILE
/
INSERT
  INTO TEST_TBL_MOVE
  SELECT  '123456789',
          'X'
    FROM  DUAL
/
COMMIT
/
ALTER TABLE TEST_TBL_MOVE MOVE TABLESPACE USERS LOB(CLOB_COLUMN) STORE AS SECUREFILE(TABLESPACE USERS)
/

Table altered.

SQL>

Did anyone ran into this isuue and found solution? I found nothing on Oracle support site.
SY.

This post has been answered by Jonathan Lewis on Aug 20 2022
Jump to Answer
Comments
Post Details
Added on Aug 19 2022
4 comments
70 views