1.不能指定lob列为主键。
2.oracle已经限制了对远端LOBs对象的支持。只剩下三种方式:
2.1 Create table as select or insert as
select.
CREATE TABLE t AS SELECT * FROM
table1@remote_site;
INSERT INTO t SELECT * FROM
table1@remote_site;
UPDATE t SET lobcol = (SELECT lobcol FROM
table1@remote_site);
INSERT INTO table1@remote_site SELECT *
FROM local_table;
UPDATE table1@remote_site SET lobcol =
(SELECT lobcol FROM local_table);
DELETE FROM table1@remote_site
2.2 Functions on remote LOBs returning
scalars.远程lob的函数返回标量的,如下面:
CREATE TABLE tab AS SELECT
DBMS_LOB.GETLENGTH@dbs2(clob_col) len FROM tab@dbs2;
CREATE TABLE tab AS SELECT
LENGTH(clob_col) len FROM tab@dbs2;
下面是不支持的,因为DBMS_LOB.SUBSTR返回LOB,不是标量:
CREATE TABLE tab AS SELECT DBMS_LOB.SUBSTR(clob_col)
from tab@dbs2;
2.3数据接口.
You can insert a character or binary
buffer into a remote CLOB or BLOB, and select a remote CLOB or BLOB into a
character or binary buffer. For example (in PL/SQL):
SELECT clobcol1, type1.blobattr INTO
varchar_buf1, raw_buf2 FROM
table1@remote_site;
INSERT INTO table1@remotesite (clobcol1,
type1.blobattr) VALUES varchar_buf1,
raw_buf2;
INSERT INTO table1@remotesite (lobcol)
VALUES ('test');
UPDATE table1 SET lobcol = 'xxx';
3.簇表不能包括lob列
4.如下数据结构仅支持临时lob对象,不能将这些存储在table中作为永久lob:
任何lob类型的变长数组;
自定义类型中包括lob,该自定义类型又在变长数组中;
任何lob类型的anydata类型;
自定义类型中包括lob,该自定义类型又在anydata中。
5.lob列不能出现在order by,group by或者聚合函数中。
6.lob段的第一个区必须至少包括三个数据库块。
7.lob列上不能建索引。但是可以建域索引。
8.lob列不能用在select
distinct中。