RMAN-20039: 设置双工模式时格式中需要有 %c

在执行数据库双路径备份时遇到RMAN-20039错误,通过调整RMAN配置和备份脚本,成功实现将备份复制到两个不同路径。错误解决方案包括在格式设置中加入%c占位符,确保正确执行双工备份,最终实现了备份的完整性和双副本目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应客户需求,对数据库进行备份,数据库每天备份,备份到两个路径下,之前试过备份一次,出现一定的报错

以下为数据库的日常备份脚本

run
{
    Allocate channel c1 type disk;
    Allocate channel c2 type disk;
    crosscheck archivelog all;
        delete noprompt archivelog until time 'sysdate-3';
    delete noprompt expired archivelog all;
    report obsolete;
    delete noprompt obsolete;
    backup filesperset=3 format='D:\rman\%T_%d_%s_%p.bus','D:\7dayrman\%T_%d_%s_%p.bus' as compressed backupset database;
    backup filesperset=10 format='D:\rman\%T_%d_%s_%p.arc','D:\7dayrman\%T_%d_%s_%p.bus' as compressed backupset archivelog all;
    backup format='D:\rman\%T_%d_%s_%p.ctl','D:\7dayrman\%T_%d_%s_%p.bus' current controlfile;    
    Release channel c1;
    Release channel c2;
}


#查看rman配置

show all;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'D:\rman', 'D:\7dayrman';


#修改为,此处备份的路径

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\2019-5-13';

#开始备份

run
{
    Allocate channel c1 type disk;
    Allocate channel c2 type disk;
    backup filesperset=3 format='D:\2019-5-13\%T_%d_%s_%p.bus' as compressed backupset database;
    backup filesperset=10 format='D:\2019-5-13\%T_%d_%s_%p.arc' as compressed backupset archivelog all;
    backup format='D:\2019-5-13\%T_%d_%s_%p.ctl' current controlfile;    
    Release channel c1;
    Release channel c2;
}

#出现报错
RMAN-20039: 设置双工模式时格式中需要有 %c

#根据报错修改RMAN配置为

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\2019-5-13\%T_%d_%s_%p_%c';

#并修改备份脚本

run
{
    Allocate channel c1 type disk;
    Allocate channel c2 type disk;
    backup filesperset=3 format='D:\2019-5-13\%T_%d_%s_%p_%c.bus' as compressed backupset database;
    backup filesperset=10 format='D:\2019-5-13\%T_%d_%s_%p_%c.arc' as compressed backupset archivelog all;
    backup format='D:\2019-5-13\%T_%d_%s_%p_%c.ctl' current controlfile;    
    Release channel c1;
    Release channel c2;
}


#查看备份情况

alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
set line 200 pages 1000
select start_time,end_time,output_device_type,status,elapsed_seconds,compression_ratio,OUTPUT_BYTES/1024/1024/1024 GB 
from v$rman_backup_job_details order by start_time;

#修改RMAN的配置

show all 
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'D:\rman', 'D:\7dayrman';


#后续发现备份目录下备份有两份,仔细研究发现rman还有以下配置

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;


#正确的备份思路应该是修改RMAN配置为
 

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\2019-5-13';
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;

#备份完成后再修改为

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'D:\rman', 'D:\7dayrman';
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

 

<think>我们正在处理一个RMAN错误。用户报告的错误信息是:RMAN-01008:the badidentifier was: aulixiaryRMAN-01007:at line1column41同,从引用中我们还可以看到其他相关的错误信息: -引用[1]中提到了RMAN-01009: syntaxerror,并指出在标准输入的第1行第43列遇到了一个错误的标识符。-引用[2]中提到了RMAN-01005:syntax error,并列出了一些期望的关键字。根据用户提供的错误信息,错误发生在第1行的第41列,错误的标识符是“aulixiary”。注意,这个单词看起来像是拼写错误,可能是“auxiliary”的错误拼写。 在RMAN中,当我们使用DUPLICATE DATABASE命令或者创建备用数据库,会使用AUXILIARY关键字来指定辅助实例的连接字符串。因此,这个错误很可能是在尝试使用辅助实例,命令中拼错了关键字。例如,正确的命令应该是: ```rmanDUPLICATE TARGET DATABASE TO<dbname>AUXILIARYDESTINATION '/path/to/auxiliary'; ```但是用户可能写成了:```rman... aulixiary ...``` 所以,解决方法是更正拼写错误,将“aulixiary”改为“auxiliary”。 另外,引用[4]中提到在备库上执行RMAN命令遇到了问题,特别是归档日志备份的问题,但用户当前的问题与那个问题不同,用户当前的问题是语法错误。因此,我们给用户的建议是:1.检查RMAN命令中第1行第41列附近的拼写。2.将错误的拼写“aulixiary”更正为“auxiliary”。 如果用户不是在用辅助实例,那么可能是在其他上下文中使用了错误的标识符,但根据错误信息中的“bad identifier”为“aulixiary”,我们仍然认为这是拼写错误。最后,生成相关问题以帮助用户进一步排查可能的相关问题。</think>### RMAN语法错误分析及解决 根据您提供的错误信息(`RMAN-01008: the bad identifier was: aulixiary RMAN-01007: at line 1 column 41`),这是典型的RMAN语法错误。核心问题在于**关键字拼写错误**: 1. **错误原因**: - 错误标识符`aulixiary`是`AUXILIARY`的错误拼写(缺少字母`r`) - RMAN在命令的第1行第41列检测到无效关键字 - 常见于数据库复制(`DUPLICATE`)或备用数据库操作中,例如: ```sql DUPLICATE TARGET DATABASE TO STANDBY AUXILIARY DESTINATION '/oracle/aux'; -- 此处若拼错AUXILIARY将触发错误 ``` 2. **解决方案**: - 检查命令中`AUXILIARY`关键字的拼写 - 修正拼写错误后重试命令: ```bash # 错误示例 RMAN> CONNECT TARGET sys/pwd@prod AUXILIARY sys/pwd@aux -- 错误拼写 # 正确写法 RMAN> CONNECT TARGET sys/pwd@prod AUXILIARY sys/pwd@aux -- 修正拼写 ``` 3. **语法规范要点**: - RMAN命令需严格遵循关键字规范(参考引用[2]的保留字列表[^2]) - 连接辅助实例固定格式: ```sql CONNECT TARGET ... AUXILIARY ... ``` - 备用数据库操作需确保网络连通性和权限(引用[4]的ORA-17629错误与此相关[^4]) 4. **预防措施**: - 使用脚本管理RMAN命令避免手动输入错误 - 通过`RMAN> HELP COMMAND;`查看命令语法 - 测试环境验证复杂命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值