官术网_书友最值得收藏!

5.1 使用客戶(hù)工具

可以使用許多工具連接到Oracle 數(shù)據(jù)庫(kù)。其中兩個(gè)最基本的工具是SQL*Plus 和SQL Developer,它們由Oracle公司提供,足以完成開(kāi)發(fā)人員或數(shù)據(jù)庫(kù)管理員需要完成的許多工作。選擇哪個(gè)工具取決于個(gè)人喜好,部分與環(huán)境相關(guān),部分與功能相關(guān)。毫無(wú)疑問(wèn),SQL Developer提供的功能比SQL*Plus多得多,但其要求也較高,因?yàn)樗枰獔D形化終端,而SQL*Plus可以用于字符模式設(shè)備。

存在時(shí)間最長(zhǎng)的工具是SQL*Plus,即使Oracle公司大力推薦SQL Developer作為替代品,仍建議在Oracle環(huán)境中工作的技術(shù)人員熟悉SQL*Plus。

5.1.1 SQL*Plus

SQL*Plus是一個(gè)客戶(hù)端-服務(wù)器工具,用于連接數(shù)據(jù)庫(kù),發(fā)出即席SQL命令。它還可以用于創(chuàng)建PL/SQL代碼,對(duì)結(jié)果進(jìn)行格式化。它可以用于遷移數(shù)據(jù)庫(kù)的所有目標(biāo)平臺(tái)。下一節(jié)將介紹在Linux和Windows上使用SQL*Plus的細(xì)節(jié)。SQL*Plus在其他平臺(tái)上的用法沒(méi)有顯著區(qū)別。

根據(jù)體系結(jié)構(gòu),SQL*Plus 是一個(gè)用C語(yǔ)言編寫(xiě)的用戶(hù)進(jìn)程,它在一個(gè)實(shí)例上建立一個(gè)會(huì)話(huà),通過(guò)Oracle Net協(xié)議建立一個(gè)數(shù)據(jù)庫(kù)。客戶(hù)端和服務(wù)器的平臺(tái)可以不同。例如,只要Oracle Net配置為建立連接,就可以在Windows PC上使用SQL*Plus,連接運(yùn)行在Unix服務(wù)器上的數(shù)據(jù)庫(kù)(反之亦然)。

1.Linux上的SQL*Plus

Linux安裝上的SQL*Plus可執(zhí)行文件是sqlplus。該文件的位置與安裝相關(guān),但一般如下所示:

        /u01/app/oracle/product/12.1.0/db_1/bin/sqlplus

Linux賬戶(hù)應(yīng)進(jìn)行相應(yīng)的設(shè)置,來(lái)運(yùn)行SQL*Plus,但需要設(shè)置一些環(huán)境變量,如下所示:

        ORACLE_HOME
        PATH
        LD_LIBRARY_PATH

ORACLE_HOME變量指向Oracle Home。Oracle Home是Oracle軟件安裝,換言之,包含可執(zhí)行代碼的一組文件和目錄,以及一些配置文件。PATH必須包含Oracle Home中的bin目錄,LD_LIBRARY_PATH應(yīng)包含lib目錄,它也包含在Oracle Home中,但實(shí)際上可以不設(shè)置它。圖5-1顯示了一個(gè)Linux終端窗口和一些測(cè)試,看看環(huán)境是否正確。

圖5-1 檢查L(zhǎng)inux會(huì)話(huà)的啟動(dòng)

在圖5-1中,首先echo命令檢查3個(gè)變量是否已正確設(shè)置。其中有一個(gè)ORACLE_HOME,其中的bin和lib目錄分別設(shè)置為PATH的最后一個(gè)元素和LD_LIBRARY_PATH變量的第一個(gè)元素。接著,which命令確認(rèn)SQL*Plus可執(zhí)行文件在PATH中是可用的。最后,在命令行上,把用戶(hù)名、密碼和連接標(biāo)識(shí)符傳遞給SQL*Plus,以啟動(dòng)它。如果測(cè)試沒(méi)有返回可接受的結(jié)果,SQL*Plus啟動(dòng)失敗,就應(yīng)告知系統(tǒng)管理員和數(shù)據(jù)庫(kù)管理員。登錄本身的一些常見(jiàn)錯(cuò)誤可參閱本章后面的“創(chuàng)建并測(cè)試數(shù)據(jù)庫(kù)連接”一節(jié)。

