oracle active dataguard,Oracle Active DataGuard Oracle to Oracle配置

1.数据库环境介绍

1)主库(源数据库):

Oracle 11G R2

IP:192.168.4.105

HOSTNAME:oadb

SID:oa

ORACLE_BASE:/u01/app/oracle

ORACLE_HOME:/u01/app/oracle/product/11.2.0/dbhome_1

2)备库(目标数据库):

Oracle 11g R2

IP:192.168.4.106

HOSTNAME:oadbstandby

SID:oa

ORACLE_BASE:/u01/app/oracle

ORACLE_HOME:/u01/app/oracle/product/11.2.0/dbhome_1

2.配置db_unique_name

1)配置主库db_unique_name

SQL> show parameter db_unique_name;

NAME TYPE VALUE

db_unique_name string oa

注:主库db_unique_name这里不作修改,保持生产环境不受影响

2)配置备库db_unique_name

SQL> show parameter db_unique_name;

NAME TYPE VALUE

db_unique_name string oa

SQL> alter system set db_unique_name=standbydb scope=spfile;

System altered

注:配置db_unique_name,需要重启数据库才能生效

3.主库配置

1)配置网络服务名

[oracle@oadb ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[oracle@oadb admin]$ vi tnsnames.ora

OA =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.105)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oa)

)

)

STANDBYDB =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.106)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = standbydb)

)

)

2)配置监听,添加静态注册

[root@oadb admin]# pwd

/u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[root@oadb admin]# vi listener.ora

listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_DESC =

(GLOBAL_DBNAME = oa)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = oa)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = oadb)(PORT = 1521))

)

)

ADR_BASE_LISTENER = /u01/app/oracle

3)将主库修改为forcelogging模式

SQL> select name,open_mode,log_mode,force_logging from gv$database;

NAME OPEN_MODE LOG_MODE FOR

OA READ WRITE ARCHIVELOG NO

SQL> alter database force logging;

Database altered.

SQL> select name,open_mode,log_mode,force_logging from gv$database;

NAME OPEN_MODE LOG_MODE FOR

OA READ WRITE ARCHIVELOG YES

4)设置参数

a)设置所有启用的数据库名

SQL> show parameter log_archive_config;

NAME TYPE VALUE

log_archive_config string

SQL> alter system set log_archive_config='dg_config=(oa,standbydb)';

System altered.

SQL> show parameter log_archive_config;

NAME TYPE VALUE

log_archive_config string dg_config=(oa,standbydb)

注:dg_config为主备库的db_unique_name

b)开启归档模式

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 409194496 bytes

Fixed Size 2253744 bytes

Variable Size 310381648 bytes

Database Buffers 92274688 bytes

Redo Buffers 4284416 bytes

Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

c)设置归档日志的路径(本地和网络)

SQL> show parameter log_archive_dest_1;

NAME TYPE VALUE

log_archive_dest_1 string

log_archive_dest_10 string

log_archive_dest_11 string

log_archive_dest_12 string

log_archive_dest_13 string

log_archive_dest_14 string

log_archive_dest_15 string

log_archive_dest_16 string

log_archive_dest_17 string

log_archive_dest_18 string

log_archive_dest_19 string

SQL> show parameter log_archive_dest_2;

NAME TYPE VALUE

log_archive_dest_2 string

log_archive_dest_20 string

log_archive_dest_21 string

log_archive_dest_22 string

log_archive_dest_23 string

log_archive_dest_24 string

log_archive_dest_25 string

log_archive_dest_26 string

log_archive_dest_27 string

log_archive_dest_28 string

log_archive_dest_29 string

SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/OA/archivelog/ optional';

System altered.

SQL> alter system set log_archive_dest_2='service=standbydb lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=standbydb';

System altered.

SQL> show parameter log_archive_dest_1;

NAME TYPE VALUE

log_archive_dest1 string LOCATION=/u01/app/oracle/fast

recovery_area/OA/archivelog/ o

ptional

log_archive_dest_10 string

log_archive_dest_11 string

log_archive_dest_12 string

log_archive_dest_13 string

log_archive_dest_14 string

log_archive_dest_15 string

log_archive_dest_16 string

log_archive_dest_17 string

NAME TYPE VALUE

log_archive_dest_18 string

log_archive_dest_19 string

SQL> show parameter log_archive_dest_2;

NAME TYPE VALUE

log_archive_dest_2 string service=standbydb lgwr sync af

firm valid_for=(online_logfile

,primary_role) db_unique_name=

standbydb

log_archive_dest_20 string

log_archive_dest_21 string

log_archive_dest_22 string

log_archive_dest_23 string

log_archive_dest_24 string

log_archive_dest_25 string

log_archive_dest_26 string

NAME TYPE VALUE

log_archive_dest_27 string

log_archive_dest_28 string

log_archive_dest_29 string

