Oracle rac 10g for linux vmware安装笔记

Oracle rac 10g for linux vmware安装笔记

文章分类:数据库 笔记未加整理,仅供参考,有不明白的朋友可以一起探讨。呵呵
一、安装主机网卡
主机为dell Optiplex 780,预装版为ubuntu,将其格式为windows 2003 server版之后,发现不能识别网卡,下载网卡驱动将其打上,驱动地址为
http://ftp.us.dell.com/network/R197373.exe

单节点配置虚拟机
二、安装虚拟机
此处虚拟机选用VMwareServerv1.0.5Build80187.exe
安装vmtool
点击vm选择install vmware tools==>install
系统提示警告:

引用
WARNING:You cannot install the VMware Tools package until the guest operating system is running.If your guest operating system is not running,choose Cancel
and install the VMware tools package later.


解决办法:
理论上应该会自动挂载vmware tools光盘,但根本没有出现,于是采用手动挂载
将虚拟机光驱指向linux.iso

引用
[root@mcrac1 ~]# mkdir -p /mnt/cdrom
[root@mcrac1 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only


双机桌面图标vmware tools,进入之后双击*.rpm

引用
[root@mcrac1 cdrom]# cp  VMwareTools-1.0.5-80187.tar.gz /tmp
[root@mcrac1 cdrom]# tar zxpf VMwareTools-1.0.5-80187.tar.gz


虚拟机窗口执行

引用
[root@mcrac1 vmware-tools-distrib]# ./vmware-install.pl



三、同步主机和linux系统时间(Synchronize Guest OS time with Host OS)
虚拟机窗口root用户执行

引用
#vmware-toolbox


会在启动文件中看到

引用
tools.syncTime = "TRUE"


编辑/boot/grub/grub.conf

引用
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-55.ELsmp)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.ELsmp ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
        initrd /boot/initrd-2.6.9-55.ELsmp.img
title Red Hat Enterprise Linux AS-up (2.6.9-55.EL)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.EL ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
        initrd /boot/initrd-2.6.9-55.EL.img


重启主机

引用
#reboot



启用网卡时出现错误:

引用
Device eth0 has different MAC address than expected, ignoring


解决办法:
注释掉/etc/sysconfig/network-scripts/ifcfg-eth0中HWADDR=xx:xx:xx:xx:xx:xx这一行。

四、配置oracle用户

引用
[root@mcrac1 asm]# groupadd dba
[root@mcrac1 asm]# groupadd oinstall
[root@mcrac1 asm]# useradd -m -g oinstall -G dba oracle
[root@mcrac1 asm]# id oracle
uid=501(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)
[root@mcrac1 asm]# passwd oracle
[root@mcrac1 /]# chown -R oracle:dba /oracle
[root@mcrac1 /]# chmod -R 775 /oracle



oracle用户环境变量配置:

引用
export ORACLE_SID=dbrac1
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_2
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
umask 022



五、安装asm包
下载和内核相关的asm rpm包,其网址为
http://www.oracle.com/technology/tech/linux/asmlib/index.html
linux内核版本为

引用
[root@mcrac1 ~]# uname -a
Linux mcrac1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux


安装asm lib相关包

引用
[root@mcrac1 asm]# rpm -Uvh oracleasm-support-2.1.3-1.el4.i386.rpm
warning: oracleasm-support-2.1.3-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...                ########################################### [100%]
   1:oracleasm-support      ########################################### [100%]
[root@mcrac1 asm]# rpm -ivh oracleasmlib-2.0.4-1.el4.i386.rpm
warning: oracleasmlib-2.0.4-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
error: Failed dependencies:
        oracleasm >= 1.0.4 is needed by oracleasmlib-2.0.4-1.el4.i386
[root@mcrac1 asm]# rpm -ivh oracleasm-2.6.9-55.ELsmp-2.0.3-1.i686.rpm
Preparing...                ########################################### [100%]
   1:oracleasm-2.6.9-55.ELsm########################################### [100%]
