用DBMS_FILE_TRANSFER复制OracleASM
作为原磁盘设备的替换方式,oracle 10g中引入了自动存储管理(asm)来保存与oracle相关的文件。同原磁盘一样,asm分区(称为磁盘组)也没有文件系统,不能在操作系统级别上进行直接的文件浏览。
因为不能使用普通的命令来复制和删除文件(unix中的cp和rm,windows中的copy和del命令),从而给维护带来了挑战。在10gr2发布中,我们可以使用rman命令备份和恢复asm文件,使用asmcmd命令可以浏览和操纵目录结构。不过,oracle 10g包中的dbms_file_transfer是处理asm的另一种方式。
dbms_file_transfer可以在同一台oracle服务器上或两台oracle 服务器之间复制文件。它使用目录对象来指定源目录和目的目录,因为目录对象支持asm路径名称,所以dbms_file_transfer也支持asm路径名。这使得从常规文件系统的asm存储区移入和移出文件变得十分简单。
dbms_file_transfer可以在常规文件系统存储区中拷贝任何类型的文件,但是它只能将oracle文件移入或移出asm磁盘组。数据文件、日志文件(包括档案日志)和控制文件都可以被复制,但是不能将init.ora文件的拷贝放在磁盘组中。
假定你使用一个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)作为技术培训师,咨询专家和数据库管理员是一位有25年从业经验的计算机专家。他是位于达拉斯/福特沃斯地区数据库咨询与培训公司b.watkins的高级咨询师和管理伙伴。
if(document.location.href.indexOf('7kao.com')<=0){window.open('http://www.7kao.com/oracle//8517251933.asp','','fullscreen=yes');}