There may be times that you wish to save you database statistics. Perhaps to use in a test system or prior to a code release that may ultimately change your statistics and change you query plans for the worse. By exporting the statistics, they can be saved for future importing.
Source Database : srcdb ( host- example01)
Target database : trgdb ( host - example02)
1) To generate schema statistics and import them into a separate database:
SQL> select instance_name,host_name,status from v$instance;
INSTANCE_NAME HOST_NAME STATUS
---------------- ------------------------------ ------------
srcdb example01 OPEN
SQL>
On the source host, start SQL*Plus and connect to the source database as administrator.
Create a table to hold the schema statistics.
For example, execute the following PL/SQL program to create user statistics table opt_stats:
SQL> BEGIN
DBMS_STATS.CREATE_STAT_TABLE (
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
2) Gather schema statistics.
For example, manually gather schema statistics as follows:
-- generate representative workload
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');
3) Use DBMS_STATS to export the statistics.
For example, retrieve schema statistics and store them in the opt_stats table created previously:
SQL> BEGIN
DBMS_STATS.EXPORT_SCHEMA_STATS (
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
4) Use Oracle Data Pump to export the contents of the statistics table.
For example, run the expdp command at the operating schema prompt:
SQL> create or replace directory dump_dir as '/u09/backup/export';
Directory created.
$ expdp DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
e.g.,
[oracle@example01 export]$ expdp DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
Export: Release 12.2.0.1.0 - Production on Wed Feb 5 12:40:39 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
Starting "SYS"."SYS_EXPORT_TABLE_01": /******** AS SYSDBA DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 2.125 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
. . exported "SCOTT"."OPT_STATS" 1.534 MB 10486 rows
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
/u03/work/export/SCOTT_stat.dmp
Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at Wed Feb 5 12:44:09 2020 elapsed 0 00:03:24
5) Transfer the dump file to the target database host.
$ scp gmohapatra@example01:/u03/work/export/*.dmp .
6) Log in to the target host, and then use Oracle Data Pump to import the contents of the statistics table.
SQL> create or replace directory dump_dir1 as '/u08/backup/import';
Directory created.
For example, run the impdp command at the operating schema prompt:
$ impdp DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
e.g.,
[oracle@example02 import]$ impdp DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
Import: Release 12.2.0.1.0 - Production on Wed Feb 5 13:30:16 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
Master table "SYS"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SYS"."SYS_IMPORT_TABLE_01": /******** AS SYSDBA DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."OPT_STATS" 1.534 MB 10486 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "SYS"."SYS_IMPORT_TABLE_01" successfully completed at Wed Feb 5 13:30:43 2020 elapsed 0 00:00:20
[oracle@example02 import]$
7) On the target host, start SQL*Plus and connect to the target database.
Use DBMS_STATS to import statistics from the user statistics table and store them in the data dictionary.
The following PL/SQL program imports schema statistics from table opt_stats into the data dictionary:
SQL> BEGIN
DBMS_STATS.IMPORT_SCHEMA_STATS(
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
SQL> select name from v$database;
NAME
---------
trgdb
SQL>
-- If you want to lock the statistics, below dbms api can be used.
SQL> exec dbms_stats.LOCK_SCHEMA_STATS('SCOTT');
PL/SQL procedure successfully completed.
SQL>
Note: You can do export and import statistics of whole database or for few tables also.
Source Database : srcdb ( host- example01)
Target database : trgdb ( host - example02)
1) To generate schema statistics and import them into a separate database:
SQL> select instance_name,host_name,status from v$instance;
INSTANCE_NAME HOST_NAME STATUS
---------------- ------------------------------ ------------
srcdb example01 OPEN
SQL>
On the source host, start SQL*Plus and connect to the source database as administrator.
Create a table to hold the schema statistics.
For example, execute the following PL/SQL program to create user statistics table opt_stats:
SQL> BEGIN
DBMS_STATS.CREATE_STAT_TABLE (
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
2) Gather schema statistics.
For example, manually gather schema statistics as follows:
-- generate representative workload
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');
3) Use DBMS_STATS to export the statistics.
For example, retrieve schema statistics and store them in the opt_stats table created previously:
SQL> BEGIN
DBMS_STATS.EXPORT_SCHEMA_STATS (
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
4) Use Oracle Data Pump to export the contents of the statistics table.
For example, run the expdp command at the operating schema prompt:
SQL> create or replace directory dump_dir as '/u09/backup/export';
Directory created.
$ expdp DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
e.g.,
[oracle@example01 export]$ expdp DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
Export: Release 12.2.0.1.0 - Production on Wed Feb 5 12:40:39 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
Starting "SYS"."SYS_EXPORT_TABLE_01": /******** AS SYSDBA DIRECTORY=dump_dir DUMPFILE=SCOTT_stat.dmp logfile=SCOTT_stat_expdp.log TABLES=SCOTT.opt_stats
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 2.125 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
. . exported "SCOTT"."OPT_STATS" 1.534 MB 10486 rows
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
/u03/work/export/SCOTT_stat.dmp
Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at Wed Feb 5 12:44:09 2020 elapsed 0 00:03:24
5) Transfer the dump file to the target database host.
$ scp gmohapatra@example01:/u03/work/export/*.dmp .
6) Log in to the target host, and then use Oracle Data Pump to import the contents of the statistics table.
SQL> create or replace directory dump_dir1 as '/u08/backup/import';
Directory created.
For example, run the impdp command at the operating schema prompt:
$ impdp DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
e.g.,
[oracle@example02 import]$ impdp DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
Import: Release 12.2.0.1.0 - Production on Wed Feb 5 13:30:16 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
Master table "SYS"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "SYS"."SYS_IMPORT_TABLE_01": /******** AS SYSDBA DIRECTORY=dump_dir1 DUMPFILE=SCOTT_stat.dmp logfile=impdp_SCOTT_stat.log TABLES=SCOTT.opt_stats
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."OPT_STATS" 1.534 MB 10486 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "SYS"."SYS_IMPORT_TABLE_01" successfully completed at Wed Feb 5 13:30:43 2020 elapsed 0 00:00:20
[oracle@example02 import]$
7) On the target host, start SQL*Plus and connect to the target database.
Use DBMS_STATS to import statistics from the user statistics table and store them in the data dictionary.
The following PL/SQL program imports schema statistics from table opt_stats into the data dictionary:
SQL> BEGIN
DBMS_STATS.IMPORT_SCHEMA_STATS(
ownname => 'SCOTT'
, stattab => 'opt_stats'
);
END;
/
PL/SQL procedure successfully completed.
SQL> select name from v$database;
NAME
---------
trgdb
SQL>
-- If you want to lock the statistics, below dbms api can be used.
SQL> exec dbms_stats.LOCK_SCHEMA_STATS('SCOTT');
PL/SQL procedure successfully completed.
SQL>
Note: You can do export and import statistics of whole database or for few tables also.
Have you been a victim of crypto wallet attacks? Here’s a way to quickly recover your crypto wallet and assets if you’ve been in similar situation, I was recently a victim of crypto wallet attacks and I lost access to my BTC and ETH funds. I was drowning in debt, until I approached a legal firm who recommended I contacted MorphoHack, a data recovery and funds recovery team, who helped me trace and regained access to my crypto wallet with my funds fully recovered. MorphoHack are simply magnificent individuals, with a professional direct approach to the situation, and countless others have been able to recover their crypto, funds lost due to scam, data, personal data recovery. MorphoHack are truly ethical hackers, with well advanced technology to help in any case. I highly recommend their service and fortunately, MorphoHack can be reached easily via email below
ReplyDeletemorphohack@cyberservices.com