將Oracle 10g RAC庫用rman 的方式備份並恢復到異機單機

lpwebnet發表於2013-11-21
RAC庫用rman 的方式備份並恢復到異機單機,其實原理和方法都是大同小異的。
      主RAC庫:2個節點 rac1(192.168.1.127),rac2(192.168.1.128) 採用ASM+RAW
備機 standby(192.168.1.240)  檔案系統
 一在rac庫備份:
rac1-> crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....SM1.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....SM2.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.racdb.db   application    ONLINE    ONLINE    rac1       
ora....b1.inst application    ONLINE    ONLINE    rac1       
ora....b2.inst application    ONLINE    ONLINE    rac2       
rac1->
rac1-> export ORACLE_SID=racdb1
rac1-> rman target / nocatalog
    
RMAN> run{
2>  allocate CHANNEL ch00  type DISK  CONNECT 'sys/oracle@racdb1'; 
3>  allocate CHANNEL ch01  type DISK  CONNECT 'sys/oracle@racdb2'; 
4>  backup database    format '/rmanset/racdb_full_%d%t%s%p'         tag 'fullbackup';
5>  BACKUP FORMAT '/rmanset/%d_arch_%s_%p_%h' ARCHIVELOG ALL;                                         
6>  backup format '/rmanset/cf_%d_%s_%p'
7>          (current controlfile);
8>     RELEASE CHANNEL ch00;                                                         
9>     RELEASE CHANNEL ch01;                                                        
10>   }

allocated channel: ch00
channel ch00: sid=148 instance=racdb1 devtype=DISK

allocated channel: ch01
channel ch01: sid=148 instance=racdb2 devtype=DISK

Starting backup at 02-NOV-08
channel ch00: starting full datafile backupset
channel ch00: specifying datafile(s) in backupset
input datafile fno=00001 name=+RACDATA/racdb/datafile/system.259.669487425
input datafile fno=00005 name=+RACDATA/racdb/datafile/users.264.669487561
input datafile fno=00004 name=+RACDATA/racdb/datafile/undotbs2.263.669487539
channel ch00: starting piece 1 at 02-NOV-08
channel ch01: starting full datafile backupset
channel ch01: specifying datafile(s) in backupset
input datafile fno=00003 name=+RACDATA/racdb/datafile/sysaux.261.669487497
input datafile fno=00002 name=+RACDATA/racdb/datafile/undotbs1.260.669487479
channel ch01: starting piece 1 at 02-NOV-08
channel ch00: finished piece 1 at 02-NOV-08
piece handle=/rmanset/racdb_full_RACDB669769770931 tag=FULLBACKUP comment=NONE
channel ch00: backup set complete, elapsed time: 00:02:19
channel ch00: starting full datafile backupset
channel ch00: specifying datafile(s) in backupset
including current control file in backupset
channel ch00: starting piece 1 at 02-NOV-08
channel ch01: finished piece 1 at 02-NOV-08
piece handle=/rmanset/racdb_full_RACDB669769784941 tag=FULLBACKUP comment=NONE
channel ch01: backup set complete, elapsed time: 00:02:28
channel ch01: starting full datafile backupset
channel ch01: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ch01: starting piece 1 at 02-NOV-08
channel ch00: finished piece 1 at 02-NOV-08
piece handle=/rmanset/racdb_full_RACDB669769914951 tag=FULLBACKUP comment=NONE
channel ch00: backup set complete, elapsed time: 00:00:11
channel ch01: finished piece 1 at 02-NOV-08
piece handle=/rmanset/racdb_full_RACDB669769933961 tag=FULLBACKUP comment=NONE
channel ch01: backup set complete, elapsed time: 00:00:05
Finished backup at 02-NOV-08

