oracle拷贝表数据有没有从页面级直接拷贝数据的功能

后使用快捷导航没有帐号?
查看: 1179|回复: 8
ORACLE-mysql的单向复制
论坛徽章:6
本帖最后由 还不算晕 于
09:09 编辑
环境:我使用VBOX虚拟机,一台已经安装ORACLE数据库与GOLDENDGATE的主机。另一台只安装了ORACLE数据库。
配置数据库环境、goldengate用户,安装goldengate等操作参考:
一.安装MYSQL
MYSQL数据库客户端:
[root@bys2 ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@bys2 ~]# rpm -qa mysql
[root@bys2 ~]# cd /mnt/cdrom/
[root@bys2 cdrom]# yum -y install mysql
安装服务器端
[root@bys2 cdrom]# yum -y install mysql-server& && && &
[root@bys2 cdrom]# rpm -qa mysql*
mysql-5.0.77-4.el5_6.6
mysql-server-5.0.77-4.el5_6.6
##########################
[root@bys2 cdrom]# service mysqld status
mysqld is stopped
[root@bys2 cdrom]# service mysqld start
Starting MySQL:& && && && && && && && && && && && && && &&&[&&OK&&]
创建用来做同步的用户和表
[oracle@bys2 ~]$ mysql -u root
+--------------------+
| Database& && && &&&|
+--------------------+
| information_schema |
| mysql& && && && &&&|
| test& && && && && &|
+--------------------+
3 rows in set (0.00 sec)
mysql& cre
Query OK, 1 row affected (0.00 sec)
Database changed
mysql&&&grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql& grant all privileges on *.* to 'ogg'@'%' identified by 'ogg';
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql& use oggtest
Database changed
Empty set (0.00 sec)
mysql& create table test5(aa int primary key) engine=
Query OK, 0 rows affected (0.02 sec)
+-------------------+
| Tables_in_oggtest |
+-------------------+
| test5& && && && & |
+-------------------+
1 row in set (0.00 sec)
mysql& select * from test5;
Empty set (0.01 sec)
退出后使用[oracle@bys2 mysqlogg]$ mysql -u root -p&&进行登陆测试,确认使用&&root用户及密码可以登陆。
如不能登陆,参考:
###########################################
二.安装OGG-FOR-MYSQL
[oracle@bys2 ~]$ tar -xvf&&ggs_Linux_x86_MySQL_32bit.tar&&-C /u01/mysqlogg/
[oracle@bys2 mysqlogg]$ pwd
/u01/mysqlogg
[oracle@bys2 mysqlogg]$ ./ggsci
Oracle GoldenGate Command Interpreter for MySQL
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_0
Linux, x86, 32bit (optimized), MySQL Enterprise on Apr 23 :30
Copyright (C) , Oracle and/or its affiliates. All rights reserved.
GGSCI () 1& create subdirs
Creating subdirectories under current directory /u01/mysqlogg
Parameter files& && && && && & /u01/mysqlogg/dirprm: already exists
Report files& && && && && && & /u01/mysqlogg/dirrpt: created
Checkpoint files& && && && && &/u01/mysqlogg/dirchk: created
Process status files& && && &&&/u01/mysqlogg/dirpcs: created
SQL script files& && && && && &/u01/mysqlogg/dirsql: created
Database definitions files& &&&/u01/mysqlogg/dirdef: created
Extract data files& && && && & /u01/mysqlogg/dirdat: created
Temporary files& && && && && & /u01/mysqlogg/dirtmp: created
Stdout files& && && && && && & /u01/mysqlogg/dirout: created
三.配置目标端OGG
首先规划一下,目标库启动的PORT 是7810 , MYSQL设置同步的是:OGGTEST库的TEST5表,
ORACLE源端使用用户TEST5的TEST5表。
1.配置MGR进程
GGSCI () 4& edit params mgr
PURGEOLDEXTRACTS ./dirdat, USECHECKPOINTS, MINKEEPDAYS 10
GGSCI () 2& edit params ./globals
eckpointtable oggtest.chktab
2.登陆并配置 replicat 进程
GGSCI () 1& dblogin sourcedb oggtest,userid root
Successfully logged into database.
执行这两条命令:
add checkpointtable oggtest.chktab
add replicat repmysql,exttrail /u01/mysqlogg/dirdat/my,checkpointtable oggtest.chktab
编辑配置文件
edit params repmysql
内容如下: --MAPS语句注意用户和表的对应
replicat repmysql
sourcedefs ./dirdef/to_mysql.def
handlecollisions
assumetargetdefs
applynoopupdates
sourcedb oggtest,userid root,password 123456
discardfile ./dirdat/repmysql.dsc,append,megabytes 50
map test5.test5,target oggtest.test5;
四.配置源端数据库--不使用PUMP方式。
1.MGR进程已经配置过,配置extract进程
按顺序执行以下操作:
add extract extmysql,tranlog, begin now
目标端文件的位置--这里要注意rmttrail指的是目标端的路径。
add rmttrail /u01/mysqlogg/dirdat/my, extract extmysql
edit params extmysql
在打开的编辑窗口写入
extract extmysql
userid ogg, password ogg
rmthost 192.168.1.213, mgrport 7810
rmttrail /u01/mysqlogg/dirdat/my
table test5.test5;
2.源库上生成对象定义文件,并将此文件复制到目标库(MYSQL端)的 ogg/dirdef 下
GGSCI () 21& edit params defgen
defsfile ./dirdef/to_mysql.def
userid ogg,password ogg
table test5.test5;
[oracle@bys001 ogg]$ ./defgen paramfile ./dirprm/defgen.prm
[oracle@bys001 dirdef]$ pwd
/u01/ogg/dirdef
[oracle@bys001 dirdef]$ ls
to_mysql.def
[oracle@bys001 dirdef]$ scp to_mysql.def&&192.168.1.213:/u01/mysqlogg/dirdef
[url=mailtoracle@192.168.1.213]oracle@192.168.1.213[/url]'s password:
to_mysql.def& && && & 100%&&912& &&&0.9KB/s& &00:00
五、初始化数据并打开双方进程
初始化数据是创建相应的用户和表。
需要在目标库创建MYSQL的OGGTEST库的TEST5,
ORACLE源端使用用户TEST5的TEST5表。
ORACEL数据库中创建用户和表所使用的语句如下:
使用DBA用户执行 create user test5 inentified by test5;
grant connect,resource to test5;
conn test5/test5
create table test5(aa int primary key);
MYSQL中使用的语句如下:--第一步已经执行过。
mysql& cre
mysql&&&grant all privileges on *.* to 'root'@'%' identified by '123456';
mysql& grant all privileges on *.* to 'ogg'@'%' identified by 'ogg';
mysql& use oggtest
mysql& create table test5(aa int primary key) engine=
打开进程所使用的语句大致如下:
start extract extmysql&&或start& &extmysql
start&&replicat repmysql& &或start&&repmysql
双方进程打开后状态如下:
源端:&&EXT1 EXT3 PUMP3 REP2是配置其它复制操作时用的。做ORACLE-MYSQL复制时不用管就可以。
GGSCI () 1& info all
Program& &&&Status& && &Group& && & Lag at Chkpt&&Time Since Chkpt
MANAGER& &&&RUNNING& && && && && && && && && && && && && && &
EXTRACT& &&&ABENDED& &&&EXT1& && &&&00:00:00& && &18:19:25& &
EXTRACT& &&&ABENDED& &&&EXT3& && &&&00:00:00& && &18:17:24& &
EXTRACT& &&&RUNNING& &&&EXTMYSQL& & 00:00:00& && &00:00:00& &
EXTRACT& &&&ABENDED& &&&PUMP3& && & 00:00:00& && &18:19:28& &
REPLICAT& & ABENDED& &&&REP2& && &&&00:00:00& && &18:17:28& &
GGSCI () 4& info all
Program& &&&Status& && &Group& && & Lag at Chkpt&&Time Since Chkpt
MANAGER& &&&RUNNING& && && && && && && && && && && && && && &
REPLICAT& & RUNNING& &&&REPMYSQL& & 00:00:00& && &00:00:08&&
六、数据同步测试
源端操作:
[oracle@bys001 ogg]$ sqlplus test5/test5
TEST5@bys1&select * from test5;
no rows selected
TEST5@bys1&set time on
16:29:59 TEST5@bys1&insert into test5 values(100);
1 row created.
16:30:09 TEST5@bys1&
Commit complete.
16:30:11 TEST5@bys1&insert into test5 values(200);
1 row created.
16:32:18 TEST5@bys1&
Commit complete.
16:32:20 TEST5@bys1&select * from test5;
& && &&&AA
----------
& && & 100
& && & 200
& && & ###################################
MYSQL: 两次在ORACLE数据库中的提交,表的 audit_ts 列, last_update_ts 列均有更新。
[oracle@bys2 mysqlogg]$ mysql -u root -p oggtest
Type '' or '\h' for help. Type '\c' to clear the buffer.
mysql& select *
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| group_name | group_key&&| seqno | rba&&| audit_ts& && && && && && & | create_ts& && && &&&| last_update_ts& && &| current_dir& &|
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| REPMYSQL& &|
|& &&&1 | 1543 |
16:28:02.856500 |
14:14:31 |
16:28:31 | /u01/mysqlogg |
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
1 row in set (0.00 sec)
mysql& select * from test5;
1 row in set (0.00 sec)
mysql& select * from test5;
2 rows in set (0.01 sec)
mysql& select *
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| group_name | group_key&&| seqno | rba&&| audit_ts& && && && && && & | create_ts& && && &&&| last_update_ts& && &| current_dir& &|
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| REPMYSQL& &|
|& &&&1 | 1790 |
16:32:07.728727 |
14:14:31 |
16:32:11 | /u01/mysqlogg |
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
1 row in set (0.00 sec)
金牌会员, 积分 1158, 距离下一级还需 1842 积分
论坛徽章:5
不知道楼主有没有研究过oracle往mysql复制时数据初始化有几种方法可供选择呢?
论坛徽章:6
zmhqcat 发表于
不知道楼主有没有研究过oracle往mysql复制时数据初始化有几种方法可供选择呢?
数据初始化&&,我就用的最原始的,手动将双方表弄一样。
高级会员, 积分 592, 距离下一级还需 408 积分
论坛徽章:3
楼主写的还是比较仔细的,支持一下
中级会员, 积分 499, 距离下一级还需 1 积分
论坛徽章:4
楼主专研能力不错哦,那么细致的问题都想到了
论坛徽章:18
够详细的,作业就剩下这题了,正好参考下!!!!
高级会员, 积分 581, 距离下一级还需 419 积分
论坛徽章:6
够详细的,学习了。
金牌会员, 积分 2948, 距离下一级还需 52 积分
论坛徽章:20
唉,我还没有mysql呢window下Oracle数据库还原?,把oradata下文件都拷了!
[问题点数:20分,结帖人ys2001]
window下Oracle数据库还原?,把oradata下文件都拷了!
[问题点数:20分,结帖人ys2001]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年11月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。&&&&Oracle P/L SQL实现发送Email、浏览网页等网络操作功能
Oracle P/L SQL实现发送Email、浏览网页等网络操作功能
Oracle P/L SQL实现发送Email、浏览网页等网络操作功能
Oracle P/L SQL实现发送Email、浏览网页等网络操作功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。
--.使用聚合函数实现 多行合并
Drop Type Strcat_
Drop Function f_StrC
Drop Package UTL_IN
Variable ls_ObjectName VarChar2(128);
Select Sequence_Name Into :ls_ObjectName From User_Sequences Where Sequence_Name = 'SYS_RAND_ID';
DBMS_Output.Put_Line( :ls_ObjectName );
Exception When No_Data_Found Then
Execute Immediate 'Create Sequence SYS_RAND_ID minvalue 1 maxValue 99999 Start With 1 increment by 1 cache 5 cycle order';
--1、创建类型
Create Or Replace Type Strcat_type As Object (
cat_string varchar2(4000),
Static Function ODCIAggregateInitialize(cs_ctx In Out strcat_type) Return Number,
Member Function ODCIAggregateIterate(self In Out strcat_type,value in varchar2) Return Number,
Member Function ODCIAggregateMerge(self In Out strcat_type,ctx2 In Out strcat_type) Return Number,
Member Function ODCIAggregateTerminate(self In Out strcat_type,ReturnValue Out varchar2,flags in Number) Return Number
--2. 创建类型体
Create Or Replace Type Body Strcat_type Is
Static Function ODCIAggregateInitialize( cs_ctx In Out strcat_type
)Return Number
cs_ctx := strcat_type( Null );
Return ODCIConst.S
Member Function ODCIAggregateIterate( self In Out strcat_type,
value In varchar2 )
Return Number
if self.cat_string is Null or Instr( self.cat_string, value ) = 0 Then
self.cat_string := self.cat_string || ','||
Return ODCIConst.S
Member Function ODCIAggregateTerminate( self In Out strcat_type,
ReturnValue Out varchar2,
flags In Number)
Return Number
ReturnValue := ltrim(rtrim( self.cat_string,','),',' );
Return ODCIConst.S
Member Function ODCIAggregateMerge( self In Out strcat_type,
ctx2 In Out strcat_type)
Return Number
if self.cat_string is Null or Instr( self.cat_string, ctx2.cat_string ) = 0 Then
self.cat_string := self.cat_string || ',' || ctx2.cat_
Return ODCIConst.S
--3.创建函数: 使用聚合函数实现 多行合并
Create or Replace Function f_StrCat( as_input Varchar2 ) Return Varchar2
PARALLEL_ENABLE AGGREGATE USING strcat_
Grant Execute on f_StrCat To P
--End of 使用聚合函数实现 多行合并
Create Or Replace Package UTL_INet AS
Type VarChar_Type is Table of VarChar2(400) Index By Binary_I
Type Number_Type is Table of Number(12,4) Index By Binary_I
Type DynamicCursor is ref C
--动态游标
--Purpose : 获得汉字拼音编码
Type ut_PYIndex_191_List is Varray( 191 ) OF N
Type ut_PYIndex_List is Varray( 10 ) OF ut_PYIndex_191_L
is_OracleDirectory
Constant VarChar2(20) := 'ATTACH_DIR';
--内部附件生成目录(Oracle的目录)
--Clob叠加比较慢,先用VarChar2叠加到4000个字符后才叠加到Clob字段
--UTL_INet.p_ClobCAT(
Procedure p_ClobCAT(
ac_HTMLText
in Out Clob,
as_CatText
in Out VarChar2,
in VarChar2 Default Null
--字符串根据特定分隔符分来
--Select UTL_INet.f_SplitString( 'A,B,C', xx, ',' ) F
Function f_SplitString(
as_SourStr
in out Clob, --输入字符串A,B,C
as_Separator
in VarChar2 Default '/'
--分拆依据的分隔符,
)Return VarChar2;
--分拆结果A
--将Clob内容写入物理文件
--Exec UTL_INet.p_PutClob2File( as_FileName =& 'aa.sql', ac_Text =& 'test sql' );
Procedure p_PutClob2File(
in VarChar2,
as_FileName
in VarChar2,
--文件内容
as_Overwrite
in VarChar default 'Y',
--标志位:Y:覆盖文件内容,N:追加
as_OraVersion
in VarChar default 'N'
--标志位:Y:写入Oracle版本信息
--序号自动递增计算
输入:HLXU,返回:HLXU
--范例: Select UTL_INet.f_AutoNum( 'HLXU' ), UTL_INet.f_AutoNum( 'ABA', -1 ), UTL_INet.f_AutoNum( 'ABZ' ) from D
Function f_AutoNum(
in VarChar2,
--原字符串
in Number Default 1,
--步长,默认是递增加1,
ai_DigitXXX
in Number Default Null --累计序号位数 XXX
)Return VarChar2;
--字符串加解密,返回一串32位长的字符串
--Select UTL_INet.f_MD5( 'TestPassword' ) From D
Function f_MD5(
as_SourceStr
in Varchar2
--需要加密的字符串
) Return Varchar2;
--将Email地址去头去尾,剩下最简单的Email地址,如&TSI Customer Service& &&变成
Function f_GetNakedEmailAddr(
as_DisplayEmail In VarChar2,
as_Including
in Char Default 'N'
--Y: 返回&&
)Return VarChar2;
--测试发送Email的邮箱是否正确
Function f_TestEmailAccount(
ac_Connection
out Nocopy UTL_SMTP.Connection,
as_SMTPHost
in VarChar2,
--邮件服务器
ai_SMTPPort
in PLS_Integer Default 25,
--邮件服务器端口
as_SMTPAuth
in VarChar2 Default 'Y',
--发送密码验证
as_Username
in VarChar2 Default Null,
--邮件用户
as_Password
in VarChar2 Default Null,
--邮件口令
as_WalletPath
in VarChar2 Default Null,
as_WalletPwd
in VarChar2 Default Null
------------------------------------------------ 写邮件头和邮件内容-------------------------
Procedure p_WriteRawData(
in Out Nocopy UTL_SMTP.Connection,
as_Partname
in VarChar2,
in VarChar2,
in VarChar2 Default ':',
in VarChar2 Default UTL_TCP.CRLF
----------------------------------------------发送附件-------------------------------------
Procedure p_MailAttachment(
in Out Nocopy UTL_SMTP.Connection,
as_Filename
in VarChar2,
as_Boundary
in VarChar2,
in VarChar2 Default 'base64',
as_MimeType
in VarChar2 Default 'text/plain',
as_ContentID
in VarChar2 Default Null,
in Boolean Default False
--True将文本内容直接在邮件内容显示出来,并出现在附件中,False不显示只出现在附件中
-----------------自动签名的生成,签名生成显示后还出现此签名文件为附件,尚未解决-------------------------------
Procedure p_GetMailSignature(
in Out Nocopy UTL_SMTP.Connection,
as_Boundary
in VarChar2,
in VarChar2 Default 'base64',
as_SignatureLogo in VarChar2 Default Null,
as_SignatureText in VarChar2 Default Null
--发送Email前必须将ewallet.p12拷贝到C:\OracleAttachDir目录
--发送电子邮件
--Exec UTL_INet.p_SendEmail( '', 'Test 主题Subject', 'Mail body(邮件内容)' );
Procedure p_SendEmail(
in VarChar2,
as_Recipient
in VarChar2,
in VarChar2 Default Null,
in VarChar2 Default Null,
as_Subject
in VarChar2,
ac_Message
as_AttachLists
in VarChar2 Default Null, --多个用逗号,分开
as_SMTPHost
in VarChar2,
--邮件服务器
ai_SMTPPort
in PLS_Integer Default 25, --邮件服务器端口
as_SMTPAuth
in VarChar2 Default 'Y', --发送密码验证
as_WalletPath
in VarChar2 Default Null,
as_WalletPwd
in VarChar2 Default Null,
as_Username
in VarChar2 Default Null,
as_Password
in VarChar2 Default Null,
as_RunResult
out VarChar2,
--返回信息,OK成功,其他返回错误
as_SignatureLogo in VarChar2 Default Null,
as_SignatureText in VarChar2 Default Null,
in VarChar2 Default 'base64',
ai_Priority
In Pls_Integer Default Null
Function f_LoadHTMLFromURL(
in VarChar2,
as_CharSet
in VarChar2 Default 'UTF-8'
--生成HTML报表表头
--Exec f_HTMLTableHead( 'Tab1', '20:Table N20:Records' );
Function f_HTMLTableHead(
as_TableID
in VarChar2,
as_WidthColumns in VarChar2,
--表头内容,用分号;隔开,宽度与标题用冒号:隔开
as_BgColor
in VarChar2 Default 'CCCCCC' --标题背景色
)Return VarChar2;
--生成HTML报表主体内容
--Exec UTL_INet.f_HTMLTableBody( '' );
Function f_HTMLTableBody(
as_BodyText
in VarChar2,
--主体内容,多个用分号;隔开
in VarChar2 Default Null --格式(居中,靠左,靠右)
)Return VarChar2;
--获取汉字拼音字母表
--Select UTL_INet.f_getChineseSpell( '获取汉字拼音' )
Function f_getChineseSpell(
in VarChar2,
in VarChar2 Default Null
--空返回完整拼音,其他返回拼音首字母
)Return VarChar2;
--二进制转换成十进制函数
--Select UTL_INet.f_Bin2Dec( '' ) F
Function f_Bin2Dec(
in VarChar2
--十进制转换成二进制函数
--Select UTL_INet.f_Dec2Bin( 187 ) F
Function f_Dec2Bin(
)Return VarChar2;
--十进制转换成三十二进制函数
--Select UTL_INet.f_Dec2Hex( 187 ) F
Function f_Dec2Hex(
)Return VarChar2;
--三十二进制转换成十进制函数
--Select UTL_INet.f_Hex2Dec( '5R' ) F
Function f_Hex2Dec(
in VarChar2
--生成12位随机数
--Select UTL_INet.f_Rand() F
Function f_Rand(
in VarChar2 Default '00',
--未满个数字符补充串
in Number Default 12
)Return VarChar2;
--繁体字转化成简体字(传入的汉字,若有繁体自动转化为简体)
Function f_ft2jt(
in VarChar2
--传入的汉字
)Return VarChar2;
--简体字转化成繁体字(传入的汉字,若有简体自动转化为繁体)
Function f_jt2ft(
in VarChar2
--传入的汉字
)Return VarChar2;
-- --------------------------------------------------------------------------
-- Description : SOAP related Functions for consuming web services.
Type t_Request is Record (
VarChar2(256),
VarChar2(256),
VarChar2(32767),
EnvelopeTag
VarChar2(30)
Type t_Response is Record
EnvelopeTag
VarChar2(30)
Function f_NewRequest(
in VarChar2,
as_Namespace
in VarChar2,
as_EnvelopeTag
in VarChar2 Default 'SOAP-ENV'
)Return t_R
Procedure p_AddParameter(
as_Request
in out Nocopy t_Request,
in VarChar2,
in VarChar2,
in VarChar2
Function f_Invoke(
as_Request
in out Nocopy t_Request,
in VarChar2,
in VarChar2
)Return t_R
Function f_GetReturnValue(
as_Response
in out Nocopy t_Response,
in VarChar2,
as_Namespace
in VarChar2
)Return VarChar2;
--列出当前目录下所有文件清单,可以指定扩展名,是否包含子目录,返回的文件名用|分割开来
Function f_ListDirectory(
in VarChar2,
in VarChar2 Default Null,
as_IncludingSubDir
in Char Default 'N'
--将数值翻译成中文大写、英文大写
--Select f_Digit2Char( 24822.80, 'EN_Amount' ) F
Function f_Digit2Char(
in Number,
--要被翻译的数值
in VarChar2
--翻译选择项
)Return VarChar2;
--发送短信
Function f_SendSMS(
as_MobilePhone
in VarChar2,
--手机号码
as_SMSText
in VarChar2,
--短信内容
in VarChar2,
as_SMSUserID
in VarChar2,
as_SMSPasswd
in VarChar2
)Return VarChar2;
--删除某个指定文件
Procedure p_RemoveFile(
in VarChar2,
as_FileName
in VarChar2
--多个用逗号,分开
--从文件中读内容
Function f_GetTextFromFile(
in VarChar2,
as_FileName
in VarChar2,
as_NewLine
in VarChar2 Default UTL_TCP.CRLF
END UTL_IN
若举报审核通过,可奖励20下载分
被举报人:
noreplyrule
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
数据库下载排行}

我要回帖

更多关于 oracle 拷贝数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信