我正在将数据从远程数据库收集到中央数据库中。 在远程数据库上,我运行几个查询,并使用PLJSON将结果捕获到JSON数据结构(JSON_LIST)中。 然后将数据插入到我的中央数据库的登台表中。
CREATE TABLE SSP_STAGE_DB_GATHER
(
ID NUMBER NOT NULL,
DB_NAME VARCHAR2(20 BYTE) NOT NULL,
DB_UNIQUE_NAME VARCHAR2(20 BYTE) NOT NULL,
RESULT_TYPE VARCHAR2(20 BYTE) NOT NULL,
LOADED_AT DATE NOT NULL,
JSON_RESULT CLOB NOT NULL
)
LOB (JSON_RESULT) STORE AS SECUREFILE (
TABLESPACE AUT_DB_GATHER_LOB)
TABLESPACE AUT_DB_GATHER
在数据库上运行收集后,此表中的结果将如下所示
ID DB_NAME DB_UNIQUE_NAME RESULT_TYPE LOADED_AT JSON_RESULT
1 D4081T D4081T_CCH FRA 21/5/2019 13:30:33 (HUGECLOB)
2 D4081T D4081T_CCH TABLESPACE 21/5/2019 13:30:33 (HUGECLOB)
3 D4081T D4081T_CCH PATCH_INFO 21/5/2019 13:30:33 (HUGECLOB)
21 D2647O D2647O FRA 21/5/2019 13:43:04 (HUGECLOB)
22 D2647O D2647O TABLESPACE 21/5/2019 13:43:05 (HUGECLOB)
23 D2647O D2647O PATCH_INFO 21/5/2019 13:43:05 (HUGECLOB)
我能够查询每行,但是我想查询所有行(例如) RESULT_TYPE = TABLESPACE。
我可以通过ID = 22
SELECT *
FROM TABLE (pljson_table.json_table ( (SELECT JSON_RESULT
FROM SSP_STAGE_DB_GATHER
WHERE id = 22),
pljson_varray ('[*].Tablespace',
'[*].LOGGING',
'[*].BIGFILE',
'[*].USED_MB',
'[*].FREE_MB',
'[*].TOTAL_MB',
'[*].PRC_FREE'),
pljson_varray ('Tablespace',
'logging',
'bigfile',
'used',
'free',
'total',
'pct'),
table_mode => 'nested'))
where pct >99
(不要介意“ where pct> 99”。这仅仅是为了限制输出)
结果
TABLESPACE LOGGING BIGFILE USED FREE TOTAL PCT
-------------------- -------- -------- ------- ------- ------- -----
AUT_DB_GATHER LOGGING YES 0 100 100 100
AUTOMATION_TRAINING LOGGING YES 0 100 100 100
AUT_DB_GATHER_LOB LOGGING YES 0 100 100 100
STAGING LOGGING YES 0 100 100 100
4 rows selected.
在上面的示例中,我必须使用ID = 22,因为“ TABLE(pljson_table.json_table“需要1个值(一个clob /一个json对象)。
我想要一个查询,该查询将基于RESULT_TYPE='TABLESPACE'
搜索整个表,并为找到的每个记录查询相应记录的JSON对象。
So I need to join:
SELECT JSON_RESULT FROM AUT_DB.SSP_STAGE_DB_GATHER
WHERE RESULT_TYPE = 'TABLESPACE'
使用上述JSON查询
希望获取这样的结果
DB_NAME TABLESPACE LOGGING BIGFILE USED FREE TOTAL PCT
------- -------------------- -------- -------- ------- ------- ------- -----
D2647O AUT_DB_GATHER LOGGING YES 0 100 100 100
D2647O AUTOMATION_TRAINING LOGGING YES 0 100 100 100
D2647O AUT_DB_GATHER_LOB LOGGING YES 0 100 100 100
D26470 STAGING LOGGING YES 0 100 100 100
...
D7788O SYSTEM LOGGING YES 0 100 100 100
D7788O AUTOMATION LOGGING YES 0 100 100 100
....