oracle實驗記錄 (oracle 10G dataguard(4)redo傳輸&程式)

fufuh2o發表於2009-11-16

redo傳輸&程式

一.arcn傳送redo資料
primary這樣的設定:
*.log_archive_dest_1='location=G:\archivelog valid_for=(all_logfiles,all_roles) db_unique_name=xh'
*.log_archive_dest_2='service=standby1 valid_for=(online_logfiles,primary_role) db_unique_name=standby1'

這是一種預設設定表示使用arcn程式來歸檔日誌檔案並傳輸到standby(只支援最大效能模式)


SQL> select PROTECTION_MODE from v$database;

PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE

具體使用arcn 程式的過程為:
1.primary 事務產生redo  寫在log buffer裡,由lgwr寫入 online log file
2.primary的 arc0程式在發生歸檔時,將歸檔資料寫到log_archive_dest_1這個本地歸檔位置
3.primary的 arc1程式同時將歸檔資料寫到log_archive_dest_2這個遠端歸檔位置
4.standby rfs程式將redo寫到 standby redo logfile中
6.standby的 arch程式將standby redo logfile中 資料歸檔
7.standby的 mrp(重做應用) or lsp(sql應用)程式應用這些歸檔中那個redo到 standby database


SQL> select program from v$process where program like '%ARC%';(primary)

PROGRAM
----------------------------------------------------------------
ORACLE.EXE (ARC0)
ORACLE.EXE (ARC1)

SQL>  select process,client_process from v$managed_standby;(standby)

PROCESS   CLIENT_P
--------- --------
ARCH      ARCH
ARCH      ARCH
MRP0      N/A~*********************負責應用redo的程式
RFS       UNKNOWN~~~~~~~~~~負責接收primary arc1程式傳輸資料的程式


