查看索引建立执行进度

SELECT  SID,  decode(totalwork, 0, 0, round(100 * sofar/totalwork, 2)) "Percent", message "Message", start_time, 
elapsed_seconds, time_remaining , inst_id from GV$Session_longops t where t.TARGET='SZHAO.T_RECORD_0510' and t.sid=77 order by t.start_time desc;

 

 t.TARGET='SZHAO.T_RECORD_0510' 索引是那个表的,要带上用户名

 

 

and t.sid=77 最好带上session id这样就只有符合条件的一批了,当然也可以按时间排序

 

percent和message就是字面意思了

### 如何在Android应用程序中监控和查看TCP通信进度 #### 实现心跳机制来监测连接状态和数据传输情况 为了有效地监控TCP通信的状态,在客户端和服务端之间建立的心跳机制是非常重要的。通过定期发送特定的消息(如`ping`),并等待相应的响应消息(如`pong`),可以确认双方的连接仍然活跃以及评估当前网络状况的好坏[^3]。 ```java // 客户端向服务端发送Ping请求 private void sendPing() { try { String pingMessage = "ping\n"; outputStream.write(pingMessage.getBytes()); outputStream.flush(); // 接收Pong回复 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String response = reader.readLine(); // 阻塞直到收到回应 if ("pong".equals(response)) { Log.d("Heartbeat", "Connection is alive."); } else { Log.w("Heartbeat", "Unexpected pong message received: " + response); } } catch (IOException e) { Log.e("Heartbeat", "Failed to perform heartbeat check.", e); } } ``` #### 设置自定义头部信息用于跟踪数据包 当涉及到具体的文件或其他大型对象上传下载时,可以在每次发送的数据前加上一些额外的信息作为包头,例如总长度、分片编号等字段。这有助于接收方更好地理解即将接收到的内容,并据此计算出已完成的比例。 ```java // 发送带有元数据的大文件片段 public void sendDataChunk(byte[] chunkData, int totalSize, int currentPartIndex) throws IOException { StringBuilder headerBuilder = new StringBuilder(); // 构建包头:包含总大小和当前部分索引 headerBuilder.append("\t"); // 包头标记 headerBuilder.append(totalSize).append(":"); headerBuilder.append(currentPartIndex).append("\n"); byte[] fullPacket = concatenate(headerBuilder.toString().getBytes(), chunkData); outputStream.write(fullPacket); outputStream.flush(); Log.i("Progress", "Sent part " + currentPartIndex + "/" + ((totalSize / CHUNK_SIZE) + 1)); } // 辅助函数拼接两个字节数组 private static byte[] concatenate(byte[] a, byte[] b) { byte[] result = Arrays.copyOf(a, a.length + b.length); System.arraycopy(b, 0, result, a.length, b.length); return result; } ``` #### 利用异步任务处理长时间运行的操作 考虑到TCP操作可能会消耗较长时间,应该采用异步的方式执行这些任务,以免阻塞主线程影响用户体验。可以通过创建后台线程或者使用更高级别的抽象类如AsyncTask来进行这样的工作[^1]。 ```java class TcpCommunicationTask extends AsyncTask<Void, Integer, Void> { @Override protected Void doInBackground(Void... params) { while (!isCancelled()) { publishProgress(calculateCurrentProgress()); // 更新UI上的进度条 try { Thread.sleep(UPDATE_INTERVAL_MS); // 控制更新频率 } catch (InterruptedException ignored) {} // 继续其他逻辑... } return null; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progressBar.setProgress(values[0]); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值