Rman跳过坏块快速修复的的技巧

Oracle-Rman duplicate文件坏块问题处理ORA-19849 19612 最近,在使用rman duplicate进行备库环境搭建时,遇到了ORA-19849 19612坏块报错,最终分析是发现由于网络的配置导致。 阅读详情

如果备份集损坏,而这个备份集又是我们唯一的备份集。这个时候我们的想法可能是能恢复多少数据就恢复多少数据了。不过我们可能碰到下面的错误:

RMAN-00571:===========================================================

RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002: failure during compilation of command

RMAN-03013:command type: restore

RMAN-03007:retryable error occurred during execution of command: IRESTORE

RMAN-07004:unhandled exception during command execution on channel t1

RMAN-10035:exception raised in RPC: ORA-27192: skgfcls: sbtclose2 returned 

error -failed to close file

ORA-19511:sbtclose2: Failed to process backup file.

ORA-19612:datafile 84 not restored due to missing or corrupt data

RMAN-10031:ORA-19624 occurred during call to DBMS_BACKUP_RESTORE.

RESTOREBACKUPPIECE 

这个时候怎么办呢?为了解决这个问题,Oracle提供了两个EVENT 19548,19549。

EVENT 19548:忽略备份集中的坏块,这是一个很危险的事件,建议慎重使用。因为在不设置这个事件的时候,如果RMAN恢复数据文件的时候发现备份集有坏块,就会在坏块的位置写入一个空块。而设置了这个事件,不管怎样,都会将这个块写入数据文件,这可能导致不一致的产生。不过设置了这个事件也不一定能够跳过坏块恢复文件,因为一个备份集往往有多个文件,如果标志哪个块属于哪个文件的数据块坏了,那么恢复数据将变得不可能。

EVENT 19549:如果在恢复的时候还没有恢复到所需要的所有数据块,就碰到文件结束了,这个时候会报 ORA-19612,如果设置了这个事件就会忽略这个错误。

这两个事件可以作为最后的解决方案来使用,不过使用的时候要慎重。

 

另外要注意的是,这两个事件必须在以下版本使用:

ORACLE 8.1.7.4:必须打了PATCH  2973616,这个补丁目前只支持SUNSPARC 64位和AIX 32位,其他平台无补丁包。

ORACLE 9.2.0.4或者以后版本。

 

使用方法:

event = "19548 trace name context forever"

event = "19549 trace name context forever"

作者:白鳝

oracle rman备份脚本跳过损坏表空间 数据库开归档模式: 可以先指定归档日志文件路径 alter system set archive_log_dest_1=‘location=/home/oracle/arch’ 然后 shutdown immediate startup mount alter database archivelog alter database open 由于物理上的归档日志被删,rman备份识别不到某些归档日志... 阅读详情

相关推荐

利用RMAN修复数据文件中的坏块思路与实战

修复数据文件中的坏块需要进行多个步骤,包括确认坏块、创建坏块映射文件、修复坏块、恢复数据文件和恢复数据库等。创建坏块映射文件:在确认了数据文件中的坏块后,需要创建一个坏块映射文件,记录下数据文件中的坏块位置和大小等信息。命令来恢复数据文件。在此之前,需要确保备份集中包含了需要恢复的数据文件,并且备份集中的数据文件没有坏块。在此之前,需要确保数据文件是在归档模式下打开的,并且已经启用了归档模式和日志归档功能。数据库备份和恢复的主要工具,可以用于修复数据文件中的坏块。确认坏块:首先需要确认数据文件中的坏块。

力哥讲技术 1285

oracle坏块及解决办法

坏块分为逻辑坏块和物理坏块 如果有有备份,逻辑坏块可以根据备份修复 下面提供3中方法解决没有备份的坏块(坏块中数据会丢失) 还有一种rman利用备份恢复坏块。 提供模拟环境 create tablespace bl datafile 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\BL.DBF' size 1m create table scott.tb(

yaoxinook的专栏 1042

10步教你轻松应对Oracle坏块,你准备好了吗?

每一次成功的故障排除都是一次宝贵的学习机会。回顾整个过程中遇到的问题及解决办法,思考是否有改进空间。同时也要记住,最好的防御永远是提前做好充分准备。

java专栏 983

oracle--rman备份纪要

1、设置channel数量,增加备份/恢复传输速度。 2、设置最大坏块数,set maxcorrupt,避免少数坏块引起备份或恢复失败。 3、跳过只读数据块,backup指令加上skip readonly参数。 4、设置默认备份类型,默认为disk,可改为sbt,rman将顺序执行sbt库中函数。 ..................

