Bo's Oracle Station

查看: 4621|回复: 4

关于spa的几个概念求教

[复制链接]

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
发表于 2016-9-19 15:34:22 | 显示全部楼层 |阅读模式
本帖最后由 lujiaguai 于 2016-9-19 16:39 编辑

唐sir,近期意外情况较多,耽误了实验进度,加上中秋假期,距离上次课程时间比较久了,今天做的过程中有些概念模糊了
1,关于真洗假洗的问题:
     假洗指的是受到新特性实验环境的限制,在同一台机器上做SQL Performance Analyzer,这样情况称为假洗
   真洗值得指在不同的主机上,A主机作为源主机采集一次工作负载,然后放到B主机上做SQL Performance Analyzer,这样的情况称为真洗
   关于这一点是否可以这样理解:
   真洗更符合生产环境的应用模型?
   但是spa属于轻量级软件模拟测试,如新特性环境从10G到11G的SPA过程,是不是实际也能反应实际情况?从这角度这个过程也是有效的,并非真是假的。
   举个例子说,如果一台物理服务器上,安装了多个数据库软件,这些数据库软件版本不一样,这也算假洗的范围吗?洗出来的结果是否真实可靠?


2,考试过程中,是否在奇数机,偶数机之间,通过scp命令传递dump数据,进行真洗?


3,如果我在更真实的环境中测试,捕获用户hr,没有moudle模块的信息,持续10分钟,间隔5秒,是否如下写法就可以了:
   BEGIN
   dbms_sqltune.create_sqlset(sqlset_name => 'STS_HR', sqlset_owner =>'SYSTEM');
   END;
   /
   DECLARE
   bf VARCHAR2(110);
   BEGIN
   bf := q'#UPPER(PARSING_SCHEMA_NAME) = 'HR' AND UPPER(SQL_TEXT) NOT  LIKE 'APPLICAT%'  #';
   dbms_sqltune.capture_cursor_cache_sqlset( sqlset_name=>'STS_HR', time_limit=>'600',
                                           repeat_interval=>'5',
                                           basic_filter=>bf,
                                           sqlset_owner=>'SYSTEM');
    END;
    /  

   如果同时hr用户一直有数据在跑,那么实验中的第五步,加载工作负载是不是可以不用做,就执行上面这个修改过的第四部的命令捕获,10分钟后会停止。
   这样测试是否理解正确?


4,创建数据库链的过程发现,如果密码或者tns写错,命令依然可正常执行,考场上如何测试数据库连本身是正常的?
   直接测试查询,是否是最简便的办法: select * from v$datafile@数据库链

5,实验环境中在最后SQL Performance Analyzer Workflows的时候,选择Upgrade from 10.2 or 11g.
   这里有2个选项pre_upgrade trial , post-upgrade trial,分别选择旧,新2个数据库链进行对比

   上课的时候提到Guided Workflow选项,该选项是否用于11G-11G的spa?
   Guided Workflow选项里面有4个步骤,其中2,3步Create SQL Trial in Initial Environment,Create SQL Trial in Changed Environment
   是不是分别指的,源环境,目的环境?为了公平起见,远程的源环境用数据库链进行连接,那么本地的目的环境也用数据库链进行连接?
   但是本地无论如何都比远程的快,即便本地也用了数据库链?如果数据量较大,那么远程环境是否会受到网络的影响?导致结论不准确?
   如果确实因为网络导致不准确,那么实际生产环境中正确的做法是什么?或者说找第三台服务器做中间机来做?为了公平?



6,实验第六步,expdp了整个apps用户的文件,然后传递到目标库上,再impdp吃进去。
   这个过程在生产环境中也是如此吗?岂不是无比的痛苦?如果生产环境里的HR用户数据很多,可能expdp出来就要几个小时,再impdp吃进去几个小时~
   这样等于是复制了整个hr用户的环境,然后先前第四部的时候,可能只捕获了10分钟的数据,可是准备工作持续了一天时间,这样合理吗?
   如果说数据导入导出不可避免,那么捕获工作负载的时间是否长一些更合适?实际工作中如何选择?  



回复

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2016-9-20 10:39:04 | 显示全部楼层
本帖最后由 botang 于 2016-9-20 10:49 编辑
1,关于真洗假洗的问题:
     假洗指的是受到新特性实验环境的限制,在同一台机器上做SQL Performance Analyzer,这样情况称为假洗
   真洗值得指在不同的主机上,A主机作为源主机采集一次工作负载,然后放到B主机上做SQL Performance Analyzer,这样的情况称为真洗
   关于这一点是否可以这样理解:
   真洗更符合生产环境的应用模型?
   但是spa属于轻量级软件模拟测试,如新特性环境从10G到11G的SPA过程,是不是实际也能反应实际情况?从这角度这个过程也是有效的,并非真是假的。
   举个例子说,如果一台物理服务器上,安装了多个数据库软件,这些数据库软件版本不一样,这也算假洗的范围吗?洗出来的结果是否真实可靠?

1. 真spa(有连接旧环境的就是真spa):

    1.1生产环境真正推荐: 3台。比如旧环境(源)10g一台,新环境(目的)11g一台。外加安装了11g的只是 为了连接前两台进而运行spa的一台“公正”机。
    1.2新特性OU标准教学环境:1台。比如在一台机器上旧环境(源)10g,新环境(目的)11g。在这台机器上运行spa,连接到10g和11g上,各洗一次。

2. 假spa:
   中国OU的11gOCM考前辅导标准环境。没有10g,在一台机器的11g中,该optimizer_feature_enable=10.2.0.1洗一次,再改回来11.2.0.1洗一次。

