Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to migrate Oracle database from Linux x86 stand-alone to Solaries dual-node RAC cluster

2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)05/31 Report--

This article mainly explains "how to migrate Oracle database from Linux x86 stand-alone to Solaries dual-node RAC cluster". Interested friends may wish to have a look. The method introduced in this paper is simple, fast and practical. Let's let the editor take you to learn how to migrate Oracle database from Linux x86 stand-alone to Solaries dual-node RAC cluster.

1. Clean up test data in RAC cluster

(1) close all applications on the application server

(2) Delete all user data in the database

DROP USER "XXXX" CASCADE;2. Clean up the RMAN backup files oracle@cwgsdb1:~$ rman target / Recovery Manager: Release 11.2.0.4.0-Production on Thu Oct 25 10:34:39 2018Copyright (c) 1982, 2011, Oracle and/or its affiliates in the RAC cluster. All rights reserved.connected to target database: CAMS (DBID=2649374962) RMAN > delete backup Using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=4048 instance=cams1 device type=DISKList of Backup PiecesBP Key BS Key Pc# Cp# Status Device Type Piece Name- 1 11 1 1 AVAILABLE DISK + DATADG / cams/rman/rmanarch_cams_20181025_3.bak2 2 1 1 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_4.bak3 3 1 1 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_1.bak4 4 1 1 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_2.bak5 5 1 1 AVAILABLE DISK + DATADG/cams/rman/rmanfullback_cams_20181025_6.bak6 6 11 AVAILABLE DISK + DATADG/cams/rman/rmanfullback_cams_20181025_7.bak7 7 11 AVAILABLE DISK + DATADG/cams/rman/rmanfullback_cams_20181025_5.bak8 81 1 AVAILABLE DISK + DATADG/cams/rman/rmanfullback_cams_20181025_8.bak9 9 / 11 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_9.bak10 10 11 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_10.bak11 11 11 AVAILABLE DISK / u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-0012 12 11 AVAILABLE DISK + DATADG / cams/rman/rmanarch_cams_20181025_1213 13 11 AVAILABLE DISK / u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-0114 141 1 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_1415 15 11 AVAILABLE DISK / u01/app/oracle/product/11.2.0/dbhome_1/dbs / DATADG/cams/rman/rmanarch_cams_20181025_1718 2649374962-20181025-0216 16 11 AVAILABLE DISK / u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-0317 171 1 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_1718 1811 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_1819 19 11 AVAILABLE DISK + DATADG/cams/rman/rmanarch_cams_20181025_1920 2011 AVAILABLE DISK / u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-04Do you really want to delete the above objects (enter YES or NO)? YESdeleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_3.bak RECID=1 STAMP=990407128deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_4.bak RECID=2 STAMP=990407199deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_1.bak RECID=3 STAMP=990407128deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_2.bak RECID=4 STAMP=990407128deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanfullback_cams_20181025_6.bak RECID=5 STAMP=990407239deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanfullback_cams_20181025_7.bak RECID=6 STAMP=990407241deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanfullback_cams_20181025_5.bak RECID=7 STAMP=990407238deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanfullback_cams_20181025_8.bak RECID=8 STAMP=990407287deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_9.bak RECID=9 STAMP=990407292deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_10.bak RECID=10 STAMP=990407292deleted backup piecebackup piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-00 RECID=11 STAMP=990407294deleted backup piecebackup piece handle=+DATADG/ Cams/rman/rmanarch_cams_20181025_12 RECID=12 STAMP=990407671deleted backup piecebackup piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-01 RECID=13 STAMP=990407673deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_14 RECID=14 STAMP=990414011deleted backup piecebackup piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-02 RECID=15 STAMP=990414013deleted backup piecebackup piece handle=/u01/app/oracle/product/11.2.0/dbhome_ 1/dbs/c-2649374962-20181025-03 RECID=16 STAMP=990410565deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_17 RECID=17 STAMP=990414012deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_18 RECID=18 STAMP=990414013deleted backup piecebackup piece handle=+DATADG/cams/rman/rmanarch_cams_20181025_19 RECID=19 STAMP=990414014deleted backup piecebackup piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/c-2649374962-20181025-04 RECID=20 STAMP=990414016Deleted 20 objectsRMAN > list backup Specification does not match any backup in the repository3. Clean up logical backup files in RAC cluster

