Redhat 5.4 Oracle 10g RAC 添加节点

原文 http://blog.csdn.net/tianlesoftware/article/details/5874093

 

 

Oracle RAC 添加节点,操作也简单。 官网的操作说明如下:

http://www.oracle.com/technology/global/cn/pub/articles/vallath-nodes.html

 

 

假设已经有了2个节点的RAC,节点分别为rac1 和 rac2,其平台是raw + ASM + Oracle 10g +redhat 5.4 , 我们现在在这个集群上添加一个节点rac3.  步骤和2个节点的RAC 安装差不多。

 

2个节点的RAC 安装,参考:

       Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安装文档

       http://blog.csdn.net/tianlesoftware/archive/2010/09/09/5872593.aspx

 

 

Rac1 , rac2 和rac3 节点的信息规划如下:

服务器主机名

rac1

rac2

rac3

公共IP地址(eth0)

10.85.10.1

10.85.10.2

10.85.10.5

虚拟IP地址(eth0)

10.85.10.3

10.85.10.4

10.85.10.6

私有IP地址(eth1)

192.168.1.200

192.168.1.201

192.168.1.202

ORACLE RAC SID

rac1

rac2

Rac3

集群实例名称

Rac

OCR(oracle集群注册表)

/dev/raw/raw1   /dev/sdb1        200M

/dev/raw/raw2   /dev/sdb2        200M

表决磁盘(voting disk)

/dev/raw/raw3   /dev/sdc1       200M

/dev/raw/raw4   /dev/sdc2       200M

/dev/raw/raw5   /dev/sdc3       200M

ASM

/dev/sdd1     10G            VOL1 for Oracle Data

/dev/sdd1      5G             VOL2 for flash_recovery_area

数据库备份

/dev/sde1    10G  (mkfs -t ext3 /dev/sde1)

 

 

一. 安装前准备及OS安装配置

同2个节点的类似,装好虚拟操作系统,配置好硬盘,网关,IP地址,建立用户等效性,建立用户并创建相关目录,修改linux 参数等。

 

1.1 安装好虚拟机,并在配置文件里添加如下信息:

ethernet1.present = "TRUE"

ethernet1.allowGuestConnectionControl = "FALSE"

ethernet1.features = "1"

ethernet1.wakeOnPcktRcv = "FALSE"

ethernet1.networkName = "Bridged"

ethernet1.addressType = "generated"

 

 

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1.sharedBus = "virtual"

 

scsi1:1.present = "TRUE"

scsi1:1.mode = "independent-persistent"

scsi1:1.filename = "F:/VM/racshare/ocr.vmdk"

scsi1:1.deviceType = "disk"

 

scsi1:2.present = "TRUE"

scsi1:2.mode = "independent-persistent"

scsi1:2.filename = "F:/VM/racshare/votingdisk.vmdk"

scsi1:2.deviceType = "disk"

 

scsi1:3.present = "TRUE"

scsi1:3.mode = "independent-persistent"

scsi1:3.filename = "F:/VM/racshare/asm4data.vmdk"

scsi1:3.deviceType = "disk"

 

scsi1:4.present = "TRUE"

scsi1:4.mode = "independent-persistent"

scsi1:4.filename = "F:/VM/racshare/backup.vmdk"

scsi1:4.deviceType = "disk"

 

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

 

1.2 配置raw32个网卡的固定IPhostname, gateway也可以在安装系统时指定。

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth1

/etc/sysconfig/network

 

[root@rac3 network-scripts]# more /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=10.85.10.5

NETMASK=255.255.255.0

NETWORK=10.85.10.253

ONBOOT=yes

TYPE=Ethernet

 

[root@rac3 network-scripts]# more /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=192.168.1.202

NETMASK=255.255.255.0

NETWORK=192.168.1.1

ONBOOT=yes

TYPE=Ethernet

 

--修改主机名

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=rac3

注:需要重启才能生效

 