注:service值为备用数据库的TNSNAMES描述符

d)设置备库文件自动管理,可以在主库新建数据文件的时候自动新建备库

SQL> show parameter standby_file_management;

NAME TYPE VALUE

standby_file_management string MANUAL

SQL> alter system set standby_file_management='AUTO';

System altered.

SQL> show parameter standby_file_management;

NAME TYPE VALUE

standby_file_management string AUTO

e)设置FAL_SERVER为备库Oracle Net service name,

SQL> show parameter fal_server;

NAME TYPE VALUE

fal_server string

SQL> alter system set fal_server='standbydb';

System altered.

SQL> show parameter fal_server;

NAME TYPE VALUE

fal_server string standbydb

f)创建standby redolog

SQL> alter database add standby logfile group 11 ('/u01/app/oracle/oradata/oa/standby11.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 12 ('/u01/app/oracle/oradata/oa/standby12.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 13 ('/u01/app/oracle/oradata/oa/standby13.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 14 ('/u01/app/oracle/oradata/oa/standby14.log') size 50m;

Database altered.

注1:由于备库后续会使用主库RMAN还原,这里无需在备库存创建,等备库使用RMAN还原后,再创建standby redolog

注2:建立standby如要注意以下几点:

a)standby log files的大小和redo log files一样。 查询redo log files文件大小(默认50M,3个):select group#,bytes/1024/1024 as M from v$log;

b)一般而言, standbyredo 日志文件组数要比 primary 数据库的 online redo 日志文件组数至少多一个。 有一个推荐的公式可以做参考:(每线程的日志组数+1)最大线程数 假设现在节点是1个,则=(3+1)1=4

如果是双节点 则=(3+1)*2=8

c)不建议组号group#紧挨着redo,因为后续redo有可能调整

c)不建议组号group#紧挨着redo,因为后续redo有可能调整

4.备库配置

1)配置网络服务名

[oracle@oadbstandby ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[oracle@oadbstandby admin]$ vi tnsnames.ora

OA =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.105)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oa)

)

)

STANDBYDB =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.106)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = standbydb)

)

)

2)配置监听,添加静态注册

[root@oadbstandby admin]# pwd

/u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[root@oadbstandby admin]# vi listener.ora

listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_DESC =

(GLOBAL_DBNAME = oa)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = oa)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = oadbstandby)(PORT = 1521))

)

)

ADR_BASE_LISTENER = /u01/app/oracle

3)将备库修改为forcelogging模式

SQL> select name,open_mode,log_mode,force_logging from gv$database;

NAME OPEN_MODE LOG_MODE FOR

OA READ WRITE ARCHIVELOG NO

SQL> alter database force logging;

Database altered.

SQL> select name,open_mode,log_mode,force_logging from gv$database;

NAME OPEN_MODE LOG_MODE FOR

OA READ WRITE ARCHIVELOG YES

4)设置参数

a)开启归档模式

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 409194496 bytes

Fixed Size 2253744 bytes

Variable Size 310381648 bytes

Database Buffers 92274688 bytes

Redo Buffers 4284416 bytes

Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

b)设置所有的启用的数据库名

SQL> show parameter log_archive_config;

NAME TYPE VALUE

log_archive_config string

SQL> alter system set log_archive_config='dg_config=(oa,standbydb)';

System altered.

SQL> show parameter log_archive_config;

NAME TYPE VALUE

log_archive_config string dg_config=(oa,standbydb)

注:dg_config为主备库的db_unique_name

c)设置归档日志的路径(本地和网络)

SQL> show parameter log_archive_dest_1;

NAME TYPE VALUE

log_archive_dest_1 string

log_archive_dest_10 string

log_archive_dest_11 string

log_archive_dest_12 string

log_archive_dest_13 string

log_archive_dest_14 string

log_archive_dest_15 string

log_archive_dest_16 string

log_archive_dest_17 string

log_archive_dest_18 string

log_archive_dest_19 string

SQL> show parameter log_archive_dest_2;

NAME TYPE VALUE

log_archive_dest_2 string

log_archive_dest_20 string

log_archive_dest_21 string

log_archive_dest_22 string

log_archive_dest_23 string

log_archive_dest_24 string

log_archive_dest_25 string

log_archive_dest_26 string

log_archive_dest_27 string

log_archive_dest_28 string

log_archive_dest_29 string

SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/OA/archivelog/ optional';

System altered.

SQL> alter system set log_archive_dest_2='service=oa lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=oa';

System altered.

SQL> show parameter log_archive_dest_1;

NAME TYPE VALUE

log_archive_dest1 string LOCATION=/u01/app/oracle/fast

recovery_area/OA/archivelog/ o

ptional

log_archive_dest_10 string

log_archive_dest_11 string

log_archive_dest_12 string

log_archive_dest_13 string

log_archive_dest_14 string

