我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用oracle 9i数据库做spa

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用oracle 9i数据库做spa

这篇文章将为大家详细讲解有关如何用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

关于如何用oracle 9i数据库做spa就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用oracle 9i数据库做spa

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用VB做一个数据库

要使用VB建立一个数据库,你可以按照以下步骤进行操作:1. 下载并安装适用于VB的数据库管理系统,例如Microsoft Access或MySQL。2. 打开VB开发环境,并创建一个新的VB项目。3. 在VB的工具箱中,选择“数据”选项卡,
2023-10-18

oracle数据库如何使用

Oracle数据库的使用步骤如下:1. 下载和安装Oracle数据库软件。首先,你需要从Oracle官方网站上下载适用于你的操作系统的Oracle数据库软件。安装过程可能会稍微有些不同,具体取决于你的操作系统。安装过程中需要注意选择正确的安
2023-09-05

如何使用oracle数据库

oracle 数据库是一种强大的 rdbms,具有可扩展性、可靠性和安全性。连接到数据库后,您可以创建数据库、表、插入数据、查询数据、更新数据和删除数据。此外,oracle 数据库还提供事务处理、约束、索引、触发器和存储过程等高级功能。如何
如何使用oracle数据库
2024-04-19

oracle数据库如何备份数据库

oracle 提供多种备份方法来保护数据库完整性,包括全备份、增量备份、差异备份和归档日志备份。最佳备份类型取决于数据库大小、恢复目标和可用资源。rman(恢复管理器)是 oracle 的内置备份和恢复工具,它简化了备份和恢复过程,并提供了
oracle数据库如何备份数据库
2024-04-19

nacos如何使用oracle数据库

要在Nacos中使用Oracle数据库,您需要按照以下步骤进行配置:1、下载Oracle JDBC驱动程序:您需要从Oracle官方网站下载适用于您的Oracle数据库版本的JDBC驱动程序(如ojdbc7.jar或ojdbc8.jar)
nacos如何使用oracle数据库
2024-04-22

数据库功能测试如何做

数据库功能测试是一种用于验证数据库系统的功能是否按照预期工作的测试方法。以下是进行数据库功能测试的步骤:确定测试目标:确定需要测试的数据库功能和预期结果。例如,测试数据库的连接性、数据的插入、更新和删除操作、查询功能、事务处理等。创建测试用
2023-10-21

数据库实时备份如何做

要实现数据库的实时备份,可以使用以下方法:1. 使用数据库的内置备份功能:大多数数据库管理系统(DBMS)都提供了备份和恢复功能。你可以使用DBMS提供的命令或工具来执行数据库的实时备份。这些工具通常会将数据库的数据和日志文件复制到备份文件
2023-08-30

oracle如何备份数据库数据

oracle 数据库提供了三种备份方法:完整的数据库备份:复制整个数据库文件和日志文件。增量备份:仅备份自上次备份后更改的数据块。归档日志备份:记录数据库所有更改,用于恢复。Oracle数据库备份方法Oracle提供了多种方法来备份数据库
oracle如何备份数据库数据
2024-04-19

oracle数据库如何导入数据

导入数据到 oracle 数据库的方法包括:使用 sql*loader 实用程序:创建控制文件定义数据格式和加载选项。使用 sql*loader 命令执行导入。使用 insert 语句逐行插入数据。Oracle 数据库数据导入导入数据到
oracle数据库如何导入数据
2024-06-13

oracle数据库如何导出数据

从 oracle 数据库导出数据的方法有:使用导出数据泵:expdp username/password tables=table_name directory=directory_name dumpfile=dumpfile_name.d
oracle数据库如何导出数据
2024-06-13

oracle数据库如何备份数据

在Oracle数据库中,有多种备份数据的方法可供选择,包括:使用Oracle Data Pump工具进行逻辑备份:Oracle Data Pump工具可以将数据库中的数据导出到一个格式化的文件中,以便将来恢复数据。可以使用expdp和imp
oracle数据库如何备份数据
2024-04-13

oracle数据库如何创建用户

在Oracle数据库中,创建用户可以通过以下步骤进行:使用管理员权限登录到Oracle数据库中。执行以下SQL语句来创建用户:CREATE USER username IDENTIFIED BY password;其中,username是要
oracle数据库如何创建用户
2024-05-06

如何查看oracle数据库

要查看Oracle数据库,可以使用以下方法之一:1. 使用SQL*Plus命令行工具:SQL*Plus是Oracle提供的一个基本的命令行接口,可以连接到Oracle数据库并执行SQL语句。可以在命令行中输入`sqlplus`命令启动SQL
2023-08-30

oracle 如何创建数据库

要创建一个Oracle数据库,您可以按照以下步骤进行操作:1. 安装Oracle数据库软件:首先,在您的计算机上安装Oracle数据库软件。您可以从Oracle官方网站下载适用于您的操作系统的Oracle数据库软件,并按照安装向导的指示进行
2023-08-23

如何创建oracle数据库

要创建Oracle数据库,您需要按照以下步骤进行操作:1. 首先,确保您已经安装了Oracle数据库软件。您可以从Oracle官方网站下载适合您操作系统的版本。2. 安装完成后,打开数据库配置助手(Database Configuratio
2023-08-30

编程热搜

目录