Starting backup at 02-NOV-08
current log archived
channel ch00: starting archive log backupset
channel ch00: specifying archive log(s) in backup set
input archive log thread=1 sequence=42 recid=141 stamp=669603048
input archive log thread=1 sequence=44 recid=149 stamp=669640424
input archive log thread=1 sequence=45 recid=151 stamp=669675778
input archive log thread=1 sequence=46 recid=152 stamp=669679426
input archive log thread=1 sequence=47 recid=156 stamp=669690456
channel ch00: starting piece 1 at 02-NOV-08
channel ch01: starting archive log backupset
channel ch01: specifying archive log(s) in backup set
input archive log thread=1 sequence=53 recid=170 stamp=669767346
input archive log thread=1 sequence=54 recid=172 stamp=669769357
input archive log thread=2 sequence=44 recid=165 stamp=669764276
input archive log thread=2 sequence=45 recid=167 stamp=669765472
input archive log thread=2 sequence=46 recid=168 stamp=669765474
input archive log thread=2 sequence=47 recid=169 stamp=669767345
input archive log thread=2 sequence=48 recid=171 stamp=669769352
input archive log thread=2 sequence=49 recid=175 stamp=669769944
channel ch01: starting piece 1 at 02-NOV-08
channel ch01: finished piece 1 at 02-NOV-08
piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211 comment=NONE
channel ch01: backup set complete, elapsed time: 00:00:04
channel ch00: finished piece 1 at 02-NOV-08
piece handle=/rmanset/RACDB_arch_97_1_1 tag=TAG20081102T231211 comment=NONE
channel ch00: backup set complete, elapsed time: 00:00:11
channel ch00: starting archive log backupset
channel ch00: specifying archive log(s) in backup set
input archive log thread=1 sequence=48 recid=158 stamp=669690550
input archive log thread=1 sequence=49 recid=160 stamp=669691146
input archive log thread=1 sequence=50 recid=162 stamp=669755973
input archive log thread=1 sequence=51 recid=163 stamp=669757116
input archive log thread=1 sequence=52 recid=166 stamp=669764278
input archive log thread=1 sequence=55 recid=173 stamp=669769375
input archive log thread=1 sequence=56 recid=174 stamp=669769928
channel ch00: starting piece 1 at 02-NOV-08
channel ch00: finished piece 1 at 02-NOV-08
piece handle=/rmanset/RACDB_arch_99_1_1 tag=TAG20081102T231211 comment=NONE
channel ch00: backup set complete, elapsed time: 00:00:08
Finished backup at 02-NOV-08

Starting backup at 02-NOV-08
channel ch00: starting full datafile backupset
channel ch00: specifying datafile(s) in backupset
including current control file in backupset
channel ch00: starting piece 1 at 02-NOV-08
channel ch00: finished piece 1 at 02-NOV-08
piece handle=/rmanset/cf_RACDB_100_1 tag=TAG20081102T231235 comment=NONE
channel ch00: backup set complete, elapsed time: 00:00:07
Finished backup at 02-NOV-08

released channel: ch00

released channel: ch01

2. 在rac庫上建立pfile

SQL> create pfile='/rmanset/initracdb.ora' from spfile;


將rac1,rac2上的備份出來的rman檔案和pfile上傳到standby 主機   
 

二:  standby  主機做恢復的過程:
0.修改上傳好的pfile檔案,主要是rac中一些引數去掉:

#*.cluster_database_instances=2
*.cluster_database=false
#racdb2.instance_number=2
#racdb1.instance_number=1
#racdb2.thread=2
#racdb1.thread=1
#racdb2.undo_tablespace='UNDOTBS2'

#*.db_file_name_convert='+RACDATA/racdb/datafile/','/oradata/racdb/'
#*.fal_client='RACDB'
#*.fal_server='STANDBY'
#*.log_archive_config='DG_CONFIG=(racdb,standby)'
#racdb2.log_archive_dest_1='LOCATION=/racdb2_arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=racdb'
#*.log_archive_dest_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
#*.log_archive_dest_state_2='ENABLE'
#*.log_file_name_convert='+RACDATA/racdb/onlinelog/','/oradata/racdb/'
#*.remote_listener='LISTENERS_RACDB'
#*.standby_file_management='AUTO'

1.資料庫啟動到nomount
    
2.restore controlfile

3.restore archivelog

4.recover database

5.改變logfile 的位置,重新建redo

6.drop 一個undo tablespace.

7.add a temp tablespace