假洗仅供参考。

2,考试过程中,是否在奇数机,偶数机之间,通过scp命令传递dump数据,进行真洗?

考试过程中都是假洗。

BEGIN
   dbms_sqltune.create_sqlset(sqlset_name => 'STS_HR', sqlset_owner =>'SYSTEM');
   END;
   /
   DECLARE
   bf VARCHAR2(110);
   BEGIN
   bf := q'#UPPER(PARSING_SCHEMA_NAME) = 'HR' AND UPPER(SQL_TEXT) NOT  LIKE 'APPLICAT%'  #';
   dbms_sqltune.capture_cursor_cache_sqlset( sqlset_name=>'STS_HR', time_limit=>'600',
                                           repeat_interval=>'5',
                                           basic_filter=>bf,
                                           sqlset_owner=>'SYSTEM');
    END;
    /  

存储过程没问题,在捕获过程中,前台当然要有sql语句在跑。至于执行与否工作负载脚本,你决定。

4,创建数据库链的过程发现,如果密码或者tns写错,命令依然可正常执行,考场上如何测试数据库连本身是正常的?
   直接测试查询,是否是最简便的办法: select * from v$datafile@数据库链

由于是假洗,不必做 public database link。

5,实验环境中在最后SQL Performance Analyzer Workflows的时候,选择Upgrade from 10.2 or 11g.
   这里有2个选项pre_upgrade trial , post-upgrade trial,分别选择旧,新2个数据库链进行对比

   上课的时候提到Guided Workflow选项,该选项是否用于11G-11G的spa?
   Guided Workflow选项里面有4个步骤,其中2,3步Create SQL Trial in Initial Environment,Create SQL Trial in Changed Environment
   是不是分别指的,源环境,目的环境?为了公平起见,远程的源环境用数据库链进行连接,那么本地的目的环境也用数据库链进行连接?
   但是本地无论如何都比远程的快,即便本地也用了数据库链?如果数据量较大,那么远程环境是否会受到网络的影响?导致结论不准确?
   如果确实因为网络导致不准确,那么实际生产环境中正确的做法是什么?或者说找第三台服务器做中间机来做?为了公平?

答案都是“是”。Guided Workflow包含一切可能性。可用于9i-11g。相当于用户定制。

6,实验第六步,expdp了整个apps用户的文件,然后传递到目标库上,再impdp吃进去。
   这个过程在生产环境中也是如此吗?岂不是无比的痛苦?如果生产环境里的HR用户数据很多,可能expdp出来就要几个小时,再impdp吃进去几个小时~
   这样等于是复制了整个hr用户的环境,然后先前第四部的时候,可能只捕获了10分钟的数据,可是准备工作持续了一天时间,这样合理吗?
   如果说数据导入导出不可避免,那么捕获工作负载的时间是否长一些更合适?实际工作中如何选择?

应该duplicate一个测试库,就不用expdp和impdp了。练习册只是教学目的而已。
回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2016-9-20 16:39:55 | 显示全部楼层
感谢指教~
还有2处想不明白
1,共第三台机器进行公正的SPA,执行的是第三台机器上的DBMS包,用database link去连接另外两台源主机与目的主机。
     那么此时,洗的过程中Create SQL Trial in Initial Environment和Create SQL Trial in Changed Environment这2个步骤,消耗的是哪台机器的资源?
     是这台中间机吗?还是实际的2台源与目的主机?

2,关于考试在这个地方的考点,前面回复修改optimizer_feature_enable参数来模拟10G和11G的环境。
     这样在最后洗的时候,由于实际只有一个库在运行,所以没有用database link去连接源数据库(假的那个),这样称为假洗,我明白了。
     但是如果连着数据库的话,在Upgrade from 10.2 or 11g的选项下面,必须指定数据库链,那么考试的时候无法指定,怎么进行下去??
     是不是只能选择Guided Workflow 来做,在step2 3的时候都选择execute local? 感觉不对,请唐SIR指教~

回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2016-9-20 22:31:27 | 显示全部楼层
lujiaguai 发表于 2016-9-20 16:39
感谢指教~
还有2处想不明白
1,共第三台机器进行公正的SPA,执行的是第三台机器上的DBMS包,用database l ...

1. 实际的2台源与目的主机的资源
2. 还有一个选项“参数修改”明白了?
回复 支持 反对

使用道具 举报

81

主题

181

帖子

781

积分

高级会员

Rank: 4

积分
781
 楼主| 发表于 2016-9-20 23:51:00 | 显示全部楼层
本帖最后由 lujiaguai 于 2016-9-21 08:35 编辑

晚上出去散步的时候,以为自己想通了,看来还是没有明白,关于第二个假洗的问题
我是这么想的
1,修改参数变成10G的库,然后进行工作负载的捕获,执行pack包,生成sql tuning set
2,然后打开图形界面执行Guided Workflow ,第一步正常选择负载
3,第二步选择本地execute local,然后到此为止算是假洗了一次
4,回头修改参数变回11G
5,然后去图形界面继续刚才的Guided Workflow ,执行第三步,也选择本地execute local
6,最后对完成

按上面的想法,我本来以为想通了,结果唐SIR说“参数修改”选项,明天再去看看
如果再有不明白,周末上课的时候现场去问,就不在这里继续了

----------------------------------------

看到parameter change里的内容了,果然更加的简单粗暴,感谢提醒~

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-11-24 19:23 , Processed in 0.035900 second(s), 24 queries .

快速回复 返回顶部 返回列表