jiujiederoushan的博客 3787

3 分钟 vs 3 天?Oracle 坏块 5 大“作妖”现场:从 0 到 1 手把手教你拆雷、埋雷、排雷!

《Oracle数据库坏块诊断与修复指南》摘要(149字) 本文系统讲解Oracle坏块处理方案:1)分类解析物理坏块(5种损坏形式)与逻辑坏块(3类异常);2)提供测试环境模拟方案,通过BBED工具精准制造坏块;3)实战修复三板斧:DBV快速定位→RMAN块级恢复(有备件)→无备份应急方案(跳过坏块重建)。最后给出DBA三大守则:先辨类型、定期校验、核心表启用校验功能。包含物理/逻辑坏块模拟代码及修复命令,实现"3分钟定位+3小时修复"的高效处置。

墨夶的博客 352

大疆精灵3无人机2.4GHz通信系统实测:跳频扩频技术深度解析

跳频扩频(FHSS)是一种经典的扩频通信技术,其核心原理是通过让载波频率在一个宽频带上按伪随机序列快速跳变,将窄带信号的能量扩散开来。这种技术能有效对抗固定频率干扰,提升通信的可靠性和抗截获性,在无线遥控、军事通信等领域具有重要价值。在无人机、物联网等对实时性与可靠性要求高的应用场景中,FHSS技术能显著增强复杂电磁环境下的链路鲁棒性。本文以频谱分析仪实测大疆精灵3无人机为例,深入剖析其2.4GHz频段遥控与图传系统的工作特性,揭示了其采用的成熟FHSS方案,包括约76MHz的总跳频带宽、39个信道及约2M

weixin_33935636的博客 310

Rman-坏块解决方案