登錄字符串的格式是數(shù)據(jù)庫(kù)用戶(hù)名,后跟一條斜杠(作為分隔符)、一個(gè)密碼、一個(gè)@符號(hào)(作為界定符),最后是Oracle Net連接標(biāo)識(shí)符。在這個(gè)例子中,用戶(hù)名是system,其密碼是admin123,數(shù)據(jù)庫(kù)用coda標(biāo)識(shí)。

登錄后,下一行文本顯示所使用的SQL*Plus 的版本:12.1.0.0.2;建立連接的數(shù)據(jù)庫(kù)的版本(它碰巧與SQL*Plus工具的版本相同),以及數(shù)據(jù)庫(kù)中已安裝的選項(xiàng)。最后一行是給用戶(hù)的提示SQL>,用戶(hù)可以在這里輸入任何SQL*Plus或SQL命令。如果使用所分配的用戶(hù)名(可能不是system)登錄沒(méi)有成功,就應(yīng)告知數(shù)據(jù)庫(kù)管理員。

2.Windows上的SQL*Plus

歷史上,Microsoft Windows總是有兩個(gè)版本的SQL*Plus:字符版和圖形版。字符版仍舊是可執(zhí)行文件sqlplus.exe,圖形版是sqlplusw.exe。對(duì)于當(dāng)前版本和11g,圖形版不再存在,但許多開(kāi)發(fā)人員仍喜歡使用它,早期版本附帶的版本非常適合處理12c數(shù)據(jù)庫(kù)。使用混合版本也沒(méi)有問(wèn)題:12c SQL*Plus客戶(hù)程序可以連接10g 數(shù)據(jù)庫(kù),10g SQL*Plus客戶(hù)程序可以連接12c數(shù)據(jù)庫(kù)。在Windows上執(zhí)行Oracle數(shù)據(jù)庫(kù)或Oracle客戶(hù)端的默認(rèn)安裝,SQL*Plus就可以顯示為Windows“開(kāi)始”菜單中的一個(gè)快捷方式。快捷方式啟動(dòng)的可執(zhí)行文件的位置一般如下所示:

        D:\app\oracle\product\12.1.0\dbhome_1\BIN\sqlplus.exe

但是,實(shí)際的路徑與安裝相關(guān)。圖5-2顯示了用快捷方式啟動(dòng)SQL*Plus登錄數(shù)據(jù)庫(kù)的過(guò)程。第一行文本顯示了SQL*Plus的版本12.1.0.0.2,以及程序啟動(dòng)的時(shí)間。第三行文本是一個(gè)登錄提示。

圖5-2 Windows上使用SQL*Plus的數(shù)據(jù)庫(kù)登錄

        Enter user-name:

之后是手工輸入的登錄字符串,如下所示:

        system/admin123@coda

對(duì)于啟動(dòng)SQL*Plus 的快捷方式,許多人都喜歡修改它,以禁止它立即顯示登錄提示。為此,在命令的末尾添加nolog選項(xiàng):

        sqlplus /nolog

最好從操作系統(tǒng)的提示符下啟動(dòng)SQL*Plus,而不是使用“開(kāi)始”菜單中的快捷選項(xiàng),只需要打開(kāi)一個(gè)命令窗口,運(yùn)行它即可。該程序會(huì)立即提示登錄,除非用上述的nolog選項(xiàng)調(diào)用它。

3.創(chuàng)建并測(cè)試數(shù)據(jù)庫(kù)連接