8. 配tnsnames.ora 和listener.ora  (這裡主要修改下單機的狀態)。


下為操作的過程:
    
    
standby-> rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sun Nov 2 14:22:39 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: racdb (not mounted)
--恢復controlfile
RMAN> restore controlfile from '/rmanset/cf_RACDB_100_1';

Starting restore at 02-NOV-08
using channel ORA_DISK_1

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:05
output filename=/oradata/racdb/control01.ctl
Finished restore at 02-NOV-08


---restore datafile and archive log

RMAN> sql 'alter database mount';

sql statement: alter database mount
released channel: ORA_DISK_1

RMAN> run{
2> set until sequence 57 thread 1;
3> set newname for datafile 1 to '/oradata/racdb/system01.dbf';
4> set newname for datafile 2 to '/oradata/racdb/undotbs01.dbf';
5> set newname for datafile 3 to '/oradata/racdb/sysaux01.dbf';
6> set newname for datafile 4 to '/oradata/racdb/users01.dbf'; 
7> set newname for datafile 5 to '/oradata/racdb/undotbs02.dbf';
8> restore database;
9> switch datafile all;
10> }

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 02-NOV-08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oradata/racdb/system01.dbf
restoring datafile 00004 to /oradata/racdb/users01.dbf
restoring datafile 00005 to /oradata/racdb/undotbs02.dbf
channel ORA_DISK_1: reading from backup piece /rmanset/racdb_full_RACDB669769770931
channel ORA_DISK_1: restored backup piece 1
piece handle=/rmanset/racdb_full_RACDB669769770931 tag=FULLBACKUP
channel ORA_DISK_1: restore complete, elapsed time: 00:00:36
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /oradata/racdb/undotbs01.dbf
restoring datafile 00003 to /oradata/racdb/sysaux01.dbf
channel ORA_DISK_1: reading from backup piece /rmanset/racdb_full_RACDB669769784941
channel ORA_DISK_1: restored backup piece 1
piece handle=/rmanset/racdb_full_RACDB669769784941 tag=FULLBACKUP
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
Finished restore at 02-NOV-08

datafile 1 switched to datafile copy
input datafile copy recid=10 stamp=669738296 filename=/oradata/racdb/system01.dbf
datafile 2 switched to datafile copy
input datafile copy recid=11 stamp=669738296 filename=/oradata/racdb/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=12 stamp=669738296 filename=/oradata/racdb/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=13 stamp=669738297 filename=/oradata/racdb/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=14 stamp=669738297 filename=/oradata/racdb/undotbs02.dbf

RMAN>

--列出備份的archivelog:
RMAN> list backup of archivelog all;

using target database control file instead of recovery catalog

List of Backup Sets
===================

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
89      2.44M      DISK        00:00:03     02-NOV-08     
        BP Key: 89   Status: AVAILABLE  Compressed: NO  Tag: TAG20081102T231211
        Piece Name: /rmanset/RACDB_arch_98_1_2

  List of Archived Logs in backup set 89
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    53      356353     02-NOV-08 396535     02-NOV-08
  1    54      396535     02-NOV-08 398232     02-NOV-08
  2    44      350717     02-NOV-08 356350     02-NOV-08
  2    45      356350     02-NOV-08 376487     02-NOV-08
  2    46      376487     02-NOV-08 396536     02-NOV-08
  2    47      396536     02-NOV-08 397820     02-NOV-08
  2    48      397820     02-NOV-08 398228     02-NOV-08
  2    49      398228     02-NOV-08 398963     02-NOV-08

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
90      17.42M     DISK        00:00:07     02-NOV-08     
        BP Key: 90   Status: AVAILABLE  Compressed: NO  Tag: TAG20081102T231211
        Piece Name: /rmanset/RACDB_arch_97_1_1

  List of Archived Logs in backup set 90
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    42      285767     01-NOV-08 285925     01-NOV-08
  1    44      286441     01-NOV-08 286516     01-NOV-08
  1    45      286516     01-NOV-08 308174     01-NOV-08
  1    46      308174     01-NOV-08 312441     01-NOV-08
  1    47      312441     01-NOV-08 324657     02-NOV-08

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
91      9.69M      DISK        00:00:04     02-NOV-08     
        BP Key: 91   Status: AVAILABLE  Compressed: NO  Tag: TAG20081102T231211
        Piece Name: /rmanset/RACDB_arch_99_1_1

  List of Archived Logs in backup set 91
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    48      324657     02-NOV-08 324727     02-NOV-08
  1    49      324727     02-NOV-08 325613     02-NOV-08
  1    50      325613     02-NOV-08 349040     02-NOV-08
  1    51      349040     02-NOV-08 350714     02-NOV-08
  1    52      350714     02-NOV-08 356353     02-NOV-08
  1    55      398232     02-NOV-08 398433     02-NOV-08
  1    56      398433     02-NOV-08 398960     02-NOV-08
 
 
