oracle 9i数据库做spa

获取trace文件的脚本
mkdir /oracle/qwedir
create table sys.tab_ospid (SID NUMBER,SERIAL#  NUMBER,PADDR RAW(8),SPID  VARCHAR2(12));


启动捕获trace文件脚本
#!/bin/bash
. /oracle/.profile
sqlplus -s "/ as sysdba" <<QWEEOF
set linesize 1000
set pagesize 0
set feedback off
set heading off
set trimout on
set trimspool on
spool /oracle/qwedir/trackspid.log    
select 'exec dbms_system.set_ev('||aa.sid||','||aa.serial#||',10046,4,'''');'
from v\$session aa 
where aa.type='USER' 
and aa.username in ('ZHJS_APP','ZHJSBY','ZHJS_USER','ZHJS_PARAM')
and aa.program not like 'sqlplus%'
and aa.program<>'plsqldev.exe'
and aa.status='ACTIVE'
and not exists (select 1 from sys.tab_ospid bb where bb.sid=aa.sid and bb.serial#=aa.serial#);
spool off
insert into sys.tab_ospid
select aa.sid,aa.serial#,aa.paddr,bb.spid
from v\$session aa,v\$process bb
where aa.type='USER' 
and aa.username in ('ZHJS_APP','ZHJSBY','ZHJS_USER','ZHJS_PARAM')
and aa.program not like 'sqlplus%'
and aa.program<>'plsqldev.exe'
and aa.status='ACTIVE'
and aa.paddr=bb.addr
and not exists (select 1 from sys.tab_ospid cc where cc.sid=aa.sid and cc.serial#=aa.serial#);
commit;
exit;
QWEEOF


ORA_CMD=`cat /oracle/qwedir/trackspid.log`


echo "-------------------------------------- "
echo $ORA_CMD
echo "-------------------------------------- "




sqlplus -s "/ as sysdba" <<ASDEOF
${ORA_CMD}
exit;
ASDEOF


rm /oracle/qwedir/trackspid.log


exit;




可以放在crontab 定时几秒中运行


终止trace文件脚本
#!/bin/bash
. /oracle/.profile
sqlplus -s "/ as sysdba" <<QWEEOF
set linesize 1000
set pagesize 0
set feedback off
set heading off
set trimout on
set trimspool on
spool /oracle/qwedir/ktrack.log 
select 'exec dbms_system.set_ev('||sid||','||serial#||',10046,0,'''');'
from sys.tab_ospid;
spool off
exit;
QWEEOF


KORA_CMD=`cat /oracle/qwedir/ktrack.log`


echo "-------------------------------------- "
echo $KORA_CMD
echo "-------------------------------------- "




sqlplus -s "/ as sysdba" <<ASDEOF
${KORA_CMD}
exit;
ASDEOF


rm /oracle/qwedir/ktrack.log


exit;


获取trace文件,将trace文件scp到其他服务器
select 'scp -P12321 /oracle/product/9.2/db/rdbms/log/cntjs_ora_'||SPID||'.trc oracle@135.148.12.1:/backup' from sys.tab_ospid;




ps -ef|grep LOCAL=NO


sqlplus "/ as sysdba"
oradebug setospid 11368
oradebug event 10046 trace name context forever, level 12;
oradebug tracefile_name
oradebug event 10046 trace name context off;


alter system set events '10046 trace name context forever,level 12';
alter system set events '10046 trace name context off';


create table mapping_table tablespace TJ_BK as
select object_id id,owner,substr(object_name,1,30) name from dba_objects
where object_type not in ('CONSUMER GROUP','EVALUATION CONTEXT','FUNCTION','INDEXTYPE','JAVA CLASS','JAVA DATA','JAVA RESOURCE','LIBRARY','LOB','OPERATOR','PACKAGE','PACKAGE BODY','PROCEDURE','QUEUE','RESOURCE PLAN','SYNONYM','TRIGGER','TYPE','TYPE BODY') 
union all
select user_id id,username owner,null name from dba_users;




exp \' / as sysdba\' buffer=4096000  file=/backup/mapping.dmp tables=mapping_table
scp mapping.dmp 135.148.12.1:/backup


目标端




imp \' sys/oracle@cntjs as sysdba\' file=/backup/mapping.dmp fromuser=sys touser=sys


sqlplus \' sys/oracle@cntjs as sysdba\'
create or replace directory SPADIR as '/backup';




---创建sqlset
declare
mycur dbms_sqltune.sqlset_cursor;
begin
dbms_sqltune.create_sqlset('9i_prod_wkld');
open mycur for select value(p)
from table(dbms_sqltune.select_sql_trace(
directory => 'TRCDIR',
file_name => '%ora%',
mapping_table_name => 'MAPPING_TABLE',
select_mode => dbms_sqltune.SINGLE_EXECUTION)) p;
dbms_sqltune.load_sqlset( sqlset_name => '9i_prod_wkld',
populate_cursor => mycur,
commit_rows => 1000);
close mycur;
end;
/
-----删除sqlset
BEGIN
  DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => '9i_prod_wkld' );
END;
/


---查看sqlset数据内容
select name,statement_count from dba_sqlset;


variable sts_task VARCHAR2(64);
EXEC :sts_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK( -
task_name => '9i_12c_spa', -
description => 'experiment for 9i to 12c upgrade', -
sqlset_name => '9i_prod_wkld');






exec dbms_sqlpa.execute_analysis_task( -
  task_name   => '9i_12c_spa', -
  execution_name => '9i_trial', -
  execution_type => 'CONVERT SQLSET', -
  execution_desc => '9i sql trial generated from STS');




exec dbms_sqlpa.execute_analysis_task( -
task_name => '9i_12c_spa',-
execution_name => '12c_trial',-
execution_type => 'TEST EXECUTE',-
execution_desc => '12c sql trial generated from STS');




select *  from v$session_longops where target_desc='sts=9i_prod_wkld';
select sofar,totalwork from v$advisor_progress where task_id='';






begin
   DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name => '9i_12c_spa',
   execution_type => 'COMPARE PERFORMANCE',
   execution_name => 'Compare_buffer_gets',
   execution_params => dbms_advisor.arglist('execution_name1','9i_trial','execution_name2','12c_trial','comparison_metric','buffer_gets'));
end;
/






begin
   DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name => '9i_12c_spa',
   execution_type => 'COMPARE PERFORMANCE',
   execution_name => 'Compare_cpu_time',
   execution_params => dbms_advisor.arglist('execution_name1','9i_trial','execution_name2','12c_trial','comparison_metric','cpu_time'));
