作者归档:Lunar

更改db_unique_name后,修复磁盘组依赖关系和其他crs中的相关配置

做ADG时,修改了数据库的db_unique_name后,alert中报错如下: 这个错误不影响使用,但是终归是别扭的…… 检查crs中数据库的配置: 这里可以看到,以前的spfile(主库的)位置是:+DATA/lunardb/spfilelunardb.ora 此时,即便是手动修改了参数文件位置为 SPFILE=’+DATA/mynewdb/spfilemynewdb.ora’,重启crs后,启动数据库也会有报错信息: 因为它还是自动修改为crs的db资源中的信息,并把以前我手工修改的信息做了备份: 可以修改crs中db的spfile位置: srvctl modify database -d lunardb -p ‘+DATA/mynewdb/spfilemynewdb.ora’ 再次检查,可以发现spfile位置已经正确了: 这里很显然,除了spfile位置,Database unique name也是不对的,因为crs中保存的db信息是根据db_unique_name来判断的,只能通过remove database,然后再add database,add instance等等: 好了,alert中信息正常了:

发表在 RAC | 标签为 | 留下评论

使用statspack监控Active Dataguard的性能—2-创建ADG的性能报告

后台执行一个脚本,模拟登录风暴 [oracle@lunar ~]$ nohup ./login.sh & [1] 27907 [oracle@lunar ~]$ nohup: appending output to `nohup.out’ [oracle@lunar ~]$ jobs [1]+ Running nohup ./login.sh & [oracle@lunar ~]$ jobs [1]+ Running nohup ./login.sh & [oracle@lunar ~]$ jobs [1]+ Running nohup ./login.sh & [oracle@lunar … 继续阅读

发表在 Dataguard | 一条评论

使用statspack监控Active Dataguard的性能—1-安装篇和简介

Statspack的功能早在Oracle 8.1.6就可以使用(Oracle 8.1.7正式随产品发布),这里不再赘述,baidu google上大把大把的…… 从Oracle 10.1开始,Oracle引入了AWR(Automatic Workload Repository),其功能较之statspack不是强大了一星半点(AWR,ASH,ADDM,SPA,SPM……),statspack一度在10g后被搁置了…… 随着Oracle 11.1 ADG的出现,Statspack有了新的用途……我们都知道ADG是只读打开的,其awr跟主库的是一致的,监控ADG上的查询业务的功能,又变成了使用脚本和crontab等的手工作坊式管理……Oracle为此给statspack增加了新的功能: @?/rdbms/admin/sb* 在statspack目录下($ORACLE_HOME/rdbms/admin/),有两类statsapck相关的文件: 前面的sp开头的应该都不陌生,跟9i和8i的都一样的: 后面sb开头的是ADG中在备库上使用的一套脚本(sb,也就是standby): 具体的安装过程,参加下面的附件sbcreate 如果ADG是RAC,那么需要使用sbaddins.sql将其余的节点加入到statspack中。

发表在 Dataguard, Performence Tuning | 标签为 , , , | 一条评论

Cascade Standby切换测试(级联ADG的切换)

当前环境: A: 当前是Primary ,Oracle 11.2.0.3,本次切换后为Physical Standby B: 当前是Physical Standby,本次切换后为Cascade Standby(因为这个库是11.2.0.4,版本不一致,因此只能做standby,不能open) C:当前是Cascade Standby,Oracle 11.2.0.3,本次切换后为Primary ============================================================================================================ 1,级联环境下,如果到Cascade的路径是enable,则在做switchover时,主库上查询会报:“RESOLVABLE GAP” 解决方法是将主库到cascade的归档路径设置为defer ; ============================================================================================================ ============================================================================================================ 2,如果主库到备库的归档路径(A到B的)是defer,那么switchover时,检查主库状态会是“NOT ALLOWED”: 解决方法是: 将A到B的路径设置为enable ============================================================================================================ ============================================================================================================ 将A库切换为Standby: ============================================================================================================ ============================================================================================================ 3,同理,Cascade不能切换为Primary,也需要enable C库到A库的归档路径: ============================================================================================================ ============================================================================================================ 4,还需要B库到C库的归档路径: ============================================================================================================ ============================================================================================================ 将C切换为primary: ============================================================================================================ 检查C库: ============================================================================================================ … 继续阅读

发表在 Dataguard | 标签为 , , | 留下评论

Linux上,使用screen在后台执行scp(或者其他长时间的操作)

如果有些操作需要长时间执行,没有vnc的时候(也不通过写脚本的方式,比如scp命令),那么可以通过screen放到后台操作: 在OEL 5.8上缺省就安装了screen,但是在OEL 5.10上,需要自己单独安装。 下面,我使用Oracle的yum源安装screen: 下面的例子就是使用screen在后台创建窗口,执行scp传输rman备份集: 首先可以创建一个窗口,起名字为lunar(可以开多个窗口): 接着,你会看到一个全新的shell: 按Ctrl+a+d,就可以讲这个窗口detached。 然后使用screen -ls可以看到刚才的窗口的进程号等信息: [root@lunar ~]# screen -ls There is a screen on: 11012.lunar (Detached) 1 Socket in /var/run/screen/S-root. [root@lunar ~]# ps -ef|grep 11012 root 11012 1 0 08:10 ? 00:00:00 SCREEN -S … 继续阅读

发表在 FAQ | 标签为 , | 留下评论

配置Cascade Standby

环境介绍: 1,VM1: OEL5.8+Oracle 11.2.0.3,考虑到笔记本的性能不行,因此最初考虑的是这个VM兼顾了Physical Primary 和Casecade Standby的重任。数据库是文件系统 2,VM2: OEL5.10+11.2.0.4,数据库是ASM的环境(Oracle Restart),作为Physical Standby。 考虑到版本兼容的问题,下一篇我讲切换他们的角色; 1,让VM2做为Cascade Standby的角色(因为不同版本,不能使用正常的open,只能open upgrade,因此,如果作为Physical Standby的话,不能放倒Open read only上)。 2,让VM1上的2个11.2.0.3的库分别作为Primary和Physical standby角色 创建standby controlfile和pfile: 创建需要的目录: 使用备份进行恢复: 使用screen在后台传输rman备份集: 安装cascade的screen(这个步骤跟本次操作没有关系,不过是临时遇到了,顺手做了一下): 配置主库的参数: Physical Standby的参数文件: Cascade Standby的参数: 其余的过程就简单了,跟普通的ADG没什么分别: 1,分别在physical standby和cascade standby上做恢复standby controlfile和restore database。 2,使用alter database recover … 继续阅读

发表在 Dataguard | 标签为 , , | 留下评论

Standalone – 修改主机名和IP地址

新本本性能一般,用VM跑RAC很费劲,因此从朋友那里copy了一个STANDALONE(ASM+SINGLE DATABASE),然后直接修改主机名后,发现css信息异常,且HAS不能启动…… 直接修改主机名为lunar后,HAS的信息为: 重启has后,发现HAS启动不了,报错如下: 根据“error location: scrsearch1”和“cant open scr home dir scls_scr_getval”,可以看出这个跟修改主机名有关系,将主机名称修改会议前的dabaobao: 修改回到以前的主机名“dabaobao”以后,再次重启has,可以启动了,可见,HAS的架构非常简单…… 这里,出了ora.DATA.dg这个资源异常外,其他资源是正常状态,此时,我们使用roothas.pl删除HAS的配置: 然后,修改主机名为lunar,再次使用roothas.pl,让他自动根据当前的主机名和IP来生成配置信息: 可见,这里已经生产了节点名为lunar的has配置信息 添加asm: 添加ASM DISKGROUP: 这个错误是因为没有找到合适的disk,于是修改参数: 可以看到,现在磁盘组都mount上了 然后我们创建spfile,准备重启has: 重启HAS: 等待一会儿,一切ok了: 总结: 1,在发现has或者crs异常时,不要stop crs或者stop has 2,修改主机名或者IP时,发现错误了,不要stop crs或者stop has(后续的一些操作需要这些资源) 3,在HAS环境中修改主机名和IP的过程: (1)先用roothas.pl -deconfig -force清理老配置 (2)修改主机名(/etc/hosts,/etc/sysconfig/network,hostname等等) (3)./roothas.pl (自动根据当前配置生成新的配置信息) (4)添加ASM资源 (5)添加磁盘组 … 继续阅读

发表在 ASM, RAC | 标签为 , , | 留下评论

测试在线重定义功能

9i开始,Oracle引入了在线重定义功能,但是bug比较多,10g时,如果数据量比较大,有些特殊场景,也有bug。 因此,前几天有同事需要测试在线重定义的功能,我查了下MOS,做个demo,做一个功能测试,如果生产上在低版本数据库执行在线重定义功能时,请仔细查看MOS上相关的常见问题。 –创建测试表 –收集统计信息 –创建空的分区表 –执行Redefinition.can_redef_table,验证unpar_table表是否可以在线重定义,如果不可以会给出建议: EXEC Dbms_Redefinition.can_redef_table(USER, ‘unpar_table’); 执行这一步的时候,如果缺少如下权限,那么会报如下错误: 第 1 行出现错误: ORA-06550: 第 1 行, 第 7 列: PLS-00201: 必须声明标识符 ‘DBMS_REDEFINITION’ ORA-06550: 第 1 行, 第 7 列: 解决方法: grant execute on dbms_redefinition to lunar; 执行这一步的时候,如果缺少如下权限,那么会报如下错误: 第 1 … 继续阅读

发表在 FAQ | 标签为 , | 留下评论

exadata巡检报告的模板

最近有几个兄弟要exadata巡检报告的模板,完善了一下,大概200页左右: 由于里面有大量客户的资料,因此暂时设置为需要口令下载的,有需要的兄弟直接联系我 后续如果有机会,将不断更新,加入新的内容,O(∩_∩)O哈哈~ 不过现在没有环境了,有需要的可以跟我联系,我免费检查,这样一举两得,我完善了自己的知识库,朋友们可以完成工作任务,O(∩_∩)O哈哈~ Exadata_HealthCheck_模板下载地址: Exadata_HealthCheck_模板

发表在 日常运维 | 标签为 , , | 10 条评论

让“select min(xxx),max(xxx) from xxx”走索引

首先,做一个测试表: 在extent_id列上创建非唯一索引: 下面的语句没有走索引: 手工指定IDX_LUNAR_EXTENT_ID时,也不走索引: 指定该列为非空时,可以走索引(Oracle的索引不保存空值): 可以看到,无论是否使用hint都走索引了: 再次验证,依然这个结果: LUNAR@lunar>alter table lunar modify extent_id null; Table altered. Elapsed: 00:00:00.01 单独查询最小值或者最大值时,也可以走索引,采用“INDEX FULL SCAN (MIN/MAX)”: 假设,在不能修改表结构的情况下,怎么才能让“select min(extent_id),max(extent_id) from lunar”走索引呢? 参考了网上的一些建议,改写sql如下:

发表在 Performence Tuning | 标签为 | 留下评论