(1) View all active directories

SQL > set lines 300 countries SQL > col OWNER for a30 countries SQL > col DIRECTORY_NAME for A30 countries SQL > col DIRECTORY_PATH for A50 countries SQL > select * from dba_directories where DIRECTORY_NAME in ('DIR_DP','DPDATA1') OWNER DIRECTORY_NAME DIRECTORY_PATH -SYS DPDATA1 / u01/app/oracle/dumpSYS DIR_DP / u01/app/oracle/admin/cams/dpdump/

(2) Clean up the files under the directories path

Oracle@cwgsdb1:~$ cd / u01Applicationoraclebank dumporacleDumpDumpDump$ lscamsData20181017.dmp camsData20181017.log impdp_camsData20181017.logoracle@cwgsdb1:/u01/app/oracle/dump$ rm * oracle@cwgsdb1:/u01/app/oracle/dump$ cd / u01LigApplicationoracleLash dpdumpDumpLigoracleCwgsdb1flanxu01ApplicationCwgsdb1flanxu01ApplicationoracleSplash dpdump$ lschannel20181024173831.dmp channel20181024173831.log core20181024173831.dmp core20181024173831.log cwap20181024173831.dmp cwap20181024173831. Logoracle@cwgsdb1:/u01/app/oracle/admin/cams/dpdump$ rm * oracle@cwgsdb1:/u01/app/oracle/admin/cams/dpdump$ ls4. Adjust the directory path on the first node of RAC to point to the NFS file system

(1) Mount NFS on the server to view NFS information:

Oracle@cwgsdb1:~$ df-kFilesystem 1024-blocks Used Available Capacity Mounted onrpool/ROOT/solaris 205406208 100958072 21% / / devices 100958072 0% / devices/dev 0 0 0% / devctfs 0 0 0% / system/contractproc 0 0 0% / procmnttab 0 0 0% / etc/mnttabswap 11726088 2912 11723176 / System/volatileobjfs 0 000 0% / system/objectsharefs 0 0 0% / etc/dfs/sharetabfd 0 0 0% / dev/fdrpool/ROOT/solaris/var 205406208 415600 100958072 1% / varswap 11725976 2800 11723176 1% / tmprpool/VARSHARE 205406208 3432 100958072 1% / var/sharerpool/export 205406208 304 100958072 1% / exportrpool/export/home 205406208 320 100958072 1% / export/homerpool/export/home / grid 205406208 1128 100958072 1% / export/home/gridrpool/export/home/oracle 205406208 100958072 1% / export/home/oraclerpool/repo 205406208 20656608 100958072 17% / reporpool 205406208 384 100958072 1% / rpoolrpool/VARSHARE/zones 205406208 288 100958072 1% / system/zonesrpool/VARSHARE/pkg 205406208 304 100958072 1% / var/share/pkgrpool/VARSHARE/pkg/repositories 205406208 288 100958072 1% / var/share/pkg/repositories100.100.100.54:/impbackup 51606140 15116928 33867772 31% / backup

(2) adjust the directory path:

Create or replace directory dir_dp as'/ backup/';grant read,write on directory dir_dp to public

(3) View NFS file permissions:

Oracle@cwgsdb1:~$ ls-lrt / total 1692dr-xr-xr-x 2 root root 2 Oct 6 2015 homedrwxr-xr-x 2 root root 2 Sep 28 22:47 mediadrwxr-xr-x 18 root sys 18 Sep 29 06:58 kerneldrwxr-xr-x 7 root sys 23 Sep 29 07:01 platformdrwxr-xr-x 3 root sys 5 Sep 29 07:01 bootlrwxrwxrwx 1 root root 10 Sep 29 07:01 sbin->. / usr/sbinlrwxrwxrwx 1 root root 9 Sep 29 07:01 bin->. / usr/bindrwxr-xr-x 2 root sys 2 Sep 29 07:01 mntdrwxr-xr-x 7 root root 7 Sep 29 07:04 systemdrwxr-xr-x 3 root sys 3 Sep 29 07:04 exportdrwxr-xr-x 4 grid oinstall 7 Sep 30 01:49 softdrwxr-xr-x 2 root root 2 Oct 2 01:36 isodrwxr-xr-x 3 root root 15 Oct 2 01:41 repodrwxr-xr-x 12 root bin 335 Oct 2 01:54 libdrwxr-xr-x 43 root sys 50 Oct 2 02:22 vardrwxr-xr-x 4 root root 4 Oct 2 21:02 Rpooldrwxr-xr-x 3 root oinstall 3 Oct 2 21:07 u01drwx-21 root root 30 Oct 2 23:34 rootdrwxr-xr-x 35 root sys 47 Oct 3 00:12 usrdrwxr-xr-x 2 grid asmadmin 7 Oct 3 04:52 sharediskdrwxr-xr-x 7 Oct 3 07:31 optdrwxr-xr-x 4 root sys 8 Oct 24 01:13 devicesdrwxr-xr-x 193 root sys 193 Oct 24 01:13 devdr-xr-xr-x 1 root root 1 Oct 24 01:14 netdr-xr-xr-x 1 root root 1 Oct 24 01:14 nfs4drwxrwxrwx 2 nobody nobody 4096 Oct 25 14:36 backupdrwxr-xr-x 98 root sys 194 Oct 25 16:40 etcdrwxrwxrwt 10 root sys 862 Oct 25 16:46 tmpdr-xr-xr-x 192 root root 480032 Oct 25 16:47 proc5. Test new directory backup permissions

