Author: mac
-
【11g新特性】SPM SQL PLAN MANAGEMENT执行计划管理流程图
Oracle SPM SQL PLAN MANAGEMENT执行计划管理流程图如下: SQL> create table mac_spm tablespace users as select * from dba_objects; Table created. SQL> analyze table mac_spm compute statistics; Table analyzed. SQL> alter session set optimizer_capture_sql_plan_baselines=true; Session altered. SQL> SQL> select sum(object_id) from mac_spm; SUM(OBJECT_ID) ————– 2911455720 SQL> select sum(object_id) from mac_spm; SUM(OBJECT_ID) ————– 2911455720 alter session set…
-
使用CLI解析Java命令行参数
最近准备用Java写一个数据抽取的小玩样,不过距离我上一次用Java写程序已经过去了N(N>4)年了;没有读过<Java编程思想>,深深地觉得现在写出来的代码很不Java风格….. 因为需要在命令行中用到比较复杂的参数(argument),所以想到利用CLI库来解决这一块。 CLI库的Jar文件可以从Apache Commons下载到,目前比较成熟的是CLI 1.2版本。 要使用CLI,我们需要创建一个Options Class的实例对象: Options Maclean=new Options(); 通过该Options对象我们可以定义命令行程序可接受的参数(argument)。加入参数的一种方式是使用addOptions()方法: JDUL.addOption(“END” ,true, “select the Big or Little Endian”); 为命令行程序定义可接受参数后,还需要命令行解析器CommandLineParser进一步解析输入的参数: BasicParser parser = new BasicParser(); CommandLine cl = parser.parse(JDUL, args); 下面是一段完整的命令行参数解析示例代码: package par; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.ParseException; public class Main { /** * @param args the command line arguments…
-
Convert your single instance to 10g RAC by manual
随着RAC在国内的流行,出现了不少将原本单节点数据库转换成RAC的需求;事实上这种single instance到RAC的转换并不困难,可以直接在原有单节点数据库上修改一些初始化参数并运行脚本来完成转换;这里我们通过实例向大家展示转换工作的大致步骤和注意事项。 示例环境中的节点名与示例名对应关系如下,注意Instance Name为PROD21和PROD22。 Node Name Instance Name DB NAME vrh1 PROD21 PROD2 vrh2 PROD22 PROD2 以下操作均应当在1号节点上完成 一、在各节点上安装clusterware,并确保CRS正常启动;针对clusterware的安装在这里不做展开 [oracle@vrh1 u01]$ crsctl check crs CSS appears healthy CRS appears healthy EVM appears healthy /* 应当确保所有RAC节点上的CRS均正常启动 */ [oracle@vrh1 u01]$ crsctl query crs activeversion CRS active version on the cluster is [10.2.0.4.0] 二、在各个节点上以Real Application Cluster选项安装Oracle Database Software软件,一般我们要求DB的版本要与clusterware的版本一致,所以如我们的环境中CRS的版本是10.2.0.4.0,那么DB的版本最好也是10.2.0.4.0;Database Software可以安装在共享存储上(shared…
-
Restarting dead background process QMNC一例
一套10.2.0.5 的数据库,告警日志中反复出现”Restarting dead background process QMNC”的信息,具体日志如下: Thu Jun 07 10:38:28 GMT 2012 Restarting dead background process QMNC QMNC started with pid=271, OS id=17059 Thu Jun 07 10:43:08 GMT 2012 Restarting dead background process QMNC QMNC started with pid=234, OS id=18263 但是通过ps 命令查看 重启的QMNC进程很快又消失掉, Metalink Note Restarting dead background process QMNC recorded in…
-
Oracle内部错误ORA-00600:[2667]一例
一套Power AIX上的9.2.0.1系统在数据库打开过程中遇到ORA-00600:[2667]内部错误,详细日志如下: 如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected] Wed Mar 9 19:03:38 2011 RESETLOGS is being done without consistancy checks. This may result in a corrupted database. The database should be recreated. RESETLOGS after incomplete recovery UNTIL CHANGE 117699122479 Resetting resetlogs activation ID 2197911857 (0x83017931) Wed Mar 9 19:03:47 2011 LGWR:…
-
11g新特性:Streams同步捕获
11g中引入了新的Streams特性:Synchronous Capture同步捕获。不同于传统Streams的捕获机制,Synchronous Capture同步捕获不基于归档日志或者在线重做日志来捕捉数据库中的变化。取而代之,同步捕获使用另一种内部机制来捕捉数据库中的变化并对这些捕获的变化实施格式化,最终形成一条LCR(Logical change Record)。这些由同步捕获捕捉到得记录被称为persistent LCRs。同步捕捉总是将记录入列(enqueue)到一个提交时队列中(commit-time queue)以保证事务的顺序准确。 即便我们采用了同步捕捉来替代传统的捕捉方式,propagation和apply并不会有什么不同,这我们无需担忧。 同步捕获可以捕捉由UPDATE、INSERT、DELETE和MERGE四种DML语句产生的DML变化。因为其不依赖于重做和归档的特性,其甚至可以被用在非归档模式下,并且不要求打开任何追加日志。 同步捕捉可能适用于以下几种情景中: 无法使用基于重做(redo-based)的传统捕获方式(例如在Oracle database Standards Edition中) 无法使用重做或基于日志挖掘相关的功能,但可以用到其他Streams进程 要求在用户事务发生的同时执行捕获 捕获的变化被要求存放在磁盘上的队列中 克隆较少更新的表上的数据 同步捕获支持对以下数据类型列的DML变更捕捉: VARCHAR2 NVARCHAR2 NUMBER FLOAT DATE BINARY_FLOAT BINARY_DOUBLE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND RAW CHAR NCHAR UROWID 需要注意的是不同于传统捕获方式,同步捕获不能使用如ADD_SCHEMA_RULES或ADD_GLOBAL_RULES存储过程建立。同步捕获仅能通过ADD_TABLE_RULES建立白名规则(table rule with a positive rule set),而不支持建立黑名规则(negative…
-
在Unix上使用管道压缩exp导出文件
exp导出文件大到文件系统放不下怎么办? 在Unix上一种行之有效的解决方法是创建一个命名管道,因为exp的导出dumpfile的内容是顺序的,可以将其内容重定向到管道并对该管道实施压缩操作,从而实现其直接的导出文件就是压缩过的。下面我们举出一个使用该中管道压缩的例子: [oracle@vrh1 exp]$ exp system/oracle file=maclean.dmp tables=maclean.tv Export: Release 10.2.0.4.0 – Production on Fri Apr 1 17:03:09 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options Export done in…
-
为10g RAC Cluster添加节点
RAC体系为系统扩容开创了一条新的道路:只需要不断向集群Cluster中加入新的服务器就可以了。这里我们就来介绍一下如何为10g RAC Cluster增加节点;实际上这并不复杂,甚至可以说是很简单的。为现有的Oracle 10g RAC添加节点大致包括以下步骤: 配置新的服务器节点上的硬件及操作系统环境 向Cluster集群中加入该节点 在新节点上安装Oracle Database software 为新的节点配置监听器LISTENER 通过DBCA为新的节点添加实例 我们假设当前RAC环境中存在2个节点,分别为vrh1和vrh2;该RAC环境中clusterware和database的版本均为10.2.0.4,需要加入该Cluster的新节点为vrh3。 一、在新的服务器节点上配置操作系统环境 这包括配置该节点今后使用的public network公用网络和private network接口,不要忘记在hosts文件中加入之前节点的网络信息,并将该份完整的hosts文件传到集群Cluster中已有的节点上,保证处处可以访问 同时需要在原有的基础上配置oracle(或其他DBA)用户的身份等价性,这需要将新节点上生成的id_rsa.pub和id_dsa.pub文件中的信息追加到authorized_keys文件中,并保证在所有节点上均有这样一份相同的authorized_keys文件 调整新节点上的操作系统内核参数,保证其满足今后在该节点上运行实例的内存要求以及10g RAC Cluster的推荐的udp网络参数 调整新节点上的系统时间以保持同其他节点一致,或者配置NTP服务 保证原有Cluster中所有节点上的CRS都正常运行,否则addNode时会报错 配置clusterware和database软件的安装目录,要求路径和原有节点上的一致 二.向Rac Cluster中加入新的节点 1.在原有RAC节点上(vrh1)以oracle用户身份登录,设置合理的DISPLAY显示环境变量,并运行$ORA_CRS_HOME/oui/bin目录下的addNode.sh脚本 [oracle@vrh1 ~]$ export DISPLAY=IP:0.0 [oracle@vrh1 ~]$ cd $ORA_CRS_HOME/oui/bin [oracle@vrh1 bin]$ ./addNode.sh 2.若OUI被正常调用则会出现欢迎界面,并点击NEXT: 3.在”Specify Cluster Nodes to Add to Installation”界面下输入公共节点名、私有节点名和VIP节点名(之前应当在所有节点的/etc/hosts文件中都配置了): 4.出现”Cluster Node Addition Summary”界面Review一遍Summary信息,并点击NEXT: 5.出现”Cluster Node Addition Progress”界面,OUI成功将安装好的clusterware软件传输到新的节点后,会提示用户运行多个脚本包括:orainstRoot.sh(新节点)、rootaddnode.sh(运行OUI的原有节点)、root.sh(新节点): 6.运行之前提示的三个脚本:…
-
How to recover from root.sh on 11.2 Grid Infrastructure Failed
从10g的clusterware到11g Release2的Grid Infrastructure,Oracle往RAC这个框架里塞进了太多东西。虽然照着Step by Step Installation指南步步为营地去安装11.2.0.1的GI,但在实际执行root.sh脚本的时候,不免又要出现这样那样的错误。例如下面的一例: [root@rh3 grid]# ./root.sh Running Oracle 11g root.sh script… The following environment variables are set as: ORACLE_OWNER= maclean ORACLE_HOME= /u01/app/11.2.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: The file “dbhome” already exists in /usr/local/bin. Overwrite it? (y/n) [n]: The file “oraenv” already exists in /usr/local/bin. Overwrite it?…
-
Examine 11g automatic block Corruption recovery
11g的高可用框架中DataGuard为我们带来了大量有用的特性,最引入注目的显然是Active Data Guard,这一特性几乎彻底改观了Oracle HA的原有格局。除了Active Data Guard外Automatic Block Media Repair即自动的块介质恢复也是11g中数据卫士一个不容忽视的特色。该特性通过后台进程ABMR自动将物理备库(physical standby)上的健康数据块传输到主库(primary database)上以替换在主库发现的已损坏的数据块。同样的若物理备库上发现数据块损坏那么也可以利用到以上特性来修复。注意使用该特性无需额外设置db_lost_write_protect参数为非默认的NONE值,ABMR的自动修复不依赖于该参数。 深入研究的话可以发现实际控制Automatic Block Media Repair特性的是一系列隐藏参数,它们包括: _auto_bmr enabled enable/disable Auto BMR _auto_bmr_req_timeout 60 Auto BMR Requester Timeout _auto_bmr_sess_threshold 30 Auto BMR Request Session Threshold _auto_bmr_pub_timeout 10 Auto BMR Publish Timeout _auto_bmr_fc_time 60 Auto BMR Flood Control Time _auto_bmr_bg_time 3600 Auto BMR Process Run Time _auto_bmr_sys_threshold 100…