34、Oracle数据库备份与恢复实战指南

Oracle数据库备份与恢复实战指南

1. 数据库备份与数据泵操作

在创建整个数据库备份时,当“Create Whole Database Backup”页面出现,需先检查“Properties and Options”、“Compression”、“Disk”、“Backup Set”和“Policy”选项卡中的所有信息是否正确。若一切无误,点击“Apply”执行备份。备份完成后,会弹出窗口提示RMAN脚本已成功处理,并建议查看最新操作作业日志以获取处理详情。

数据泵操作方面,DBA Navigator提供以下数据泵选项:
- Export Jobs :显示当前正在运行或已停止的任何数据泵导出作业,还可通过右键单击并选择“Data Pump Export Wizard”来创建新的数据泵导出作业。
- Import Jobs :显示当前正在运行或已停止的任何数据泵导入作业,同样可通过右键单击并选择“Data Pump Import Wizard”来创建新的数据泵导入作业。

2. 测试环境搭建

要执行后续练习,需先创建测试环境,步骤如下:
1. 从 Oracle VirtualBox官网 下载免费的虚拟化工具Oracle VirtualBox。
2. 从 Oracle官网 下载Oracle Enterprise Linux 6.4,并从 该链接 下载适用于Linux的Oracle 12c数据库。不过,并非必须使用Linux,也可使用Solaris(SPARK和x86)甚至Windows 64位系统,使用VirtualBox和Linux只是建议。
3. 按照 指定博客 的说明安装下载的产品。
4. 创建以下示例目录:

$ mkdir /data/pdborcl
$ mkdir /data/pdborcl/backups
$ mkdir /data/pdborcl/backups/controlfile
$ mkdir /data/pdborcl/backups/archivelogs
$ mkdir /data/orcl/fast_recovery_area
$ mkdir /data/orcl/redologs
$ chown -R oracle:oinstall /data/pdborcl
$ chown -R oracle:oinstall /data/orcl
  1. 创建测试用户和测试表空间:
$ sqlplus / as sysdba
SQL> ALTER SESSION SET CONTAINER=pdborcl;
SQL> CREATE TABLESPACE test DATAFILE '/data/pdborcl /test_01_tbs.dbf' SIZE 100m;
SQL> CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE test QUOTA UNLIMITED ON test;
SQL> GRANT connect, resource TO test;
  1. 创建 employee 表并加载数据到 test 模式:
SQL> CREATE TABLE TEST.EMPLOYEE  
( EMP_ID   NUMBER(10) NOT NULL,
  EMP_NAME VARCHAR2(30),
  EMP_SSN  VARCHAR2(9),
  EMP_DOB  DATE
);

SQL> INSERT INTO test.employee VALUES (101,'Francisco Munoz',123456789,'30-JUN-73');
SQL> INSERT INTO test.employee VALUES (102,'Gonzalo Munoz',234567890,'02-OCT-96');
SQL> INSERT INTO test.employee VALUES (103,'Evelyn Aghemio',659812831,'02-OCT-79');
SQL> COMMIT;
3. 数据库配置
3.1 确保使用spfile启动数据库

以sysdba身份登录数据库,验证是否使用spfile:

SQL> CONNECT sys AS sysdba 
SQL> SHOW PARAMETER spfile; 

若使用spfile,会返回spfile的位置;若未使用,字符串为空。此时,需执行以下命令以spfile启动数据库:

SQL> CREATE spfile FROM pfile; 
SQL> STARTUP FORCE; 
3.2 将数据库置于归档日志模式并启用闪回

为进行热备份,数据库需处于归档日志模式。连接到数据库并设置以下参数:

SQL> ALTER SYSTEM SET db_recovery_file_dest_size=2G;
SQL> ALTER SYSTEM SET db_recovery_file_dest ='/data/orcl/fast_recovery_area';
SQL> ALTER SYSTEM SET  log_archive_dest_1 ='LOCATION=/data/pdborcl/backups/archivelogs;
SQL> ALTER SYSTEM SET log_archive_dest_10 ='LOCATION=USE_DB_RECOVERY_FILE_DEST';
SQL> ALTER SYSTEM SET log_archive_format="orcl_%s_%t_%r.arc" SCOPE=spfile;
SQL> ALTER SYSTEM SET db_flashback_retention_target=720 SCOPE=spfile;
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
3.3 创建新的重做日志组和关联文件

每个重做日志文件组至少需要两个成员,下面创建一个包含两个成员的新重做日志组:

SQL> SET LINESIZE 200
SQL> SET PAGESIZE 200
SQL> COLUMN member FORMAT a50
SQL> COLUMN bytes FORMAT 999,999,999
SQL> SELECT group#, sequence#, bytes, members FROM v$log;
SQL> SELECT group#, member FROM v$logfile;
SQL> ALTER DATABASE ADD LOGFILE GROUP 4 '/data/orcl/redologs/redo_04a.rdo' SIZE 50m;
SQL> ALTER DATABASE ADD LOGFILE MEMBER'/data/orcl/redologs/redo_04b.rdo' TO GROUP 4;
4. RMAN配置
4.1 创建目标数据库RMAN备份账户
SQL> CREATE USER backup_admin IDENTIFIED BY bckpwd DEFAULT TABLESPACE users;
SQL> GRANT sysbackup TO backup_admin;
$ rman target=backup_admin/bckpwd@pdborcl
4.2 使用 configure 命令配置RMAN
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUSET;
RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAL '/data/pdborcl/backups /bck_orcl_%U';
RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK MAXPIECESIZE 200m MAXOPENFILES 8 RATE 150m;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data/pdborcl/backups/controlfile/ctl_orcl_%F';
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
4.3 备份数据库
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
5. RMAN相关操作
5.1 检查和删除过时备份
RMAN> REPORT OBSOLETE;
RMAN> DELETE OBSOLETE;
5.2 创建RMAN目录用户
SQL> CREATE TABLESPACE catalog_tbs DATAFILE '/data/pdborcl /catalog_01_tbs.dbf' SIZE 100m;
SQL> CREATE USER catalog_bck IDENTIFIED BY rmancatalog DEFAULT TABLESPACE catalog_tbs QUOTA UNLIMITED ON catalog_tbs;
SQL> GRANT connect, resource, recovery_catalog_owner TO catalog_bck;
5.3 创建恢复目录
$ rman target / catalog=catalog_bck/rmancatalog@pdborcl
RMAN> CREATE CATALOG tablespace catalog_tbs;
5.4 在恢复目录中注册数据库
$ rman target=backup_admin/bckpwd catalog=catalog_bck/rmancatalog@pdborcl
RMAN> REGISTER DATABASE;
RMAN> REPORT SCHEMA;
5.5 创建虚拟专用目录
SQL> CREATE USER fmunoz IDENTIFIED BY alvarez DEFAULT TABLESPACE catalog_tbs;
SQL> GRANT recovery_catalog_owner TO fmunoz;
$ rman catalog=catalog_bck/rmancatalog@pdborcl
RMAN> GRANT CATALOG FOR DATABASE pdborcl TO fmunoz;
RMAN> GRANT REGISTER DATABASE TO fmunoz;
rman catalog=fmunoz/alvarez@pdborcl
RMAN> CREATE VIRTUAL CATALOG;
5.6 启用块更改跟踪
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
SQL> SELECT status FROM v$block_change_tracking;
6. RMAN监控与操作示例
6.1 监控备份

先运行备份脚本:

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

然后打开新终端,连接到SQL*Plus,执行以下命令监控备份进度:

SQL> SELECT sid, serial#, context, sofar, totalwork, 
  round(sofar/totalwork*100,2) "%_COMPLETE"
 2   FROM   v$session_longops
 3   WHERE  opname like 'RMAN%'
 4   AND    opname not like '%aggregate%'
 5   AND    totalwork !=0
 6   AND    sofar <> totalwork
