019.笔记:在虚拟机部署10G RAC

第一步:准备环境
(一)VMware server 环境
1:安装VMWARE server2.0
VMware的remote console需要一个非空的DNS,如果DNS是空的,REMOTE CONSOLE会频繁报错
2:用VMWARE创建共享磁盘
(1)为voting disk和ocr各创建100MB的单独磁盘
(2)再创建三块保存数据的1GB磁盘
(3)创建磁盘的选项
选中Allocate all disk space now
在Virtual device node中选择一个新的scsi总线(比如虚拟机默认磁盘SCSI 0:x,则新添加的硬盘可以使用1:x)
选中Persistent
(4)修改虚拟机配置
在配置linux系统之前,首先到你的虚拟机工作目录,打开.vmx文件,添加下列内容:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
scsi1:4.deviceType = "disk"
scsi1:5.deviceType = "disk"
scsi1:6.deviceType = "disk"

3:创建公私两块网卡

(二)操作系统准备工作
4:安装RHEL4
我希望在本机不联网的情况下主机与虚拟机是互通的,所有网络连接方式用HOST-ONLY
5.操作系统配置LC_ALL=zh_CN.gbk LANG=zh_CN.gbk /etc/sysconfig/i18n
6.操作系统启动FTPSERVER,关闭无用的服务(如sendmail)
7.配置IP并编辑/etc/hosts文件
[root@node1 ~]# vi /etc/hosts
增加如下内容:
192.168.100.101 node1
192.168.100.102 node2
192.168.100.103 node3
192.168.100.201 node1-vip
192.168.100.202 node2-vip
192.168.100.203 node3-vip
10.0.0.101 node1-priv
10.0.0.102 node2-priv
10.0.0.103 node3-priv
提示:192.168.100.201,202为指定的虚IP,供CRS使用,不需要我们配置。


第二步:配置LINUX系统中的共享磁盘
1. 创建组oinstall,dba,用户oracle
groupadd oinstall
groupadd dba
useradd -d /home/oracle -g oinstall -G dba oracle
passwd oracle
[root@node1 ~]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
如果是非虚机安装,要注意记录下用户和组ID,在其它机器上创建同名组时,务必确认组ID和用户ID与此相同。

2.用FDISK给磁盘分区
例: fdisk sdb
n/p/1/回车/回车/w
m:查看命令

fdisk -l查看分区

3. 配置裸设备
(1)RHEL4裸设备配置方法/etc/sysconfig/rawdevices
/dev/raw/raw4 /dev/sde1
/dev/raw/raw5 /dev/sdf1

--------------------------------------------------------------------------
--ocr与投票磁盘使用裸设备,OCFS与ASM使用磁盘分区即可
--OCR使用裸设备时,可做一次镜像。所以在安装前可以为OCR准备两个设备。
--同理,为VOTING准备三个设备。
--------------------------------------------------------------------------


service rawdevices restart
--三思笔记中用start_udev重启?start_udev重启什么?为什么重启后设备属主由oracle变成了root,设备属性(WRX)也变了?
--书中用service rawdevices restart重启


chown oracle:oinstall -R /dev/raw/
chmod 755 -R /dev/raw

--重起系统后,如何设置才能保证 raw的属主不改变?
--可以将上面两行命令放到rc.local。这个操作是不是必须的?需要验证。



(2)RHEL5配置裸设备
由于RHEL5中取消了rawdevices,如果不想将映射命令放到rc.local中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中

增加如下内容:
ACTION=="add", KERNEL=="/dev/sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", KERNEL=="/dev/sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"
ACTION=="add", KERNEL=="/dev/sdd1",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m"
ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m"
KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="640"

--上面是三思笔记的原文,下面是补充
此处关于/etc/udev/rules.d/60-raw.rules 的配置,改为:
ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1",RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="0660"