修改完之后重启生效:

/etc/rc.d/init.d/network restart 重新启动

 

1.3 同步时间:

在rac3 上添加任务,每一分钟和rac1进行一次时间同步。

[root@rac3~]# crontab -l

*/1 * * * * rdate -s 10.85.10.1

 

rac 对节点间时间较敏感,如果不同步在安装clusterware 时后会报错,而且在安装vipca 的时候也会报错。 具体时间同步参考我的blog:

Linux 时间同步配置

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315587.aspx

 

linux 下修改日期和时间

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4808096.aspx

 

1.4. 修改解析文件: /etc/hosts

每个节点都要设置成如下模式:

[root@rac3 network-scripts]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1  localhost

10.85.10.1 rac1

10.85.10.2 rac2

10.85.10.5 rac3

 

192.168.1.200 rac1-priv

192.168.1.201 rac2-priv

192.168.1.202 rac3-priv

 

10.85.10.3 rac1-vip

10.85.10.4 rac2-vip

10.85.10.6 rac3-vip

 

1.5 建立用户及用户等效性

 

-- 建立用户和相关组

[root@rac3 ~]# groupadd oinstall

[root@rac3 ~]# groupadd dba

[root@rac3 ~]# useradd -g oinstall -G dba oracle

[root@rac3 ~]# passwd oracle

 

-- 建立用户等效性

[root@rac3 /]# su - oracle

[oracle@rac3 ~]$ mkdir ~/.ssh

[oracle@rac3 ~]$ chmod 700 ~/.ssh

[oracle@rac3 ~]$ ssh-keygen -t rsa

[oracle@rac3 ~]$ ssh-keygen -t dsa

 

-- 将rac1上将authorized_keys 文件copy到raw3

[oracle@rac3 ~]$ scp rac1:~/.ssh/authorized_keys ~/.ssh/authorized_keys

 

-- 将rac3的id_rsa.pub 和id_dsa.pub 写入authorized_keys

[oracle@rac3 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@rac3 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

-- 将rac3上最新的authorized_keys 文件copy到rac1 和rac2上

[oracle@rac3 ~]$ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys

[oracle@rac3 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

 

-- 在三个节点上用Oracle用户分别ssh 所有节点

[oracle@rac3 ~]$ ssh rac1 date

[oracle@rac3 ~]$ ssh rac1-priv date

[oracle@rac3 ~]$ ssh rac2 date

[oracle@rac3 ~]$ ssh rac2-priv date

[oracle@rac3 ~]$ ssh rac3 date

[oracle@rac3 ~]$ ssh rac3-priv date

 

1.6 创建目录结构

[root@rac3 ~]#  mkdir -p /u01/app/oracle

[root@rac3 ~]# chown -R oracle:oinstall /u01

[root@rac3 ~]# chmod -R 777 /u01

1.7 修改linux 系统参数

[root@rac3 ~]# more /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

kernel.shmall = 78643200

kernel.shmmax = 314572800

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

 

 # sysctl -p 立刻生效

 

vi /etc/sysconfig/limits.conf

--使用HugePage 内存技术,添加下面2行

Oracle soft memlock 5242880

Oracle hard memlock 524280

--进程句柄数量

oracle soft nproc 2047

oracle hard nproc 16384

-- 文件句柄

oracle soft nofile 65536

oracle hard nofile 65536

 

将下面一行添加到/etc/pam.d/login文件中:

session required /lib/security/pam_limits.so

 

 

1.8 配置 hangcheck-timer 模块

--查看模块位置

[root@rac3 ~]# find /lib/modules -name "hangcheck-timer.ko"

/lib/modules/2.6.9-78.EL/kernel/drivers/char/hangcheck-timer.ko

/lib/modules/2.6.9-78.ELsmp/kernel/drivers/char/hangcheck-timer.ko

 

--配置系统启动时自动加载模块,在/etc/rc.d/rc.local 中添加如下内容

[root@rac3 ~]# modprobe hangcheck-timer

[root@rac3 ~]# more /etc/rc.d/rc.local

touch /var/lock/subsys/local

modprobe hangcheck-timer

 

-- 配置hangcheck-timer参数, 在/etc/modprobe.conf 中添加如下内容:

[root@rac3 ~]# more /etc/modprobe.conf

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

 

--确认模块加载成功:

[root@rac3 ~]# grep Hangcheck /var/log/messages | tail -2

Sep  9 02:09:08 rac3 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).

Sep  9 02:09:08 rac3 kernel: Hangcheck: Using monotonic_clock().

 

1.9 配置raw 设备

因为是添加节点,所以这些设备都是已经分配好的,我们只需要把他们添加到参数中即可。操作系统是redhat 5.4,在raw 的配置和redhat 4有点区别。

 

1)修改/etc/udev/rules.d/60-raw.rules 文件

