生成一个拷贝控制文件、日志文件、数据文件的脚本一般这样生成后,在os下运行生成的脚本你在sqlplus中运行并去 c:\backup目录下看  cold.cmd 的文件内容就明白了SQL> select 'copy '||name||'  c:\backup' from v$controlfile; 'COPY'||NAME||'C:\BACKUP'
--------------------------------------------------------------------------------
copy D:\ORACLE\ORADATA\ORA9\CONTROL01.CTL  c:\backup
copy D:\ORACLE\ORADATA\ORA9\CONTROL02.CTL  c:\backup
copy D:\ORACLE\ORADATA\ORA9\CONTROL03.CTL  c:\backupSQL> select 'copy '||member||'  c:\backup' from v$logfile;'COPY'||MEMBER||'C:\BACKUP'
--------------------------------------------------------------------------------
copy D:\ORACLE\ORADATA\ORA9\REDO03.LOG  c:\backup
copy D:\ORACLE\ORADATA\ORA9\REDO02.LOG  c:\backup
copy D:\ORACLE\ORADATA\ORA9\REDO01.LOG  c:\backupSQL> select 'copy '||file_name|| '  c:\backup' from dba_data_files;'COPY'||FILE_NAME||'C:\BACKUP'
--------------------------------------------------------------------------------
copy D:\ORACLE\ORADATA\ORA9\SYSTEM01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\UNDOTBS01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\CWMLITE01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\DRSYS01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\EXAMPLE01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\INDX01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\TOOLS01.DBF  c:\backup
copy D:\ORACLE\ORADATA\ORA9\USERS01.DBF  c:\backup已选择8行。SQL> 

解决方案 »

  1.   

    spool c:\backup\cold.cmd; 
    select 'copy '||name||'c:\backup' from v$controlfile; 
    select 'copy '||member||'c:\backup' from v$logfile;
    select 'copy '||file_name||'c:\backup' from dba_data_files;
    spool off;
    你的语句少了三个‘
    在cold.cmd的结果是
    copy controlfile1.ctl c:\backup
    copy controlfile2.ctl c:\backup
    copy controlfile3.ctl c:\backup
    ……
    那是操作系统的命令,可以直接执行了
      

  2.   

    在我第一次见到类似的SQL时
    就爱上了它