/

此脚本显示当前通道的完成百分比,而非整个作业的完成百分比。

6.2 增量备份示例
RMAN> BACKUP INCREMENTALLEVEL=0 DATABASE PLUS ARCHIVELOG DELETE INPUT;
RMAN> BACKUP INCREMENTALLEVEL=1 DATABASE PLUS ARCHIVELOG DELETE INPUT;
RMAN> BACKUP INCREMENTALLEVEL=0 CUMULATIVE DATABASE PLUS ARCHIVELOG DELETE INPUT;
6.3 多段备份
RMAN> BACKUP SECTION SIZE 10M TABLESPACE users;
6.4 检查FRA的重做切换次数
SQL> ALTER SESSION SET nls_date_format='dd/mm/yyyy hh24:mi:ss';
SQL> SELECT sequence#, first_time log_started,
lead(first_time, 1,null) over (order by first_time) log_ended
 2   FROM (SELECT DISTINCT sequence#, first_time
 3         FROM   dba_hist_log
 4         WHERE  archived='YES'
 5         AND    sequence#!=0
 6         ORDER BY first_time)
 7   ORDER BY sequence#;
6.5 检查警报
SQL> SELECT reason FROM dba_outstanding_alerts;
6.6 检查FRA使用情况
SQL> SELECT * FROM v$recovery_file_dest;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> SELECT * FROM v$recovery_file_dest;
SQL> SELECT * FROM v$flash_recovery_area_usage;
6.7 查看目标数据库生成的归档日志
SQL> SET PAGESIZE 200
SQL> SET LINESIZE 200
SQL> COLUMN name FORMAT a50
SQL> COLUMN completion_time FORMAT a25
SQL> ALTER SESSION SET nls_date_format= 'DD-MON-YYYY:HH24:MI:SS';
SQL> SELECT name, sequence#, status, completion_time
 2   FROM   CATALOG_BCK.rc_archived_log;
6.8 查看控制文件备份
SQL> SET PAGESIZE 200
SQL> SET LINESIZE 200
SQL> SELECT file#, creation_time, resetlogs_time
blocks, block_size, controlfile_type
 2   FROM   v$backup_datafile where file#=0;
SQL> COLUMN completion_time FORMAT a25
SQL> COLUMN autobackup_date FORMAT a25
SQL> ALTER SESSION SET nls_date_format= 'DD-MON-YYYY:HH24:MI:SS';
SQL> SELECT db_name, status, completion_time, controlfile_type,
autobackup_date 
 2   FROM   CATALOG_BCK.rc_backup_controlfile;
SQL> SELECT creation_time, block_size, 
  status,completion_time,autobackup_date, autobackup_sequence
 2   FROM   CATALOG_BCK.rc_backup_controlfile;
6.9 查看数据文件备份中的损坏列表
SQL> SELECT db_name, piece#, file#, block#, blocks, corruption_type
 2   FROM   CATALOG_BCK.rc_backup_corruption where db_name='ORCL';
6.10 查看数据库中的块损坏情况
SQL> SELECT file#, block#, corruption_type
 2   FROM   v$database_block_corruption;
6.11 查看所有RMAN配置
SQL> COLUMN value FORMAT a60
SQL> SELECT db_key,name, value
 2   FROM   CATALOG_BCK.rc_rman_configuration;