添加如下内容:

ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdc1",RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="sdc2",RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", KERNEL=="sdc3",RUN+="/bin/raw /dev/raw/raw5 %N"

ACTION=="add",KERNEL=="raw[1-5]", OWNER="oracle", GROUP="oinstall", MODE="660"

 

2)重启服务:

[root@rac3 ~]# start_udev

Starting udev:         [  OK  ]

 

3查看raw设备:

[root@rac3 ~]# ls -lrt /dev/raw

total 0

crw-rw---- 1 oracle oinstall 162, 2 Sep  9 02:15 raw2

crw-rw---- 1 oracle oinstall 162, 1 Sep  9 02:15 raw1

crw-rw---- 1 oracle oinstall 162, 5 Sep  9 02:15 raw5

crw-rw---- 1 oracle oinstall 162, 4 Sep  9 02:15 raw4

crw-rw---- 1 oracle oinstall 162, 3 Sep  9 02:15 raw3

 

 

1.10 安装ASM包,配置ASM,并搜索ASM

--在rac3上安装 ASMLibs, tools, support 三个rpm文件

# rpm -ivh *.rpm --nodeps --force

 

-- 运行 /etc/init.d/oracleasm configure

回答 oracle , dba, y, y 就可以了

 

-- linux 挂在windows 共享的盘

1. 启动nfs服务:   service nfs start

2. mount -o username=share,password=share //10.85.10.80/RAC /mnt

 

-- 查看ASM 磁盘

[root@rac3 asm]# /etc/init.d/oracleasm listdisks

VOL1

VOL2

 

1.11 oracle 用户,修改ORACLE 参数文件 /home/oracle/.bash_profile, 添加以下内容:

 

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=$ORACLE_BASE/product/crs

export ORACLE_SID=rac3

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS10=$ORACLE_HOME/nls/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export CLASSPATH=$ORACLE_HOME/JRE

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

 

 

二.安装Clusterware

 

Oracle 集群件已经安装在集群上;这里的任务是将新节点添加到集群配置中。要执行该任务,需要执行 Oracle 提供的名为 addnode 的实用程序,该工具位于 Clusterware 的主 oui/bin 目录中。Oracle 集群件有两个文件(Oracle 集群信息库 (OCR) 和 Oracle 集群同步服务 (CSS) 表决磁盘),它们包含有关该集群以及由 Oracle 集群件管理的应用程序的信息。这些文件需要使用关于新节点的信息进行更新。集群件安装过程的第一步是验证新节点是否准备好进行安装。

 

2.1  验证硬件和操作系统配置已经完成

[oracle@rac1 bin]$ pwd

/u01/app/oracle/product/crs/bin

[oracle@rac1 bin]$ ./cluvfy stage -post hwos -n rac1,rac3

 

2.2  在安装集群之前检查节点列表中的所有节点

[oracle@rac1 bin]$ ./cluvfy stage -pre crsinst -n rac1,rac3

 

这里会检查相关的包,如果有缺少的,到这个网站搜索,下载后打上即可:

http://rpm.pbone.net/

 

 

2.3  Xmanager 连接到rac1,用Oracle用户运行$ORA_CRS_HOME/oui/bin/addNode.sh 命令。运行命令之前先指定export DISPLAY=10.85.10.80:0.0

 

若在此处报错:

Exception java.lang.NullPointerException occurred..
java.lang.NullPointerException
        at oracle.sysman.oii.oiic.OiicAddNodeSession.initialize(OiicAddNodeSession.java:564)
        at oracle.sysman.oii.oiic.OiicAddNodeSession.<init>(OiicAddNodeSession.java:135)
        at oracle.sysman.oii.oiic.OiicSessionWrapper.createNewSession(OiicSessionWrapper.java:860)
        at oracle.sysman.oii.oiic.OiicSessionWrapper.<init>(OiicSessionWrapper.java:186)
        at oracle.sysman.oii.oiic.OiicInstaller.init(OiicInstaller.java:481)
        at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:928)
        at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866)

这个错误是由于/etc/oraInst.loc 的权限问题造成,切换root用户,给777权限即可:

[root@rac2 oraInventory]# ls -al /etc/oraInst.loc

-rwxr-x---  1 root root 63 Aug  5 19:34 /etc/oraInst.loc

[root@rac2 oraInventory]# chmod 777 /etc/oraInst.loc

[root@rac2 oraInventory]# ls -alrt /etc/oraInst.loc

-rwxrwxrwx  1 root root 63 Aug  5 19:34 /etc/oraInst.loc

 

 2.4  在界面上下一步,会提示输入新节点的名称。填写完之后进入安装。

 

 2.5 当需要的所有集群件组件从 orc1 复制到 orc3 之后,OUI 将提示用root用户在对应的节点上执行三个文件

 

/u01/app/oracle/oraInventory/orainstRoot.sh  -- >rac3

/u01/app/oracle/product/crs/install/rootaddnode.sh àrac1

/u01/app/oracle/product/crs/root.sh à rac3


在执行root.sh 脚本的时候,最后会调用vipca命令。 提示如下:

Running vipca(silent) for configuring nodeapps

IP address "rac2-vip" has already been used. Enter an unused IP address.

 

产生错误“rac2-vip’ has already been used”,因为 VIP 已经在所有节点(而非 rac3)上进行了配置。我们手动执行 VIPCA(虚拟 IP 配置助手)即可。用Xmanager 工具连到新节点,在root用户下执行vipca。

 

[root@rac3 ~]# cd /u01/app/oracle/product/crs/bin/

[root@rac3 bin]# ./vipca

 

 

完成 Oracle 集群件安装后,将在其各自目录中创建下列文件。

 

集群件文件:

[root@rac3 /]# ls -ltr /etc/init.d/init.*

-r-xr-xr-x 1 root root  3190 Sep  9 03:52 /etc/init.d/init.evmd

-r-xr-xr-x 1 root root 35394 Sep  9 03:52 /etc/init.d/init.cssd

-r-xr-xr-x 1 root root  4714 Sep  9 03:52 /etc/init.d/init.crsd

-r-xr-xr-x 1 root root  1951 Sep  9 03:52 /etc/init.d/init.crs

 

使用以下条目更新了操作系统提供的 inittab 文件。

[root@rac3 /]# tail -5 /etc/inittab

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon

h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null

h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null

h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null

 

使用 olsnodes 命令验证集群件是否注册了所有节点

[oracle@rac3 bin]$ olsnodes

rac2

rac1

rac3

 

使用 crs_stat 命令验证是否启动了集群服务。

[oracle@rac3 bin]$ crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.rac.db     application    ONLINE    ONLINE    rac1

ora....oltp.cs application    ONLINE    ONLINE    rac2

ora....ac1.srv application    ONLINE    ONLINE    rac2

ora....ac2.srv application    ONLINE    ONLINE    rac1