SQL*Plus沒(méi)有任何方式來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)連接信息。每次用戶(hù)希望連接數(shù)據(jù)庫(kù)時(shí),都必須告訴SQL*Plus 自己的身份和數(shù)據(jù)庫(kù)的位置。根據(jù)與站點(diǎn)相關(guān)的安全特性,會(huì)有所區(qū)別,但向數(shù)據(jù)庫(kù)標(biāo)識(shí)自己的最常見(jiàn)方式是提供用戶(hù)名和區(qū)分大小寫(xiě)的密碼。標(biāo)識(shí)數(shù)據(jù)庫(kù)有兩種常用的連接標(biāo)識(shí)符形式:一種是提供一個(gè)別名,別名會(huì)解析為完整的連接信息;另一種是輸入完整信息。

在操作系統(tǒng)的提示行上,這些命令會(huì)啟動(dòng)SQL*Plus,作為數(shù)據(jù)庫(kù)用戶(hù)SCOTT進(jìn)行連接,密碼是tiger,使用如下技術(shù):

        sqlplus scott/tiger@orcl

       sqlplus scott/tiger@ocp12c.oracle.com:1521/orcl.oracle.com

第一個(gè)示例使用別名orcl來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù)。它必須解析為完整的連接信息。這個(gè)名稱(chēng)解析的常見(jiàn)技術(shù)是使用本地存儲(chǔ)的文本文件tnsnames.ora(一般包含在ORACLE_HOME的network/admin子目錄中),或者聯(lián)系LDAP目錄,例如Microsoft的Active Directory或Oracle的Oracle Internet Directory(OID)。

第二個(gè)示例在線提供了所有連接信息。所需的連接信息是運(yùn)行數(shù)據(jù)庫(kù)實(shí)例的計(jì)算機(jī)的主機(jī)名、可以聯(lián)系上Oracle Net數(shù)據(jù)庫(kù)偵聽(tīng)器的TCP端口,以及用戶(hù)希望數(shù)據(jù)庫(kù)偵聽(tīng)器連接他的數(shù)據(jù)庫(kù)服務(wù)。第一個(gè)技術(shù)要求用戶(hù)僅輸入別名,它要求數(shù)據(jù)庫(kù)管理員配置一個(gè)名稱(chēng)解析機(jī)制,第二個(gè)技術(shù)只在用戶(hù)知道連接信息的情況下有效。

許多情況下,SQL*Plus連接嘗試會(huì)失敗。圖5-3演示了一些常見(jiàn)的問(wèn)題。

圖5-3 一些常見(jiàn)的登錄問(wèn)題

首先,用戶(hù)在Windows操作系統(tǒng)的提示行上啟動(dòng)SQL*Plus,使用NOLOG選項(xiàng)禁止立即顯示登錄提示。目前沒(méi)有問(wèn)題。

其次,在SQL>提示行上,用戶(hù)發(fā)出一個(gè)連接請(qǐng)求,它因一個(gè)著名的錯(cuò)誤而失敗:

        ORA-12154: TNS: could not resolve the connect identifier specified

出錯(cuò)是因?yàn)榻o定的連接標(biāo)識(shí)符wrongalias不能由Oracle Net的TNS層解析為數(shù)據(jù)庫(kù)連接信息。所使用的名稱(chēng)解析方法及其配置對(duì)數(shù)據(jù)庫(kù)管理員而言非常重要。在這里,錯(cuò)誤很明顯:用戶(hù)輸入了錯(cuò)誤的連接標(biāo)識(shí)符。

第二次連接嘗試提供正確的標(biāo)識(shí)符orcl,但還是失敗了,如下所示:

        ORA-12541: TNS:no listener

這表示,連接標(biāo)識(shí)符正確解析為數(shù)據(jù)庫(kù)偵聽(tīng)器的地址,但該偵聽(tīng)器實(shí)際上沒(méi)有運(yùn)行。注意另一個(gè)可能性是地址解析出錯(cuò),把SQL*Plus 發(fā)送給錯(cuò)誤的地址。對(duì)于這個(gè)錯(cuò)誤,用戶(hù)應(yīng)聯(lián)系數(shù)據(jù)庫(kù)管理員,要求他啟動(dòng)偵聽(tīng)器。然后再次嘗試。

第三個(gè)連接請(qǐng)求也失敗了,如下所示:

        ORA-12514: TNS:listener does not currently know of service requested in connect
    descriptor

