步骤:
1、建立X用户(X,Y用户可以完全互相访问和操作任何表)
2、利用原来的建表语句在X用户下建立原来所有的表(楼主提到的“我有数据库中一批表的建表语句”)
3、将Y用户下的表数据导入到X用户下
SELECT 'insert into X.'|| a.TABLE_NAME ||' ('||wmsys.wm_concat(a.COLUMN_NAME)|| ')' || ' select '|| replace(wmsys.wm_concat(NVL(b.COLUMN_NAME,'@')),'@','NULL')||' from Y.'||a.TABLE_NAME
FROM all_tab_cols a ,all_tab_cols b
WHERE a.TABLE_NAME=b.TABLE_NAME(+)
AND a.owner='X'
AND b.owner(+)='Y'
AND a.COLUMN_NAME=b.COLUMN_NAME(+)
GROUP BY a.TABLE_NAME
4、删除Y用户下需调整的表
SELECT 'drop table Y.'||table_name||';' FROM All_Tables WHERE owner='X';
5、重建并导入Y用户需调整的表
SELECT 'create table Y.'||table_name||' as select * from X.'||table_name||';' FROM All_Tables WHERE owner='X';
6、删除X
drop user X;