1. 数据块/文件损坏快速处理预案1.1 坏块问题【故障现象】session报错异常退出,alert和trace报错显示存在block corruption:ORA-01578: ORACLE data block corrupted (file # 7, block # 3)ORA-01110: data file 7: '/oracle/oradata/trgt/tools01.dbf'ORA...

小楼一夜听春雨,深巷明朝卖杏花 1170

别再为FPGA程序裸奔发愁了!手把手教你用Quartus和AES256给Altera芯片上把‘锁’

本文详细介绍了如何为Altera/Intel FPGA芯片(如Cyclone系列)构建可靠的AES256加密体系,涵盖密钥类型选择、Quartus实操到JTAG链路验证的全流程。通过硬件级AES256引擎实现配置流解密,确保FPGA程序的安全保护,适用于工业控制器等高安全需求场景。

weixin_28309571的博客 389

RMAN备份恢复之BLOCKRECOVER

RMAN提供了单独恢复个别BLOCK的功能,这种功能作为普通恢复方法的补充,对于恢复数据库中出现的坏块可以快速的进行恢复。 RMAN的BLOCKRECOVER是利用一个全备份作为基础,在此基础中应用日志,对于需要恢复的个别BLOCK进行恢复。   下面演示一个BLOCKRECOVER的简单例子,首先是构造一个坏块,最简单的办法莫过于UltraEdit了。   SQL> SELECT CO

lcb0913的专栏 594

高通 Gen AI 推理扩展 (GENIE)(5):实战指南与Engine API深度解析

本文深入解析高通Gen AI推理扩展(GENIE)的Engine API核心功能与实战应用,涵盖引擎实例化、多引擎动态切换、性能调优及跨平台部署等关键技巧。通过详细代码示例和性能数据,帮助开发者高效利用GENIE进行AI推理,提升应用性能与稳定性。

weixin_29065959的博客 464

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

1294

Oracle11g:数据库恢复总结

此文转载自:https://blog.youkuaiyun.com/ChenHui_Felix/article/details/113624692 一、参数文件 1、操作系统文件复制 如果使用操作系统命令复制过参数文件,还原只要复制回去就行。 2、备份集恢复 rman恢复需要启动实例,SQL*PLUS在没有参数文件的情况下不能打开,但是rman可以在没有参数文件的情况下,通过内置的参数打开。 R...

Python研究所 453

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1769

ORACLE数据库-RMAN跳过坏块恢复文件的技巧

因为在不设置这个事件的时候,如果RMAN恢复数据文件的时候发现备份集有坏块,就会在坏块的位置写入一个空块。而设置了这个事件,不管怎样,都会将这个块写入数据文件,这可能导致不一致的产生。不过设置了这个事件也不一定能够跳过坏块恢复文件,因为一个备份集往往有多个文件,如果标志哪个块属于哪个文件的数据块坏了,那么恢复数据将变得不可能。:如果在恢复的时候还没有恢复到所需要的所有数据块,就碰到文件结束了,这个时候会报 ORA-19612,如果设置了这个事件就会忽略这个错误。为了解决这个问题,Oracle提供了两个。

DBAIOps的博客 755

C# 上位机内存泄漏排查指南:3 个工具 + 4 个技巧,从 GC 频繁到稳定运行 720 小时

C# 上位机内存泄漏排查的核心是「先定位泄漏存在,再追溯引用根源,最后修复验证通过「Visual Studio 诊断工具(快速定位)+ dotMemory(深度分析)+ PerfView(生产监控)」三个工具的配合,结合「复现场景、排查静态成员+事件、检查非托管资源、GC 日志验证」四个技巧,可高效解决绝大多数泄漏问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 735

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2797

【转】基于RMAN实现坏块介质恢复(blockrecover)

本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块。恢复整个数据库或数据文件那不是大炮用来打蚊子,有点不值得!但前提条件是你得有一个可用的RMAN备份存在,因此,无论何时备份就是一切。本文演示了产生坏块即使用RMAN实...

weixin_30341745的博客 152

MCAL中MCU的配置

MCAL配置中MCU配置,PLL计算配置,系统时钟以及各模块参数配置

dhyw12399999的博客 3794

不属于任何段的坏块导致rman备份报错

不属于任何段的坏块导致rman备份报错 故障模拟原因解决方案bbed copyallocate extentresize参考 上篇博客刚说完数据文件中有坏块,会影响rman的备份,导致备份失败。今天就遇到了生产环境由于坏块导致rman备份失败,已经有20几天没有备份完成了。唯一不同的是,这些坏块的位置,经查询,不属于任何对象,也就是格式化了,但未使用的块上面。下面就模拟这一报错,及响应的解决方案。 故障模拟 1、此块不属于任何对象; 2、此块必须是格式化未使用的坏块,如果是未格式化(从未使用过的空块)的坏块

fanzhuozhuo的博客 767

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(整理)RMAN备份详解

网上查到一篇RMAN工具的使用,这篇文档记录写的比较详细,自己目前的工作环境反复使用的几率不高,有些时候就容易忘,特此记录下来。 –====================== – RMAN备份详解 –====================== 一、数据库备份与RMAN备份的概念 1.数据库完全备份:按归档模式分为归档和非归档 归档模式: 打开状态,属于非一致性备份 关闭状态,可以分为一致性和非一致性 非归档模式: 打开状态,非一致性备份无效 关闭状态,一致性备份,非一致性备份不被推荐 2.RMAN备份

s_156的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

跳过rman坏块进行数据恢复

如果我们仅有一份rman备份,而这个时候rman备份有出现坏块,使得我们的还原/恢复工作无法继续下去,导致数据大量丢失。怎么才能跳过这个rman坏块进行数据恢复?本文分享了一些技巧和方法,希望能帮到你。AD:2013大数据全球技术峰会课程PPT下载在有些情况下,我们仅有一份rman备份,而这个时候rman 备份有出现坏块,使得我们的还原/恢复工作无法继续下去,导致数据大量丢失...

weixin_33884611的博客 541

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

无RMAN备份集情况下的坏块恢复

测试的环境是没有可用的RMAN备份集,但是有数据文件的热备,下面来看测试: --创建测试用户和测试表 [oracle@ora10g ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 16 16:01:02 2014 Copyright (c) 1982, 2005, Oracle

aaron8219's Oracle&Linux Technology Blog 1768

Oracle 恢复坏块方法(ORA-01578)—跳过坏块

一、创建测试表 SQL> create table test as select * from all_objects; Table created. SQL> select count(*) from test;   COUNT(*) ----------      80441 二、人为制造坏块 具体请参考: http://blog.youkuaiyun.com/shi

雨花石 4564

非常规数据恢复的几种场景(跳过坏块导出数据)

创建测试表、测试表空间。 SQL> select count(*) from b.t;   COUNT(*) ----------       5895 修改测试表空间对应数据文件(二进制),启动后查询该表空间内的某张表时发现有数据坏块: SQL> select count(*) from b.t; select count(*) from b.t        *

IT小灰的笔记 2153
上一篇: 集中式数据库-用KFED REPAIRE快速修复ASM磁盘头
下一篇: 一个CRS节点无法安装的故障分析
DBAIOps社区
博客等级 码龄3年 970粉丝 107原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值