這個(gè)錯(cuò)誤是數(shù)據(jù)庫(kù)偵聽(tīng)器生成的。SQL*Plus找到了偵聽(tīng)器,但偵聽(tīng)器不能建立與數(shù)據(jù)庫(kù)服務(wù)的連接。最可能的原因是數(shù)據(jù)庫(kù)實(shí)例沒(méi)有啟動(dòng),所以用戶(hù)應(yīng)要求數(shù)據(jù)庫(kù)管理員啟動(dòng)它,然后再次嘗試。

第四個(gè)連接請(qǐng)求也失敗了,如下所示:

        ORA-01017: invalid username/password; logon denied

要接收這個(gè)消息,用戶(hù)必須聯(lián)系上數(shù)據(jù)庫(kù)。用戶(hù)解決了所有可能的網(wǎng)絡(luò)問(wèn)題,數(shù)據(jù)庫(kù)實(shí)例在運(yùn)行,數(shù)據(jù)庫(kù)也由實(shí)例打開(kāi)了。用戶(hù)只是把密碼或用戶(hù)名輸錯(cuò)了。注意消息沒(méi)有指出,是密碼錯(cuò)了,還是用戶(hù)名錯(cuò)了,如果它這么做,就會(huì)把消息泄漏給其他人。

最后,第五個(gè)連接嘗試成功了。

提示:

前面的示例演示了一個(gè)常用的問(wèn)題解決技巧。如果出現(xiàn)失敗,應(yīng)一步步地解決問(wèn)題,閱讀每個(gè)錯(cuò)誤消息。

5.1.2 SQL Developer

SQL Developer工具可以連接Oracle數(shù)據(jù)庫(kù)(實(shí)際上還可以連接一些非Oracle數(shù)據(jù)庫(kù)),發(fā)出即席SQL命令。它還可以管理PL/SQL對(duì)象。與SQL *Plus不同,這是一個(gè)帶有向?qū)У膱D形工具,以完成常見(jiàn)的動(dòng)作。SQL Developer用Java編寫(xiě),需要運(yùn)行JRE。

由于SQL Developer用Java語(yǔ)言編寫(xiě),因此它可以在支持JRE對(duì)應(yīng)版本的所有平臺(tái)上使用。平臺(tái)之間沒(méi)有顯著的區(qū)別。

1.安裝并啟動(dòng)SQL Developer

SQL Developer不用OUI安裝,OUI用于安裝其他所有的Oracle產(chǎn)品。它不存儲(chǔ)在Oracle Home中,而是一個(gè)完全自包含的產(chǎn)品。最新版本可以從Oracle公司的網(wǎng)站上下載。

提示:

12c數(shù)據(jù)庫(kù)的安裝包含SQL Developer的副本,但它不是最新版本。即使正好有該數(shù)據(jù)庫(kù)的安裝,通常也需要安裝SQL Developer的最新版本。

要安裝SQL Developer,應(yīng)解壓縮ZIP文件。這就足夠了。該產(chǎn)品需要JDK, Java Runtime Environment可用,它來(lái)自O(shè)racle。但如果在要使用的機(jī)器上沒(méi)有合適的JDK, SQL Developer for Windows的可下載版本包含它。對(duì)于非Windows的平臺(tái),JDK必須預(yù)先安裝。從Oracle的網(wǎng)站上下載它,根據(jù)與平臺(tái)相關(guān)的指令安裝。為了檢查正確版本的JDK是否可用,可以在操作系統(tǒng)的提示行上,運(yùn)行如下命令:

        java -version

它應(yīng)返回如下信息:

        java version "1.7.0_71"
        Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
        Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

如果沒(méi)有返回這些信息,使用which java命令可能有助于找出問(wèn)題;搜索路徑可以定位不正確的版本。

解壓縮SQL Developer后,把當(dāng)前目錄改為解壓縮SQL Developer的目錄,并啟動(dòng)它。在Windows上,可執(zhí)行文件是sqldeveloper.exe。在Linux上,是sqldeveloper.sh外殼腳本。記住要檢查DISPLAY環(huán)境變量是否設(shè)置為合適的值(例如,如果SQL Developer在系統(tǒng)控制臺(tái)上運(yùn)行,就是127.0.0.1:0.0),之后運(yùn)行外殼腳本。