end;
/






begin
   DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name => '9i_12c_spa',
   execution_type => 'COMPARE PERFORMANCE',
   execution_name => 'Compare_elapsed_time',
   execution_params => dbms_advisor.arglist('execution_name1','9i_trial','execution_name2','12c_trial','comparison_metric','elapsed_time'));
end;
/








begin
   DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name => '9i_12c_spa',
   execution_type => 'COMPARE PERFORMANCE',
   execution_name => 'Compare_disk_reads',
   execution_params => dbms_advisor.arglist('execution_name1','9i_trial','execution_name2','12c_trial','comparison_metric','disk_reads'));
end;
/




SELECT dbms_sqlpa.report_analysis_task('9i_12c_spa', 'HTML', 'ALL','ALL', execution_name=>'Compare_disk_reads') FROM dual;


SELECT dbms_sqlpa.report_analysis_task('9i_12c_spa', 'HTML', 'ALL','ALL', execution_name=>'Compare_buffer_gets') FROM dual;


SELECT dbms_sqlpa.report_analysis_task('9i_12c_spa', 'HTML', 'ALL','ALL', execution_name=>'Compare_cpu_time') FROM dual;


SELECT dbms_sqlpa.report_analysis_task('9i_12c_spa', 'HTML', 'ALL','ALL', execution_name=>'Compare_elapsed_time') FROM dual;






--获取所有SQL的性能变化情况
set lines 188 pages 9999 long 999999 trim on trims on
spool spa_elapsed_20180504.html
select xmltype(dbms_sqlpa.report_analysis_task( -
'9i_12c_spa', 'html', 'all', 'all', null, 100, -
'Compare_elapsed_time')).getclobval(0,0) from dual;
spool off




--获取不支持的SQL列表
spool spa_elapsed_unsupported_20180504.html
select xmltype(dbms_sqlpa.report_analysis_task( -
'9i_12c_spa', 'html', 'unsupported', 'all', null, 100, -
'Compare_elapsed_time')).getclobval(0,0) from dual;
spool off




--获取所有执行出错的SQL列表
spool spa_elapsed_errors_20180504.html
select xmltype(dbms_sqlpa.report_analysis_task( -
'9i_12c_spa', 'html', 'errors', 'all', null, 100, -
'Compare_elapsed_time')).getclobval(0,0)-
from dual;
spool off

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30345407/viewspace-2153835/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30345407/viewspace-2153835/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Oracle 19c可以通过数据泵(Data Pump)方式导入Oracle 9i的数据。数据泵是Oracle 10g引入的一种高效的数据导入导出工具,可以在不同版本的Oracle数据库之间进行数据迁移。以下是导入Oracle 9i数据到Oracle 19c的步骤: 1. 在Oracle 19c数据库中创建一个新的目录(directory),用于存放导入数据所需的DMP文件。例如: ``` CREATE DIRECTORY dpump_dir AS '/u01/app/oracle/dpump'; ``` 2. 在Oracle 19c数据库中创建一个新的数据泵(Data Pump)作业(job),用于导入数据。例如: ``` CREATE JOB imp_job DESCRIPTION 'Import data from Oracle 9i' PROGRAM 'impdp' ENABLED; ``` 3. 将Oracle 9i数据库中的DMP文件复制到Oracle 19c数据库的目录中。例如: ``` scp user@oracle9i:/u01/app/oracle/export/exp.dmp /u01/app/oracle/dpump/exp.dmp ``` 4. 在Oracle 19c数据库中运行IMPDP命令,导入数据。例如: ``` impdp user/password@oracle19c directory=dpump_dir dumpfile=exp.dmp logfile=imp.log ``` 其中,user/password是Oracle 9i数据库的用户名和密码,oracle19c是Oracle 19c数据库的TNS别名,dpump_dir是步骤1中创建的目录名,exp.dmp是Oracle 9i导出的DMP文件名,imp.log是导入日志文件名。 需要注意的是,导入数据时可能需要调整一些参数,例如缓冲区大小、并行度等,以便更好地适应新的数据库环境。此外,数据泵工具还提供了许多其他选项,例如在导入时可以选择只导入指定的表、分区等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值