【翻译自mos文章】尽管指定了目的地,asmcmd cp命令还是在 +DATA/ASM 下创建文件,mosasmcmd
尽管指定了目的地,asmcmd cp命令还是在 +DATA/ASM 下创建文件参考原文:
ASMCMD Cp Creates Files In +DATA/ASM Instead Of Destination Specified (Doc ID 1488934.1)
适用于:
Oracle Database - Enterprise Edition - Version 11.2.0.3 and later
Information in this document applies to any platform.
症状:
在11.2.0.3版本上,使用asmcmd的cp命令 从文件系统拷贝文件到asm里边,
在asm里边创建的文件 却创建在了 +DATA/ASM/DATAFILE 下边,并且在+DATA/DB/DATAFILE下边创建了一个该文件的别名。
原因:
这个行为归因于别名(alias).尽管oracle db 开发部门正在 对bug 12640351做一个改进,
该bug是 12640351 : ASMCMD NEEDS PARAMETER TO COPY FILES INTO A GIVEN SYSTEM ALIAS
解决方法:
使用DBMS_FILE_TRANSFER or RMAN 来复制文件,直到 下面所说的在将来的release中被实现。
一个需求是拷贝数据库文件(数据文件,控制文件等等)到asm中的指定目录下。
因此,需要为cp命令添加一个额外的参数来指定system alias.
你拷贝一个文件到asm中,asm会在 +DISKGROUP/your_specific_path/ 下创建一个别名,该别名指向的文件是被拷贝到+DISKGROUP/ASM/..下的。
虽然该文件应该在 +DISKGROUP/your_specific_path/ 下。如下是一个例子:
ASMCMD> cp /oracle/C15/sapbackup/cntrlC15.dbf +DATA/C15/CONTROLFILE/cntrlC15.dbf
copying /oracle/C15/sapbackup/cntrlC15.dbf ->
+DATA/C15/CONTROLFILE/cntrlC15.dbf
ASMCMD> ls -l
Type Redund Striped Time Sys Name
CONTROLFILE UNPROT FINE FEB 03 08:00:00 Y Current.295.737125033
N cntrlC15.dbf => +DATA/ASM/CONTROLFILE/cntrlC15.dbf.332.742121853
oracle db 开发部门正在找一个方法:要么拷贝文件到正确的目录 或者系统别名(不是 '+/ASM/...'),要么 添加cp时 一个参数。
同时,变通的方法是使用DBMS_FILE_TRANSFER or RMAN,这两个工具会拷贝文件到正确的目的地。
oracle 10R2推出了asmcmd这个工具,可以用来管理asm存储上的文件。
1.使用asmcmd命令必须先启动asm实例,不然会有以下报错:rac2-> asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)2.使用asmcmd必须先指定ORACLE_HOME和ORACLE_SID,注意此处ORACLE_SID是asm的sid,不然会报错:rac2-> asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)3.asmcmd命令带p参数和不带p参数的作用:
带p,使用asmcmd将显示当前路径:rac2-> asmcmd -p
ASMCMD [+] > ls
DG1/
RECOVERDEST/
ASMCMD [+] > cd DG1
ASMCMD [+DG1] > ls
DEVDB/
ASMCMD [+DG1] > cd DEVDB
ASMCMD [+DG1/DEVDB] >不带p,不显示当前路径:rac2-> asmcmd
ASMCMD> ls
DG1/
RECOVERDEST/
ASMCMD> cd DG1
ASMCMD> ls
DEVDB/
ASMCMD> cd DEVDB
ASMCMD>4.其他相关参数,可使用help查看ASMCMD [+] > help
asmcmd [-p] [command]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects, and ASMCMD establishes a
bequeath connection to it, in the same manner as a SQLPLUS / AS
SYSDBA. The user must be a member of the SYSDBA group.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "h......余下全文>>