4. 安装ASMLIB包
mkdir /u01
chown oracle:oinstall /u01
oracle>mkdir /u01/ora10g/
mkdir /u01/asmlib
mkdir /u01/ora10g/10g
mkdir /u01/ocfs2


rpm -ivh oracleasm-support-2.1.7-1.el4.i386.rpm
rpm -ivh oracleasm-2.6.9-89.EL-2.0.5-1.el4.i686.rpm
rpm -ivh oracleasm-2.6.9-89.EL-debuginfo-2.0.5-1.el4.i686.rpm
rpm -ivh kernel-hugemem-devel-2.6.9-89.EL.i686.rpm
rpm -ivh kernel-hugemem-2.6.9-89.EL.i686.rpm
rpm -ivh oracleasm-2.6.9-89.ELhugemem-2.0.5-1.el4.i686.rpm
rpm -ivh oracleasm-2.6.9-89.ELsmp-2.0.5-1.el4.i686.rpm
rpm -ivh kernel-xenU-2.6.9-89.EL.i686.rpm
rpm -ivh kernel-xenU-devel-2.6.9-89.EL.i686.rpm
rpm -ivh oracleasm-2.6.9-89.ELxenU-2.0.5-1.el4.i686.rpm
rpm -ivh oracleasmlib-2.0.4-1.el4.i386.rpm

5. 使用OCFS2
5.1安装 root
核心模块下载:http://oss.oracle.com/projects/ocfs2/files/
工具包下载: http://oss.oracle.com/projects/ocfs2tools/files
核心模块,下载时要考虑它的发行号,适用的平台,操作系统内核版本以及内核的类型(比如SMP,HEGEMEM,PSMP等),
对于工具包,只要符合发行版本和平台就可以了。
rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
rpm -ivh ocfs2console-1.2.7-1.el4.i386.rpm
rpm -ivh ocfs2-2.6.9-89.ELsmp-1.2.9-1.el4.i686.rpm

OCFS2文件系统,关闭SElinux

5.2配置/etc/ocfs2/cluster.conf

/etc/init.d/o2cb start

root用户运行:ocfs2console 【cluster】【configure nodes】--每个节点都要配置,配置对公IP
错误1:配置【configure nodes】提示:o2cb_ctl:unable to access
解决:删除/etc/ocfs2/cluster.conf,重新运行ocfs2console

注:直接编辑/etc/ocfs2/cluster.conf的成功率高,cluster.conf的内容如下
-----------------------------------------------
node:
ip_port = 7777
ip_address = 192.168.100.101
number = 0
name = node1
cluster = ocfs2

node:
ip_port = 7777
ip_address = 192.168.100.102
number = 1
name = node2
cluster = ocfs2

cluster:
node_count = 2
name = ocfs2
-----------------------------------------------

/etc/init.d/o2cb status
/etc/init.d/o2cb online ocfs2 --加载所有ocfs2模块
--挂载前还需要做什么,才能保证挂载不报错?
mount -t ocfs2 /dev/sdb1 /ocfs

--配置等效性连接,用下面的菜单
ocfs2console 【cluster】【propagete configure】


错误2:Starting O2CB cluster ocfs2: Failed
o2cb_ctl: Configuration error discovered while populating cluster ocfs2. None of its nodes were considered local. A node is considered local when its node name in the configuration matches this machine's host name.
解决:vi /etc/ocfs2/cluster.conf
将私有IP改为公有IP

错误3:mount.ocfs2: Transport endpoint is not connected while mounting /dev/sdb1 on /ocfs. Check 'dmesg' for more information on this error.
: Could not mount /dev/sdb1
解决:可能问题
1:防火墙打开着,没有关闭,屏蔽了心跳端口
2:各个节点的/etc/init.d/o2cb configure值配置不同导致
3:一个节点处于挂载中,另外一个节点刚刚配置好,重启ocfs2服务导致,此时只要把两个节点都重启一下服务即可完成挂载
(这个方法不是好方法,应该可以在不重启现有节点服务的情况下解决这个问题)
4:SELinux没有关闭导致


