ORACLE 9i 資料庫管理實務講座(一)
如何安裝Oracle 9i Enterprise Edition for Linux
原文出處 : 2001年11月Linuxer雜誌
作者: 何致億
下載 PDF 檔
前言
Oracle 9i資料庫系統可算是近幾年來Oracle公司一項殺手級的產品,其功能與應用面之廣,連研究Oracle多年的我在第一次接觸到產品規格時也不禁嚇了一跳!突然間一大堆的技術文件與白皮書排山倒海而來,一時之間還不知道該從何著手。所以我花了幾個月的時間在各種平台上進行環境測試以及新功能研究,並將手邊的資料大致整理了一下,希望在未來的專欄內容中都能陸續介紹給各位Linuxer雜誌的忠實讀者。
在這裡有一點要先跟讀者致歉:之前我曾經寫過數篇有關Oracle 8i資料庫管理的文章,因為自己工作實在太忙(這可能只是我的藉口!),加上Oracle 9i已經released。所以我決定先暫時停掉該部分的專欄,專心整理Oracle 9i的相關資料。也非常謝謝這段期間來信鼓勵以及給予建議的讀者朋友們,在能力允許的範圍內,我將會盡最大的努力為大家整理最新的Oracle技術資料。當然除了資料庫管理技術之外,未來我也會應讀者要求,加入利用Java設計Oracle 9i資料庫應用的文章,請大家繼續給予批評指導!
Oracle 試用軟體之取得方式
因為Oracle 9i在Linux平台上正式通過認證的只有SuSE Linux (7.1與7.2),所以我就利用SuSE Linux 7.1 Professional版本為平台做為示範。Oracle資料庫則是使用Oracle 9i Enterprise Edition for Linux intel release 1(9.0.1)。
大家一定覺得非常奇怪,為什麼redhat Linux沒有經過Oracle 9i認證?說實在的,這點我也不清楚!據Redhat的說法好像是來不及將最新版本交給 Oracle 作認證與測試,所以...。不過Redhat已經在日前正式提出新聞稿表示在未來新的Oracle版本一定會大力支援了(可能是被罵到受不了吧!?),請大家拭目以待囉。
相信有許多人對於Oracle 9i已經垂涎許久了。我先為各位說明如何進行安裝前的準備動作。除了Linux作業系統之外,大家最關心的應該是如何"取得"Oracle 9i軟體?關於這點我在二月份的專欄已經說明過,各位可以到Oracle Technology.NETwork(OTN)網站註冊成為OTN會員,一但您成為OTN的正式會員,就可以下載任何Oracle最新的技術文件以及軟體。但是要注意的是所有下載的軟體其授權方式為"程式開發者授權"(Developer License),雖然具備完整版的功能,但是您只能哂渺堕_發測試或是進行評估,可不能進行商業用途!
OTN網址為:http://otn.oracle.com
圖一:Oracle Technology Network
如果您尚未註冊,就趕快點選首頁右上角的【Membership】圖示註冊一個新帳號吧!成功註冊之後再回到OTN首頁,點選左邊【Software】下的【DOWNLOADs】,就可以點選您要下載的Oracle試用軟體。
圖二:Oracle軟體下載區
請您在簽署"程式開發授權同意書"(Oracle Technology Network Development License Agreement)之後請直接下載Oracle 9i Enterprise Edition for Linux。Oracle 9i安裝程式共有三個檔案,分別是Linux9i_Disk1.cpio.gz、Linux9i_Disk2.cpio.gz、Linux9i_Disk3.cpio.gz。因為這三個檔案都是壓縮檔,您可以參考下列步驟進行解壓縮:
1. 執行gunzip,例如:
> gunzip Linux9i_Disk1.cpio.gz
> gunzip Linux9i_Disk2.cpio.gz
> gunzip Linux9i_Disk3.cpio.gz
2. 解開.cpio檔:
註:如果您覺得這樣的下載方式不太方便的話,OTN網站還提供了軟體訂閱服務,不過這項服務因為系統維護的關係,大概在12月左右才會再上線,請自行注意網站上的訊息!
安裝時之系統需求
作業系統需求SuSE 7.1 (Kernel 2.4.4.) make-3.79 , binutils-2.10
cpuPII 233 MHz 以上
硬體需求記憶體建議至少512MB
Swap空間建議為實體記憶體的兩倍,至少需要512MB以上
磁碟空間資料庫系統:2 ~ 2.5 GB
預設資料庫:約1GB
資料暫存目錄:至少需400MB
註:Oracle 9i安裝程式Oracle Universal Installer在執行安裝動作時會使用/tmp作為資料暫存目錄。如果/tmp目錄之剩餘空間不足,建議您設定TMP或是TMPDIR等環境變數,指向具有足夠空間之目錄即可。但是該目錄必須開放可寫入之權限。
安裝Oracle 9i之前置處理動作
1. 在安裝Oracle 9i之前,請先下載以下兩個檔案:
下載檔名下載位址
orarun9i.rpmFTP://ftp.suse.com/pub/suse/i386/supplementary/commercial/Oracle/orarun9i.rpm
Java Development Kit(jdk)1.3.1http://java.sun.com/j2se/1.3/download-linux.html
2. 設定oracle使用者帳戶密碼(optional)
之前有安裝過Oracle 8i for Linux的讀者應該記得,安裝之前必須先在Linux作業系統下新增一個名為oracle之使用者帳戶,以及一個oracle dba所專用的群組。但是SuSE Linux 7.1版在作業系統安裝完畢時預設就有一個oracle帳戶,甚至連群組(名稱為oinstall)都已經設定好了!(只差在不知道oracle帳戶的密碼是什麼!如果有讀者知道的話也請發個Mail告訴我)所以建議您先利用root身分更改oracle使用者之密碼,以免以後需要用oracle帳戶登入時不知道密碼。更改密碼的方式如下:
> passwd oracle
3. 執行orarun9i.rpm
這個步驟大概是各位覺得比較奇怪的部分,在此也先做個說明:
因為安裝Oracle 9i時,必須先設定相關的環境變數以及Shared memory組態。說實在的,這些工作還真的相當繁瑣!所以SuSE公司就提供了這個rpm檔,執行之後會自動將大部分的組態設定完成(這點是我最欣賞SuSE的地方,希望R公司也能多多學習!) 。當然您也可以依實際需要再作必要的調整。
請您利用root身分執行以下指令:
> rpm -Uvh orarun9i.rpm
執行之後會在作業系統加入以下兩個檔案,分別是
/etc/profile.d/oracle.sh設定ORACLE_HOME、ORACLE_BASE、ORACLE_SID…等環境變數。
/etc/rc.config.d/oracle.rc.config設定Shared memory之各參數值。
這些檔案您都可以依照實際環境再予以修改,但如果您是第一次安裝的讀者建議您還是盡量使用預設的設定較好。
圖三:/etc/profile.d/oracle.sh檔案內容
圖四:/etc/rc.config.d/oracle.rc.config之檔案內容。
註1:在/etc/profile.d/oracle.sh所設定的Oracle_SID名稱為orcl,如果不想使用這個名字的話,可以在更改掉檔案的唯讀屬性之後予以修改。例如我將 ORACLE_SID更改成ora901。
註2:最重要的Shared Memory參數為SHMMAX,建議的設定值為(實體記憶體的一半)。例如我安裝用的伺服器記憶體為512MB,則SHMMAX可設為256MB,換算方式如下:
256 MB = (1MB=1048576 bytes) *256 = 268435456 bytes
4. 安裝JDK
在Sun網站上提供下載的JDK for Linux有兩種格式,一種是.bin檔,另一種是.rpm檔。安裝的方式分別如下:
j2sdk-1_3_1-linux-i386.bin的安裝方式
1) 將j2sdk-1_3_1-linux-i386.bin複製到欲安裝的目錄下,例如: /usr/local。
2) 更改檔案屬性為"可執行":
> chmod a+x j2sdk-1_3_1-linux-i386.bin
3) 執行JDK安裝程式
> ./j2sdk-1_3_1-linux-i386.bin
j2sdk-1_3_1-linux-i386-rpm.bin的安裝方式
1) 執行j2sdk-1_3_1-linux-i386-rpm.bin:
> chmod a+x j2sdk-1_3_1-linux-i386-rpm.bin
> ./j2sdk-1_3_1-linux-i386-rpm.bin
執行之後會在目前工作目錄下產生一個jdk-1.3.1.i386.rpm檔案。
2) 利用rpm指令安裝JDK程式套件:
> rpm -iv jdk-1.3.1.i386.rpm
當您完成以上幾項準備工作之後。接下來就可以正式開始安裝Oracle 9i了。
使用Oracle Universal Installer進行安裝
當您完成所有前置準備動作後,請利用oracle帳戶重新登入系統。建議您執行env指令確認所有環境變數是否設定無誤:
# env
接下來請切換至Oracle 9i第一片所在目錄以執行安裝程式,我是利用光碟片安裝,執行安裝程式的方式為:
# ./cdrom/runInstaller
(/cdrom 為光碟機mount之目錄名稱)
註:如果您也是利用光碟安裝,請不要切換至/cdrom目錄下才執行runInstaller,原因容後說明。
Oracle Universal Installer安裝程式順利啟動之後,您可以看到如下圖五之畫面:
圖五:啟動Oracle Universal Installer 2.0.1
跳過歡迎畫面後就可以開始正式的安裝囉!
Step1: 設定Oracle Inventory之位置
首先您必須指定Oracle Inventory之所在目錄。Oracle Inventory是用來記錄所有安裝過的Oracle產品清單,如果沒有特殊的需求就請依照預設的目錄/opt/oracle/oraInventory即可。
圖六:設定Oracle Inventory之所在目錄。
Step2:設定可更新Oracle軟體之作業系統群組
在這裡所設定的群組是用來更新Oracle軟體所用,如果您決定只讓root使用者具備更新Oracle軟體的權利,就不要指定任何群組名稱。因為SuSE Linux安裝完畢就自動將oracle帳戶加至oinstall群組,所以unix Group Name欄位就先顯示了oinstall,按下【Next】繼續吧!
圖七:設定可更新Oracle軟體之作業系統群組。
Step3:建立Oracle Inventory
Oracle Universal Installer已準備一個建立Oracle Inventory所用的orainstRoot.sh檔案(位置是在/tmp/orainstRoot.sh),不過這個檔案需利用root身分執行。此時您可以再開啟一個終端機視窗來執行該檔案,如圖九所示。待執行完畢再回到如圖八的視窗按下【Continue】。
圖八:執行orainstRoot.sh之提示視窗。
圖九:執行orainstRoot.sh建立Oracle Inventory目錄。
Step4:指定Oracle安裝程式來源與目的地所在目錄
Oracle Home為Oracle資料庫系統所在之主要目錄。因為在/etc/profile.d/oracle.sh內已設定ORACLE_HOME為/opt/oracle/product/9.0.1,所以下方Destination的Path欄位會出現ORACLE_HOME之設定值。這裡也不需要做變更。
圖十:指定Oracle安裝程式來源與目的地所在目錄
Step5:選擇欲安裝的Oracle 9i產品種類
這裡請勾選【Oracle 9i Database 9.0.1.0.0】,按下【Next】。
圖十一:選擇欲安裝的Oracle 9i產品種類。
Step6:選擇Oracle 9i資料庫版本
如果您是第一次安裝Oracle資料庫系統,建議您選擇【Enterprise Edition】或是【Standard Edition】。而已有安裝經驗的讀者則可以選擇【Custom】方式自行決定要安裝的套件。
圖十二:選擇Oracle 9i資料庫版本。
Step7:決定資料庫基本組態
假定您上一個步驟是選擇Enterprise Edition或是Standard Edition,則會出現Database Configuration的視窗。您可以依照Oracle資料庫的實際用途選擇最佳的組態。舉例來說,如果是為了建置資料倉儲所用的線上分析環境,則您可以選擇使用【Data Warehouse】選項。這裡我們先選擇一般用途【General Purpose】。
圖十三:決定資料庫基本組態。
Step8:設定Oracle資料庫之識別資料
Oracle資料庫從8i以後的版本都是使用Global Database Name唯一識別每一個Oracle資料庫。建議您設定資料庫的名稱為Oracle SID名稱.網域名稱。例如我將Oracle SID設定為ora901,資料庫名稱就可設為ora901.uuu.com.tw。
圖十四:設定Oracle SID與資料庫名稱。
Step9:指定資料庫所使用的字元集。
字元集(Character Set)是建立Oracle資料庫時最重要的一項設定,如果設定錯誤的話,很可能無法正常存取中文資料喔!預設的字元集為WE8ISO8859P1,您可以由下方第三個選項的下拉式選單點選可存放中文字的"Traditional Chinese.ZHT16BIG5"字元集。
圖十五:設定資料庫所使用之字元集。
Step10:設定JDK之目錄位置
最後一個設定動作是指定JDK的安裝目錄。請設定為您實際安裝JDK的目錄位置。
圖十六:設定JDK之目錄位置。
按下【Next】之後,Oracle Universal Installer會顯示等下要安裝的Oracle 9i產品摘要,確認無誤之後按下【Install】就會開始檔案複製與安裝動作了。
圖十七:要安裝的Oracle產品摘要。
依照您所使用的硬體環境不同,安裝的時間可能需要數十分鐘,甚至一、兩個鐘頭。麻煩的是中途還需更換光碟片,所以只能在旁邊看雜誌囉!
過了一會兒以後畫面上將會跳出一個視窗,提醒您放入Oracle 9i的第二片安裝程式光碟。如果您是從硬碟的解壓縮後的資料來源所安裝,則只要切換至第二片安裝程式所在目錄即可。但如果是從光碟片安裝的讀者們可能會發現此時光碟機無法退片!?這時候請參考下列步驟更換光碟片:
1. 開啟另一個終端機視窗。
2. 執行umount指令,卸載光碟機。
> unmount /cdrom
3. 更換為第二片安裝程式。
4. 重新mount光碟機。
> mount /cdrom
然後就可以繼續安裝動作了!
圖十八:安裝程式正在進行檔案複製動作。
註:也許某些讀者會發現一個問題:在執行umount指令之後卻收到"device is busy"的訊息,無法卸載光碟機以及更換光碟片!還記得在執行runInstaller時,我有提醒各位不要在/cdrom下執行嗎?如果您切換至/cdrom下才執行runInstaller,這時光碟機會被系統鎖定,無法umount。除非您可以找出是哪一個process鎖住光碟機,利用root身分將其kill掉!否則………只好重來一次囉!!
Step11:系統安裝後的組態設定
等到安裝程式將所有檔案複製到系統之後,安裝程式會再度要求您以root身分執行root.sh程式 (位於 ORACLE_HOME 所指向的目錄下,如 /opt/oracle/product/9.0.1)。
圖十九:進行系統環境設定之提示視窗。
圖二十:利用root身分執行root.sh程式。
此時您可以在另一個終端機視窗執行root.sh (注意身分需切換為root)。該程式會詢問您bin目錄之位置,如果與預設值相同的話請直接按下【Enter】鍵,否則需輸入正確的bin目錄位置。執行root.sh之後再回到圖十九的視窗內按下【OK】即可繼續後續的設定工作。
Step12:執行Oracle資料庫組態工具
系統安裝的最後一個階段會自動執行資料庫組態工具程式,其中包含兩個特殊的輔助精靈:Oracle網路設定輔助精靈(Oracle Net Configuration Assistant)與Oracle 資料庫建置輔助精靈(Oracle Database Configuration Assistant)。
圖二十一:執行Oracle資料庫組態工具。
第一個自動執行的是Oracle網路設定輔助精靈,您可以藉由本精靈組態Oracle 資料庫伺服器所監聽的Oracle Instance、網路服務名稱(Net Service Name)以及透過網路管理其他Oracle 9i資料庫之相關設定。因為我們是第一次安裝Oracle 9i,所以您可以先按下【Cancel】取消本精靈的執行,往後如果需要進行相關設定,再執行netca指令就可以啟動該程式。
圖二十二:Oracle網路設定輔助精靈歡迎畫面。
第二個步驟會在port 7777安裝Oracle web Server。完畢之後會啟動最重要的Oracle資料庫建置組態精靈(Oracle Database Configuration Assistant,簡稱 DBCA)。這個步驟是必要的,因為目前Oracle Universal Installer只在您的系統中安裝了Oracle 9i資料庫伺服器,尚未建置任何Oracle資料庫!(感覺有點像是建置了一間圖書館,可是卻裡面沒有任何書籍!這間圖書館能用嗎?) 所以必須藉由DBCA協助我們建置第一個Oracle 9i資料庫。當然了,DBCA並不是建立Oracle資料庫的唯一方法,往後我會詳細為大家介紹Oracle 9i資料庫內部咦鞯脑?恚?綍r候再介紹其他建立Oracle資料庫的方法以及相關注意事項。
利用Oracle Database Configuration Assistant建立Oracle 9i資料庫
DBCA精靈啟動之後會出現如下圖之歡迎畫面,請按下【Next】繼續。
圖二十三:Oracle Database Configuration Assistant歡迎畫面。
1. 選定DBCA所要執行的工作
Oracle資料庫建置組態精靈主要提供三項資料庫的管理工作,分別是資料庫建立與刪除,以及更改資料庫組態設定。而Oracle 9i的DBCA還加入一項新功能:資料庫範本管理功能(Manage Templates)。這裡請選擇第一項【Create Database】。
圖二十四:選定DBCA所要執行的工作。
2. 選擇建立資料庫所需之範本檔。
DBCA提供三種預設的範本檔:
(1). Data Warehouse:建置資料倉儲、線上分析系統用資料庫。
(2). Transaction Processing:建置線上交易系統用資料庫。
(3). General Purpose:建立一般功能性資料庫。
圖二十五:選擇建立資料庫需之範本檔。
建議第一次安裝之讀者選擇【General Purpose】選項。
表一、二、三、四、五則整理出【General Purpose】選項中各參數之系統預設值,,
供各位讀者參考。
表一:一般性參數之預設值
Option Name selected
Example Schemas true
Oracle Intermedia true
Oracle JVM true
Oracle Label Security false
Oracle OLAP Services true
Oracle Spatial true
Oracle Ultra Search true
表二:起始參數(Initialization parameter)之預設值
Name Value
background_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/bdump
compatible 9.0.0
control_files ("{ORACLE_BASE}/oradata/{DB_NAME}/control01.ctl", "{ORACLE_BASE}/oradata/{DB_NAME}/control02.ctl", "{ORACLE_BASE}/oradata/{DB_NAME}/control03.ctl")
core_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/cdump
db_block_size 8192
db_cache_size 67108864
db_name
dispatchers (PROTOCOL=TCP)(SER=MODOSE), (PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer), (PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)
fast_start_mttr_target 300
java_pool_size 117440512
Large_pool_size 1048576
Open_cursors 300
processes 150
remote_login_passwordfile EXCLUSIVE
resource_manager_plan SYSTEM_PLAN
shared_pool_size 117440512
sort_area_size 524288
Timed_statistics TRUE
Undo_management AUTO
Undo_tablespace UNDOTBS
user_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/udump
表三:資料庫檔案相關之參數預設值
Name Tablespace Size(M)
{ORACLE_BASE}/oradata/{DB_NAME}/cwmlite01.dbf CWMLITE 20
{ORACLE_BASE}/oradata/{DB_NAME}/drsys01.dbf DRSYS 20
{ORACLE_BASE}/oradata/{DB_NAME}/example01.dbf EXAMPLE 160
{ORACLE_BASE}/oradata/{DB_NAME}/indx01.dbf INDX 25
{ORACLE_BASE}/oradata/{DB_NAME}/system01.dbf SYSTEM 325
{ORACLE_BASE}/oradata/{DB_NAME}/tools01.dbf TOOLS 10
{ORACLE_BASE}/oradata/{DB_NAME}/undotbs01.dbf UNDOTBS 260
{ORACLE_BASE}/oradata/{DB_NAME}/users01.dbf USERS 25
{ORACLE_BASE}/oradata/{DB_NAME}/temp01.dbf TEMP 40
表四:控制檔之參數預設值
Control file
{ORACLE_BASE}/oradata/{DB_NAME}/control01.ctl
{ORACLE_BASE}/oradata/{DB_NAME}/control02.ctl
{ORACLE_BASE}/oradata/{DB_NAME}/control03.ctl
表五:重置交易紀錄檔群組之參數預設值
Group Size(K)
1 102400
2 102400
3 102400
如果您已經熟悉如何設定各資料庫參數,不想使用以上三種範本建立資料庫的話。可利用第四個選項【New database】自行設定所有Oracle資料庫參數。但如果您對於這方面不是很有經驗的話,建議您盡量不要使用該選項建立資料庫!
表六、七、八、九、十、十一則整理出【New Database】選項中各參數之系統預設值,供各位讀者作為設定時之參考:
表六:一般性參數之預設值
Option Name Selected
Example Schemas true
Oracle Intermedia true
Oracle JVM true
Oracle Label Security false
Oracle Spatial true
Oracle Ultra Search true
表七:起始參數(Initialization parameter)之預設值
Name Value
background_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/bdump
compatible 9.0.0
control_files ("{ORACLE_BASE}/oradata/{DB_NAME}/control01.ctl", "{ORACLE_BASE}/oradata/{DB_NAME}/control02.ctl", "{ORACLE_BASE}/oradata/{DB_NAME}/control03.ctl")
core_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/cdump
db_block_size 8KB
db_cache_size 50MB
dispatchers "(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"
fast_start_mttr_target 300
java_pool_size 50MB
large_pool_size 1MB
open_cursors 300
processes 150
remote_login_passwordfile EXCLUSIVE
resource_manager_plan SYSTEM_PLAN
shared_pool_size 50MB
sort_area_size 524288
timed_statistics TRUE
undo_management AUTO
undo_tablespace UNDOTBS
user_dump_dest {ORACLE_BASE}/admin/{DB_NAME}/udump
表八:控制檔之參數預設值
Control file
{ORACLE_BASE}/oradata/{DB_NAME}/control01.ctl
{ORACLE_BASE}/oradata/{DB_NAME}/control02.ctl
{ORACLE_BASE}/oradata/{DB_NAME}/control03.ctl
表九:表格空間之參數預設值
Status Name Type Extent management
ONLINE DRSYS PERMANENT LOCAL
ONLINE EXAMPLE PERMANENT LOCAL
ONLINE INDX PERMANENT LOCAL
ONLINE SYSTEM PERMANENT DICTIONARY
ONLINE TEMP TEMPORARY LOCAL
ONLINE TOOLS PERMANENT LOCAL
ONLINE UNDOTBS PERMANENT , UNDO LOCAL
ONLINE USERS PERMANENT LOCAL
表十:資料庫檔案相關之參數預設值
Status Name Tablespace Size(M)
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/drsys01.dbf DRSYS 20480
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/example01.dbf EXAMPLE 10240
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/indx01.dbf INDX 25
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/system01.dbf SYSTEM 325
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/temp01.dbf TEMP 40
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/tools01.dbf TOOLS 10
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/undotbs01.dbf UNDOTBS 200
ONLINE {ORACLE_BASE}/oradata/{DB_NAME}/users01.dbf USERS 25
3. 輸入新資料庫之識別資料
也許大家會覺得很奇怪,為什麼還要指定一次資料庫的識別資料,在安裝時Step8不是設定過一次了嗎?因為一台Oracle資料庫伺服器允許您建置多個Oracle資料庫,所以您每次執行DBCA指令啟動Oracle資料庫建置組態精靈時,精靈都會詢問您新資料庫的識別資料。這裡請您確認輸入的資料與Step8所輸入的資料
一致即可。
圖二十六:確認新資料庫之識別資料。
4. 決定資料庫之咦
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-1007902/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10748419/viewspace-1007902/