rfs對應的 client_process  為unknown表示用的arch (log_archive_dest_n='service=xx arch) lgwr,表示用的LGRW

 

二.lgwr來傳送redo資料
primary中設*.log_archive_dest_2='service=standby1 lgwr valid_for=(online_logfiles,primary_role) db_unique_name=standby1'
LGWR中又分sync(預設),async

lgwr sync情況過程:
1.primary 事務產生redo lgwr將log buffer中資料 寫入online log file 然後由primary arcn歸檔到log_archive_dest_1,另外lgwr寫 online log file同時 將redo資料發給primary 中LNSN程式(LGWR Network Server process)
2.lnsn通過oracle net 將redo傳給 standby 的rfs程式,rfs程式 將redo 寫入  standby redo log files
3.primary 中事務會一直處於未提交狀態直到standby全部接收完畢
4.primary switch logfile,將觸發standby  log file切換(啟動 standby arcn 程式)
5.此時允許實時應用,LSP(SQL應用)或mrp(重做應用)去執行.

 

lgwr async情況過程
1.primary 事務產生redo lgwr將log buffer中資料 寫入online log file 然後由primary arcn歸檔到log_archive_dest_1
2.當primary online log file 收到redo後 lnsn程式啟動
3.lnsn通過oracle net 將redo傳給 standby 的rfs程式,rfs程式 將redo 寫入    standby redo log files
4.primary 中事務會一直處於未提交狀態直到standby全部接收完畢
5.primary switch logfile,將觸發standby  log file切換(啟動 standby   arcn 程式)
6.此時允許實時應用,LSP(SQL應用)或mrp(重做應用)去執行.

 

 

 

關於日誌傳輸中斷

自動解決:
當由於網路問題,造成日誌傳不到standby,不用手動干涉,oracle primary database會每分鐘都檢查standby 檢視archive log 是否有中斷(通過sequence#判斷),若發現有中斷oracle使用 FAL(fetch archive log)來解決這個問題
處理機制
1.fal自動檢查並獲取在primary生成的archive log
2.當standby接受archive log有問題時候,fal 能解決當standby還沒應用時,但存在standby的archive log被刪除,standby 存archive log的disk不能用,standby 收到的archive log被替換

 

SQL> select count(*) from v$archived_log;(primary)

  COUNT(*)
----------
        77

SQL> select count(*) from v$archived_log;(standby)

  COUNT(*)
----------
        37

 

SQL> shutdown immediate; (standby)
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

SQL> alter system switch logfile;(primary)

系統已更改。

SQL> /                      (primary)

系統已更改。

SQL> select count(*) from v$archived_log;(primary)

  COUNT(*)
----------
        79


SQL> startup  (standby)
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              79692480 bytes
Database Buffers          201326592 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
資料庫已經開啟。

SQL> /    (primary) 過一會primary自動有產生了archived log

  COUNT(*)
----------
        84

SQL> /  (standby)的fal機制自動都補上了

  COUNT(*)
----------
        42

 

standby archive log 物理丟失

SQL> alter database recover managed standby database cancel;

資料庫已更改。
SQL> select name,applied from v$archived_log;
E:\STANDBY\ARCHIVE\ARC00045_0701872237.001                   YES
E:\STANDBY\ARCHIVE\ARC00046_0701872237.001                   YES

已選擇46行。 (standby的情況   都應用了)

SQL> select * from t1;(primary)

         A
----------
         1
         2
         3
      9999
      6666
      8888
      5555
      7777

已選擇8行。

SQL> select current_scn from v$database;(primary)

CURRENT_SCN
-----------
     962213

SQL> insert into t1 values(4444);(primary)

已建立 1 行。

SQL> commit;(primary)

提交完成。
SQL> alter system switch logfile;(primary)

系統已更改。

SQL> select name from v$archived_log where 962213 between FIRST_CHANGE# and NEXT (primary)
_CHANGE# ;

NAME
--------------------------------------------------------------------------------

G:\ARCHIVELOG\ARC00047_0701872237.001
standby1


SQL> select current_scn from v$database; (primary)
 
CURRENT_SCN
-----------
     962324

SQL> insert into t1 values(123456); (primary)

已建立 1 行。

SQL> commit; (primary)

提交完成。

SQL> alter system switch logfile; (primary)

系統已更改。

SQL> select name from v$archived_log where 962324 between FIRST_CHANGE# and NEXT (primary)
_CHANGE# ;

NAME
--------------------------------------------------------------------------------

G:\ARCHIVELOG\ARC00048_0701872237.001
standby1


可以看到insert 4444在  ARC00047_0701872237.001  ,123456在ARC00048_0701872237.001

SQL> select name,applied from v$archived_log;  (standby)
E:\STANDBY\ARCHIVE\ARC00047_0701872237.001                   NO
E:\STANDBY\ARCHIVE\ARC00048_0701872237.001                   NO

已選擇48行。
SQL> host del E:\STANDBY\ARCHIVE\ARC00047_0701872237.001 (standby)

SQL>
SQL> alter database recover managed standby database disconnect from session; (standby)

資料庫已更改。

SQL> select name,applied from v$archived_log;  (standby)
E:\STANDBY\ARCHIVE\ARC00047_0701872237.001                   NO
E:\STANDBY\ARCHIVE\ARC00048_0701872237.001                   YES
E:\STANDBY\ARCHIVE2\ARC00047_0701872237.001                  YES*****重新複製了一個 損壞的archive log

已選擇49行。

看下standby 的archive log資訊  (standby)

Media Recovery Log E:\STANDBY\ARCHIVE\ARC00047_0701872237.001
Error opening E:\STANDBY\ARCHIVE\ARC00047_0701872237.001
Attempting refetch
Media Recovery Waiting for thread 1 sequence 47
Fetching gap sequence in thread 1, gap sequence 47-47

可以看到standby 的fal機制,對這個損壞的archived log進行 media recovery

 


SQL>
SQL> show parameter standby_archive_ (standby)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------
standby_archive_dest                 string      e:\standby\archive2


SQL> alter database recover managed standby database cancel; (standby)

資料庫已更改。

SQL> alter database open; (standby)

資料庫已更改。

SQL> select * from t1;(standby)

         A
----------
         1
         2
         3
      9999
      6666
      8888
      5555
      7777
      4444
    123456 *********************

已選擇10行。

 

另外 採用alter database open (standby) 此時oracle判斷是physical standby read only
standby alert.log中 出現大量

ksvcreate: Process(m000) creation failed
Fri Nov 06 11:39:04 2009
ksvcreate: Process(m000) creation failed
Fri Nov 06 11:40:07 2009
ksvcreate: Process(m000) creation failed
Fri Nov 06 11:41:10 2009
ksvcreate: Process(m000) creation failed
Fri Nov 06 11:42:13 2009
ksvcreate: Process(m000) creation failed
Fri Nov 06 11:43:16 2009
ksvcreate: Process(m000) creation failed
Fri Nov 06 11:44:19 2009
ksvcreate: Process(m000) creation failed

查詢是一個Bug 5583049

Doc ID:  418553.1
Applies to:
Oracle Server - Enterprise Edition - Version: 10.2 to 10.2
This problem can occur on any platform.

Symptoms
Switching a Physical Standby Database multiple to READ ONLY Mode will report the following Errors in the ALERT.LOG:

ksvcreate: Process(m000) creation failed


Changes
Switch Physical Standby from READ ONLY to apply and back to READ ONLY.
Cause
The Cause of this Problem has been identified in Bug 5583049.
Solution
There are two Workarounds available:

Restart the Instance..
or

 Disable ADDM - Should be re-enabled if Standby takes up the Primary Role
          * Set SGA_TARGET=0 and set shared_pool_size, db_cache_size, etc if using
            Automatic SGA Memory Management (ASMM)

          * Set STATISTICS_LEVEL=BASIC to disable statistics gathering

References
Bug 5583049 - 'KSVCREATE: PROCESS(M000) CREATION FAILED' AFTER STANDBY OPEN RO MULTIPLE TIMES

Keywords
READ-ONLY; STANDBY~DATABASE; PHYSICAL~STANDBY;
--------------------------------------------------------------------------------

Help us improve our service. Please email us your comments for this document. .

 

 

 

 

手動中斷解決

SELECT * FROM V$ARCHIVE_GAP;(standby)
standby上進行查詢 返回的話表示 存在中斷

SQL> desc v$archive_gap;
 名稱                                      是否為空? 型別
 ----------------------------------------- -------- -------------------------

 THREAD#                                            NUMBER
 LOW_SEQUENCE#                                      NUMBER
 HIGH_SEQUENCE#                                     NUMBER

根據資訊在primary v$archived_log中確定中斷 的archived log
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=XX AND DEST_ID=XXX
2> AND SEQUENCE# BETWEEN XX AND XXX;

手動複製到standby achived log dest
 
ALTER DATABASE REGISTER LOGFILE 'xxxxxxxxx'進行手工註冊

 

 

確定日誌是否傳送到standby


primary執行
  1  SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM
  2   (SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1)
  3   LOCAL WHERE
  4   LOCAL.SEQUENCE# NOT IN
  5   (SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND
  6*  THREAD# = LOCAL.THREAD#)
SQL> /

未選定行

以上可以查到 dest_1位置存在的歸檔 不再dest_2位置的,既 沒有傳送到standby的

SQL> col dest_name format a30
SQL> select dest_id ,dest_name,db_unique_name from v$archive_dest;(primary)

   DEST_ID DEST_NAME                      DB_UNIQUE_NAME
---------- ------------------------------ ------------------------------
         1 LOG_ARCHIVE_DEST_1             xh
         2 LOG_ARCHIVE_DEST_2             standby1
         3 LOG_ARCHIVE_DEST_3             NONE
         4 LOG_ARCHIVE_DEST_4             NONE
         5 LOG_ARCHIVE_DEST_5             NONE
         6 LOG_ARCHIVE_DEST_6             NONE
         7 LOG_ARCHIVE_DEST_7             NONE
         8 LOG_ARCHIVE_DEST_8             NONE
         9 LOG_ARCHIVE_DEST_9             NONE
        10 LOG_ARCHIVE_DEST_10            NONE

已選擇10行。

 


SQL> SELECT MAX(SEQUENCE#), THREAD# FROM V$ARCHIVED_LOG GROUP BY  (primary)
  2  THREAD#;

MAX(SEQUENCE#)    THREAD#
-------------- ----------
            48          1

在 primary確定最新的 archived_log

 


***********************
standby archive log


設定一個歸檔延遲應用

log_archive_dest_n 中delay屬性
SQL> show parameter log_archive_dest_2(primary)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=standby1 valid_for=(on
                                                 line_logfiles,primary_role) db
                                                 _unique_name=standby1
SQL> select status,database_mode,recovery_mode from v$archive_dest_status;(standby)

STATUS    DATABASE_MODE   RECOVERY_MODE
--------- --------------- -----------------------
VALID     MOUNTED-STANDBY IDLE~~~~~~~~~~~~~~~~~~~~~~~~~可以看到 standby 目前為idle 未啟動恢復
VALID     MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
INACTIVE  MOUNTED-STANDBY IDLE
VALID     MOUNTED-STANDBY IDLE

已選擇11行。

SQL> alter database recover managed standby database disconnect from session;(standby 開啟恢復模式 收到archive log後就 馬上應用)

SQL> select status,database_mode,recovery_mode from v$archive_dest_status;;(standby)

STATUS    DATABASE_MODE   RECOVERY_MODE
--------- --------------- -----------------------
VALID     MOUNTED-STANDBY MANAGED~~~~~~~~~~~~~變為管理狀態
VALID     MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
INACTIVE  MOUNTED-STANDBY MANAGED
VALID     MOUNTED-STANDBY MANAGED

已選擇11行。

SQL> insert into t1  values(9999);(primary)

已建立 1 行。

SQL> commit;(primary)

提交完成。

SQL> alter system switch logfile ;(primary)

系統已更改。

SQL> alter system checkpoint;(primary)

系統已更改。
SQL> select applied from v$archived_log;(standby)

YES
YES
YES
YES
YES~~~~~~~~~~~~~~~~~~~~~~~~應用了

已選擇29行。


SQL> alter database recover managed standby database cancel;(standby)

資料庫已更改。

SQL> alter database open(standby)
  2  ;

資料庫已更改。

 

OPEN_MODE
----------
READ ONLY~~~~~從這可以看出來 雖然 未使用alter database open read only,oracle自動判斷是個physiacl standby只能read only開啟

SQL> select * from t1;(standby)

         A
----------
         1
         2
         3
      9999******************

可以看到standby現在收到archive log 就應用 這是由於primary log_archive_dest_2中 service=standby1 預設是nodelay屬性

SQL> alter system set log_archive_dest_2='service=standby1 delay valid_for=(on   (primary設定了delay預設 30分鐘)
ne_logfiles,primary_role) db_unique_name=standby1';

系統已更改。
SQL> insert into t1  values(6666);(primary)

已建立 1 行。

SQL> commit;(primary)

提交完成。

SQL> alter system switch logfile;(primary)

系統已更改。


SQL> alter database recover managed standby database disconnect from session;(standby)

資料庫已更改。

SQL> select applied from v$archived_log;(standby)
YES
YES
YES
NO~~~~~沒有應用這個最新的

已選擇30行。


檢視standby alert.log
Wed Nov 04 17:06:15 2009
idle dispatcher 'D000' terminated, pid = (13, 1)~~~~DBWN程式空閒的,沒執行
SQL> alter database recover managed standby database disconnect from session nod   (standby)
elay;
alter database recover managed standby database disconnect from session nodelay
*
第 1 行出現錯誤:
ORA-01153: 啟用了不相容的介質恢復


SQL> alter database recover managed standby database cancel;~~~要先推一下恢復模式

資料庫已更改。

SQL> alter database recover managed standby database disconnect from session nod   (standby 加nodelay進入)
elay;

資料庫已更改。

SQL> select applied from v$archived_log;

YES
YES
YES
YES
YES
YES~~~~~~~~~~~~~~~~~~~~~`應用最新的archive log了

已選擇30行。
SQL> alter database recover managed standby database cancel;

資料庫已更改。
SQL> alter database open;

資料庫已更改。

SQL> select * from t1;

         A
----------
         1
         2
         3
      9999
      6666~~~~~~~~~~~~~~~~~~~~~~OK了

 

**********************************
關於standby上archived 生成儲存問題

現在standby上 改下所有路徑

SQL> show parameter log_archive_dest_1

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      location=e:\standby\archive va
                                                 lid_for=(all_logfiles,all_role
                                                 s) db_unique_name=standby1

SQL> show parameter standby_archive_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest                 string      e:\standby\archive
SQL> show parameter db_rec

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      e:\standby\archive

SQL> host mkdir e:\standby\archive2

SQL> host mkdir e:\standby\archive3

SQL> alter system set standby_archive_dest='e:\standby\archive2';

系統已更改。

 

SQL> alter system set db_recovery_file_dest='e:\standby\archive3';

系統已更改。

SQL> select * from v$standby_log;(standby 上 沒有 standby log file)

未選定行


SQL> select count(*) from v$archived_log;(standby ,現在有 33個歸檔)

  COUNT(*)
----------
        33
已選擇33行。


SQL> alter system switch logfile;(primary)

系統已更改。

SQL> select name,creator,applied from v$archived_log;(standby)

NAME                                                         CREATOR APP
------------------------------------------------------------ ------- ---
E:\STANDBY\ARCHIVE2\ARC00035_0701872237.001                  ARCH    NO

已選擇34行。

可以看到最新的這個歸檔使用的是 standby_archive_dest的位置

SQL> alter system set standby_archive_dest='';

系統已更改。
SQL> alter system switch logfile;

系統已更改。

SQL> select name,creator,applied from v$archived_log;(standby)
NAME                                                         CREATOR APP
------------------------------------------------------------ ------- ---
E:\STANDBY\ARCHIVE2\ARC00035_0701872237.001                  ARCH    NO

已選擇34行。

看下standby 的alter
Errors in file e:\standby\udump\standby1_rfs_2412.trc:
ORA-16032: parameter STANDBY_ARCHIVE_DEST destination string cannot be translated

過了幾分鐘再查詢
/

E:\STANDBY\ARCHIVE\ARC00036_0701872237.001                   ARCH    NO   收到最新的archive log了,位置在 standby 的 log_archive_dest_1  

已選擇35行。


看下standby alert.log

Using STANDBY_ARCHIVE_DEST parameter default value as e:\standby\archive
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[2]: Assigned to RFS process 780
RFS[2]: Identified database type as 'physical standby'
RFS[2]: Archived Log: 'E:\STANDBY\ARCHIVE\ARC00036_0701872237.001

從上面可以看 到 oracle自己嘗試將standby_archive_dest目錄 改為log_archive_dest_1中目錄

 

SQL> alter system set log_archive_dest_1='' scope=spfile;(standby)

系統已更改。

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              79692480 bytes
Database Buffers          201326592 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
資料庫已經開啟。

 

SQL> alter system switch logfile;(primary)

系統已更改。
             
SQL> select name,creator,applied from v$archived_log;(standby)
E:\STANDBY\ARCHIVE3\STANDBY1\ARCHIVELOG\2009_11_05\O1_MF_1_3 ARCH    NO
7_5H4JCJDP_.ARC


已選擇36行。
可以發現建立在 閃回恢復區位置了

從standby  alert.log看下oracle自己的操作過程

Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[1]: Assigned to RFS process 2680
RFS[1]: Identified database type as 'physical standby'
Thu Nov 05 11:04:02 2009
RFS LogMiner: Client disabled from further notification
Thu Nov 05 11:07:28 2009
RFS[1]: No standby redo logfiles created
RFS[1]: Archived Log: 'E:\STANDBY\ARCHIVE3\STANDBY1\ARCHIVELOG\2009_11_05\O1_MF_1_37_5H4JCJDP_.ARC'

 

簡單總結no standby redo logfile時 archive log存standby_file_dest如果沒有 則嘗試存log_file_archive_dest_n,如果沒有則嘗試存db_recover_file_dest

 

有standby redo logfile時情況

SQL> alter system set standby_archive_dest= 'e:\standby\archive2'; (standby)

系統已更改。

SQL> alter system set log_archive_dest_1='location=e:\standby\archive valid_for=   (standby)
(all_logfiles,all_roles) db_unique_name=standby1' scope=spfile;

系統已更改。


SQL> alter database add standby logfile group 4 'e:\standby\datafile\redo04.log'  (standby)
size 10m;

資料庫已更改。

SQL> col member format a30
SQL> select group#,member from v$logfile; (standby)

    GROUP# MEMBER
---------- ------------------------------
         3 E:\STANDBY\DATAFILE\REDO03.LOG
         2 E:\STANDBY\DATAFILE\REDO02.LOG
         1 E:\STANDBY\DATAFILE\REDO01.LOG
         4 E:\STANDBY\DATAFILE\REDO04.LOG

SQL> select group#,status from v$log;(standby)

    GROUP# STATUS
---------- ----------------
         1 CLEARING
         2 CLEARING_CURRENT
         3 CLEARING

 

SQL> select group#,dbid,thread#,status from v$standby_log; (standby)

    GROUP# DBID                                        THREAD# STATUS
---------- ---------------------------------------- ---------- ----------
         4 UNASSIGNED                                        0 UNASSIGNED

shutdown immediate;(standby)
startup ;(standby)

 

SQL> alter system switch logfile;(primary)

系統已更改。
SQL> select name,creator,applied from v$archived_log;(standby)
E:\STANDBY\ARCHIVE\ARC00038_0701872237.001                  ARCH    NO

已選擇37行。

 


新增standby log file後 歸檔位置為 standby 的 log_archive_dest_1,表示到了本地歸檔位置, 表示STANDBY的 RFS程式將redo(來自primary)寫入standby log file,再有standby 的arcn程式 歸檔到本地位置
,如果沒有standby logfile那麼將 RFS程式 直接寫入standby_archive_dest

從standby的alert.log可以看到上面的過程
standby 的alert.log資訊

Fri Nov 06 10:50:17 2009
RFS[1]: Allowing overwrite of partial archivelog for thread 1 sequence 42
RFS[1]: Archived Log: 'E:\STANDBY\ARCHIVE2\ARC00042_0701872237.001'~~~~~~~~沒有standby log file時候

...................................
Sun Nov 08 13:01:12 2009
RFS[1]: Successfully opened standby log 4: 'E:\STANDBY\DATAFILE\REDO04.LOG'~~~~~有standby log file時

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-619713/,如需轉載,請註明出處,否則將追究法律責任。

相關文章