5.3 挂载磁盘
格式化
创建挂载点mkdir /ocfs --/ocfs属主为root,子目录(挂载后创建如/ocfs/admin,/ocfs/oradata)属主为ORACLE
挂载 --每个节点都挂载,用ocfs2console或mount -t ocfs2 /dev/sdb1 /ocfs

配置自动挂载,
/etc/init.d/o2cb online ocfs2
mount -t ocfs2 /dev/sdb1 /ocfs放到/etc/rc.local中

5.4 创建子目录
如:admin,oradata
子目录的属主改为oracle:oinstall

附:在系统在加一块普通磁盘的方法
fdisk /dev/sdi ..
mkfs -V -t ext3 /dev/sdi1
mount /dev/sdi1 /disk2


第三步:检查网络
192.168.100.101 node1
192.168.100.102 node2
192.168.100.103 node3
192.168.100.201 node1-vip
192.168.100.202 node2-vip
192.168.100.203 node3-vip
10.0.0.101 node1-priv
10.0.0.102 node2-priv
10.0.0.103 node3-priv
提示:192.168.100.201,202为指定的虚IP,供CRS使用,不需要我们配置。


第四步:安装RAC软件前的其他配置

4.1、配置内核参数

[root@node1 ~]# vi /etc/sysctl.conf

增加或修改下列内容
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

提示,上述参数中通常只有一项需要我们更改,即kernel.shmmax,该参数推荐设定为物理内存的一半,由于安装crs的时候要求内存至少512M,因此我们此处也按照512*1024*1024来设置。

然后:
[root@node1 Server]# sysctl -p
让设置生效

?? 4.1、提高 Oracle 用户的 shell 限制
设置oracle使用的文件数权限
[root@node1 ~]# vi /etc/security/limits.conf
增加下列内容(含议见limits.conf 的注释)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

修改安全限制
[root@node1 ~]# vi /etc/pam.d/login
增加:
session required /lib/security/pam_limits.so

配置Hangcheck计时器
[root@node1 ~]# vi /etc/rc.local
增加:
modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180


?? -bash: ulimit: max user processes: cannot modify limit: 不允许的操作

3.1 修改oracle用户的初始化参数文件
[root@node1 ~]# vi /home/oracle/.bash_profile
增加如下内容:
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=racdb
export ORACLE_BASE=/u01/ora10g
export ORACLE_HOME=$ORACLE_BASE/10g
export ORA_CRS_HOME=$ORACLE_BASE/crs
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$CRS_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LC_ALL=zh_CN.gbk
export LANG=zh_CN.gbk
ulimit -u 16384 -n 65536
umask 022

LD_ASSUME_KERNEL--调整操作系统内核与数据库软件兼容性的环境变量。兼容性问题可能会导致安装进度条不动等问题。
如:export LD_ASSUME_KERNEL=2.4.1、export LD_ASSUME_KERNEL=2.4.19

LD_LIBRARY_PATH--Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)
--ORACLE_SID:db_name为RACDB,实例名为RACDB1,RACDB2。注意大小写

ROOT用户增加参数:
export ORACLE_BASE=/u01/ora10g
export ORACLE_HOME=$ORACLE_BASE/10g
export ORA_CRS_HOME=$ORACLE_BASE/crs
export LC_ALL=zh_CN.gbk
export LANG=zh_CN.gbk

3.2、创建/opt/ora10g目录,要注意该目录所有者或oracle用户的权限
mkdir /u01/ora10g
mkdir /u01/ora10g/crs
mkdir /u01/ora10g/10g

/u01/ora10g ORACLE_BASE
/u01/ora10g/crs ORA_CRS_HOME
/u01/ora10g/10g ORACLE_HOME


第五步:配置Clusterware安装环境
5.1等效用户
(1)所有节点都生成自己的公私密钥对(DSA或RSA)
mkdir ~/.ssh
ssh-keygen -t dsa (或ssh-keygen -t rsa) --测试发现rsa