--restore archivelog and recover database. 

RMAN>

RMAN> run{
2> set archivelog destination to '/racdb_arch';
3> restore archivelog from sequence 49 thread 2;
}4>

executing command: SET ARCHIVELOG DESTINATION

Starting restore at 02-NOV-08
using channel ORA_DISK_1

channel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/racdb_arch
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=49
channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_98_1_2
channel ORA_DISK_1: restored backup piece 1
piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 02-NOV-08

RMAN>

RMAN>

RMAN> run{
2> set archivelog destination to '/racdb_arch';
3> restore archivelog from sequence 44 thread 2;
4> }

executing command: SET ARCHIVELOG DESTINATION

Starting restore at 02-NOV-08
using channel ORA_DISK_1

archive log thread 2 sequence 49 is already on disk as file /racdb_arch/2_49_669487401.dbf
channel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/racdb_arch
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=44
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=45
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=46
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=47
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=48
channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_98_1_2
channel ORA_DISK_1: restored backup piece 1
piece handle=/rmanset/RACDB_arch_98_1_2 tag=TAG20081102T231211
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 02-NOV-08

RMAN> run{
2> set until sequence 57 thread 1;
3> recover database;
4> }

executing command: SET until clause

Starting recover at 02-NOV-08
using channel ORA_DISK_1

starting media recovery

archive log thread 2 sequence 49 is already on disk as file /racdb_arch/2_49_669487401.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=56
channel ORA_DISK_1: reading from backup piece /rmanset/RACDB_arch_99_1_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/rmanset/RACDB_arch_99_1_1 tag=TAG20081102T231211
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archive log filename=/racdb_arch/1_56_669487401.dbf thread=1 sequence=56
archive log filename=/racdb_arch/2_49_669487401.dbf thread=2 sequence=49
media recovery complete, elapsed time: 00:00:01
Finished recover at 02-NOV-08


--對redo 作修改:

                                                                                                            
 alter database rename file '+RACDATA/racdb/onlinelog/group_1.257.669487411' to '/oradata/racdb/redo1';     
 alter database rename file '+RACDATA/racdb/onlinelog/group_2.258.669487419' to '/oradata/racdb/redo2';     
 alter database rename file '+RACDATA/racdb/onlinelog/group_3.265.669489319' to '/oradata/racdb/redo3';     
 alter database rename file '+RACDATA/racdb/onlinelog/group_4.266.669489327' to '/oradata/racdb/redo4';     


SQL>  select member from v$logfile;                                                                       
                                                                                                          
MEMBER                                                                                                   
--------------------------------------------------------------------------------                         
+RACDATA/racdb/onlinelog/group_1.257.669487411                                                                                                         
+RACDATA/racdb/onlinelog/group_2.258.669487419                                                                                                         
+RACDATA/racdb/onlinelog/group_3.265.669489319                                                                                                         
+RACDATA/racdb/onlinelog/group_4.266.669489327                                                           
                                                                                                          
SQL> alter database rename file '+RACDATA/racdb/onlinelog/group_1.257.669487411' to '/oradata/racdb/redo1';
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL> alter database rename file '+RACDATA/racdb/onlinelog/group_2.258.669487419' to '/oradata/racdb/redo2';
alter database rename file '+RACDATA/racdb/onlinelog/group_3.265.669489319' to '/oradata/racdb/redo3';    
alter database rename file '+RACDATA/racdb/onlinelog/group_4.266.669489327' to '/oradata/racdb/redo4';    
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL>                                                                                                      
Database altered.                                                                                         
                                                                                                          