6.12 监控备份输出(RMAN)
SQL> SELECT output FROM v$rman_output ORDER BY stamp;
6.13 RMAN离线备份
$ rman target / catalog=catalog_bck/rmancatalog@pdborcl
RMAN> SHUTDOWN IMMEDIATE
RMAN> STARTUP MOUNT
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;
RMAN> ALTER DATABASE OPEN;
6.14 不使用配置默认值的离线备份
SHUTDOWN IMMEDIATE
STARTUP MOUNT
RUN
{
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT 
  '/DB/u02/backups/other/bck1/orcl_%U';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT 
  '/DB/u02/backups/other/bck2/orcl_%U';
BACKUP AS COMPRESSED BACKUPSET DATABASE;
BACKUP CURRRENT CONTROLFILE;
}
6.15 使用备份限制(持续时间)
RMAN> BACKUP DURATION 00:05 DATABASE;
RMAN> BACKUP DURATION 00:05 MINIMIZE TIME DATABASE;
RMAN> BACKUP DURATION 00:05 MINIMIZE LOAD DATABASE;
6.16 修改备份集的保留策略(归档备份)
RMAN> BACKUP DATABASE KEEP FOREVER;
RMAN> BACKUP DATABASE FORMAT '/DB/u02/backups/other/bck1/orcl_%U' 
  KEEP untiltime='sysdate+180' TAG keep_backup;
6.17 归档删除策略
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK;
6.18 使用RMAN扫描数据库的物理和逻辑错误
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;
6.19 配置表空间以排除在整个数据库备份之外
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE example;
RMAN> BACKUP DATABASE;
# backs up the whole database, including example
RMAN> BACKUP DATABASE NOEXCLUDE;
RMAN> BACKUP TABLESPACE example;  # backs up only  example
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE example CLEAR;
6.20 跳过离线、不可访问或只读的数据文件
RMAN> BACKUP DATABASE SKIP READONLY;
RMAN> BACKUP DATABASE SKIP OFFLINE;
RMAN> BACKUP DATABASE SKIP INACCESSIBLE;
RMAN> BACKUP DATABASE SKIP READONLY SKIP OFFLINE SKIP INACCESSIBLE;
6.21 强制备份只读数据文件
RMAN> BACKUP DATABASE FORCE;
6.22 备份新添加的数据文件

添加新的数据文件到 example 表空间后,执行以下命令:

RMAN> BACKUP DATABASE NOT BACKED UP;
6.23 备份特定时间段内未备份的文件
RMAN> BACKUP DATABASE NOT BACKED UP SINCE time='sysdate-2';
RMAN> BACKUP ARCIVELOG ALL NOT BACKED UP 1 TIMES;
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG NOT 
  BACKED UP 1 TIMES DELETE INPUT;
6.24 一般备份示例
RMAN> BACKUP TABLESPACE USERS INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;
RMAN> BACKUP DATAFILE 2;
RMAN> BACKUP ARCHIVELOG ALL;
RMAN> BACKUP ARCHIVELOG FROM TIME 'sysdate-1';
RMAN> BACKUP ARCHIVELOG FROM SEQUENCE 123; (Enter here a valid 
  sequence from your database)
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
RMAN> BACKUP ARCHIVELOG FROM SEQUENCE xxx DELETE INPUT;
RMAN> BACKUP ARCHIVELOG NOT BACKED UP 3 TIMES;
RMAN> BACKUP ARCHIVELOG UNTIL TIME 'sysdate - 2' DELETE ALL INPUT;
6.25 备份副本
RMAN> BACKUP AS COPY DATABASE;
RMAN> BACKUP AS COPY TABLESPACE USERS;
RMAN> BACKUP AS COPY DATAFILE 1;
RMAN> BACKUP AS COPY ARCHIVELOG ALL;
7. 高级RMAN操作
7.1 已完成备份的信息
SQL> ALTER SESSION SET nls_date_format= 'DD-MON-YYYY:HH24:MI:SS';
SQL> SELECT /*+ RULE */ session_key, session_recid,
start_time, end_time, output_bytes, elapsed_seconds, optimized
 2   FROM   v$rman_backup_job_details
 3   WHERE  start_time >= sysdate-180
 4   AND    status='COMPLETED'
 5   AND    input_type='DB FULL';