[root@mcrac1 asm]# rpm -ivh oracleasmlib-2.0.4-1.el4.i386.rpm
warning: oracleasmlib-2.0.4-1.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...                ########################################### [100%]
   1:oracleasmlib           ########################################### [100%]

[root@mcrac1 asm]# rpm -qa|grep oracleasm
oracleasm-support-2.1.3-1.el4
oracleasmlib-2.0.4-1.el4
oracleasm-2.6.9-55.ELsmp-2.0.3-1




六、配置系统文件

引用
[root@mcrac1 /]# cat /etc/security/limits.conf
# End of file
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536



/etc/pam.d/login添加

引用
session required pam_limits.so



/etc/profile添加

引用
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi



/etc/modprobe.conf添加

引用
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

 

引用
[root@mcrac1 ~]# modprobe -v hangcheck-timer
insmod /lib/modules/2.6.9-55.ELsmp/kernel/drivers/char/hangcheck-timer.ko



/etc/sysctl.conf添加

引用
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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


引用
[root@mcrac1 ~]# sysctl -p



配置hosts文件

引用
[root@mcrac1 ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost
172.16.4.81      mcrac1
172.16.4.82      mcrac1_vip
192.168.0.10     mcrac1_priv
172.16.4.83      mcrac2
172.16.4.84      mcrac2_vip
192.168.0.11     mcrac2_priv




七、检查系统包

引用
[root@mcrac1 /]# rpm -qa|grep libaio
libaio-devel-0.3.105-2
libaio-0.3.105-2
[root@mcrac1 /]# rpm -qa|grep openmotif21
openmotif21-2.1.30-11.RHEL4.6



八、配置共享磁盘

引用
[root@mcrac1 /]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [  OK  ]
Scanning the system for Oracle ASMLib disks: [  OK  ]


创建asm磁盘出现以下问题:

引用
[root@mcrac1 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "VOL1" as an ASM disk: [FAILED]
[root@mcrac1 ~]# tail -f /var/log/oracleasm
Writing disk header: oracleasm-write-label: Unable to clear device "/dev/sdc1": No space left on device
failed
Unable to label device "/dev/sdc1"
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Disk "VOL1" does not exist or is not instantiated
Writing disk header: oracleasm-write-label: Unable to clear device "/dev/sdc1": No space left on device
failed
Unable to label device "/dev/sdc1"


解决办法:
重新划分pdisk将扩展分区变为主分区

引用
[root@mcrac1 raw]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "VOL1" as an ASM disk: [  OK  ]
[root@mcrac1 raw]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
Marking disk "VOL2" as an ASM disk: [  OK  ]
[root@mcrac1 raw]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "VOL3" as an ASM disk: [  OK  ]





可以利用 /etc/init.d/oracleasm 的 'enable' 和 'disable' 选项来启用或禁用自动启动。


配置raw设备

引用
[root@mcrac1 ~]# cat /etc/sysconfig/rawdevices
# This file and interface are deprecated.
# Applications needing raw device access should open regular
# block devices with O_DIRECT.
# raw device bindings
# format:  <rawdev> <major> <minor>
#          <rawdev> <blockdev>
# example: /dev/raw/raw1 /dev/sda1
#          /dev/raw/raw2 8 5
/dev/raw/raw1 /dev/sdc1
/dev/raw/raw2 /dev/sdd1
/dev/raw/raw3 /dev/sde1

[root@mcrac1 ~]# /sbin/service rawdevices restart
Assigning devices:
           /dev/raw/raw1  -->   /dev/sdc1
/dev/raw/raw1:  bound to major 8, minor 32
           /dev/raw/raw2  -->   /dev/sdd1
/dev/raw/raw2:  bound to major 8, minor 48
           /dev/raw/raw3  -->   /dev/sde1
/dev/raw/raw3:  bound to major 8, minor 64
done


[root@mcrac1 raw]# chown oracle:dba *
[root@mcrac1 raw]# ls -rtl
total 0
crw-rw----  1 oracle dba 162, 1 Mar 30 12:25 raw1
crw-rw----  1 oracle dba 162, 2 Mar 30 12:25 raw2
crw-rw----  1 oracle dba 162, 3 Mar 30 12:25 raw3




九、拷贝rac1文件夹下虚拟机文件至rac2文件夹下修改虚拟机启动文件

引用
displayname='rac2'


并在两个虚拟机启动文件中添加如下参数

引用
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"


启动rac2虚拟机
修改ip地址
即时生效:

引用
# ifconfig eth0 172.16.4.83 netmask 255.255.255.0
# ifconfig eth1 192.168.0.11 netmask 255.255.255.0


启动生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改/etc/sysconfig/network-scripts/ifcfg-eth1

修改host name
即时生效:

引用
# hostname rac2


启动生效:
修改/etc/sysconfig/network

十、配置ssh
需要root和oracle用户双节点互通,注意自身用户也需通
十一、配置时间同步
mcrac1启动服务

引用
#chkconfig time on 


mcrac2 crontab中配置

引用
[root@mcrac2 ~]# crontab -l
*/1 * * * * rdate -s 172.16.4.81



十二、配置ocfs2
下载网址为
http://oss.oracle.com/projects/ocfs2-tools/files/RedHat/RHEL4/i386/1.2.7-1/
http://oss.oracle.com/projects/ocfs2/files/RedHat/RHEL4/i386/1.2.9-1/2.6.9-55.EL/

双节点安装

引用
[root@mcrac2 ocfs2]# rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
Preparing...                ########################################### [100%]
   1:ocfs2-tools            ########################################### [100%]
[root@mcrac2 ocfs2]#  rpm -ivh ocfs2console-1.2.7-1.el4.i386.rpm
Preparing...                ########################################### [100%]
   1:ocfs2console           ########################################### [100%]
[root@mcrac2 ocfs2]# rpm -ivh ocfs2-2.6.9-55.ELsmp-1.2.9-1.el4.i686.rpm
Preparing...                ########################################### [100%]
   1:ocfs2-2.6.9-55.ELsmp   ########################################### [100%]


引用
[root@mcrac1 ocfs2]# rpm -qa|grep ocfs
ocfs2-2.6.9-55.ELsmp-1.2.9-1.el4
ocfs2-tools-1.2.7-1.el4
ocfs2console-1.2.7-1.el4



要禁用 SELinux,运行“Security Level Configuration”GUI 实用程序:

引用
# /usr/bin/system-config-securitylevel &



现在,单击 SELinux 选项卡并取消选中“Enabled”复选框。单击 [OK] 后,将显示一个警告对话框。只需单击“Yes”确认该警告。禁用 SELinux 选项,

在集群中的两个节点上进行此更改后,将需要重新引导每个节点以实施更改:在继续配置 OCFS2 之前,必须禁用 SELinux!

引用
# init 6

重启主机

引用
# ocfs2console



Configure Nodes --> Add --> 输入NODE名和IP --> OK --> Apply
出现如下错误:

引用
    o2cb_ctl: Unable to access cluster service while creating node
        Could not add node node1



解决办法:


将/etc/ocfs2/下的不正确的cluster.conf文件删掉,重新用ocfs2console 配置

双节点cluster.conf文件显示

引用
[root@mcrac1 ocfs2]# more cluster.conf
node:
        ip_port = 7777
        ip_address = 172.16.4.81
        number = 0
        name = mcrac1
        cluster = ocfs2

node:
        ip_port = 7777
        ip_address = 172.16.4.83
        number = 1
        name = mcrac2
        cluster = ocfs2

cluster:
        node_count = 2
        name = ocfs2



双节点执行

引用
[root@mcrac1 ocfs2]# /etc/init.d/o2cb unload
Stopping O2CB cluster ocfs2: OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK

 

引用
[root@mcrac1 ocfs2]# /etc/init.d/o2cb configure
Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot.  The current values will be shown in brackets ('[]').  Hitting
<ENTER> without typing an answer will keep that current value.  Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [y]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]:           
Specify heartbeat dead threshold (>=7) [31]: 61
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Loading module "configfs": OK
Mounting configfs filesystem at /config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ocfs2: OK



单节点格式化OCFS2

引用
[root@mcrac1 ocfs2]# mkfs.ocfs2 -b 4K -C 32K -N 4 -L  crsfile /dev/sdb1
mkfs.ocfs2 1.2.7
Filesystem label=crsfile
Block size=4096 (bits=12)
Cluster size=32768 (bits=15)
Volume size=2146762752 (65514 clusters) (524112 blocks)
3 cluster groups (tail covers 1002 clusters, rest cover 32256 clusters)
Journal size=67108864
Initial number of node slots: 4
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 1 block(s)
Formatting Journals: done
Writing lost+found: done
mkfs.ocfs2 successful


引用
[root@mcrac1 ocfs2]# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs2



二节点mount

引用
root@mcrac2 ocfs2]# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs2
ocfs2_hb_ctl: Bad magic number in inode while reading uuid
mount.ocfs2: Error when attempting to run /sbin/ocfs2_hb_ctl: "Operation not permitted"
[root@mcrac2 ocfs2]# mounted.ocfs2 -f
Device                FS     Nodes
/dev/sdb1             ocfs2  Unknown: Bad magic number in inode 