ora....c1.inst application    ONLINE    ONLINE    rac2

ora....c2.inst application    ONLINE    ONLINE    rac1

ora....SM2.asm application    ONLINE    ONLINE    rac1

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....SM1.asm application    ONLINE    ONLINE    rac2

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2

ora.rac3.gsd   application    ONLINE    ONLINE    rac3

ora.rac3.ons   application    ONLINE    ONLINE    rac3

ora.rac3.vip   application    ONLINE    ONLINE    rac3

 

 

三.安装Oracle 软件

Oracle 已经提供了一个新的称为 addNode.sh 的可执行文件,它位于 $ORACLE_HOME/oui/bin 目录。 用Oracle 用户执行该脚本。

 

我们用x manager 连接上rac1,在运行这个脚本。运行脚本之前不要忘记指定DISPLAY 变量

[oracle@rac1 bin]$ export DISPLAY=10.85.10.80:0.0

 

在安装窗口上选中要安装的节点,然后安装即可。

 

安装最后会提示执行如下脚本:

/u01/app/oracle/product/10.2.0/db_1/root.sh  à  rac3

 

执行后,确定,安装结束。

 

四. netca 创建监听

 

注:创建数据库过程应该遵循这个顺序: 先配置监听, 再配置ASM 实例, 最后创建数据库实例, 这样可以减少出错的概率。

 

1. oracle rac3上运行 netca

2 选择 Listener configuration, 只选择rac3 这个节点,创建监听

3.添加一个LISTEN, 1521 port ,然后结束配置 ,监听配置成功后, 添加结点上的Listener Application Resource 注册到CRS中, 这样CRS 就可以监控Listener 的运行状态。 我们可以通过 crs_stat -t -v  查看Listener 状态。

 

 

五.创建ASM 实例

1. 用Xmanager 连上rac1 或者 rac2上, 运行DBCA 命令

2. 选择 configure Automatic Storage Management,

3. 选择rac1和rac3结点,这里rac1是必选的,作为父节点,然后向rac3进行extend。在rac3上安装asm实例。

4. 输入之前asm实例的密码。

5. 创建完成。

 

ASM 的相关信息参考blog:

Oracle ASM 详解

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5314541.aspx

 

 

. DBCA添加新实例

 

在rac1上,用Oracle 用户连接Xmanager。 进入$ORACLE_HOME/bin目录,运行DBCA。记得指定DISPLAY 变量。

 

Oracle Real Application Cluster database  à Instance Management  à Add an Instance –> 下一步,选择实例名。

 

然后就是下一步, TAF Policy选择Basic。 这个服务在RAC 的Failover中会用到,如果在这里没有配置,也可以通过dbca命令, 选择 Services Management 来进行配置。

   Oracle RAC Failover 详解

   http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx

 

然后开始创建数据库。

 

 

七.验证添加的节点

 

 [root@rac2 bin]# ./crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.rac.db     application    ONLINE    ONLINE    rac1

ora....oltp.cs application    ONLINE    ONLINE    rac1

ora....ac1.srv application    ONLINE    ONLINE    rac2

ora....ac2.srv application    ONLINE    ONLINE    rac1

ora....ac3.srv application    ONLINE    ONLINE    rac3

ora....c1.inst application    ONLINE    ONLINE    rac2

ora....c2.inst application    ONLINE    ONLINE    rac1

ora....c3.inst application    ONLINE    ONLINE    rac3

ora....SM2.asm application    ONLINE    ONLINE    rac1

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....SM1.asm application    ONLINE    ONLINE    rac2

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2

ora....SM3.asm application    ONLINE    ONLINE    rac3

ora....C3.lsnr application    ONLINE    ONLINE    rac3

ora.rac3.gsd   application    ONLINE    ONLINE    rac3

ora.rac3.ons   application    ONLINE    ONLINE    rac3

ora.rac3.vip   application    ONLINE    ONLINE    rac3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值