出現(xiàn)安裝JRE和啟動(dòng)SQL Developer的任何相關(guān)問(wèn)題,都應(yīng)告知系統(tǒng)管理員。

2.SQL Developer用戶(hù)界面

圖5-4顯示了連接數(shù)據(jù)庫(kù)后的SQL Developer用戶(hù)界面。

圖5-4 SQL Developer用戶(hù)界面

SQL Developer窗口的一般布局是,左面板用于導(dǎo)航對(duì)象,右面板用于顯示和輸入信息。

在圖中,左面板顯示,與數(shù)據(jù)庫(kù)建立了一個(gè)連接。該連接稱(chēng)為 orcl_sys。這個(gè)名稱(chēng)是定義連接時(shí)選擇的標(biāo)簽,但大多數(shù)開(kāi)發(fā)人員都使用某種命名約定,這里,所選的名稱(chēng)是數(shù)據(jù)庫(kù)標(biāo)識(shí)符orcl,建立連接的用戶(hù)的用戶(hù)名sys。下面的分支列出了可以管理的所有可能的對(duì)象類(lèi)型。展開(kāi)分支,會(huì)列出對(duì)象本身。右面板的上半部分提示用戶(hù)輸入SQL語(yǔ)句,下半部分顯示語(yǔ)句的結(jié)果。SQL Developer 是一個(gè)有用的工具,因?yàn)樗歉叨瓤啥ㄖ频摹T囼?yàn)它,閱讀幫助,設(shè)置用戶(hù)界面,使它們以最適合自己的方式工作。

3.創(chuàng)建數(shù)據(jù)庫(kù)連接

數(shù)據(jù)庫(kù)連接可以創(chuàng)建并保存,以進(jìn)行重用。在如圖5-4所示的Connection 標(biāo)簽上選擇+符號(hào),就可以打開(kāi)定義連接的窗口。

連接的名稱(chēng)可以任意。用戶(hù)名和密碼必須同時(shí)提供,但只保存用戶(hù)名,除非選擇了Save Password復(fù)選框。保存密碼,意味著以后可以不輸入密碼,就建立連接。這很方便,但如果工作所用的計(jì)算機(jī)可能不安全,就非常危險(xiǎn)。實(shí)際上,這是把身份驗(yàn)證委托給本地操作系統(tǒng),如果可以登錄它,就可以登錄數(shù)據(jù)庫(kù)。

假定使用SQL Developer連接Oracle數(shù)據(jù)庫(kù),而不是第三方數(shù)據(jù)庫(kù),就選擇Oracle標(biāo)簽。

Role下拉框提供了作為sysdba進(jìn)行連接的選項(xiàng)。在執(zhí)行某些特別重要的操作(例如數(shù)據(jù)庫(kù)啟動(dòng)和停止)之前,需要sysdba連接。本書(shū)中的練習(xí)不需要sysdba連接。

Connection Type單選按鈕允許選擇5個(gè)選項(xiàng):

Basic 它提示輸入數(shù)據(jù)庫(kù)服務(wù)器的機(jī)器名,數(shù)據(jù)庫(kù)偵聽(tīng)器接受連接請(qǐng)求的端口,以及建立連接的實(shí)例(會(huì)話(huà)標(biāo)識(shí)符SID)或服務(wù)。

TNS 如果配置了名稱(chēng)解析方法,就可以(從本地文件tnsnames.ora中)選擇數(shù)據(jù)庫(kù)的別名,或者輸入該名稱(chēng),而不是Basic選項(xiàng)需要的完整信息。

LDAP 指定LDAP服務(wù)器信息,可以查詢(xún)存儲(chǔ)在LDAP目錄服務(wù)下的數(shù)據(jù)庫(kù)服務(wù)定義及其連接信息。