log_archive_dest_15 string

log_archive_dest_16 string

log_archive_dest_17 string

NAME TYPE VALUE

log_archive_dest_18 string

log_archive_dest_19 string

SQL> show parameter log_archive_dest_2;

NAME TYPE VALUE

log_archive_dest_2 string service=oa lgwr sync affirm va

lid_for=(online_logfile,primar

y_role) db_unique_name=oa

log_archive_dest_20 string

log_archive_dest_21 string

log_archive_dest_22 string

log_archive_dest_23 string

log_archive_dest_24 string

log_archive_dest_25 string

log_archive_dest_26 string

log_archive_dest_27 string

NAME TYPE VALUE

log_archive_dest_28 string

log_archive_dest_29 string

注: 目的,当备库转换为主库的时候把重做日志写到新备库

service值为备用数据库的TNSNAMES描述符

d)设置备库文件自动管理,可以在主库新建数据文件的时候自动新建备库

SQL> show parameter standby_file_management;

NAME TYPE VALUE

standby_file_management string MANUAL

SQL> alter system set standby_file_management='AUTO';

System altered.

SQL> show parameter standby_file_management;

NAME TYPE VALUE

standby_file_management string AUTO

e)设置FAL_SERVER为备库Oracle Net service name,

SQL> show parameter fal_server;

NAME TYPE VALUE

fal_server string

SQL> alter system set fal_server='oa';

System altered.

SQL> show parameter fal_server;

NAME TYPE VALUE

fal_server string oa

5.拷贝主库密码文件到备库

注:密码文件一般都在$ORACLE_HOME/dbs/下,名称为orapw实例名;

注意每个实例的实例名不一样,所以复制到对应的实例下时一定需要注意命名问题

6.使用RMAN备份主库

备份脚本:

rman target / log=/backup/rmanbackup/2018-05-11/rman_oa2018-05-11.log <

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

change archivelog all crosscheck;

crosscheck backup;

delete noprompt expired backup;

delete noprompt archivelog until time '(sysdate-10)';

backup database format '/backup/rmanbackup/2018-05-11/db%U%I%T' TAG='standbydb';

sql 'alter system archive log current';

backup archivelog all not backed up format '/backup/rmanbackup/2018-05-11/arch%U%I%T' tag='standbyarch';

backup current controlfile format='/backup/rmanbackup/2018-05-11/ctl%U%I%T' tag='standbyctl';

backup spfile format='/backup/rmanbackup/2018-05-11/spfile%U%I%T' tag='standby_spfile';

release channel c1;

release channel c2;

}

EOF

7.备库还原(使用主库RMAN备份文件还原)

1)授权从主库拷贝到备库的RMAN备份文件

[root@oadbstandby rmanbackup]# chown -R oracle:oinstall 2018-05-11

2)登录到备库,启动备库到nomount状态

[root@oadbstandby /]# su - oracle

[oracle@oadbstandby ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Fri May 11 10:56:14 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: OA (DBID=3393907898)

RMAN> startup nomount force;

Oracle instance started

Total System Global Area 409194496 bytes

Fixed Size 2253744 bytes

Variable Size 314575952 bytes

Database Buffers 88080384 bytes

Redo Buffers 4284416 bytes

RMAN>

3)将备库dbid设置和主库dbid相同

RMAN> set dbid 3393850737;

executing command: SET DBID

4)还原控制文件

RMAN> restore standby controlfile from '/backup/rmanbackup/2018-05-11/ctl_0at2k9ev_1_1_3393850737_20180511';

Starting restore at 11-MAY-18

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=19 device type=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:03

output file name=/u01/app/oracle/oradata/oa/control01.ctl

output file name=/u01/app/oracle/fast_recovery_area/oa/control02.ctl

Finished restore at 11-MAY-18

5)启动数据库到mount状态

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

6)注册从源数据库拷贝过来的备份集到rman中

RMAN> catalog start with '/backup/rmanbackup/2018-05-11/';

Starting implicit crosscheck backup at 11-MAY-18

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=27 device type=DISK

Crosschecked 7 objects

Finished implicit crosscheck backup at 11-MAY-18

Starting implicit crosscheck copy at 11-MAY-18

using channel ORA_DISK_1

Finished implicit crosscheck copy at 11-MAY-18

searching for all files in the recovery area

cataloging files...

cataloging done

=======================

List of Cataloged Files

File Name: /u01/app/oracle/fast_recovery_area/STANDBYDB/archivelog/2018_05_11/o1_mf_1_8fh9zs7mh.arc

File Name: /u01/app/oracle/fast_recovery_area/STANDBYDB/archivelog/2018_05_11/o1_mf_1_6fh9znlgg.arc

File Name: /u01/app/oracle/fast_recovery_area/STANDBYDB/archivelog/2018_05_11/o1_mf_1_7fh9zpxw5.arc

