Oracle11g ASMCMD新命令

Oracle10g的ASMCMD命令,提供了通过命令行方式管理ASM的接口,但是功能非常有限,比如无法在asm和os之间直接复制文件,就是一件很让人头痛的事情,只能通过rman或者dbms_file_transfer实现。

Oracle11g的ASMCMD终于加上了一个比较实用的cp命令,不但可以在ASM和OS之间复制文件,也可以在不同的ASM Instance和Diskgroup之间复制文件,这就非常的方便了。

ASMCMD> cp +dgtest/test/datafile/USERS.264.646186565 users.dbf
source +dgtest/test/datafile/USERS.264.646186565
target users.dbf
copying file(s)…
file, E:\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\USERS.DBF, copy committed.

Read more of this post

Oracle11g ASM强大的新工具AMDU

在上次ASM故障恢复的案例中,强烈的感觉到ASM过于封装的特性,虽然极大的减轻了DBA的管理负担,但同时也使得灾难发生的时候处理的难度更高。

刚刚在著名的Pythian上看到一篇不错文章,提到Oracle11g的ASM提供了一个新的工具amdu,这个名字貌似就是ASM+DUL的简写,很好很强大。目前还没有实际使用过,看了看帮助,其功能真的非常厉害,对于磁盘头损坏之类的故障处理起来非常的方便,也可以直接从diskgroup里抽取出数据文件。有了这个东东,d.c.b.a开发基于ASM的AUL的想法基本可以放弃了,哈哈。有时间可以好好的研究下。

文章中还提到两个rac和asm方面非常值得一看的网站:
http://canali.web.cern.ch/canali/
http://blogs.oracle.com/AlejandroVargas/

Read more of this post

Oracle11g sql*plus新特性:show spparameters

在sql*plus中显示某个或者某些初始化参数的值,我们已经习惯了用show parameter/show parameters命令,这个命令的结果显示的是v$parameter视图中的信息。在我以前的一篇文章中,简单说明了v$parameter,v$system_parameter和v$spparameter视图的区别。如果我们使用alter system set parameter=value scope=spfile命令修改了spfile中的参数值,但是保留了memory中的参数值,通过show parameter则无法显示spfile中的信息。在Oracle11g之前,只有通过直接查询v$spparameter视图获得spfile中的参数设置。而在Oracle11g中,终于也提供了一个类似的新命令,这就是show spparameter/show spparameters。Oracle在一些细节方面也是在做出持续不断的改进,虽然这些改进可有可无,不过只要这些改变能提升DBA的工作效率,何乐而不为呢?

SQL> show parameter timed_statistics

NAME TYPE VALUE
———————————— ———– ——————————
timed_statistics boolean TRUE
SQL> show spparameter timed_statistics

SID NAME TYPE VALUE
——– —————————– ———– —————————-
* timed_statistics boolean

Read more of this post

Oracle11g新特性:Active Database Duplicate

利用Rman的duplicate命令,可以很方便的将原库复制出一个新库,这在诸如data guard等应用中非常有用。但是在Oracle11g之前,执行duplicate要求首先对原库用rman进行备份,然后将备份复制到复制库,同时连接原库(做为target)和复制库(做为auxiliary),执行duplicate命令进行复制。在Oracle11g中推出的active database duplicate特性,则省略了进行rman备份的步骤,能够直接从原库复制出新库,对于一些大型的数据库来说,这个特性可以节省很多操作时间。本文将简单的演示一下操作过程(在同一个主机上执行duplicate):

原库:ora11g(归档模式)
新库:oradup
操作系统:windows

一、首先手工创建新的instance
包括windows服务,dump路径,初始化参数文件,password文件,监听配置等等,这些步骤就不赘述了。理论上,初始化参数最少只需要指定db_name一个参数就可以了。当然,简单起见,最好还是设置如下参数:

DB_NAME=ORADUP
CONTROL_FILES=(‘F:\ORACLE\ORADATA\ORADUP\CONTROL01.CTL’,
‘F:\ORACLE\ORADATA\ORADUP\CONTROL02.CTL’)
DB_FILE_NAME_CONVERT=(‘F:\ORACLE\ORADATA\ORA11G’,’F:\ORACLE\ORADATA\ORADUP’)
LOG_FILE_NAME_CONVERT=(‘F:\ORACLE\ORADATA\ORA11G’,’F:\ORACLE\ORADATA\ORADUP’)
log_archive_dest_1=F:\ORACLE\ARCH\ORADUP
compatible=11.1.0

经过试验,必须加入compatible=11.1.0的参数,如果不加,默认是compatible=11.0.0,那么rman duplicate最后在创建控制文件的时候会报错:

RMAN-03002: Duplicate Db 命令 (在 10/23/2007 22:43:40 上) 失败
RMAN-06136: 来自辅助数据库的 ORACLE 错误: ORA-01503: CREATE CONTROLFILE 失败
ORA-01130: 数据库文件版本 11.1.0.0.0 与 ORACLE 版本 11.0.0.0.0 不兼容
ORA-01110: 数据文件 1: ‘F:\ORACLE\ORADATA\ORADUP\SYSTEM01.DBF’

这个应该算是一个bug吧,11.0.0应该是beta版的版本号

加入log_archive_dest_1参数,则是因为最后需要复制原库的归档日志到备库,如果两个库都没有设置归档路径,那么都会放在默认的$ORACLE_HOME\rdbms目录下,就会发生冲突。当然,如果原库和新库在不同的主机上,则只需要db_name和compatible就足够了。

Read more of this post

无觅相关文章插件,快速提升流量