Oracle杀死job的方法&杀死job相关进程方法

Oracle定时任务Job Oracle定时任务Job摘要 Oracle定时任务Job是数据库管理员常用的自动化工具,可通过脚本直接管理任务而无需界面操作。Oracle提供两种创建方式:传统的DBMS_JOB包和更先进的DBMS_SCHEDULER包(10g后推荐使用)。Job可以执行PL/SQL块、SQL语句或存储过程,支持定时或手动触发。 主要内容: 创建方式:DBMS_JOB使用submit()方法,DBMS_SCHEDULER使用create_job() 管理功能:可查看、修改、运行、停止和删除Job 相关视图:user_jo 阅读详情

环境:Oracle11.2.0.4

1、判断job是否卡死

用PL/SQL Developer看到job是否完成,查看job属性中LAST DATE是否变成第二天的执行时间。如果没变,说明job没有执行结束。也可以用下面的语句查询:

select * from  dba_jobs_running where job='job号';

用这个语句可以查询执行job的sid列(会话编号)的值,这个值是杀死job的参数之一。

2、查询杀死job的第二个参数serial#(会话序列号)

select * from v$session where sid='刚才查到的sid';

返回记录中就有 serial#列(会话序列号),paddr列(线程地址)

也可以将1、2两步合在一起执行:

select b.sid,b.serial# from dba_jobs_running a, v$session b where a.sid=b.sid and a.job='job号';

3、杀死job命令如下:--权限不足,使用system、sys用户执行!!!

alter system kill session '会话编号sid,会话序列号serial#';

4、查看是否成功杀掉该会话(方法与步骤一相同,多执行几次select * from  dba_jobs_running where job='job号'观察结果,如果杀掉了将不再有返回结果)。

5、job杀死后,被延误的job任然会启动(未验证过)。

 

补充:

如果报错--ORA-00031:标记要终止的会话(如上图3)

可以通过下列语句查询: 

select a.spid,b.sid,b.serial#,b.username 

from v$process a,v$session b 

where a.addr=b.paddr 

and b.status='KILLED';

如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号: 

select b.spid,a.osuser,b.program 

  from v$session a,v$process b 

 where a.paddr=b.addr 

   and a.sid=579     --------------------------------------------------579就是上面的sid

在OS上杀死这个进程(线程)

在unix上,用root身份执行命令:#kill -9 12345(12345 即第4步查询出的进程ID) 

最后在按照步骤1查询验证Job是否存在!!!

 

 

 

Oracle 11.2.0.3数据库CJQ进程造成row cache lock等待事件影响job无法停止问题分析 一, 现象描述 某生产系统应用人员反映自己发起的job异常,没有正常运行,导致相关表无数据,自己尝试停止job但未成功,也无法重新发起job。 二, 问题分析 job的登录模式一般为’DBMS_SCHEDULER’,通过PL/SQL工具登录运行如下语句进行查看 select S.STATUS,        S.INST_ID,        S.SID,        S.PADD... 阅读详情

相关推荐

【Oracle】Oracle JOB常用操作

【代码】Oracle job常用操作。

tttzzzqqq2018的博客 5703

oracle停止当前运行的JOB或kill会话

在Oracle中,您可以使用DBA_SCHEDULER_JOBS视图来查找当前正在运行的作业(job),并使用DBMS_SCHEDULER.STOP_JOB过程来停止它们。上面的SQL查询会列出所有当前状态为RUNNING的作业,即正在运行的作业。要停止这些作业,可以编写一个PL/SQL块来遍历这些作业并停止它们。

狗剩儿的记忆博客 2516

Oracle停止job的正确方式

Oracle停止job的正确方式 1、改job状态broken由N为Y 2、删除job

tttzzzqqq2018的博客 5690

oracle 杀掉正在运行中的job

问题处理:有定时job执行完毕后,却一直是running状态: 过程: 查看正在运行中的job以及对应的sid号: select * from dba_jobs_running; 查询对应的session信息: select sid,serial# from v$session where sid in('458'); 杀死对应的session: alter system kill session '458,16551'; 补充: 可执行以下命令直接将该job置为borken,不再运行: EXEC D

a1264716408的博客 2004

深入解析音频信号处理的核心算法——傅里叶变换、语音增强、回声消除与主动降噪

