Oracle 9i&10g编程艺术 性能测试

      汗,写上篇笔记已经是去年的事情了。时间过得真快啊,在这里已经工作了一年多了,感觉自己什么都没学到似的,或者说没有钻研过。从一开始用C,后来体验了 下Linux,学了点内核和Shell的皮毛,正打算将以后的方向定在unix平台/c语言开发的时候,猛然发现,在目前的岗位上,根本得不到什么应用。 遂弃之。如今选择了PL/SQL,就要精通业务逻辑,刚开始的这段时间尤其痛苦,这存储过程里的业务逻辑并不是那么容易看出的。加油吧。

      人生啊,虚度年华,荒废光阴了。

 

    上次配置好了环境,接下来,就要准备一个工具用来检测不同方法的性能差异。Tom大师建议我们开发人员都应该有个自己用来测试各种想法的测试数据库 (test bed), 我在其他的工作中也遵循了这样的做法,专门建立一个SandBox目录,本着“小马过河”的精神,检验自己的千奇百怪的猜想。

RunStats工具

     作用是分析sql的实际性能,主要从三个方面来考查:

A. 墙上时钟(wall clock)/耗用时间(elapsed time):消耗时间;

B. 系统统计结果: 显示每个方法执行各步骤时发生的次数;

C. 闩定(latching):轻量级的锁,有点像多线程里的mutex,应用中应使内部闩越少越好,这样可以保证应用的可扩展性。

 

1. 创建视图

1 create or replace view stats
2 as select 'STAT...' || a. name name , b.value
3      from v$statname a, v$mystat b
4      where a.statistic# = b.statistic#
5      union all
6      select 'LATCH.' || name , gets
7      from v$latch;

2. 创建临时表

1 create global temporary table run_stats
2 ( runid     varchar2(15),
3    name       varchar2(80),
4    value     int
5 )
6 on commit preserve rows ;

 

3.  创建RunStats包;

01 --runstat统计测试包
02  
03 create or replace package runstats_pkg
04 as
05      procedure rs_start;
06      procedure rs_middle;
07      procedure rs_stop( p_difference_threshold in number default 0 );
08 end ;
09 /
10 create or replace package body runstats_pkg
11 as
12    g_start  number;
13    g_run1  number;
14    g_run2  number;
15     
16 procedure rs_start
17 is
18 begin
19      delete from run_stats;
20       
21      insert into run_stats
22      select 'before' , stats.* from stats;
23      g_start := dbms_utility.get_time;
24 end ;
25  
26 procedure rs_middle
27 is
28 begin
29      g_run1 :=  (dbms_utility.get_time - g_start);
30       
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Oracle 11g可以通过数据泵(Data Pump)方式导入Oracle 9i的数据。数据泵是Oracle 10g引入的一种高效的数据导入导出工具,可以在不同版本的Oracle数据库之间进行数据迁移。以下是导入Oracle 9i数据到Oracle 11g的步骤: 1. 在Oracle 11g数据库中创建一个新的目录(directory),用于存放导入数据所需的DMP文件。例如: ``` CREATE DIRECTORY dpump_dir AS '/u01/app/oracle/dpump'; ``` 2. 在Oracle 11g数据库中创建一个新的数据泵(Data Pump)作业(job),用于导入数据。例如: ``` CREATE JOB imp_job DESCRIPTION 'Import data from Oracle 9i' PROGRAM 'impdp' ENABLED; ``` 3. 将Oracle 9i数据库中的DMP文件复制到Oracle 11g数据库的目录中。例如: ``` scp user@oracle9i:/u01/app/oracle/export/exp.dmp /u01/app/oracle/dpump/exp.dmp ``` 4. 在Oracle 11g数据库中运行IMPDP命令,导入数据。例如: ``` impdp user/password@oracle11g directory=dpump_dir dumpfile=exp.dmp logfile=imp.log ``` 其中,user/password是Oracle 9i数据库的用户名和密码,oracle11g是Oracle 11g数据库的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、付费专栏及课程。

余额充值