1
팀에서 사용하는 복제해야하는 원격 데이터베이스가 있습니다. 필자는 리모컨에서 all_sequences 테이블에 대한 액세스를 제공하는 데이터베이스 링크와 동의어를 만들었습니다.ORACLE 10g : 원격 데이터베이스에서 시퀀스 재설정
create synonym rprod_all_sequences for [email protected]_production;
이제 모든 사용자 시퀀스를 가져와 올바른 번호로 시작하도록 변경하는 SQL 파일을 만들었습니다.
set serveroutput on
/******************************************************************************/
/* RESET ALL SEQUENCE NUMBERS */
/******************************************************************************/
declare
cursor c_cursor is
select sequence_owner||'.'||sequence_name AS name, TO_CHAR(last_number + 1) AS last_number
from rprod_all_sequences
where sequence_owner not in ('WMSYS','XDB','SYS','SYSTEM','SYSMAN','MDSYS','LBACSYS','EXFSYS','DMSYS','DBSNMP','CTXSYS');
begin
for r_record in c_cursor loop
execute immediate 'alter sequence ' || r_record.name || ' ' ||' INCREMENT BY '|| r_record.last_number ||';';
end loop;
end;
/
exit;
는하지만, 난 항상이 오류 받고 있어요 :
[email protected]> @reset_seq.sql
declare
*
ERROR at line 1:
ORA-00911: invalid character
ORA-06512: at line 7
I 별도로 시도로 스크립트에 대해 불평하는 이유를 잘 모르겠어요를하며 노력하고 있습니다. 미안하지만 멍청한 질문 일 수도 있습니다. 왜 어떤 아이디어?
감사합니다.
을 ->'라인 1에 오류를 선언 : ORA-02289은 : 순서는 ORA-06512 존재하지 않습니다 줄에서이 명령이 올바른 그러나 '생략 것 같다 21'; ' 마지막에 명령의 전체 루프를 1로 만듭니다. dbms_ouput.put_line을 사용하여 즉시 실행을 출력하고 작동하는 스크립트 1을 테스트합니다 –
루프에서이 작업을 실행하고 있습니다. 그래서 한 문장 만 실행됩니다. 당신이'dbms_output.put_line'을 통해 그것을 인쇄하려고 시도한 것과는 다릅니다. squence가 있는지 확인하십시오. 일부 시퀀스가 생성되지 않았거나 이미 삭제되었을 수 있습니다. 실제 문제를 찾아내는 예외 블록을 작성하십시오. – XING