本文系统介绍了现代音频信号处理的核心技术。首先阐述傅里叶变换作为理论基础的重要性,它能将声音分解为频域成分。随后重点分析三大关键技术:语音增强利用谱减法、维纳滤波和深度学习从噪声中提取人声;回声消除采用自适应滤波器消除通话中的回声;主动降噪通过声波干涉原理抵消环境噪声。文章最后指出,这些技术在实际应用中协同工作,形成完整的音频处理链路,共同提升语音质量和听觉体验。随着算法进步和算力提升,音频处理技术正向着更智能、更高效的方向发展。

程序猿老樊的博客 1325

飞腾E2000单板移植openEuler 5.10内核与麒麟系统的实践指南

本文详细介绍了在飞腾E2000单板上移植openEuler 5.10内核并搭配麒麟系统根文件系统的完整实践指南。内容涵盖从编译环境搭建、内核配置裁剪、设备树适配,到根文件系统准备、U-Boot引导配置及启动调试的全流程,旨在帮助开发者打造一个内核版本新、软件生态全的稳定混合系统。

weixin_29309475的博客 258

oracle 如何kill,ORACLE 如何kill掉一直运行的job

今天发现数据库一个JOB一直在执行,都执行了5个小时还在执行,所以想办法给删除掉系统环境:ORACLE 10GAIX操作系统操作步骤如下:第一步、查询出来那个job在运行,找个对应的SID字段 1、select * from dba_jobs_running--找到job对应的sid 第二部、通过以下语句查询出来SID对应的SPID, 其中SCHEMANAME='#username#'是...

weixin_34364310的博客 1116

统一大型语言模型和知识图谱:路线图

大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图谱(KGs),例如维基百科和华普,是显式存储丰富事实知识的结构化知识模型。KGs可以通过为推理和可解释性提供外部知识来增强LLM。同时,KGs很难从本质上构建和演化,这对KGs中现有的生成新事实和表示未知知识的方法提出了挑战。因此,将LLM和KGs统一在一起并同时利用它们的优势是相辅相成的。

qq_32907491的博客 2842

oracle 杀job进程,Oracle杀死job的方法&杀死job相关进程方法

环境:Oracle11.2.0.41、判断job是否卡死用PL/SQL Developer看到job是否完成,查看job属性中LAST DATE是否变成第二天的执行时间。如果没变,说明job没有执行结束。也可以用下面的语句查询:select * from dba_jobs_running where job='job号';用这个语句可以查询执行job的sid列(会话编号)的值,这个值是杀死job...

weixin_39820173的博客 1439

Python3.8下MvCameraControl.dll加载失败?3种方法彻底解决FileNotFoundError

本文针对Python3.8及以上版本在Windows平台调用MvCameraControl.dll时出现的FileNotFoundError问题,深入剖析了其根源在于Python 3.8引入的DLL加载安全机制变更。文章提供了三种核心解决方案:显式指定DLL完整路径、使用os.add_dll_directory()添加可信目录,以及利用ctypes的winmode参数进行精细控制,并给出了工程化封装建议,帮助开发者彻底解决此兼容性问题。

weixin_29093017的博客 190

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 767

完全停止 Oracle 中正在运行的 JOB

完全停止 Oracle 中正在运行的 JOB

wzy0623的专栏 3836

记一次Redis出问题及解决方案

Q1: redis服务关闭前确认数据还是在的,重启后发现一条数据都没了,key* 查也是空的 A1: 经仔细检查发现redis.conf配置文件配置的数据存储目录配置的是dir ./ 也就是相对目录,也就是说在哪个目录执行redis-server redis.config启动命令 redis数据就会存到哪个目录,同样就会加载哪个目录下的数据文件(dump.rdb),前后两次启动命令的位置不一样导致第二次启动没有加载到(dump.rdb)文件,从而导致查不出数据 Q2:springboot 集成r

u010013928的博客 3058

oracle 停掉job,oracle 如何停job

停job就是将job的状态改为broken,然后杀死正在运行的job;将job unbroken可以直接调用exec dbms_job.broken(82,false); 。1.确定要停止的JOB号select * from dba_jobs_running;2.Broken你确认的JOBexec dbms_job.broken(82,true);select job,log_user,brok...

weixin_42393650的博客 6784

STM32CubeIDE下载程序报错:Failed to execute MI command: load G:\\Cube_IDE_EXP\\00_FIRST\\Debug\\00...如何解决??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2593

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2729

解决ORACLE.EXE (J000)导致的JOB卡死无法执行

