A. 如何連接oracle資料庫
如何配置才能使客戶端連到資料庫:x0dx0ax0dx0a要使一個客戶端機器能連接oracle資料庫,需要在客戶端機器上安裝oracle的客戶端軟體,唯一的例外就是java連接資料庫的時候,可以用 x0dx0ajdbc x0dx0athin模式,不用裝oracle的客戶端軟體。加入你在機器上裝了oracle資料庫,就不需要在單獨在該機器上安裝oracle客戶端了,因為裝 x0dx0aoracle資料庫的時候會瞎培余自動安裝oracle客戶端。x0dx0a 用過sql x0dx0aserver資料庫然後又用oracle的新手可能會有這樣的疑問:問什麼我用sql server的時候不用裝sql x0dx0aserver的客戶端呢?原因很簡單,sql server也是microsoft的,它在操作系統中集成了sql x0dx0aserver客戶端,如果microsoft與oracle有協議,將oracle客戶端也集成到操作系統中,那我們也就不用在客戶端機器裝oraclex0dx0a 客戶端軟機就可訪問資料庫了,不過,這好像是不可能實現的事情。x0dx0a 也有的人會問:為什麼在sql x0dx0aserver中沒有偵聽埠一說,而在oracle中要配置偵聽埠?其實sql x0dx0aserver中也有偵聽埠,只不過microsoft將偵聽埠固定為1433,不允許你隨便改動,這樣給你一個錯覺感覺sql x0dx0aserver中沒有偵聽埠,咳,microsoft把太多的東西都封裝到黑盒子磨滾里,方便使用的同時也帶來的需要副作用。而oracle中的偵聽埠直接x0dx0a 在配置文件中,允許隨便改動,只不過無論怎樣改動,要與oracle伺服器端設置的偵聽埠一致。x0dx0a好,言歸正傳,我們如何做才能使客戶端機器連接到oracle資料庫呢?x0dx0aA. 安裝相關軟體x0dx0aB. 進行適當的配置x0dx0ax0dx0aA.在適當的位置安裝適當的軟體:x0dx0a在客戶端機器:x0dx0a1.在客戶端機器上安裝ORACLE的Oracle Net通訊軟體,它包含在oracle的客戶端軟體中。x0dx0a2.正確配置了sqlnet.ora文件:x0dx0aNAMES.DIRECTORY_PATH = (TNSNAMES, ?.)x0dx0aNAMES.DEFAULT_DOMAIN=DB_DOMAINx0dx0a一般情況下我們不用NAMES.DEFAULT_DOMAIN參數。如果想不用該參數用#注釋掉或將該參數刪除即可,對於NAMES.DIRECTORY_PATH參數採用預設值即可,對於NAMES.DEFAULT_DOMAIN參數有時需要注釋掉,在下面有詳細解釋。x0dx0a3.正確配置了tnsname.ora文件x0dx0ax0dx0a在伺服器端機器:x0dx0a1.保證listener已經啟動x0dx0a2.保證資料庫已經啟動。x0dx0a如果資料庫沒有啟動,用:x0dx0aOracle 9i:x0dx0ados>sqlplus 「/ as sysdba」x0dx0asqlplus> startupx0dx0aOracle 8i:x0dx0ados>svrmgrlx0dx0asvrmgrl>connect internalx0dx0asvrmgrl>startupx0dx0a命令啟動資料庫x0dx0a如果listener沒有啟動,用:x0dx0alsnrctl start [listener name]x0dx0alsnrctl status [listener name]x0dx0a命令啟動listenerx0dx0aB.進行適當的配置x0dx0a如何正確配置tnsname.ora文件:x0dx0ax0dx0a可x0dx0a 以在客戶端機器上使用oracle Net Configuration Assistant或oracle Net x0dx0aManager圖形配置工具對客戶端進行中賀配置,該配置工具實際上修改tnsnames.ora文件。所以我們可以直接修改tnsnames.ora文件,x0dx0a 下面以直接修改tnsnames.ora文件為例:x0dx0a該文件的位置為: ?\network\admin\tnsnames.ora (for windows)x0dx0a?/network/admin/tnsnames.ora (for unix)x0dx0a此處,假設伺服器名為testserver,服務名為orcl.testserver.com,使用的偵聽埠為1521,則tnsnams.ora文件中的一個test網路服務名(資料庫別名)為:x0dx0atest =x0dx0a(DESCRIPTION=x0dx0a(ADDRESS_LIST=x0dx0a(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))x0dx0a)x0dx0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)x0dx0a)x0dx0a)x0dx0a此處的笑臉為)。x0dx0a 紅色的內容為需要根據實際情況修改的內容,現解釋如下:x0dx0a PROTOCOL:客戶端與伺服器端通訊的協議,一般為TCP,該內容一般不用改。x0dx0ax0dx0aHOST:資料庫偵聽所在的機器的機器名或IP地址,資料庫偵聽一般與資料庫在同一個機器上,所以當我說資料庫偵聽所在的機器一般也是指資料庫所在的機 x0dx0a x0dx0a器。在UNIX或WINDOWS下,可以通過在資料庫偵聽所在的機器的命令提示符下使用hostname命令得到機器名,或通過ipconfig(forx0dx0a WINDOWS) or ifconfig(for x0dx0aUNIX)命令得到IP地址。需要注意的是,不管用機器名或IP地址,在客戶端一定要用ping命令ping通資料庫偵聽所在的機器的機器名,否則需要在x0dx0a hosts文件中加入資料庫偵聽所在的機器的機器名的解析。x0dx0ax0dx0aPORT:資料庫偵聽正在偵聽的埠,可以察看伺服器端的listener.ora文件或在資料庫偵聽所在的機器的命令提示符下通過lnsrctl status [listener name]命令察看。此處Port的值一定要與資料庫偵聽正在偵聽的埠一樣。x0dx0a SERVICE_NAME:在伺服器端,用system用戶登陸後,sqlplus> show parameter service_name命令察看。x0dx0a 如何利用配置的網路服務名連接到資料庫:x0dx0a 用sqlplus程序通過test網路服務名進行測試,如sqlplus system/manager@test。x0dx0a 如果不能連接到資料庫,則在tnsname.ora文件中的test網路服務名(net x0dx0aservice)後面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN參數的值,此處我的參數值為 x0dx0atestserver.com,將其加到網路服務名後面,修改後的tnsname.ora中關於該網路服務名的內容為:x0dx0ax0dx0a 什麼情況下會引起oracle自動設置NAMES.DEFAULT_DOMAIN參數?x0dx0a x0dx0a 出現這種情況的典型環境為windows的客戶端的『我得電腦à屬性à計算機名à更改à其它?à此計算機的主DNS後綴』中設置了『primary x0dx0a dns x0dx0asuffix』,因為在這種情況下安裝客戶端時,會在sqlnet.ora文件中自動設置NAMES.DEFAULT_DOMAIN參數,或許當把計算機x0dx0a 加入域中安裝oracle客戶端時也會出現這種情況,有條件的話大家可以試一下。x0dx0ax0dx0a我在設置oracle的客戶端時一般手工修改tnsnames.ora文件,但是還有許多人喜歡用圖形工具配置,該圖形工具最終還是修改tnsnames.ora文件,但是它有時會引起其它的問題:x0dx0ax0dx0a在用oracle的圖形配置軟體'net assistant'或『Net Configuration x0dx0aAssistant』配置網路服務名時,假如已經設置了『primary dns x0dx0asuffix』,但是在圖形配置軟體中寫的網路服務名的名字中沒有『primary dns x0dx0asuffix』,如只是寫了test,則圖形配置軟體會自動在後面加上『primary dns x0dx0asuffix』,使之變為test.testserver.com,並存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有 x0dx0aNAMES.DEFAULT_DOMAIN參數。此時,用圖形工具進行測試連接是通過的,但是假如此時sqlnet.ora文件中沒有 x0dx0aNAMES.DEFAULT_DOMAIN參數,則你在使用網路服務名時應該使用在tnsnames.ora中的 x0dx0atest.testserver.com,而不是你在圖形配置軟體中鍵入的test。解決的辦法為:x0dx0a<1>可以在sqlnet.ora文件中設置NAMES.DEFAULT_DOMAIN= testserver.com,這時你可以用test或test.testserver.com連接資料庫x0dx0a<2>在sqlnet.ora文件中不設置NAMES.DEFAULT_DOMAIN參數,在tnsnames.ora文件中將test.testserver.com中的.testserver.com去掉,這時你可以用test連接資料庫。x0dx0ax0dx0a關於為什們在網路服務名後面加db_domain參數,需要了解sql*plus連接資料庫的原理,我在後面解決12154常見故障中給出了詳細的說明。x0dx0ax0dx0a如果上面的招數還不奏效的話,只好用一下乾坤大挪移了。x0dx0a將客戶端的網路服務名部分x0dx0atest.testserver.com =x0dx0a(DESCRIPTION=x0dx0a(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))x0dx0a)x0dx0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)x0dx0a)x0dx0a)x0dx0a此處的笑臉為)。x0dx0a拷貝到伺服器的tnsnames.ora文件中。然後再伺服器端用sqlplus system/[email protected]連接到資料庫。x0dx0a 如果能連接成功,說明你的客戶端與伺服器端的網路有問題。x0dx0a 如果連接不成功,用前面的部分檢查網路服務名部分部分是否正確,如果確信網路服務名部分正確而且所有的客戶端都連不上資料庫則可能為系統TCP/IP或Oracle系統有問題,建議重新安裝資料庫。x0dx0a該錯誤表示用於連接的網路服務名在tnsnames.ora文件中不存在,如上面的tnsnames.ora中的網路服務名只有test,假如用戶在連接時用sqlplus system/manager@test1則就會給出TNS-12154錯誤。x0dx0a要注意的是,有時即使在tnsnames.ora文件中有相應的網路服務名,可是用該網路服務名連接時還會出錯,出現這種情況的典型配置如下(在客戶端的機器上):x0dx0asqlnet.ora文件:x0dx0aNAMES.DIRECTORY_PATH = (TNSNAMES, ?.)x0dx0aNAMES.DEFAULT_DOMAIN = server.comx0dx0atnsnames.ora文件:x0dx0atest =x0dx0a(DESCRIPTION=x0dx0a(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))x0dx0a)x0dx0a(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)x0dx0a)x0dx0a)x0dx0a此處的笑臉為)。x0dx0asql*plus運行基本機理:x0dx0a 在用戶輸入sqlplus system/manager@test後,sqlplus程序會自動到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN參數,假 如該參數存在,則將該參數中的值取出,加到網路服務名的後面, x0dx0ax0dx0a即此例中你的輸入由sqlplus system/manager@test自動變為sqlplus system/[email protected] x0dx0a,然後再到tnsnames.ora文件中找test.server.com網路服務名,這當然找不到了,因為該文件中只有test網路服務名,所以報 x0dx0a 錯。解決的辦法就是將sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN參數注釋掉即可,如 x0dx0a#NAMES.DEFAULT_DOMAIN = x0dx0aserver.com。假如NAMES.DEFAULT_DOMAIN參數不存在,則sqlplus程序會直接到tnsnames.ora文件中找 x0dx0atest網路服務名,然後取出其中的host,port,tcp,service_name,利用這些信息將連接請求發送到正確的資料庫伺服器上。x0dx0a 另外原則上tnsnames.ora中的配置不區分大小寫,但是我的確遇到區分大小寫的情況,所以最好將使用的網路服務與tnsnames.ora中配置的完全一樣。x0dx0aORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor.x0dx0a該錯誤表示能在tnsnames.ora中找到網路服務名,但是在tnsnames.ora中指定的SERVICE_NAME與伺服器端的SERVICE_NAME不一致。解決的辦法是修改tnsnames.ora中的SERVICE_NAME。x0dx0ax0dx0a 易混淆術語介紹:x0dx0a x0dx0a Db_name:對一個資料庫(Oracle database)的唯一標識,該資料庫為第一章講到的Oracle x0dx0adatabase。這種表示對於單個資料庫是足夠的,但是隨著由多個資料庫構成的分布式資料庫的普及,這種命令資料庫的方法給資料庫的管理造成一定的負 x0dx0a 擔,因為各個資料庫的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了Db_domain參數,這樣在資料庫的標識是由Db_name和 x0dx0aDb_domain兩個參數共同決定的,避免了因為資料庫重名而造成管理上的混亂。這類似於互連網上的機器名的管理。我們將Db_name和 x0dx0aDb_domain兩個參數用』.』連接起來,表示一個資料庫,並將該資料庫的名稱稱為Global_name,即它擴展了Db_name。 x0dx0aDb_name參數只能由字母、數字、』_』、』#』、』$』組成,而且最多8個字元。x0dx0ax0dx0a Db_domain:定義一個資料庫所在的域,該域的命名同互聯網的』域』沒有任何關系,只是資料庫管理員為了更好的管理分布式資料庫而根據實際情況決定的。當然為了管理方便,可以將其等於互聯網的域。x0dx0ax0dx0aGlobal_name:對一個資料庫(Oracle x0dx0adatabase)的唯一標識,oracle建議用此種方法命令資料庫。該值是在創建資料庫是決定的,預設值為Db_name. x0dx0aDb_domain。在以後對參數文件中Db_name與Db_domain參數的任何修改不影響Global_name的值,如果要修改 x0dx0aGlobal_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO x0dx0a
B. 怎麼創建資料庫連接
必須先創建連接,然後才能連接到資料庫。 可通過在以下對話框中單擊「新建連接」來創建連接: 「數據比較」對話框 「架構比較」對話框 Transact-SQL 編輯器的「連接到伺服器」對話框 數據生成器的「為目標資料庫生成數據」對話框 資料庫單元測試的「資料庫測試配置」對話框 還可以使用「伺服器資源管理器」來添加連接。 有關更多信息,請參見 如何:從伺服器資源管理器連接到資料庫。 重要事項 您只能從「伺服器資源管理器」中刪除連接。 主題內容 通過單擊「新建連接」來添加連接 重命名連接 修改連接 刪除連接通過單擊「新建連接」來添加連接 單擊「新建連接」。 隨即出現「連接屬性」對話框。 在「伺服器名稱」中鍵入或單擊要連接的伺服器的名稱。 若要使用 Microsoft Windows 憑據來登錄到伺服器上,請單擊「使用 Windows 身份驗證」。 若要使用 SQL Server 身份驗證來登錄到伺服器上,請單擊「使用 SQL Server 身份驗證」,然後在「用戶名」和「密碼」中鍵入用戶名和密碼。 在「連接到資料庫」中鍵入或單擊要連接的資料庫的名稱。 (可選)可以單擊「高級」配置高級連接屬性。 (可選)可以單擊「測試連接」驗證是否可以使用指定的連接信息連接到資料庫。 單擊「確定」創建連接。 重命名連接 在「視圖」菜單上,單擊「伺服器資源管理器」。 展開「數據連接」節點,右擊需要重命名的連接,然後單擊「重命名」。 鍵入連接的新名稱,然後按 Enter。 修改連接 在「視圖」菜單上,單擊「伺服器資源管理器」。 展開「數據連接」節點,右擊需要重命名的連接,然後單擊「修改連接」。 隨即出現「修改連接」對話框。 更新連接的信息,然後單擊「確定」。 如果您決定不修改連接,則單擊「取消」放棄更改。 刪除連接 在「視圖」菜單上,單擊「伺服器資源管理器」。 展開「數據連接」節點,右擊需要重命名的連接,然後單擊「刪除」。 在確認對話框中單擊「是」以刪除連接。 安全性 建議不選擇「保存密碼」復選框,將 SQL Server 密碼與連接字元串一起存儲。 客戶反饋
C. 如何連接sqlserver資料庫
遠程連接sql server 2000伺服器的解決方案
一、 看ping 伺服器IP能否ping通。
這個實際上是看和遠程sql server 2000伺服器的物理連接是否存在。如果不行,請檢查網路,查看配置,當然得確保遠程sql server 2000伺服器的IP拼寫正確。拆段
二 、在Dos或命令行下輸入telnet 伺服器IP 埠,看能否連通。
如telnet 202.114.100.100 1433
通常埠值是1433,因為1433是sql server 2000的對於Tcp/IP的默認偵聽埠。如果有問題,通常這一步會出問題。通常的提示晌敗是「……無法打開連接,連接失敗"。
如果這一步有問題,應該檢查以下選項。
1. 檢查遠程伺服器是否啟動了sql server 2000服務。如果沒有,則啟動。
2. 檢查伺服器端有沒啟用Tcp/IP協議,因為遠程連接(通過網際網路)需要靠這個協議。檢查方法是,在伺服器上打開 開始菜單->程序->Microsoft SQL Server->伺服器網路實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。
3. 檢查伺服器的tcp/ip埠是否配置為1433埠。仍然在伺服器網路實用工具里查看啟用協議裡面的tcp/ip的屬性,確保默認埠為1433,並且隱藏伺服器復選框沒有勾上。
事實上,如果默認埠被修改,也是可以的,但是在客戶端做telnet測試時,寫伺服器埠號時必須與伺服器配置的埠號保持一致。如果隱藏伺服器復選框被勾選,則意味著客戶端無法通過枚舉伺服器來看到這台伺服器,起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認埠將被隱式修改為2433,在客戶端連接時必須作相應的改變。
4. 如果伺服器端操作系統打過sp2補丁,則要對windows防火牆作一定的配置,要對它開放1433埠,通常在測試時可以直接關掉windows防火牆(其他的防火牆也關掉最好)。
5. 檢查伺服器是否在1433埠偵聽。如果伺服器沒有在tcp連接的1433埠偵聽,則是連接不上的。檢查方法是在伺服器的dos或命令行下面輸入
netstat -a -n 或者是netstat -an,在結果列表裡看是否有類似 tcp 127.0.0.1 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在伺服器端啟動查詢分析器,輸入 select @@version 執行後可以看到版本號,版本號在8.0.2039以下的都需要打補丁。
如果以上都沒問題,這時再做telnet 伺服器ip 1433 測試,將會看到屏幕一閃之後游標在左上角不停閃動。恭喜,馬上可以開始在企業管理器或查詢分析器連接了。
三、 檢查客戶端設置
程序->Microsoft SQL Server -> 客戶端網路使用工具。像在伺服器網路實用工具里一樣,確保客戶端tcp/ip協議啟用,並且默認埠為1433(或其他埠,與宴御顫伺服器端保持一致就行)。
四、 在企業管理器里或查詢那分析器連接測試
企業管理器->右鍵SQlserver組->新建sqlserver注冊->下一步->寫入遠程IP->下一步->選Sqlserver登陸->下一步->寫入登陸名與密碼(sa,password)->下一步->下一步->完成
查詢分析器->文件->連接->寫入遠程IP->寫入登錄名和密碼(sa,password)->確定
通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一台SQL Server的超時設置是4秒,而查詢分析器是15秒。
修改默認連接超時的方法:
企業管理器->工具->選項->在彈出的"SQL Server企業管理器屬性"窗口中,點擊"高級"選項卡->連接設置->在 登錄超時(秒) 後面的框里輸入一個較大的數字
查詢分析器->工具->選項->連接->在 登錄超時(秒) 後面的框里輸入一個較大的數字
通常就可以連通了,如果提示錯誤,則進入下一步。
五、 錯誤產生的原因通常是由於SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示:
1. 在伺服器端使用企業管理器,並且選擇"使用 Windows 身份驗證"連接上 SQL Server。
2. 展開"SQL Server組",滑鼠右鍵點擊SQL Server伺服器的名稱,選擇"屬性",再選擇"安全性"選項卡。
3. 在"身份驗證"下,選擇"SQL Server和 Windows "。
4. 重新啟動SQL Server服務。(在dos或命令行下面net stop mssqlserver停止服務,net start mssqlserver啟動服務,也是一種快捷的方法)。
附註:在連接本地伺服器時,通常使用的是命名管道協議(在伺服器網路實用工具里可以看到啟用的協議有這個),默認埠是445,因此在本地能連通是不能說明什麼問題的,連接遠程伺服器是完全不同的協議)
D. 鏈接資料庫有哪些方法
常見的資料庫連接方法如下:
一、連接Access資料庫
1.
使用已有DSN的連接字元串進行連接(ODBC);
2.使用無DSN的連接字元串進行連接(ODBC);
3.使用連接字元串進行連接(OLEDB);
4.使用UDL文件進行連接;
使用UDL文件連接數據源的步驟如下:
(1)新建一個記事本,其擴展名為.udl。
(2)雙擊該UDL文件,彈出「數據連接屬性」對話框。
(3)該對話框首頁顯示「提供程序」選項卡,選擇要使用的OLEDB提供程序。
(4)單擊「下一步」,顯示"l連接「選項卡」,設置好正確的參數後,單擊「測試連接」
二、連接MySQL資料庫
1.使用已有DSN的連接字元串進行連接;
2.使用無DSN的連接字元串進行連接;
三、連接Oracle資料庫
1.使用Oracle.NET
Data
Provider(需要安裝Oracle客戶端)
2.使用ODBC.NET
Data
Provider
3.使用OLE
DB.NET
Data
Provider