解决办法:
经过检查发现,这个问题是由于在为虚拟机创建磁盘的时候没有选择“allocate all disk space now”,导致ocfs在加入第二个节点时出错,关掉虚拟机删除该磁盘,重新创建一个立即分配空间的盘再格式化,两个节点都能正常mount了。

双节点编辑fstab

引用
/dev/sdb1              /ocfs2 ocfs2 _netdev,datavolume,nointr 0 0



十三、安装crs软件:
双节点执行

引用
[oracle@mcrac1 logs]$ su
Password
/oracle/app/oraInventory/orainstRoot.sh


注意二节点不要在远程会话终端执行,需要在虚拟机上执行

引用
/oracle/app/product/10.2.0/db_1/root.sh

The root.sh script on rac2 invoked the VIPCA automatically but it failed with the error "The
given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs."
As you are using a non-routable IP address (192.168.x.x) for the public interface, the Oracle
Cluster Verification Utility (CVU) could not find a suitable public interface. A workaround is to
run VIPCA manually.


在vipca配置栏中根据/etc/hosts来配置
执行后期检查

引用
[oracle@mcrac2 ~]$ cluvfy stage -post crsinst -n mcrac1,mcrac2

Performing post-checks for cluster services setup

Checking node reachability...
Node reachability check passed from node "mcrac2".


