У меня есть 7 таблиц на сервере PS, у которых есть данные за последние 3 года (миллиарды записей). Требуется переместить все данные в резервную таблицу, кроме данных за последние месяцы. Итак, подходим:
- 1) изменить имя существующей таблицы в качестве резервной таблицы
- 2) а затем создать новую таблицу
- 3), а затем переместите данные за 3 месяца в новую таблицу.
Таким образом обработка данных будет быстрой.
Я попытался с помощью запроса ниже изменить имя таблицы, но это не сработало. Может ли кто-нибудь помочь. Это высокий приоритет.
declare
sql_stmt varchar2(1000);
cursor c1 is select table_name from staging_clear;
type t1 is table of c1%rowtype;
curtype t1;
begin
open c1;
fetch c1 bulk collect into curtype;
for i in 1..curtype.count loop
sql_stmt:= 'begin
alter table '||curtype(i).table_name||' rename to '|| curtype(i).table_name||'_bkp';
dbms_output.put_line(sql_stmt);
execute immediate sql_stmt;
dbms_output.put_line(sql_stmt);
end loop;
end;
Сообщение об ошибке:
ORA-06550: строка 2, столбец 11: PLS-00103: Обнаружен символ «ALTER» при ожидании одного из следующих действий: начало случая объявить выход для goto, если цикл мод нулевой прагма поднять возврат выбрать обновление при «закрыть текущую выборку удаления» блокировка вставить открыть откат точка сохранения установить sql выполнить фиксацию для канала слияния ORA-06512: в строке 13 06550. 00000 - «строка% s, столбец% s: \ n% s» * Причина: Обычно ошибка компиляции PL / SQL.