1. На промышленной и резервной базах данных создаем таблицу STATTAB
$export ORACLE_SID=prod
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.create_stat_table(ownname => 'SYSTEM',stattab => 'STATTAB',tblspace => 'SYSAUX');
end;
/
$export ORACLE_SID=rez1
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.create_stat_table(ownname => 'SYSTEM',stattab => 'STATTAB',tblspace => 'SYSAUX');
end;
/
2. Создаем резервную копию текущей статистики промышленной базы данных
На промышленном сервере запускаем процедуру экспорта текущей статистики
в таблицу STATTAB.
$export ORACLE_SID=prod
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.export_schema_stats(ownname => 'OWS',stattab => 'STATTAB',statid => 'exp1' ,statown => 'SYSTEM');
end;
/
Смотрим содержимое таблицы STATTAB.
select * from system.stattab
Создаем резервную копию таблицы STATTAB
$export ORACLE_SID=prod
$exp \'/ as sysdba\' file=/u01/app/oracle/backups/dmp/stats_table.dmp.`date +%Y-%m-%d-%H:%M:%S` log=/u01/app/oracle/backups/dmp/stats_table.log.`date +%Y-%m-%d-%H:%M:%S` tables=SYSTEM.STATTAB
Export: Release 10.2.0.4.0 - Production on Wed Oct 6 16:30:07 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in CL8ISO8859P5 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SYSTEM
. . exporting table STATTAB 95211 rows exported
Export terminated successfully without warnings.
$
3. Сбор статистики на копии промышленной базы данных (SID=rez1)
(отдельная тема)
4. Переносим статистику собранную на базе rez1 в таблицу STATTAB
$export ORACLE_SID=rez1
Проверяем что таблица существует (мы ее создали в п.1)
select * from system.stattab
Переносим в нее собранную статистику
$export ORACLE_SID=prod
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.export_schema_stats(ownname => 'OWS',stattab => 'STATTAB',statid => 'imp1' ,statown => 'SYSTEM');
end;
/
Смотрим содержимое таблицы:
select * from system.stattab
5. Выгружаем содержимое таблицы STATTAB в файл дампа stats_table.dmp
exp \'/ as sysdba\' file=/u01/app/oracle/backups/dmp/stats_table.dmp log=/u01/app/oracle/backups/dmp/stats_table.log tables=SYSTEM.STATTAB
Export: Release 10.2.0.4.0 - Production on Wed Oct 6 16:30:07 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in CL8ISO8859P5 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SYSTEM
. . exporting table STATTAB 95211 rows exported
Export terminated successfully without warnings.
$
6. Производим импорт содержимого файла stats_table.dmp в таблицу STATTAB на промышленной базе данных
(текущая статистика была сохранена в п.2)
$imp \'/ as sysdba\' file=/u01/app/oracle/backups/dmp/stats_table.dmp log=/u01/app/oracle/backups/dmp/stats_import.log fromuser=system touser=system ignore=y
Import: Release 10.2.0.4.0 - Production on Wed Oct 6 16:59:59 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V10.02.01 via conventional path
import done in CL8ISO8859P5 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYSTEM
. . importing table "STATTAB" 100151 rows imported
Import terminated successfully without warnings.
$
7. Применяем перенесенную статистику на промышленной базе данных
$export ORACLE_SID=prod
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.IMPORT_schema_stats(ownname => 'OWS',stattab => 'STATTAB',statid => 'imp1',statown => 'SYSTEM');
end;
/
commit;
8. Очистка содержимого таблиц STATTAB
После успешного переноса статистики можно очистить содержимое таблиц STATTAB на промышленной базе и базе rez1
truncate table system.stattab
Проверяем
select * from system.stattab
9. Типичные ошибки
Иногда, если в копии промышленной базы были произведены изменения в структуре таблиц (например, добавлены новые столбцы) при импорте статистики процедура DBMS_STATS.IMPORT_schema_stats завершается с ошибкой:
ORA-20000: Unable to set values for column STORE_COLUMN:
does not exist or insufficient privilegesORA-06512:
at "SYS.DBMS_STATS", line 6824ORA-06512: at "SYS.DBMS_STATS", line 6850ORA-06512:
at "SYS.DBMS_STATS", line 7382ORA-06512: at line 2
Это значит что, в какой то таблице в базе rez1 появилось новое поле STORE_COLUMN, которое отсутствует в соответствующей таблице в базе prod.
Статистику по этому полю следует удалить из таблицы STATTAB на промышленной базе данных и повторно запустить процедуру импорта:
select c1 from system.stattab where c4 = 'STORE_COLUMN'
возвратит имя таблицы:
ADDR_LEVEL
select * FROM system.stattab where c1 = 'ADDR_LEVEL' and c4='STORE_COLUMN';
delete FROM system.stattab where c1 = 'ADDR_LEVEL' and c4='STORE_COLUMN';
$export ORACLE_SID=prod
$sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Oct 7 11:27:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
begin
DBMS_STATS.IMPORT_schema_stats(ownname => 'OWS',stattab => 'STATTAB',statid => 'imp1',statown => 'SYSTEM');
end;
/
commit;
среда, 6 октября 2010 г.
Подписаться на:
Сообщения (Atom)