UPDATE XXX_INFO A SET A.XXX_NAME = (SELECT B.XXX_NAME FROM TEMP_XXX_INFO B - WHERE B.XXX_CODE = A.XXX_CODE); + WHERE B.XXX_CODE = A.XXX_CODE and rownum=1);
--查看表空间使用信息及占用率 SELECT c.ts#, c.name, d.contents, d.extent_management, e.file_bytes, c.used, SUBSTR (c.used / e.file_bytes *100, 1, 5) "使用率" FROM (SELECT name, ts#, SUM(used) used FROM (SELECT a.allocated_space * (SELECTvalue-- 查询db_block_size当前值 FROM v$parameter WHERE name ='db_block_size')/1024/1024 used, b.ts#, b.name FROM v$filespace_usage a, v$tablespace b WHERE a.tablespace_id = b.ts#) GROUPBY name, ts#) c, dba_tablespaces d, (SELECT ts#, SUM(bytes)/1024/1024 file_bytes FROM v$datafile GROUPBY ts#) e WHERE c.name = d.tablespace_name AND e.ts# = c.ts# ORDERBY ts#
查看表空间名称、对应的 DATAFILE 位置及大小
1 2 3
--查看表空间名称、对应的DATAFILE位置及大小 select tablespace_name, file_id,file_name,round(bytes/1024/1024,0) total_space from dba_data_files orderby tablespace_name;
增加表空间大小或添加新的 DATAFILE
1 2 3 4 5 6
--扩展表空间大小 ALTER DATABASE DATAFILE '/oracle/oradata/orcl/.../XXX_ODS.dbf' RESIZE 30G;
--插入数据 INSERTINTO XXX_LOCAL (xxx,xxx_clob) SELECT xxx,xxx_clob FROM XXX@xxx_dl T WHERE T.opdate >= TO_DATE(I_STARTDATE ||'00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND T.opdate <=TO_DATE(I_ENDDATE ||'23:59:59', 'YYYY-MM-DD HH24:MI:SS');
ORA-30926
ORA-30926: unable to get a stable set of rows in the source tables。ORA-06512: at "XXX_DW.DW_XXX", line 233.
错误指向的SQL片段(line 233):
1 2 3 4 5 6
WHILE (V_LOOPDATE <= V_ENDDATE) LOOP mergeinto XXX_INFO t using (select g.*from XXX_HISINFO g where g.d_date = V_LOOPDATE) k on (t.xxx_id = k.xxx_id) when matched then ...
这个错误是由于数据来源表存在多条结果造成的,即使用 using (...) on (...) 条件查询 XXX_HISINFO 表得到多个结果,无法确定使用哪个数据进行 merge。错误原因及解决方式与 ORA-01427 相似。
查看哪条数据出现多个结果,再判断是否合理:
1 2
select*from XXX_HISINFO where xxx_id in (select vc_symbol_id from XXX_HISINFO groupby xxx_id havingcount(xxx_id)>1);