Advanced 允許輸入完整的Java Database Connectivity (JDBC)連接字符串。這完全獨(dú)立于Oracle,可用于連接遵循JCBD標(biāo)準(zhǔn)的任意數(shù)據(jù)庫(kù)。

Local/Bequeath 如果數(shù)據(jù)庫(kù)和SQL Developer客戶(hù)程序運(yùn)行在同一臺(tái)機(jī)器上,這個(gè)選項(xiàng)就允許直接連接服務(wù)器進(jìn)程,繞過(guò)網(wǎng)絡(luò)偵聽(tīng)器。

選擇Basic要求用戶(hù)知道如何連接到數(shù)據(jù)庫(kù)上;選擇TNS需要數(shù)據(jù)庫(kù)管理員在客戶(hù)機(jī)上進(jìn)行一些配置,使別名能解析為完整的連接信息。

推薦閱讀
  1. 2019年對(duì)外漢語(yǔ)教師資格考試(中級(jí))《現(xiàn)代漢語(yǔ)》筆記和典型題(含歷年真題)詳解【視頻講解】
  2. 機(jī)電工程與實(shí)務(wù):通關(guān)精要及真題全解(2014全國(guó)一級(jí)建造師執(zhí)業(yè)資格考試“名師通關(guān)精要”系列輔導(dǎo)叢書(shū)·第1版)
  3. 房地產(chǎn)估價(jià)師《房地產(chǎn)估價(jià)案例與分析》過(guò)關(guān)必做習(xí)題集(含歷年真題)
  4. 國(guó)家職業(yè)資格考試《職業(yè)道德》考點(diǎn)歸納與典型題詳解
  5. 2015心理咨詢(xún)師國(guó)家職業(yè)資格考試專(zhuān)用輔導(dǎo)教材(二級(jí)):教材精解(圖解版)+題庫(kù)解析+歷年真題+押題預(yù)測(cè)
  6. 2019年陜西省公開(kāi)招聘城鎮(zhèn)社區(qū)專(zhuān)職工作人員考試《行政職業(yè)能力》專(zhuān)項(xiàng)題庫(kù)【歷年真題+章節(jié)題庫(kù)+模擬試題】
  7. 人力資源管理專(zhuān)業(yè)知識(shí)與實(shí)務(wù)十年真題精析(中級(jí))(2016版)
  8. 2020年社會(huì)工作碩士(MSW)考試過(guò)關(guān)必做習(xí)題集(含歷年真題)
  9. 社會(huì)工作實(shí)務(wù)(初級(jí))2017年考點(diǎn)+精講
  10. 2019年全國(guó)執(zhí)業(yè)獸醫(yī)資格考試(獸醫(yī)全科類(lèi))歷年真題及詳解
  11. 2019年下半年全國(guó)統(tǒng)考教師資格考試《美術(shù)學(xué)科知識(shí)與教學(xué)能力》(高級(jí)中學(xué))題庫(kù)【歷年真題+章節(jié)題庫(kù)+模擬試題】
  12. 2017社會(huì)工作者職業(yè)水平考試分章練習(xí):沖刺模擬試卷(中級(jí))
  13. 2019年執(zhí)業(yè)藥師資格(中藥學(xué)專(zhuān)業(yè)知識(shí)一)歷年真題與考前押題詳解
  14. 房地產(chǎn)估價(jià)師《房地產(chǎn)基本制度與政策(含房地產(chǎn)估價(jià)相關(guān)知識(shí))》歷年真題與模擬試題詳解
  15. 輕松考取駕駛證
主站蜘蛛池模板: 抚远县| 山东省| 临洮县| 东源县| 延吉市| 镇原县| 台中市| 斗六市| 涞源县| 顺昌县| 京山县| 兴宁市| 许昌县| 义马市| 黑龙江省| 泰和县| 桐庐县| 阜宁县| 高平市| 广昌县| 衢州市| 新宾| 边坝县| 崇阳县| 诸暨市| 安西县| 大方县| 安塞县| 封开县| 霍山县| 墨竹工卡县| 龙陵县| 南漳县| 定边县| 安陆市| 彰化县| 江都市| 聂荣县| 古交市| 平乐县| 宣汉县|