7.2 活动会话历史摘要
SQL> SELECT sid, serial#, program 
 2   FROM   v$session 
 3   WHERE  lower(program) like '%rman%';
SQL> SET LINES 132 
SQL> COLUMN session_id FORMAT 999 HEADING "SESS|ID"
SQL> COLUMN session_serial# FORMAT 9999 HEADING "SESS|SER|#"
SQL> COLUMN event FORMAT a40
SQL> COLUMN total_waits FORMAT 9,999,999,999 HEADING 
  "TOTAL|TIME|WAITED|MICRO"
SQL> SELECT session_id, session_serial#, Event, sum(time_waited) 
  total_waits
 2   FROM   v$active_session_history
 3   WHERE  session_id||session_serial# in (403, 476, 4831)
 4   AND    sample_time > sysdate -1
 5   AND    program like '%rman%'
 6   AND    session_state='WAITING' And time_waited > 0
 7   GROUP BY session_id, session_serial#, Event
 8   ORDER BY session_id, session_serial#, total_waits desc;
7.3 备份所需时间

先运行备份脚本:

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

然后打开新终端,执行以下命令:

$ sqlplus / as sysdba
SQL> ALTER SESSION SET CONTAINER=pdborcl;
SQL> SELECT sid, serial#, program 
 2   FROM   v$session 
 3   WHERE  lower(program) like '%rman%';
SQL> SELECT sid, serial#, opname, time_remaining
 2   FROM   v$session_longops
 3   WHERE  sid||serial# in (<XXX>, <XXX>, <XXX>)
 4   AND    time_remaining > 0;

记得将 <XXX> 替换为第一个查询中的 sid serial# 。例如, sid=4 serial#=20 时,输入420。

7.4 V$BACKUP_ASYNC_IO
SQL> SELECT sid, serial#, program 
 2   FROM   v$session 
 3   WHERE  lower(program) like '%rman%';
SQL> COLUMN filename FORMAT a60
SQL> SELECT sid, serial, effective_bytes_per_second, filename 
 2   FROM   V$BACKUP_ASYNC_IO
 3   WHERE  sid||serial in (<XXX>, <XXX>, <XXX>);
SQL> SELECT LONG_WAITS/IO_COUNT, FILENAME
 2   FROM   V$BACKUP_ASYNC_IO 
 3   WHERE LONG_WAITS/IO_COUNT > 0 
 4   AND   sid||serial in (<XXX>, <XXX>, <XXX>)
 5   ORDER BY LONG_WAITS/IO_COUNT DESC; 

同样,将 <XXX> 替换为第一个查询中的 sid serial#

8. 表空间时间点恢复(TSPITR)

首先,检查 TEST 表空间是否完全自包含:

SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('test', TRUE);
SQL> SELECT * FROM transport_set_violations;

使用以下命令查找恢复期间将丢失的对象:

SQL> SELECT OWNER, NAME, TABLESPACE_NAME,
 2   TO_CHAR(CREATION_TIME, 'YYYY-MM-DD:HH24:MI:SS')
 3   FROM  TS_PITR_OBJECTS_TO_BE_DROPPED

综上所述,通过以上详细的步骤和操作示例,我们可以全面掌握Oracle数据库的备份、恢复以及相关的高级操作,确保数据的安全性和可恢复性。在实际应用中,可根据具体需求灵活运用这些方法和技巧。

Oracle数据库备份与恢复实战指南

9. 操作总结与对比