(2)将所有节点的公钥都写入authorized_key
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh node1 date --将信息写入 known_hosts

--将authorized_keys,known_hosts传到其他节点,并执行上述两条命令,直到文件中包含所有节点的信息

(3)将公钥发存给所有节点(没发布所有节点密钥时,ssh 其他结点 date 始终会要求录入密码)
scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys
在所有机器上测试:如node1上执行一次,ssh node1 date , ssh node2 date

(4)ssh命令显示的中文件乱码如何解决?
修改i18n
/etc/sysconfig/i18n
LANG="zh_CN.gbk"--当前系统的语言环境变量
SUPPORTED="zh_CN.gbk:zh_CN:zh"--系统预置了那些语言支持,不在项目中的语言不能正常显示
SYSFONT="latarcyrheb-sun16"--定义控制台终端字体,你文本登录的时候的字体就是这个"latarcyrheb-sun16"
i18n是internationalization的缩写形式,i与n之间有18个字母

5.2配置ASM
(1)sh /etc/init.d/oracleasm configure
录入oracle/dba/y/y
(2)这一步在一个节点上执行就可以
/etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
/etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
/etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
/etc/init.d/oracleasm createdisk VOL4 /dev/sde1
/etc/init.d/oracleasm createdisk VOL5 /dev/sdf1

(3)oracleasm listdisks

5.3同步各节点的时间


第六步:安装Clusterware
6.1 检查安装环境
在安装crs之前,建议先利用CVU(Cluster Verification Utility)检查 CRS 的安装前环境
./clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

--与/bin/cluvfy 是一个命令
----------------------------------------------------------------------------------
USAGE:
cluvfy [ -help ]
cluvfy stage { -list | -help }
cluvfy stage {-pre|-post} [-verbose]
cluvfy comp { -list | -help }
cluvfy comp [-verbose]

stage:阶段;verbose:冗余

cluvfy stage -list
USAGE:
cluvfy stage {-pre|-post} [-verbose]
有效的阶段选项和阶段名称为:
-post hwos : 后期检查硬件和操作系统
-pre cfs : 预检查 CFS 设置
-post cfs : 后期检查 CFS 设置
-pre crsinst : 预检查 CRS 安装
-post crsinst : 后期检查 CRS 安装
-pre dbinst : 预检查数据库安装
-pre dbcfg : 预检查数据库配置
----------------------------------------------------------------------------------



需要注意几点,其返回的信息中有几个错误可忽略
A).与VIP 查找一组适合的接口有关
B).有一堆包的验证会出现错误,要么提示找不到,要么是版本不对。
Check: Package existence for "compat-gcc-7.3-2.96.128"
C).内存检查失败
可以忽略的错误,内存差一点并不会影响到crs的安装,只是慢一些而已。

6.2 RHEL4的图形安装界面

1.远程桌面:启动RHEL4的远程桌面:【系统设置】【登录屏幕】【XDMCP】启用XDMCP
附1:xhost +
xhost是用来控制X server访问权限的。通常hostA登录到hostB上运行hostb上的应用程序时,做为应用程序来说,hostA是client,但是作为图形来说,
是在hostA上显示的,需要使用hostA的Xserver,所以hostA是server.因此在登录到hostB前,需要在hostA上运行xhost +来使其它用户能够访问hostA
的Xserver
xhost + 是使所有用户都能访问Xserver
xhost + ip 使ip上的用户能够访问Xserver
xhost +nis:user@domain 使domain上的nis 用户user能够访问

2.XMANAGER-XSTART
未开通XDMCP时时,可以使用XSTART启动图形安装界面

3:在SecureCRT上使用图形安装界面的步骤
运行XMANAGER-Xmanager - Passive
export DISPLAY=192.168.100.1:0.0--端口号应与passive的端口号相同
./runInstaller即可
注:使用linux用户的VNC客户机到服务器192.168.100.1,端口1(可自定义),的连接。