searching for all files that match the pattern /backup/rmanbackup/2018-05-11/

List of Files Unknown to the Database

File Name: /backup/rmanbackup/2018-05-11/spfile_0bt2k9f1_1_1_3393850737_20180511

File Name: /backup/rmanbackup/2018-05-11/rman_oa_2018-05-11.log

File Name: /backup/rmanbackup/2018-05-11/ctl_0at2k9ev_1_1_3393850737_20180511

Do you really want to catalog the above files (enter YES or NO)? yes

cataloging files...

cataloging done

=======================

List of Cataloged Files

File Name: /backup/rmanbackup/2018-05-11/spfile_0bt2k9f1_1_1_3393850737_20180511

File Name: /backup/rmanbackup/2018-05-11/ctl_0at2k9ev_1_1_3393850737_20180511

=======================================

List of Files Which Where Not Cataloged

File Name: /backup/rmanbackup/2018-05-11/rman_oa_2018-05-11.log

RMAN-07517: Reason: The file header is corrupted

7)还原数据文件

RMAN> run {

set newname for datafile 1 to '/u01/app/oracle/oradata/oa/system01.dbf';

set newname for datafile 2 to '/u01/app/oracle/oradata/oa/sysaux01.dbf';

set newname for datafile 3 to '/u01/app/oracle/oradata/oa/undotbs01.dbf';

set newname for datafile 4 to '/u01/app/oracle/oradata/oa/users01.dbf';

restore database;

switch datafile all;

}6> 7> 8>

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 11-MAY-18

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/oa/sysaux01.dbf

channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/oa/undotbs01.dbf

channel ORA_DISK_1: reading from backup piece /backup/rmanbackup/2018-05-11/db_04t2k9d9_1_1_3393850737_20180511

channel ORA_DISK_1: piece handle=/backup/rmanbackup/2018-05-11/db_04t2k9d9_1_1_3393850737_20180511 tag=STANDBY_DB

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/oa/system01.dbf

channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/oa/users01.dbf

channel ORA_DISK_1: reading from backup piece /backup/rmanbackup/2018-05-11/db_03t2k9d9_1_1_3393850737_20180511

channel ORA_DISK_1: piece handle=/backup/rmanbackup/2018-05-11/db_03t2k9d9_1_1_3393850737_20180511 tag=STANDBY_DB

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:16

Finished restore at 11-MAY-18

datafile 1 switched to datafile copy

input datafile copy RECID=1 STAMP=975841382 file name=/u01/app/oracle/oradata/oa/system01.dbf

datafile 2 switched to datafile copy

input datafile copy RECID=2 STAMP=975841382 file name=/u01/app/oracle/oradata/oa/sysaux01.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=3 STAMP=975841382 file name=/u01/app/oracle/oradata/oa/undotbs01.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=4 STAMP=975841382 file name=/u01/app/oracle/oradata/oa/users01.dbf

8)恢复数据库

RMAN> recover database;

Starting recover at 11-MAY-18

using channel ORA_DISK_1

starting media recovery

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=8

channel ORA_DISK_1: reading from backup piece /backup/rmanbackup/2018-05-11/arch_08t2k9es_1_1_3393850737_20180511

channel ORA_DISK_1: piece handle=/backup/rmanbackup/2018-05-11/arch_08t2k9es_1_1_3393850737_20180511 tag=STANDBY_ARCH

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

archived log file name=/u01/app/oracle/fast_recovery_area/OA/archivelog/1_8_975777331.dbf thread=1 sequence=8

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=9

channel ORA_DISK_1: reading from backup piece /backup/rmanbackup/2018-05-11/arch_09t2k9eu_1_1_3393850737_20180511

channel ORA_DISK_1: piece handle=/backup/rmanbackup/2018-05-11/arch_09t2k9eu_1_1_3393850737_20180511 tag=STANDBY_ARCH

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

archived log file name=/u01/app/oracle/fast_recovery_area/OA/archivelog/1_9_975777331.dbf thread=1 sequence=9

unable to find archived log

archived log thread=1 sequence=10

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

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

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

RMAN-03002: failure of recover command at 05/11/2018 11:03:46

RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 10 and starting SCN of 1001269

8.创建standby redolog

SQL> alter database drop standby logfile group 11;

Database altered.

SQL> alter database drop standby logfile group 12;

Database altered.

SQL> alter database drop standby logfile group 13;

Database altered.

SQL> alter database drop standby logfile group 14;

Database altered.

SQL> alter database add standby logfile group 11 ('/data/oradata/standby11.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 12 ('/data/oradata/standby12.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 13 ('/data/oradata/standby13.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 14 ('/data/oradata/standby14.log') size 50m;

9.以只读方式打开standbydb

SQL> alter database open read only;

Database altered.

10.standbydb启动redo apply

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值