注册
迁移过程中,导出Oracle的所有索引

迁移过程中,导出Oracle的所有索引

hql 2022/01/22 1852 1 0
摘要 迁移过程中,导出Oracle的所有索引
begin declare table_ VARCHAR(200) DEFAULT 'ETL_TASK_DEBUG_LOG'; USER_ VARCHAR(200) DEFAULT 'APP'; base clob; end_ int; a int; MPP_COL VARCHAR(50); ERR INT DEFAULT 0; kuo varchar(2) default ''; BEGIN dbms_metadata.set_transform_parAm(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE); dbms_metadata.set_transform_parAm(DBMS_METADATA.SESSION_TRANSFORM,'PARTITIONING',FALSE); dbms_metadata.set_transform_parAm(DBMS_METADATA.SESSION_TRANSFORM,'CONSTRAINTS',FALSE); dbms_metadata.set_transform_parAm(DBMS_METADATA.SESSION_TRANSFORM,'REF_CONSTRAINTS',FALSE); FOR RS IN( --在这里定义我们要导出的表,执行这个存储过程;会print出涉及到的表上的所有索引定义 select * from all_indexes where owner||'.'||table_name in ('username.tablename', 'username.tablename') ) LOOP TABLE_ :=RS.index_NAME; USER_ :=RS.OWNER; begin --DBMS_OUTPUT.PUT_LINE('--start'); SELECT DBMS_METADATA.GET_DDL('INDEX',table_,user_) into base FROM DUAL ; dbms_output.put_line(REPLACE(REPLACE(base,'\n',''),'\r','')||' online;'); EXCEPTION WHEN OTHERS then DBMS_OUTPUT.PUT_LINE('------>'); DBMS_OUTPUT.PUT_LINE(TABLE_||'__'||user_); DBMS_OUTPUT.PUT_LINE(sqlcode||'__'||sqlerrm); DBMS_OUTPUT.PUT_LINE(dbms_utility.format_error_backtrace); ERR:=ERR+1; DBMS_OUTPUT.PUT_LINE('<------'); end; END LOOP; DBMS_OUTPUT.PUT_LINE('--ERR: '||ERR); END; end;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服