6.3安装界面乱码的问题
安装界面乱码是JAVA显示不正确。
可以临时改为英语环境安装:export LANG=en_US export LC_ALL=en_US

6.4开始安装
./runInstaller
如果我们使用了RHEL5,并不被oracle10g所支持,因此在执行安装时需要指定-ignoreSysPrereqs跳过安装时的操作系统检查

注意事项:
OCR使用裸设备时,可做一次镜像。所以在安装前可以为OCR准备两个设备。
同理,为VOTING准备三个设备。


错误1:the specified nodes are not clusterable
解决:在node1上执行一次,ssh node1 date,在node2上执行一次 ssh node2 date

错误2:error while copying directory .... .. time stamp ... in the future
解决:同步各节点的时间


错误3:The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.
解决:用ROOT用户执行 $CRS_HOME/bin/vipca,手工重新配置node1-vip和node2-vip。

错误4:如果你碰到了这个错误:
/opt/ora10g/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
解决:
修改vipca文件
[root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/bin/vipca
找到如下内容:
Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
#End workaround
在fi后新添加一行:
unset LD_ASSUME_KERNEL
以及srvctl文件
[root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL
保存退出,然后在node2重新执行root.sh
当然,既然我们已经知道了有这个问题,建议最好在node2执行root.sh之前,首先修改vipca。
其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离create db还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。

错误5:如果你碰到了这个错误:
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决:
===============================
[root@node2 bin]# ./oifcfg iflist
eth1 10.10.17.0
virbr0 192.168.122.0
eth0 192.168.100.0
[root@node2 bin]# ./oifcfg setif -global eth0/192.168.100.0:public
[root@node2 bin]# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
[root@node2 bin]# ./oifcfg getif
eth0 192.168.100.0 global public
eth1 10.10.10.0 global cluster_interconnect
然后在视窗界面重新执行vipca即可,如上b例中所示。


CRS安装的疑难解答:
如果在CRS安装过程中出现了错误,那么错误最可能发生在安装结束时root.sh的运行期间,而这正是对inittab进行修改并且首次启动CRS守护进程的时机。这些
守护进程启动失败会在root.sh运行结束时报告出来。如果此时报告了错误,那么首先要检查的是每个相关守护进程的日志文件。这些日志文件可在相应目录下的CRS_HOME中找到
即--/css/log、/crs/log或/evm/log.

如果前面配置环境检查出错
以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands.sh
然后执行:
[root@node1 ~]# /opt/ora10g/product/10.2.0/crs_1/bin/./crs_stat -t


参考文献《三思笔记--手把手教你用VMware安装oracle10g RAC》《ORACLE DATABASE 10G高可用性实现方案》


第七步:安装OCFS
1.rpm
rpm -ivh ocfs-support-1.1.5-1.i386.rpm
rpm -ivh ocfs-2.4.21-EL-1.0.15-1.i686.rpm
rpm -ivh ocfs-tools-1.0.10-1.i386.rpm
2.ocfstool(X-TERM)
在【TASK】【Generate Config】菜单,生成专用接口的配置文件,每个节点都要运行


第七步:安装RDBMS
0.准备
安装前检查:cluvfy stage -pre dbinst -n node1,node2
olsnodes
crs_stat -t

1. 运行runInstaller
选择cluster Installation, select all nodes
2.安装时的错误提示
错误1: remote attachHome fail on nodes:...
解决:
按提示手动执行 $ORACLE_HOME/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/u01/ora10g/10g ORACLE_HOME_NAME=ORACLE_HOME CLUSTER_NODES=node1,node3 "INVENTORY_LOCATION=/u01/ora10g/inventory" LOCAL_NODE=node3
创建spfile中的adump,bdump,cdump,udump

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7901922/viewspace-1059964/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7901922/viewspace-1059964/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值