尝试创建图像对象时出错(ORA-06512:在 "ORDSYS.SI_STILLIMAGE",第 14 行)
error when trying to create Image Object (ORA-06512: at "ORDSYS.SI_STILLIMAGE", line 14)
在 Oracle Database 19c 中,我无法创建 ORDSYS.SI_StillImage()(在加载了以前数据库版本的许多图像上进行了尝试)。
相同的代码适用于 Oracle 12c。
我在 2 个单独的 Oracle 19c 安装上尝试了这个,但出现了同样的错误。
这是测试示例:
甲骨文 19c
u@db19> SELECT BANNER_FULL FROM v$version;
BANNER_FULL
----------------------------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
u@db19> DECLARE
2 l_raw raw(32767);
3 l_stillImage ORDSYS.SI_StillImage;
4 BEGIN
5 l_raw := 'FFD8FFE000104A46494600010101004800480000FFDB00430006040506050406060506070706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828FFC00011080014001403012200021101031101FFC4001800010101010100000000000000000000000007080305FFC4002C10000103030203060700000000000000000102030400051112130607311421224151B1153233617191F0FFC400160101010100000000000000000000000000040305FFC4001C1100030100020300000000000000000000000102031113313261FFDA000C03010002110311003F00AEF34EE721FB83764624BF1D9D80FBDB0A29539A8A825248EFD3E139F5A8DE8BBF062FE2D63B83E24B4ADD533A8ED3C9CF890A4F4208F3EA3A8AAD73BEDA8DB8971712F14287673B2AD2750CA939FB7CD52792B8EF34E3AA43A429AD214A57418C778F5A054D7655335F251582492FA6A6B6CB6E7DBA2CC67E948692F23F0A008F7A578BC0778B5DDB85E12EC8F39221C7426285A995B67520049185007BBF54A7992FC9C799E80BE02BC838076320E904A4E4608C82323D6A1DCB1B5B3C5B7B306ECB77B33414AD2C908D783E671ED8A52A37EC84E0DACEB8348DBA0C6B6C2661C1650C46693A50DA06001FDE74A52AC14FFFD9';
6 l_stillImage := NEW SI_StillImage(to_blob(l_raw));
7 --
8 dbms_output.put_line('height: '||l_stillImage.height_SI);
9 dbms_output.put_line('width: '||l_stillImage.width_SI);
10 dbms_output.put_line('format: '||l_stillImage.format_SI);
11 dbms_output.put_line('mime: '||l_stillImage.mimeType_ora);
12 END;
13 /
DECLARE
*
ERROR at line 1:
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at "ORDSYS.SI_STILLIMAGE", line 14
ORA-06512: at line 6
甲骨文 12c
su@db12> SELECT * FROM v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ---------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0
PL/SQL Release 12.1.0.2.0 - Production 0
CORE 12.1.0.2.0 Production 0
TNS for Linux: Version 12.1.0.2.0 - Production 0
NLSRTL Version 12.1.0.2.0 - Production 0
su@db12> DECLARE
2 l_raw raw(32767);
3 l_stillImage ORDSYS.SI_StillImage;
4 BEGIN
5 l_raw := 'FFD8FFE000104A46494600010101004800480000FFDB00430006040506050406060506070706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828FFC00011080014001403012200021101031101FFC4001800010101010100000000000000000000000007080305FFC4002C10000103030203060700000000000000000102030400051112130607311421224151B1153233617191F0FFC400160101010100000000000000000000000000040305FFC4001C1100030100020300000000000000000000000102031113313261FFDA000C03010002110311003F00AEF34EE721FB83764624BF1D9D80FBDB0A29539A8A825248EFD3E139F5A8DE8BBF062FE2D63B83E24B4ADD533A8ED3C9CF890A4F4208F3EA3A8AAD73BEDA8DB8971712F14287673B2AD2750CA939FB7CD52792B8EF34E3AA43A429AD214A57418C778F5A054D7655335F251582492FA6A6B6CB6E7DBA2CC67E948692F23F0A008F7A578BC0778B5DDB85E12EC8F39221C7426285A995B67520049185007BBF54A7992FC9C799E80BE02BC838076320E904A4E4608C82323D6A1DCB1B5B3C5B7B306ECB77B33414AD2C908D783E671ED8A52A37EC84E0DACEB8348DBA0C6B6C2661C1650C46693A50DA06001FDE74A52AC14FFFD9';
6 l_stillImage := NEW SI_StillImage(to_blob(l_raw));
7 --
8 dbms_output.put_line('height: '||l_stillImage.height_SI);
9 dbms_output.put_line('width: '||l_stillImage.width_SI);
10 dbms_output.put_line('format: '||l_stillImage.format_SI);
11 dbms_output.put_line('mime: '||l_stillImage.mimeType_ora);
12 END;
13 /
height: 20
width: 20
format: JFIF
mime: image/jpeg
PL/SQL procedure successfully completed.
ORDSYS 包是 'Oracle Multimedia' 的一部分,19c 中的变化之一是 Oracle Multimedia 不再起作用(参见 https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/behavior-changes-deprecated-desupport-oracle-database.html#GUID-BABC1C60-EA07-4EBE-8C67-B69B59E4F742)
因此,根据上述 link 的建议(并在下面复制到本地),您需要将图像移动到 LOB(CLOB、BLOB、SecureFile LOB)并使用另一种方法来处理它们。
下面引用了上面的页面
Oracle Multimedia will be removed in Oracle Database 19c
When you upgrade or migrate your database to Oracle 19c, then Oracle
Multimedia APIs will be still exist but won’t function anymore.
Desupport of Oracle Multemedia
Oracle Multimedia is desupported in Oracle Database 19c, and the
implementation is removed.
As an alternative for image processing and conversion, Oracle
recommends that you store multimedia content in SecureFiles LOBs, and
use third party products, such as Piction. The ORDIM component remains
in the registry and still has a VALID status. Oracle Multimedia
objects and packages remain in the database. However, these objects
and packages no longer function, and raise exceptions if there is an
attempt made to use them. Oracle Locator is not affected by the
desupport of Oracle Multimedia.
在 Oracle Database 19c 中,我无法创建 ORDSYS.SI_StillImage()(在加载了以前数据库版本的许多图像上进行了尝试)。 相同的代码适用于 Oracle 12c。
我在 2 个单独的 Oracle 19c 安装上尝试了这个,但出现了同样的错误。
这是测试示例:
甲骨文 19c
u@db19> SELECT BANNER_FULL FROM v$version;
BANNER_FULL
----------------------------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
u@db19> DECLARE
2 l_raw raw(32767);
3 l_stillImage ORDSYS.SI_StillImage;
4 BEGIN
5 l_raw := 'FFD8FFE000104A46494600010101004800480000FFDB00430006040506050406060506070706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828FFC00011080014001403012200021101031101FFC4001800010101010100000000000000000000000007080305FFC4002C10000103030203060700000000000000000102030400051112130607311421224151B1153233617191F0FFC400160101010100000000000000000000000000040305FFC4001C1100030100020300000000000000000000000102031113313261FFDA000C03010002110311003F00AEF34EE721FB83764624BF1D9D80FBDB0A29539A8A825248EFD3E139F5A8DE8BBF062FE2D63B83E24B4ADD533A8ED3C9CF890A4F4208F3EA3A8AAD73BEDA8DB8971712F14287673B2AD2750CA939FB7CD52792B8EF34E3AA43A429AD214A57418C778F5A054D7655335F251582492FA6A6B6CB6E7DBA2CC67E948692F23F0A008F7A578BC0778B5DDB85E12EC8F39221C7426285A995B67520049185007BBF54A7992FC9C799E80BE02BC838076320E904A4E4608C82323D6A1DCB1B5B3C5B7B306ECB77B33414AD2C908D783E671ED8A52A37EC84E0DACEB8348DBA0C6B6C2661C1650C46693A50DA06001FDE74A52AC14FFFD9';
6 l_stillImage := NEW SI_StillImage(to_blob(l_raw));
7 --
8 dbms_output.put_line('height: '||l_stillImage.height_SI);
9 dbms_output.put_line('width: '||l_stillImage.width_SI);
10 dbms_output.put_line('format: '||l_stillImage.format_SI);
11 dbms_output.put_line('mime: '||l_stillImage.mimeType_ora);
12 END;
13 /
DECLARE
*
ERROR at line 1:
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at "ORDSYS.SI_STILLIMAGE", line 14
ORA-06512: at line 6
甲骨文 12c
su@db12> SELECT * FROM v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ---------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0
PL/SQL Release 12.1.0.2.0 - Production 0
CORE 12.1.0.2.0 Production 0
TNS for Linux: Version 12.1.0.2.0 - Production 0
NLSRTL Version 12.1.0.2.0 - Production 0
su@db12> DECLARE
2 l_raw raw(32767);
3 l_stillImage ORDSYS.SI_StillImage;
4 BEGIN
5 l_raw := 'FFD8FFE000104A46494600010101004800480000FFDB00430006040506050406060506070706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828FFC00011080014001403012200021101031101FFC4001800010101010100000000000000000000000007080305FFC4002C10000103030203060700000000000000000102030400051112130607311421224151B1153233617191F0FFC400160101010100000000000000000000000000040305FFC4001C1100030100020300000000000000000000000102031113313261FFDA000C03010002110311003F00AEF34EE721FB83764624BF1D9D80FBDB0A29539A8A825248EFD3E139F5A8DE8BBF062FE2D63B83E24B4ADD533A8ED3C9CF890A4F4208F3EA3A8AAD73BEDA8DB8971712F14287673B2AD2750CA939FB7CD52792B8EF34E3AA43A429AD214A57418C778F5A054D7655335F251582492FA6A6B6CB6E7DBA2CC67E948692F23F0A008F7A578BC0778B5DDB85E12EC8F39221C7426285A995B67520049185007BBF54A7992FC9C799E80BE02BC838076320E904A4E4608C82323D6A1DCB1B5B3C5B7B306ECB77B33414AD2C908D783E671ED8A52A37EC84E0DACEB8348DBA0C6B6C2661C1650C46693A50DA06001FDE74A52AC14FFFD9';
6 l_stillImage := NEW SI_StillImage(to_blob(l_raw));
7 --
8 dbms_output.put_line('height: '||l_stillImage.height_SI);
9 dbms_output.put_line('width: '||l_stillImage.width_SI);
10 dbms_output.put_line('format: '||l_stillImage.format_SI);
11 dbms_output.put_line('mime: '||l_stillImage.mimeType_ora);
12 END;
13 /
height: 20
width: 20
format: JFIF
mime: image/jpeg
PL/SQL procedure successfully completed.
ORDSYS 包是 'Oracle Multimedia' 的一部分,19c 中的变化之一是 Oracle Multimedia 不再起作用(参见 https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/behavior-changes-deprecated-desupport-oracle-database.html#GUID-BABC1C60-EA07-4EBE-8C67-B69B59E4F742)
因此,根据上述 link 的建议(并在下面复制到本地),您需要将图像移动到 LOB(CLOB、BLOB、SecureFile LOB)并使用另一种方法来处理它们。
下面引用了上面的页面
Oracle Multimedia will be removed in Oracle Database 19c When you upgrade or migrate your database to Oracle 19c, then Oracle Multimedia APIs will be still exist but won’t function anymore.
Desupport of Oracle Multemedia
Oracle Multimedia is desupported in Oracle Database 19c, and the implementation is removed.
As an alternative for image processing and conversion, Oracle recommends that you store multimedia content in SecureFiles LOBs, and use third party products, such as Piction. The ORDIM component remains in the registry and still has a VALID status. Oracle Multimedia objects and packages remain in the database. However, these objects and packages no longer function, and raise exceptions if there is an attempt made to use them. Oracle Locator is not affected by the desupport of Oracle Multimedia.