Checking user equivalence...
User equivalence check passed for user "oracle".

Checking Cluster manager integrity...


Checking CSS daemon...
Daemon status check passed for "CSS daemon".

Cluster manager integrity check passed.

Checking cluster integrity...


Cluster integrity check passed


Checking OCR integrity...

Checking the absence of a non-clustered configuration...
All nodes free of non-clustered, local-only configurations.

Uniqueness check for OCR device passed.

Checking the version of OCR...
OCR of correct Version "2" exists.

Checking data integrity of OCR...
Data integrity check for OCR passed.

OCR integrity check passed.

Checking CRS integrity...

Checking daemon liveness...
Liveness check passed for "CRS daemon".

Checking daemon liveness...
Liveness check passed for "CSS daemon".

Checking daemon liveness...
Liveness check passed for "EVM daemon".

Checking CRS health...
CRS health check passed.

CRS integrity check passed.

Checking node application existence...


Checking existence of VIP node application (required)
Check passed.

Checking existence of ONS node application (optional)
Check passed.

Checking existence of GSD node application (optional)
Check passed.


Post-check for cluster services setup was successful.


引用
[oracle@mcrac2 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.mcrac1.gsd application    ONLINE    ONLINE    mcrac1     
ora.mcrac1.ons application    ONLINE    ONLINE    mcrac1     
ora.mcrac1.vip application    ONLINE    ONLINE    mcrac1     
ora.mcrac2.gsd application    ONLINE    ONLINE    mcrac2     
ora.mcrac2.ons application    ONLINE    ONLINE    mcrac2     
ora.mcrac2.vip application    ONLINE    ONLINE    mcrac2



十四、安装数据库
二节点启动ASM实例报错

引用
SQL> startup
ASM instance started

Total System Global Area   92274688 bytes
Fixed Size                  1217884 bytes
Variable Size              65890980 bytes
ASM Cache                  25165824 bytes
ORA-15032: not all alterations performed
ORA-15063: ASM discovered an insufficientnumber of disks for diskgroup
"DATADG


后台alert日志显示

引用
Wed Mar 31 10:30:39 2010
SQL> ALTER DISKGROUP ALL MOUNT
Wed Mar 31 10:30:39 2010
NOTE: cache registered group DATADG number=1 incarn=0xc102e171
Wed Mar 31 10:30:39 2010
Loaded ASM Library - Generic Linux, version 2.0.4 (KABI_V2) library for asmlib interface
Wed Mar 31 10:30:39 2010
ORA-15186: ASMLIB error function = [asm_open],  error = [1],  mesg = [Operation not permitted]
Wed Mar 31 10:30:39 2010
ORA-15186: ASMLIB error function = [asm_open],  error = [1],  mesg = [Operation not permitted]
Wed Mar 31 10:30:39 2010
ORA-15186: ASMLIB error function = [asm_open],  error = [1],  mesg = [Operation not permitted]
Wed Mar 31 10:30:39 2010
ERROR: no PST quorum in group 1: required 1, found 0
Wed Mar 31 10:30:39 2010
NOTE: cache dismounting group 1/0xC102E171 (DATADG)
NOTE: dbwr not being msg'd to dismount
ERROR: diskgroup DATADG was not mounted


解决办法:
init+ASM2节点添加

引用
asm_diskstring=ORCL:*


添加之后,后台alert显示

引用
Wed Mar 31 11:01:23 2010
SQL> ALTER DISKGROUP ALL MOUNT
Wed Mar 31 11:01:23 2010
NOTE: cache registered group DATADG number=1 incarn=0xc105b157
Wed Mar 31 11:01:23 2010
Loaded ASM Library - Generic Linux, version 2.0.4 (KABI_V2) library for asmlib interface
Wed Mar 31 11:01:23 2010
ERROR: no PST quorum in group 1: required 2, found 0
Wed Mar 31 11:01:23 2010
NOTE: cache dismounting group 1/0xC105B157 (DATADG)
NOTE: dbwr not being msg'd to dismount
ERROR: diskgroup DATADG was not mounted


解决办法:
重启主机,怪异!
安装完毕之后,rac状态显示

引用
[oracle@mcrac2 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.dbrac.db   application    ONLINE    ONLINE    mcrac1     
ora....c1.inst application    ONLINE    ONLINE    mcrac1     
ora....c2.inst application    ONLINE    ONLINE    mcrac2     
ora....SM1.asm application    ONLINE    ONLINE    mcrac1     
ora....C1.lsnr application    ONLINE    ONLINE    mcrac1     
ora.mcrac1.gsd application    ONLINE    ONLINE    mcrac1     
ora.mcrac1.ons application    ONLINE    ONLINE    mcrac1     
ora.mcrac1.vip application    ONLINE    ONLINE    mcrac1     
ora....SM2.asm application    ONLINE    ONLINE    mcrac2     
ora....C2.lsnr application    ONLINE    ONLINE    mcrac2     
ora.mcrac2.gsd application    ONLINE    ONLINE    mcrac2     
ora.mcrac2.ons application    ONLINE    ONLINE    mcrac2     
ora.mcrac2.vip application    ONLINE    ONLINE    mcrac2    

address:http://itspace.javaeye.com/blog/631585
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值