有时候安装在windows下的Oracle的JOB定时任务在调用存储过程时会因为ORACLE.EXE (J000)或ORACLE.EXE (J001)进程出现,导致JOB卡死无法执行。 进程代码和相关代码的含义见我的另外一篇博客: https://blog.youkuaiyun.com/dante_feng/article/details/90232763 ORACLE.EXE (J000)...

瑶少的博客 3713

深度学习工具包 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")

Oracle杀进程注意事项

oracle杀进程会导致的后果总结

DBA成长之路 1395

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Oracle 停掉所有JOB

select 'alter system ’ ||

喝醉酒的小白 3095

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

oracle死进程查找与删除方法

到了下午,一编译我的oracle包就出现卡死状态,过了好久终于在弹出一个错误“ora-04021”错误,经过查找原来是我的job在执行(job执行的包正式我编译的包怪不得编译不了)。因此查找原因时可以通过以下几个表来查看具体的进程死锁:    v$lock;--查看锁的状态   v$session;--查看进程 因此我就将此job停止,但是停止后查看select * from dba_job

巫山云的专栏 1634

oracle 如何查找和kill 对应的job进程

查找当前被锁住的进程: [code="sql"]SELECT object_name, s.sid, s.serial#, p.spid FROM v$locked_object l, dba_objects o, v$session s, v$process p WHERE l.object_id = o.object_id AND l.session_id = s.si...

wangjingyi 1056

oracle如何查询和停止正在运行的job

今天遇到一个问题,有一个JOB会一直不停的执行,不能按照设定的间隔来执行。通过查询相关资料发现原来如此:           当一个oracle job运行时返回一个error时,oracle会再次设法执行它,第一次尝试是在一分钟后,第二次是在2分钟后,第三次是4分钟后,以此类推。每次尝试的周期加倍,直到下一次的运行时刻来到,又再次尝试,当尝试执行失败16次时,oracle自动标示此job为br

Laughing 1795

oracle 的job事件,Oracle 11.2.0.3數據庫CJQ進程造成row cache lock等待事件影響job無法停止問題分析...

一,現象描述某生產系統應用人員反映自己發起的job異常,沒有正常運行,導致相關表無數據,自己嘗試停止job但未成功,也無法重新發起job。二,問題分析job的登錄模式一般為’DBMS_SCHEDULER’,通過PL/SQL工具登錄運行如下語句進行查看select S.STATUS,S.INST_ID,S.SID,S.PADDR,S.SQL_ID,S.SQL_EXEC_START,S.ACTION...

weixin_32404293的博客 209

oracle的j001引起数据库崩溃,解决ORACLE.EXE (J000)导致的JOB卡死无法执行

有时候安装在windows下的Oracle的JOB定时任务在调用存储过程时会因为ORACLE.EXE (J000)或ORACLE.EXE (J001)进程出现,导致JOB卡死无法执行。进程代码和相关代码的含义见我的另外一篇博客:https://blog.youkuaiyun.com/dante_feng/article/details/90232763ORACLE.EXE (J000)job 具体执行进程,接...

weixin_39976960的博客 1123

oracle 停止正在运行的job

<br /><br />ORACLE如何停止一个JOB<br />1 相关表、视图<br />2 问题描述<br />为同事解决一个因为网络连接情况不佳时,执行一个超长时间的SQL插入操作。<br />既然网络状况不好,就选择了使用一次性使用JOB来完成该插入操作。在JOB执行一段时间后,我发现被插入表有些问题(惭愧,当时也没有先检查检查就做了)。准备停止JOB,因为在JOB运行情况下,我的所有修改都会报系统资源忙的错误。<br />强行KILL SESSION是行不通的,因为过会儿,JOB还会重新启动,如

海盗的成长 1090

oracle 的job事件,Oracle 11.2.0.3数据库CJQ进程造成row cache lock等待事件影响job无法停止问题分析...

一,现象描述某生产系统应用人员反映自己发起的job异常,没有正常运行,导致相关表无数据,自己尝试停止job但未成功,也无法重新发起job。二,问题分析job的登录模式一般为’DBMS_SCHEDULER’,通过PL/SQL工具登录运行如下语句进行查看select S.STATUS,S.INST_ID,S.SID,S.PADDR,S.SQL_ID,S.SQL_EXEC_START,S.ACTIO...

weixin_39584571的博客 336
上一篇: 快速将多个excel表合并成一个excel表---内附代码
下一篇: 有时候update 表 然后复制粘贴 比insert要快多了。
corpse2010
博客等级 码龄17年 101粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值