作为原磁盘设备的替换方式Oracle g中引入了自动存储管理(ASM)来保存与Oracle相关的文件同原磁盘一样ASM分区(称为磁盘组)也没有文件系统不能在操作系统级别上进行直接的文件浏览
因为不能使用普通的命令来复制和删除文件(UNIX中的cp和rmWindows中的copy和del命令)从而给维护带来了挑战在gR发布中我们可以使用RMAN命令备份和恢复ASM文件使用ASMCMD命令可以浏览和操纵目录结构不过Oracle g包中的DBMS_FILE_TRANSFER是处理ASM的另一种方式
DBMS_FILE_TRANSFER可以在同一台Oracle服务器上或两台Oracle 服务器之间复制文件它使用目录对象来指定源目录和目的目录因为目录对象支持ASM路径名称所以DBMS_FILE_TRANSFER也支持ASM路径名这使得从常规文件系统的ASM存储区移入和移出文件变得十分简单
DBMS_FILE_TRANSFER可以在常规文件系统存储区中拷贝任何类型的文件但是它只能将Oracle文件移入或移出ASM磁盘组数据文件日志文件(包括档案日志)和控制文件都可以被复制但是不能将initora文件的拷贝放在磁盘组中
假定你使用一个ASM磁盘组来存储档案日志并且需要从中提取一些信息传递给数据保护可信服务器列表A演示了在我的服务器的ASM磁盘组上如何使用CREATE DIRECTORY命令定义档案目录以及如何在文件系统中定义一个临时目录列表B演示了如何使用DBMS_FILE_TRANSFER的COPY_FILE过程复制日志文件
游标遍历选自动态执行视图V$ARCHIVED_LOG中的日志文件名通过SUBSTR提取出文件名部分和序列号然后生成一个新的文件名最后调用DBMS_FILE_TRANSFER来执行复制操作同时我们还可以使用包中的GET_FILE和PUT_FILE过程从其它服务器获得日志文件或传递到其它服务器中
Bob Watkins (OCP MCITP MCDBA MCT)作为技术培训师咨询专家和数据库管理员是一位有年从业经验的计算机专家他是位于达拉斯/福特沃斯地区数据库咨询与培训公司BWatkins的高级咨询师和管理伙伴