SQL>                                                                                                      
Database altered.                                                                                         
                                                                                                          
SQL> alter database open resetlogs;                                                                       
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL>                                                                                                      
SQL>                                                                                                      
SQL>                                                                                                      
SQL>  select THREAD#, STATUS, ENABLED from v$thread;                                                      
                                                                                                          
   THREAD# STATUS ENABLED                                                                                 
---------- ------ --------                                                                                
         1 OPEN   PUBLIC                                                                                  
         2 CLOSED PUBLIC                                                                                  
                                                                                                          
                                                                                                    
SQL>                                                                                                      
SQL> select group# from v$log where THREAD#=2;                                                            
                                                                                                          
    GROUP#                                                                                                
----------                                                                                                
         3                                                                                                
         4                                                                                                
                                                                                                          
SQL> alter database disable thread 2;                                                                     
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL> alter database drop logfile group 4;                                                                 
alter database drop logfile group 4                                                                       
*                                                                                                         
ERROR at line 1:                                                                                          
ORA-00350: log 4 of instance racdb2 (thread 2) needs to be archived                                       
ORA-00312: online log 4 thread 2: '/oradata/racdb/redo4'                                                  
                                                                                                          
                                                                                                          
SQL> alter database clear unarchived logfile group 3;                                                     
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL> alter database drop logfile group 3;                                                                 
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL> alter database drop logfile group 4;                                                                 
alter database drop logfile group 4                                                                       
*                                                                                                         
ERROR at line 1:                                                                                          
ORA-00350: log 4 of instance racdb2 (thread 2) needs to be archived                                       
ORA-00312: online log 4 thread 2: '/oradata/racdb/redo4'                                                  
                                                                                                          
                                                                                                          
SQL> alter database clear unarchived logfile group 4;                                                     
                                                                                                          
Database altered.                                                                                         
                                                                                                          
SQL>  alter database drop logfile group 4;                                                                
                                                                                                          
Database altered.                                                                                         
                                                                                                          
                                                                                                      
SQL> select group#,member from v$logfile;                                                                 
                                                                                                          
    GROUP#                                                                                                
----------                                                                                                
MEMBER                                                                                                    
--------------------------------------------------------------------------------                          
         1                                                                                                
/oradata/racdb/redo1                                                                                      
                                                                                                          
         2                                                                                                
/oradata/racdb/redo2                         

SQL> select THREAD#, STATUS, ENABLED from v$thread;                                                            
                                                  
   THREAD# STATUS ENABLED                         
---------- ------ --------                        
         1 OPEN   PUBLIC         
        
        
對undo 的處理:        

SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME
------------------------------
UNDOTBS1
UNDOTBS2

SQL> drop tablespace UNDOTBS2 including contents and datafiles;

Tablespace dropped.

SQL>  select tablespace_name from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME
------------------------------
UNDOTBS1

SQL>                 



對temp的處理:

 create temporary tablespace TEMP1  tempfile '/oradata/racdb/temp01.dbf'  size 50M autoextend off;
 
SQL>  select name from v$tempfile;

NAME
---------------------------------------------------------------------------------------------------------------------------------------------
/oradata/racdb/RACDB/datafile/o1_mf_temp_4jtl9yfl_.tmp

SQL>
SQL>
SQL> select tablespace_name from dba_tablespaces where contents='TEMPORARY';

TABLESPACE_NAME
------------------------------
TEMP

SQL>  create temporary tablespace TEMP1
  2    tempfile '/oradata/racdb/temp01.dbf'
  3    size 50M autoextend off;

Tablespace created.

SQL> alter database default temporary tablespace TEMP1;

Database altered.

SQL>  drop tablespace TEMP including contents and datafiles;

Tablespace dropped.

SQL>


再配上tnsnames.ora 及  listener.ora,到此就完成的RAC庫到異地單機的恢復,這樣大大的提高了工作效率。

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

相關文章