Oracle@cwgsdb1:/backup$ expdp directory=dir_dp schemas=hr dumpfile=hr.dmp logfile=hr.log parallel=2 CLUSTER=NExport: Release 11.2.0.4.0-Production on Thu Oct 25 17:18:54 2018Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.Username: systemPassword:Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0-64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsStarting "SYSTEM". "SYS_EXPORT_SCHEMA_02": system/* directory=dir_dp schemas=hr dumpfile=hr.dmp logfile=hr.log parallel=2 CLUSTER=NEstimate in progress using BLOCKS method...Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATATotal estimation using BLOCKS method: 448 KB. . Exported "HR". "COUNTRIES" 6.367 KB 25 rows. . Exported "HR". "DEPARTMENTS" 7.007 KB 27 rows. . Exported "HR". "EMPLOYEES" 16.80KB 107rows. . Exported "HR". "JOBS" 6.992 KB 19 rows. . Exported "HR". "JOB_HISTORY" 7.054 KB 10 rows. . Exported "HR". "LOCATIONS" 8.273 KB 23 rows. . Exported "HR". "REGIONS" 5.476 KB 4 rowsProcessing object type SCHEMA_EXPORT/USERProcessing object type SCHEMA_EXPORT/SYSTEM_GRANTProcessing object type SCHEMA_EXPORT/ROLE_GRANTProcessing object type SCHEMA_EXPORT/DEFAULT_ROLEProcessing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAProcessing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCEProcessing object type SCHEMA_EXPORT/TABLE/TABLEProcessing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANTProcessing object type SCHEMA_EXPORT/ TABLE/COMMENTProcessing object type SCHEMA_EXPORT/PROCEDURE/PROCEDUREProcessing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDUREProcessing object type SCHEMA_EXPORT/TABLE/INDEX/INDEXProcessing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTProcessing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSProcessing object type SCHEMA_EXPORT/VIEW/VIEWProcessing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTProcessing object type SCHEMA_EXPORT/TABLE/TRIGGERProcessing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSMaster table "SYSTEM". "SYS_EXPORT_SCHEMA_02" successfully loaded / unloaded****Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_02 is: / backup/hr.dmpJob "SYSTEM". "SYS_EXPORT_SCHEMA_02" successfully completed at Thu Oct 25 17:19:21 2018 elapsed 0 00:00:136. The original production environment closes on a daily basis.

After the business personnel complete the business of the day, the organization shuts down to prevent the business personnel from logging into the system to do business. Plan to execute daily run batches after the database migration is complete.

7. Application of the front machine of the ticket closed in the original production environment

Log in to the weblogic console of the ticket front machine, use the tail-f command to check whether you are currently browsing the log, and if you do not, close the application of the ticket front machine through the console.

8. Closed application of the original production environment

According to the logical order in which the application is closed, the original production environment application is closed in turn.

9. Offline after the database of the original production environment is backed up

(1) original database backup command

Expdp\'/ as sysdba\ 'DIRECTORY=dpdata1 DUMPFILE=camsData20181025.dmp SCHEMAS=xxxx,yyyy logfile=camsData20181025.log

(2) File compression

Tar zcvf camsData20181025.tar.gz camsData20181025.dmp camsData20181025.log

(3) transfer the file to the first node of the new production database server

Scp camsData20181025.tar.gz oracle@100.100.100.215:/u01/app/oracle/dump

(4) close the old production database

$lsnrctl stop$ sqlplus / as sysdbaSQL > shutdown immediate

(5) close the scheduled task and add # before the task

Crontab-e

(6) modify the IP address of the old database server to another address.

10. Change the scan ip of the RAC cluster to the production database IP

According to the process verified by the test environment, change the scan ip of the RAC cluster to the production database IP.

11. Close the production environment archive oracle@cwgsdb1:~$ srvctl stop database-d camsoracle@cwgsdb1:~$ srvctl start database-d cams-o mountoracle@cwgsdb1:~$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Thu Oct 25 20:13:32 2018Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0-64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL > alter database noarchivelog;Database altered.SQL > alter database open;Database altered.SQL > archivelog list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination + DATADGOldest online log sequence 3Current log sequence 6 another node also executes: SQL > alter database open;Database altered.SQL > select open_mode from gv$database OPEN_MODE-READ WRITEREAD WRITE

Check database status

Grid@cwgsdb1:~$ crsctl stat res-t----NAME TARGET STATE SERVER STATE_DETAILS-- -Local Resources-- -- ora.DATADG.dg ONLINE ONLINE cwgsdb1 ONLINE ONLINE cwgsdb2 ora.LISTENER.lsnr ONLINE ONLINE Cwgsdb1 ONLINE ONLINE cwgsdb2 ora.SYSTEMDG.dg ONLINE ONLINE cwgsdb1 ONLINE ONLINE cwgsdb2 Ora.asm ONLINE ONLINE cwgsdb1 Started ONLINE ONLINE cwgsdb2 Started ora.gsd OFFLINE OFFLINE cwgsdb1 OFFLINE OFFLINE cwgsdb2 Ora.net1.network ONLINE ONLINE cwgsdb1 ONLINE ONLINE cwgsdb2 ora.ons ONLINE ONLINE cwgsdb1 ONLINE ONLINE cwgsdb2 Ora.registry.acfs ONLINE ONLINE cwgsdb1 ONLINE ONLINE cwgsdb2-- -- Cluster Resources -- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE cwgsdb2 ora.cams.db 1 ONLINE ONLINE cwgsdb1 Open 2 ONLINE ONLINE cwgsdb2 Open ora.cvu 1 ONLINE ONLINE cwgsdb1 Ora.cwgsdb1.vip 1 ONLINE ONLINE cwgsdb1 ora.cwgsdb2.vip 1 ONLINE ONLINE cwgsdb2 ora.oc4j 1 ONLINE ONLINE cwgsdb1 ora.scan1 .vip 1 ONLINE ONLINE cwgsdb212. Restore the latest production data

(1) decompress the latest production data

Oracle@cwgsdb1:~$ cdoracle@cwgsdb1:~$ cd / u01 bytes lscamsData20181025.tar.gzoracle@cwgsdb1:/u01/app/oracle/dump$ tar zxvf camsData20181025.tar.gzx camsData20181025.dmp lscamsData20181025.tar.gzoracle@cwgsdb1:/u01/app/oracle/dump$ tar zxvf camsData20181025.tar.gzx camsData20181025.dmp, 7310499840 bytes, 14278320 Oracle, 345007 bytes, 674 tape blocks

(2) execute the import command

Impdp\'/ as sysdba\ 'DIRECTORY=dpdata1 DUMPFILE=camsData20181025.dmp SCHEMAS=xxxx,yyyy logfile=impdp_camsData20181025.log cluster=N13. Delete invalid objects prompted on import

(note: you need to confirm with the developer and delete after confirmation)

Drop FUNCTION "DATABUFF". "ELEMIDX"; drop FUNCTION "DB2ODESK". "FSBN"; drop PROCEDURE "DB2ODESK". "BATCH_DELETE"; drop PROCEDURE "DB2ODESK". "SP_DESK_CURRZS"; drop PACKAGE BODY "DATABUFF". "MIGRATION_TRANSFORMER"; drop FUNCTION "CAMS_BCE". "TX_ZD2"; drop FUNCTION "CAMS_BCE". "TX_ZD3"; 14. Open the production environment archive oracle@cwgsdb1:/u01/app/oracle/dump$ srvctl stop database-d camsoracle@cwgsdb1:/u01/app/oracle/dump$ srvctl start database-d cams-o mountoracle@cwgsdb1:/u01/app/oracle/dump$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Thu Oct 25 20:52:54 2018Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0-64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL > alter database archivelog;Database altered.SQL > alter database open;Database altered.SQL > archivelog list;Database log mode Archive ModeAutomatic archival EnabledArchive destination + DATADGOldest online log sequence 4Next log sequence to archive 7Current log sequence 7 another node also executes: SQL > alter database open Database altered.SQL > select open_mode from gv$database;OPEN_MODE-READ WRITEREAD WRITE15. Deploy the production environment RMAN policy and perform a full backup

Follow the process verified by the test environment to deploy the production environment RAMN policy and perform a manual full backup.

16. Collect statistics manually exec dbms_stats.gather_schema_stats ('XXXX'); 17. Modify database connection to service connection in production application

According to the process verified by the test environment, modify the database connection to service connection in production application.

18. Start the production environment application and verify

(note: the production system uses query transactions for verification)

Start the application sequentially, test multiple groups of query transactions across subsystems, and then check the transaction messages and success status on the data bus monitoring platform.

19. Verify batch functionality

(note: if you encounter a problem, you need to deal with it as soon as possible.)

The production environment performs batch operation, runs the accounting date to the second day, and verifies that the function is normal.

20. Production environment database query user settings

(here, the existing user scott is selected as the insertion user, and only the query permission is given.)

Since the scott user has been unlocked during the test phase, the operation will not be repeated here.

Select 'grant select on XXXX.' | | OBJECT_NAME | |' to scott;' from DBA_OBJECTS where owner='XXXX' and object_type in ('TABLE','VIEW')

The SQL generated by executing the above statement gives scott users the right to query all business tables and views.

21. Turn on the front machine of the ticket

Log in to the weblogic console of the ticket front machine and open the application of the ticket front machine through the console.

twenty-two。 Deal with other problems

(1) because there is an error in ORA-04063: view "CAMS_CWAP.QUERYSHOUXIN_V" during migration, in order to ensure the integrity of data table and view permissions, the report permission script is executed separately.

(2) the date command in Linux and Unix systems is different and needs to be adjusted separately after migration.

(3) the nc command in Linux and Unix systems is different and needs to be adjusted separately after migration.

(4) during the testing process, it is found that the new production database is not isolated from the test environment, so there is a certain risk. The network engineer has been notified to handle it.

23. Check the RMAN backup set every other day to confirm the production operation

It has been confirmed that RMAN has performed backup and historical file deletion in accordance with the established policy, and the production environment is running stably.

At this point, the switching of the production environment has been completed, and the production environment Oracle database has been successfully migrated from Linux X86 stand-alone to Solaries two-node RAC cluster.

At this point, I believe you have a deeper understanding of "how to migrate Oracle database from Linux x86 stand-alone to Solaries dual-node RAC cluster". You might as well do it in practice. Here is the website, more related content can enter the relevant channels to inquire, follow us, continue to learn!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report