为了更清晰地展示前面介绍的各种操作及其特点,我们整理了以下表格:
|操作类型|操作描述|示例命令|
| ---- | ---- | ---- |
|数据库备份|创建整个数据库备份| RMAN> BACKUP DATABASE PLUS ARCHIVELOG; |
|数据泵导出作业|显示和创建数据泵导出作业|通过DBA Navigator右键选择“Data Pump Export Wizard”|
|数据泵导入作业|显示和创建数据泵导入作业|通过DBA Navigator右键选择“Data Pump Import Wizard”|
|增量备份|不同级别和类型的增量备份| RMAN> BACKUP INCREMENTALLEVEL=0 DATABASE PLUS ARCHIVELOG DELETE INPUT; 等|
|多段备份|按指定大小对表空间进行备份| RMAN> BACKUP SECTION SIZE 10M TABLESPACE users; |
|检查FRA|检查FRA的重做切换次数、使用情况等| SQL> SELECT sequence#, first_time log_started, ... 等|
|表空间排除|配置表空间排除在整个数据库备份之外| RMAN> CONFIGURE EXCLUDE FOR TABLESPACE example; |

下面是一个简单的mermaid流程图,展示数据库备份的基本流程:

graph LR
    A[开始] --> B[检查备份信息]
    B --> C{信息是否正确}
    C -- 是 --> D[执行备份]
    C -- 否 --> B
    D --> E[完成备份]
    E --> F[查看作业日志]
10. 常见问题及解决方法

在进行Oracle数据库备份和恢复操作时,可能会遇到一些常见问题,以下是部分问题及解决建议:
- 备份失败
- 可能原因 :配置错误、磁盘空间不足、权限问题等。
- 解决方法 :检查RMAN配置参数,确保磁盘有足够空间,检查用户权限是否足够。例如,若磁盘空间不足,可清理不必要的文件或扩展磁盘。
- 恢复数据不完整
- 可能原因 :备份文件损坏、恢复过程中出现错误等。
- 解决方法 :使用 RMAN> REPORT OBSOLETE; RMAN> DELETE OBSOLETE; 检查和删除过时备份,重新进行备份和恢复操作。
- RMAN配置错误
- 可能原因 :参数设置错误、配置文件损坏等。
- 解决方法 :仔细检查 configure 命令中的参数,如 RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUSET; 等,必要时重新配置。

11. 最佳实践建议

为了更好地进行Oracle数据库的备份和恢复操作,以下是一些最佳实践建议:
- 定期备份 :根据数据的重要性和变化频率,制定合理的备份计划,如每天进行全量备份,每小时进行增量备份。
- 测试恢复流程 :定期进行恢复测试,确保在需要时能够成功恢复数据。可以使用测试环境进行恢复演练。
- 监控备份过程 :使用前面介绍的监控命令,如 SQL> SELECT sid, serial#, context, sofar, totalwork, ... 监控备份进度,及时发现和解决问题。
- 优化配置 :根据服务器性能和数据特点,优化RMAN配置参数,如调整备份压缩类型、通道数量等。

12. 未来趋势与拓展

随着技术的不断发展,Oracle数据库备份和恢复技术也在不断演进。未来可能会出现以下趋势:
- 自动化程度提高 :更多的备份和恢复操作将实现自动化,减少人工干预,提高效率和准确性。
- 云备份与恢复 :越来越多的企业将选择将数据库备份到云端,利用云服务的高可用性和扩展性。
- 智能监控与分析 :借助人工智能和机器学习技术,实现对备份和恢复过程的智能监控和分析,提前预测和解决潜在问题。

为了适应这些趋势,我们可以关注相关技术的发展,积极尝试新的备份和恢复方法,不断提升自己的技能和能力。

13. 总结

通过本文的介绍,我们详细了解了Oracle数据库备份与恢复的各种操作,包括数据库配置、RMAN配置、备份类型、监控方法以及高级操作等。同时,我们还总结了常见问题的解决方法和最佳实践建议。希望这些内容能够帮助你更好地管理和保护Oracle数据库,确保数据的安全性和可恢复性。在实际操作中,要根据具体情况灵活运用所学知识,不断积累经验,提高自己的技术水平。

总之,掌握Oracle数据库备份与恢复技术是数据库管理员的重要技能之一,通过不断学习和实践,我们能够更好地应对各种数据安全挑战。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值