日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Oracle數(shù)據(jù)庫的安裝和使用

  • 1、數(shù)據(jù)庫安裝
    • 1.1下載
    • 1.2 安裝
  • 2、配置數(shù)據(jù)庫
    • 2.1 創(chuàng)建表空間
    • 2.2 創(chuàng)建用戶
    • 2.3 配置監(jiān)聽
    • 2.4 配置本地服務(wù)名(Tnsnames)
    • 網(wǎng)絡(luò)配置與訪問方式完全解析
        • 連接的時候輸入的 TNSNAME
    • 連接過程
    • 幾種連接方式
    • 連接用到的幾種驗證形式
        • 1 .lsnrctl status 查看服務(wù)器端listener 進(jìn)程的狀態(tài)
        • 2 .tnsping 查看客戶端sq.NET.ora 和tnsname.ora 文件的配置正確與否,及對應(yīng)的服務(wù)器的listener 進(jìn)程的狀態(tài)。
        • 3.查看instance 是否已經(jīng)啟動
    • 2.5 oracle連接問題
        • 1.ORA-12541: TNS: 沒有監(jiān)聽器
        • 2.ORA-12500: TNS: 監(jiān)聽程序無法啟動專用服務(wù)器進(jìn)程
        • 3.ORA-12535: TNS: 操作超時
        • 4.ORA-12154: TNS: 無法處理服務(wù)名
        • 5.ORA-12514: TNS: 監(jiān)聽進(jìn)程不能解析在連接描述符中給出的SERVICE_NAME
        • 6.ORA-12518 TNS:監(jiān)聽程序無法分發(fā)客戶機連接
        • 7.windows 下啟動監(jiān)聽服務(wù)提示找不到路徑
        • 8.TNS-12537, TNS-12560, TNS-00507 linux Error: 29: Illegal seek error When Starting the Listener
        • 9.ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was:192.168.1.1:1521:bbcd
        • 10.Ora-12514:TNS:監(jiān)聽程序當(dāng)前無法識別鏈接描述符中請求的服務(wù)
        • 11.ORA-12528: TNS:listener: all Appropriate instances are blocking new connections
        • 12.ORA-01034: ORACLE not available和ORA-27101: shared memory realm does not exist
        • 13.ORA-12520 TNS:Listener count not find available handler for requested type of server
        • 14.TNS-12542: TNS:address already in use
        • 15. Windows下啟動監(jiān)聽服務(wù)提示找不到路徑
        • 16.ORA-12638: 身份證明檢索失敗
  • 3.備份還原數(shù)據(jù)庫
    • 3.1 備份數(shù)據(jù)庫
      • exp導(dǎo)出
      • 使用導(dǎo)出expdp工具
    • 3.2 還原數(shù)據(jù)庫
      • imp導(dǎo)入
      • 導(dǎo)入非完整數(shù)據(jù)庫dmp文件(部分表)
      • 使用導(dǎo)入impdb工具

1、數(shù)據(jù)庫安裝

1.1下載

從零開始教你安裝Oracle數(shù)據(jù)庫

 


根據(jù)自己的操作系統(tǒng)位數(shù),到oracle官網(wǎng)下載(以oracle 11g 為例)
之后把兩個壓縮包解壓到同一個文件夾內(nèi)(需要注意的是,這個文件夾路徑名稱中最好不要出現(xiàn)中文、空格等不規(guī)則字符。)
注意:下載的是Oracle DataBase數(shù)據(jù)庫服務(wù)器!!不要下錯了,下載成client客戶端!!

1.2 安裝

打開相應(yīng)的解壓路徑,找到安裝文件“setup.exe”,雙擊進(jìn)行安裝,如下圖所示:

從零開始教你安裝Oracle數(shù)據(jù)庫

 


取消下圖中的“我希望通過My Oracle Support接受安全更新(W)”,點擊下一步

從零開始教你安裝Oracle數(shù)據(jù)庫

 


從零開始教你安裝Oracle數(shù)據(jù)庫

 


下面需要注意,如果是筆記本的話選擇“桌面類”,服務(wù)器就選擇“服務(wù)器類”

從零開始教你安裝Oracle數(shù)據(jù)庫

 


自定義oracle及目錄(安裝路徑)及密碼。

從零開始教你安裝Oracle數(shù)據(jù)庫

 


從零開始教你安裝Oracle數(shù)據(jù)庫

 


先決條件檢查。 安裝程序會檢查軟硬件系統(tǒng)是否滿足,安裝此Oracle版本的最低要求。 直接下一步就OK 了。

從零開始教你安裝Oracle數(shù)據(jù)庫

 


概要 安裝前的一些相關(guān)選擇配置信息。 可以保存成文件 或 不保存文件直接點完成即可。

從零開始教你安裝Oracle數(shù)據(jù)庫

 


數(shù)據(jù)庫管理軟件文件及dbms文件安裝完后,會自動創(chuàng)建安裝一個實例數(shù)據(jù)庫默認(rèn)前面的orcl名稱的數(shù)據(jù)庫。

從零開始教你安裝Oracle數(shù)據(jù)庫

 


最后完成oracle安裝。

2、配置數(shù)據(jù)庫

2.1 創(chuàng)建表空間

Win+R 輸入cmd 進(jìn)入命令行,輸入下面,以sysdba 登錄進(jìn)去:

sqlplus  /nolog
connect / as sysdba
startup

注意:在conn / as sysdba過程中遇到報ORA-01301:insufficient privileges錯誤
解決辦法:出現(xiàn)這種問題的原因,有兩個原因,一是在oracle的用戶組中沒有本機系統(tǒng);二是操作系統(tǒng)的本地驗證不允許。

  • 將當(dāng)前登錄用戶添加到ora_dba組中。
  • 在sql.net文件中修改語句為
SQLNET.AUTHENTICATION_SERVICE=(NTS)
從零開始教你安裝Oracle數(shù)據(jù)庫

 


創(chuàng)建表空間

create tablespace TBS_CHOVA_DATA datafile 'E:OracleoradataTBS_CHOVA_DATA.dbf' size 1000 M autoextend on next 100 maxsize unlimited;

create temporary tablespace TBS_CHOVA_TEMP tempfile 'E:OracleoradataTBS_CHOVA_TEMP.dbf' size 1000 M autoextend on next 100 maxsize unlimited;

create tablespace TBS_CHOVA_IDX datafile  'E:OracleoradataTBS_CHOVA_IDX.dbf' size 200 M autoextend on next 100 maxsize unlimited;

注意:文件名前面的路徑需要真實存在,沒有這個路徑的話,需要自己手動創(chuàng)建這個路徑

2.2 創(chuàng)建用戶

建立用戶,分配權(quán)限。第一個smis是用戶名,第二個smis是密碼。

create user smis identified by smis default tablespace TBS_CHOVA_DATA temporary tablespace TBS_CHOVA_TEMP;

grant connect,resource to smis;

grant dba to smis;

2.3 配置監(jiān)聽

監(jiān)聽器是Oracle基于服務(wù)器端的一種網(wǎng)絡(luò)服務(wù),主要用于監(jiān)聽客戶端向數(shù)據(jù)庫服務(wù)器端提出的連接請求。既然是基于服務(wù)器端的服務(wù),那么它也只存在于數(shù)據(jù)庫服務(wù)器端,進(jìn)行監(jiān)聽器的設(shè)置也是在數(shù)據(jù)庫服務(wù)器端完成的。

  • 打開oracle程序下的 Net Manager
  • 選擇監(jiān)聽程序,LISTENER ,監(jiān)聽位置處,添加地址,主機填寫自己電腦的IP地址,端口1521
  • 選中窗口右側(cè)欄下拉選項中的“數(shù)據(jù)庫服務(wù)”,點擊添加數(shù)據(jù)庫按鈕。在出現(xiàn)的數(shù)據(jù)庫欄中輸入全局?jǐn)?shù)據(jù)庫名。注意這里的全局?jǐn)?shù)據(jù)庫名與數(shù)據(jù) 庫SID有所區(qū)別,全局?jǐn)?shù)據(jù)庫名實際通過域名來控制在同一網(wǎng)段內(nèi)數(shù)據(jù)庫全局命名的唯一性,就如Windows下的域名控制器。 Oracle主目錄可以不填寫,輸入SID。

2.4 配置本地服務(wù)名(Tnsnames)

  • 本地服務(wù)名是基于Oracle客戶端的網(wǎng)絡(luò)配置,所以,如果客戶端需要連接數(shù)據(jù)庫服務(wù)器進(jìn)行操作,則需要配置該客戶端,其依附對象可以是任意一臺欲連接數(shù)據(jù)庫服務(wù)器進(jìn)行操作的PC機,也可以是數(shù)據(jù)庫服務(wù)器自身。如前面所介紹,可以利用Oracle自帶的圖形化管理工具Net Manager來完成Oracle客戶端的配置。選中服務(wù)命名,再點擊左上側(cè)“+”按鈕,彈出如下圖示對話框:
  • 輸入Net服務(wù)名,如myoracle,點擊下一步,進(jìn)入下圖示對話框:
  • 選中TCP/IP(Internet協(xié)議),點擊下一步,如下圖示:
  • 輸入主機名與端口號。注意這里的主機名與端口號必須與數(shù)據(jù)庫服務(wù)器端監(jiān)聽器配置的主機名和端口號相同。點擊下一步,如下圖示:
  • 選中(Oracle8i或更高版本)服務(wù)名,輸入服務(wù)名。這里的服務(wù)名實際上就是數(shù)據(jù)庫服務(wù)器端監(jiān)聽器配置中的全局?jǐn)?shù)據(jù)庫名,前者與后者必須相同。連接類型通常選專用服務(wù)器,這要視數(shù)據(jù)庫服務(wù)器的配置而定,如果配置的共享數(shù)據(jù)庫服務(wù)器,這里的連接類型就要選共享服務(wù)器,否則建議選專用服務(wù)器(關(guān)于專用服務(wù)器的介紹請參閱相關(guān)文檔)。配置好后點擊下一步,如下圖示:
  • 如果數(shù)據(jù)庫服務(wù)器端相關(guān)服務(wù)啟動了,可以點擊測試按鈕進(jìn)行連接測試。Oracle默認(rèn)是通過scott/tiger用戶進(jìn)行測試連接,由于scott用戶是Oracle自帶的示例用戶,對于正式的業(yè)務(wù)數(shù)據(jù)庫或?qū)I(yè)測試數(shù)據(jù)庫可能沒有配置這個用戶,所以需要更改成有效的用戶登錄才可能測試成功。如果這里測試連接不成功,也不要緊,先點完成按鈕結(jié)束配置。回到Oracle網(wǎng)絡(luò)管理器(Oracle Net Manager)主窗口,保存配置,默認(rèn)即可在Oracle安裝目錄下找到本地服務(wù)名配置文件 (Windows下如D:/oracle/ora92/network/admin/tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務(wù)名如下圖示:
  • 樹形目錄下的服務(wù)命名可以通過編輯菜單里的重命名菜單更改成任意合法字符組成的服務(wù)名稱,注意服務(wù)名稱前不能有空格字符,否則可能無法連接數(shù)據(jù)庫服務(wù)器。

網(wǎng)絡(luò)配置與訪問方式完全解析

三個配置文件 listener.ora 、sqlnet.ora 、tnsnames.ora ,都是放在目錄:

ORACLE_HOMEnetworkadmin 
  1. sqlnet.ora----- 作用類似于linux 或者其他unix 的nsswitch.conf 文件,通過這個文件來決定怎么樣找一個連接中出現(xiàn)的連接字符串。
    例如我們客戶端輸入
sqlplus sys/oracle@orcl

假如我的sqlnet.ora 是下面這個樣子

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

那么,客戶端就會首先在tnsnames.ora 文件中找orcl 的記錄. 如果沒有相應(yīng)的記錄則嘗試把orcl 當(dāng)作一個主機名,通過網(wǎng)絡(luò)的途徑去解析它的 ip 地址然后去連接這個ip 上GLOBAL_DBNAME=orcl 這個實例,當(dāng)然我這里orcl 并不是一個主機名。
如果我是這個樣子

NAMES.DIRECTORY_PATH= (TNSNAMES)

那么客戶端就只會從tnsnames.ora 查找orcl 的記錄, 括號中還有其他選項,如LDAP 等并不常用。
2. Tnsnames.ora------ 這個文件類似于unix 的hosts 文件,提供的tnsname 到主機名或者ip 的對應(yīng),只有當(dāng)sqlnet.ora 中類似

NAMES.DIRECTORY_PATH= (TNSNAMES) 

這樣,也就是客戶端解析連接字符串的順序中有TNSNAMES 是,才會嘗試使用這個文件。
PROTOCOL :客戶端與服務(wù)器端通訊的協(xié)議,一般為TCP ,該內(nèi)容一般不用改。
HOST:數(shù)據(jù)庫偵聽所在的機器的機器名或IP 地址,數(shù)據(jù)庫偵聽一般與數(shù)據(jù)庫在同一個機器上,所以當(dāng)我說數(shù)據(jù)庫偵聽所在的機器一般也是指數(shù)據(jù)庫所在的機器。在UNIX 或WINDOWS 下,可以通過在數(shù)據(jù)庫偵聽所在的機器的命令提示符下使用hostname 命令得到機器名,或通過ipconfig(for WINDOWS) or ifconfig (for UNIX )命令得到IP 地址。需要注意的是,不管用機器名或IP 地址,在客戶端一定要用ping 命令ping 通數(shù)據(jù)庫偵聽所在的機器的機器名,否則需要在 hosts 文件中加入數(shù)據(jù)庫偵聽所在的機器的機器名的解析。
PORT:數(shù)據(jù)庫偵聽正在偵聽的端口,可以察看服務(wù)器端的listener.ora 文件或在數(shù)據(jù)庫偵聽所在的機器的命令提示符下通過lnsrctl status [listener name] 命令察看。此處Port 的值一定要與數(shù)據(jù)庫偵聽正在偵聽的端口一樣。
SERVICE_NAME:在服務(wù)器端,用system 用戶登陸后,sqlplus> show parameter service_name 命令察看。
ORCL: 對應(yīng)的本機,SALES 對應(yīng)的另外一個IP 地址,里邊還定義了使用主用服務(wù)器還是共享服務(wù)器模式進(jìn)行連接。

連接的時候輸入的 TNSNAME

ORCL =
     (DESCRIPTION =
     (ADDRESS_LIST =
# 下面是這個TNSNAME 對應(yīng)的主機,端口,協(xié)議 
         (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
      (CONNECT_DATA =
# 使用專用服務(wù)器模式去連接需要跟服務(wù)器的模式匹配,如果沒有就根據(jù)服務(wù)器的模式自動調(diào)節(jié) 
         (SERVER = DEDICATED)
# 對應(yīng)service_name ,SQLPLUS>;show parameter service_name; 進(jìn)行查看 
      (SERVICE_NAME = orcl)
)
)
# 下面這個類似
SALES =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =dg1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = sales)
    )
  )

注意:如果數(shù)據(jù)庫服務(wù)器用MTS ,客戶端程序需要用database link 時最好明確指明客戶端用dedicated 直連方式, 不然會遇到很多跟分布式環(huán)境有關(guān)的ORACLE BUG 。一般情況下數(shù)據(jù)庫服務(wù)器用直接的連接會好一些,除非你的實時數(shù)據(jù)庫連接數(shù)接近1000 。
3. listener.ora------listener 監(jiān)聽器進(jìn)程的配置文件
關(guān)于listener 進(jìn)程就不多說了,接受遠(yuǎn)程對數(shù)據(jù)庫的接入申請并轉(zhuǎn)交給oracle 的服務(wù)器進(jìn)程。所以如果不是使用的遠(yuǎn)程的連接,并且不需要使用OEM時,listener 進(jìn)程就不是必需的,同樣的如果關(guān)閉listener 進(jìn)程并不會影響已經(jīng)存在的數(shù)據(jù)庫連接。
***Listener.ora***文件的例子

#listener.ora Network Configuration File: 
#E:oracleproduct10.1.0Db_2NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
# 下面定義LISTENER 進(jìn)程為哪個實例提供服務(wù) 這里是ORCL ,并且它對應(yīng)的ORACLE_HOME 和GLOBAL_DBNAME 其中GLOBAL_DBNAME 不是必需的除非
# 使用HOSTNAME 做數(shù)據(jù)庫連接
SID_LIST_LISTENER =
      (SID_LIST =
         (SID_DESC =
              (GLOBAL_DBNAME = boway)
              (ORACLE_HOME = /u01/app/oracle)
       (SID_NAME = ORCL)
)
) 
# 監(jiān)聽器的名字,一臺數(shù)據(jù)庫可以有不止一個監(jiān)聽器
# 再向下面是監(jiān)聽器監(jiān)聽的協(xié)議,ip,端口等,這里使用的tcp1521端口,并且使#用的是主機名
LISTENER =
     (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
) 

上面的例子是一個最簡單的例子,但也是最普遍的。一個listener 進(jìn)程為一個instance(SID) 提供服務(wù)。
監(jiān)聽器的操作命令

ORACLE_HOME/bin/lsnrctl start

其他諸如stop,status 等。具體敲完一個lsnrctl 后看幫助。
上面說到的三個文件都可以通過圖形的配置工具來完成配置

$ORACLE_HOME/netca 向?qū)问降?$ORACLE_HOME/netmgr

本人比較習(xí)慣netmgr,
profile 配置的是sqlnet.ora 也就是名稱解析的方式
service name 配置的是tnsnames.ora 文件
listeners 配置的是listener.ora 文件,即監(jiān)聽器進(jìn)程
具體的配置可以嘗試一下然后來看一下配置文件。
這樣一來總體結(jié)構(gòu)就有了不同的連接方式 。

連接過程

當(dāng)你輸入

sqlplus sys/oracle@orcl

1.查詢sqlnet.ora 看看名稱的解析方式,發(fā)現(xiàn)是TNSNAME
2.則查詢tnsnames.ora 文件,從里邊找orcl 的記錄,并且找到主機名,端口和service_name
3. 如果listener 進(jìn)程沒有問題的話,建立與listener 進(jìn)程的連接。
4 .根據(jù)不同的服務(wù)器模式如專用服務(wù)器模式或者共享服務(wù)器模式,listener 采取接下去的動作。默認(rèn)是專用服務(wù)器模式,沒有問題的話客戶端就連接上了數(shù)據(jù)庫的server process 。
5 .這時候網(wǎng)絡(luò)連接已經(jīng)建立,listener 進(jìn)程的歷史使命也就完成了。
##


幾種連接方式

簡便命名連接:
默認(rèn)已啟用,不需要進(jìn)行客戶機配置,僅支持TC/IP(無SSL),不支持高級連接,如:連接時故障轉(zhuǎn)移,源路由,負(fù)載平衡。連接方式如:

connect hr/hr@db.us.oracle.com:1521/dba10g

其中db.us.oracle.com為主機名當(dāng)然也可以用IP代替,1521為連接端口,dba10g為服務(wù)名—可通過show parameter service 查看。
本地命名:
需要客戶機名稱解析文件tnsname.ora,支持所有的Oracle Net協(xié)議,支持高級連接選項。連接方式如: connect hr/hr@orcl,其中orcl為數(shù)據(jù)庫實例名
目錄命名:
需要加載了Oracle Net名稱解析的LDAP:Oracle Internet Directory和Microsoft Active Directory Services。支持所有的Oracle Net協(xié)議,支持高級連接選項。連接方式如: connect hr/hr@orcl
外部命名:
使用支持的非Oracle命名服務(wù),包括:網(wǎng)絡(luò)信息服務(wù)(NIS)外部命名,分布式計算環(huán)境(DCE)單元目錄服務(wù)(CDS)

連接用到的幾種驗證形式

sqlplus / as sysdba

這是典型的操作系統(tǒng)認(rèn)證,不需要listener 進(jìn)程

sqlplus sys/oracle 

這種連接方式只能連接本機數(shù)據(jù)庫,同樣不需要listener 進(jìn)程

sqlplus sys/oracle@orcl 

這種方式需要listener 進(jìn)程處于可用狀態(tài)。最普遍的通過網(wǎng)絡(luò)連接。
以上驗證方式使用sys 用戶或者其他通過密碼文件驗證的用戶都不需要數(shù)據(jù)庫處于可用狀態(tài),操作系統(tǒng)認(rèn)證也不需要數(shù)據(jù)庫可用,數(shù)據(jù)庫用戶認(rèn)證放是由于采用數(shù)據(jù)庫認(rèn)證,所以數(shù)據(jù)庫必需處于open 狀態(tài)。
作為普通用戶進(jìn)行登錄

[oracle@dg1 admin]$ sqlplus sys/oracle
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Feb 13 16:18:33 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
ERROR:
ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
Enter user-name: 
initSID.ora 中的Remote_Login_Passwordfile 對身份驗證的影響 

三個可選值:
NONE
默認(rèn)值,指示Oracle 系統(tǒng)不使用密碼文件,通過操作系統(tǒng)進(jìn)行身份驗證的特權(quán)用戶擁有SYSORA 和SYSOPER 權(quán)限。
EXCLUSIVE
1.表示只有一個數(shù)據(jù)庫實例可以使用密碼文件
2.允許將SYSORA 和SYSOPER 權(quán)限賦值給SYS 以外的其它用戶
SHARED
1.表示可以有多個數(shù)據(jù)庫實例可以使用密碼文件
2.不允許將SYSORA 和SYSOPER 權(quán)限賦值給SYS 以外的其它用戶
所以,如果要以操作系統(tǒng)身份登錄,Remote_Login_Passwordfile 應(yīng)該設(shè)置為NONE
關(guān)于域名( 主機名) 解析

/etc/hosts (UNIX)
或者
windowshosts(WIN98) winntsystem32driversetchosts (WIN2000)

客戶端需要寫入數(shù)據(jù)庫服務(wù)器IP 地址和主機名的對應(yīng)關(guān)系。

127.0.0.1 dg1
192.168.0.35 oracledb oracledb
192.168.0.45 Tomcat tomcat
202.84.10.193 bj_db bj_db 

有些時候我們配置好第一步后,tnsping 數(shù)據(jù)庫服務(wù)器別名顯示是成功的,
但是sqlplus username/password@servicename 不同,jdbc thin link 也不通的時候,
一定不要忘了在客戶端做這一步,原因可能是DNS 服務(wù)器里沒有設(shè)置這個服務(wù)器IP 地址和主機名的對應(yīng)關(guān)系。
如果同時有私有IP 和Internet 上公有IP ,私有IP 寫在前面,公有IP 寫在后面。
編輯前最好留一個備份,增加一行時也最好用復(fù)制粘貼,避免編輯hosts 時空格或者tab 字符錯誤。
UNIX 下ORACLE 多數(shù)據(jù)庫的環(huán)境,OS 客戶端需要配置下面兩個環(huán)境變量

ORACLE_SID=appdb;export ORACLE_SID
TWO_TASK=appdb;export TWO_TASK 

來指定默認(rèn)的目標(biāo)數(shù)據(jù)庫


**平時排錯可能會用到的:**

1 .lsnrctl status 查看服務(wù)器端listener 進(jìn)程的狀態(tài)

LSNRCTL>help
LSNRCTL>status
LSNRCTL> services 

2 .tnsping 查看客戶端sqlnet.ora 和tnsname.ora 文件的配置正確與否,及對應(yīng)的服務(wù)器的listener 進(jìn)程的狀態(tài)。

[oracle@dg1 dbs]$ tnsping orcl
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 13-FEB-2011 16:48:06
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
/u01/app/oracle/network/admin/sqlnet.ora
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))) (CONNECT_DATA = (SID = orcl)))
OK (10 msec) 

3.查看instance 是否已經(jīng)啟動

SQL>select instance_name,host_name,status from v$instance; 

查看數(shù)據(jù)庫是打開還是mount 狀態(tài)。

SQL>select open_mode from v$database 
INSTANCE_NAME                  STATUS
------------------------------ ------------------------------------
orcl                           OPEN 

使用hostname 訪問數(shù)據(jù)庫而不是tnsname 的例子
使用tnsname 訪問數(shù)據(jù)庫是默認(rèn)的方式,但是也帶來點問題,那就是客戶端都是需要配置tnsnames.ora 文件的。如果你的數(shù)據(jù)庫服務(wù)器地址發(fā)生改變,就需要重新編輯客戶端這個文件。通過hostname 訪問數(shù)據(jù)庫就沒有了這個麻煩。
查看數(shù)據(jù)庫名

SQL> select name from v$database;
NAME
---------------------------
ORCL 

需要修改服務(wù)器端listener.ora

  • 監(jiān)聽器的配置文件listener.ora
  • 使用host naming 則不再需要tnsname.ora 文件做本地解析
  • listener.ora Network Configuration File:
d:oracleproduct10.1.0db_1NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
     (SID_LIST =
            (SID_DESC =
# (SID_NAME = PLSExtProc)
     (SID_NAME = orcl)
            (GLOBAL_DBNAME = ORCL)
            (ORACLE_HOME = /u01/app/oracle)
# (PROGRAM = extproc)
)
)
 
LISTENER =
     (DESCRIPTION_LIST =
           (DESCRIPTION =
           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
     (DESCRIPTION =
           (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
)
) 

客戶端sqlnet.ora 如果確認(rèn)不會使用TNSNAME 訪問的話,可以去掉 TNSNAMES

sqlnet.ora Network Configuration File: d:oracleproduct10.1.0db_1NETWORKADMINsqlnet.ora
Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (HOSTNAME) 

Tnsnames.ora 文件不需要配置,刪除也無所謂。
下面就是網(wǎng)絡(luò)和操作系統(tǒng)的配置問題了,怎么樣能夠解析我的主機名的問題了
可以通過下面的方式連接

sqlplus sys/oracle@orcl

這樣的話,會連接orcl 這臺服務(wù)器,并且listener 來確定你所要連接的service_name

2.5 oracle連接問題

要排除客戶端與服務(wù)器端的連接問題,首先檢查客戶端配置是否正確(客戶端配置必須與數(shù)據(jù)庫服務(wù)器端監(jiān)聽配置一致),再根據(jù)錯誤提示解決。下面列出幾種常見的連接問題:

1.ORA-12541: TNS: 沒有監(jiān)聽器

顯而易見,服務(wù)器端的監(jiān)聽器沒有啟動,另外檢查客戶端IP地址或端口填寫是否正確。啟動監(jiān)聽器:

lsnrctl start

2.ORA-12500: TNS: 監(jiān)聽程序無法啟動專用服務(wù)器進(jìn)程

對于Windows而言,沒有啟動Oracle實例服務(wù)。啟動實例服務(wù):

C:oradim –startup -sid myoracle

3.ORA-12535: TNS: 操作超時

出現(xiàn)這個問題的原因很多,但主要跟網(wǎng)絡(luò)有關(guān)。解決這個問題,首先檢查客戶端與服務(wù)端的網(wǎng)絡(luò)是否暢通,如果網(wǎng)絡(luò)連通,則檢查兩端的防火墻是否阻擋了連接。

4.ORA-12154: TNS: 無法處理服務(wù)名

檢查輸入的服務(wù)名與配置的服務(wù)名是否一致。另外注意生成的本地服務(wù)名文件(Windows下如

D:oracleora92networkadmin tnsnames.ora
或者
Linux/Unix下/network/admin/tnsnames.ora

里每項服務(wù)的首 行服務(wù)名稱前不能有空格。

5.ORA-12514: TNS: 監(jiān)聽進(jìn)程不能解析在連接描述符中給出的SERVICE_NAME

打開Net Manager,選中服務(wù)名稱,檢查服務(wù)標(biāo)識欄里的服務(wù)名輸入是否正確。該服務(wù)名必須與服務(wù)器端監(jiān)聽器配置的全局?jǐn)?shù)據(jù)庫名一致。同時檢查sqlnet.ora,例如如果想要采用簡便連接方式連接就需要在NAMES.DIRECTORY_PATH參數(shù)中添加EZCONNECT。

6.ORA-12518 TNS:監(jiān)聽程序無法分發(fā)客戶機連接

出現(xiàn)該報錯有兩個原因:在共享模式下是由于調(diào)度進(jìn)程(dispatchers)太少,在獨占模式下是由于進(jìn)程數(shù)(proces ses)超過了數(shù)據(jù)庫默認(rèn)的最大進(jìn)程數(shù)。解決步驟:
1、show parameter process查看數(shù)據(jù)庫允許最大進(jìn)程數(shù)
2、select count(*) from v$session;查看當(dāng)前系統(tǒng)進(jìn)程數(shù)
如果進(jìn)程數(shù)不夠,可通過擴大PGA來增大進(jìn)程數(shù):

alter system set workarea_size_policy=auto scope=both;
alter system set pga_aggregate_target=512m scope=both; 

3、show parameter dispatchers查看調(diào)度進(jìn)程數(shù)量
如果調(diào)度進(jìn)程太少,則可執(zhí)行:

alter system set dispatchers = '(protocol=tcp)(dispatchers=3)(service=oracle10xdb)';

7.Windows 下啟動監(jiān)聽服務(wù)提示找不到路徑

用命令或在服務(wù)窗口中啟動監(jiān)聽提示找不到路徑,或監(jiān)聽服務(wù)啟動異常。打開注冊表,進(jìn)入

HKEY_LOCAL_macHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener

查看ImagePath字符串項是否存在,如果沒 有,設(shè)定值為D:oracleora92BINTNSLSNR,不同的安裝路徑設(shè)定值做相應(yīng)的更改。這種方法同樣適用于Oracle實例服務(wù),同 上,找到如同

HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE

查看ImagePath字符串項是否存在,如果沒有,則新建,設(shè)定值為d:oracleora92 binORACLE.EXE MYORACLE。以上是Oracle客戶端連接服務(wù)器端常見的一些問題,當(dāng)然不能囊括所有的連接異常。解決問題的關(guān)鍵在于方法與思路,而不是每種問題都有固定的答案。

8.TNS-12537, TNS-12560, TNS-00507 Linux Error: 29: Illegal seek error When Starting the Listener

在linux,Unix底下如果/etc/hosts文件配置不正確會出現(xiàn)如下報錯

lsnrctl start
LSNRCTL for HPUX: Version 10.1.0.4.0 - Production on 01-JUL-2005 10:16:59 Copyright (c) 1991, 2004, Oracle. All rights reserved.
Starting /db02/product/10.1/bin/tnslsnr: please wait...
TNS-12537: TNS:connection closed
TNS-12560: TNS:proto adapter error
TNS-00507: Connection closed HPUX Error: 29: Illegal seek

解決方式:
檢查該用戶是否有/etc/hosts文件的訪問權(quán)限,檢查/etc/hosts文件下是否包含

127.0.0.1 localhost.localdomain localhost

9.ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was:192.168.1.1:1521:bbcd

這個問題一般發(fā)生在利用JDBC連接數(shù)據(jù)庫時,這里需要注意,上面的bbcd的位置應(yīng)該填寫sid_name,一般JDBC的配置格式為

jdbc:oracle:thin:@IP/HOSTNAME:PORT:SID例如jdbc:oracle:thin:@145.**.**.**:1521:z***db2

10.Ora-12514:TNS:監(jiān)聽程序當(dāng)前無法識別鏈接描述符中請求的服務(wù)

該問題是由于缺少監(jiān)聽器的SID_LIST描述項引起的,采用netca進(jìn)行配置的時候經(jīng)常會遇到該問題,listener.ora示例如下

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = SAMPLE.COM)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(SID_NAME = SAMPLE)
))
 
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tcy.com)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)))

11.ORA-12528: TNS:listener: all appropriate instances are blocking new connections

ORA-12528:監(jiān)聽中的服務(wù)使用了動態(tài)服務(wù),系統(tǒng)啟動后,數(shù)據(jù)庫沒有正常的MOUNT,因此在動態(tài)模式下,就會出現(xiàn)這個問題,用靜態(tài)的就不會有這個問題,因此上面的方法就是把監(jiān)聽設(shè)置為靜態(tài),或者在tnsnames.ora中追加(UR=A)。
lisnter.ora增加如下內(nèi)容

 (SID_DESC =
      (GLOBAL_DBNAME = ammicly)
      (ORACLE_HOME = c:oracleproduct10.1.0db_1)
      (SID_NAME = ammicly)
    )
或者在tnsnames.ora增加如下內(nèi)容:
 (UR=A)

12.ORA-01034: ORACLE not available和ORA-27101: shared memory realm does not exist

檢查tnsping是否能正常工作,檢查lsnrctl status是否正常。檢查local_listener參數(shù)(pmon只會動態(tài)注冊port等于1521的監(jiān)聽,否則pmon不能動態(tài)注冊listener,要想讓pmon動態(tài)注冊listener,需要設(shè)置local_listener參數(shù)),通過如下方式設(shè)置

alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=10.201.1.134)(PORT=1521)(SID=siebtest))';

13.ORA-12520 TNS:Listener count not find available handler for requested type of server

有以下3種可能
1、檢查數(shù)據(jù)庫是否是專用服務(wù)器,但是在tnsname.ora配置中設(shè)置了連接方式為shared,這種情況下

打開tnsname.ora, 把(server = shared) 改成 (server = dedicate);

2、是由于process不夠引起的:

select count(*) from v$session;
show parameter processes
show parameter sessions

調(diào)大processes參數(shù)即可
3、local_listener設(shè)置不當(dāng),設(shè)置方式參見上文。

14.TNS-12542: TNS:address already in use

TNS-12560: TNS:protocol adapter error
TNS-00512: Address already in use

檢查/etc/hosts的配置,是否有多個ip指向同一主機名的情況
參考至:http://lzysystem.iteye.com/blog/424569
http://blogold.chinaunix.net/u2/82873/showart_1830733.html
http://gggwfn1982.blog.163.com/blog/static/15000427201041192213787/
http://guolr.iteye.com/blog/549692
http://blog.sina.com.cn/s/blog_4cd0d3a701000a6j.html
http://pengxianfeng.i.sohu.com/blog/view/84726397.htm
http://blog.sina.com.cn/s/blog_517cae3c01015dwu.html
http://luoping.blog.51cto.com/534596/1062670
http://xiekeli.blogbus.com/logs/93619549.html
http://www.linuxidc.com/Linux/2012-11/73694.htm

15. Windows下啟動監(jiān)聽服務(wù)提示找不到路徑

用命令或在服務(wù)窗口中啟動監(jiān)聽提示找不到路徑,或監(jiān)聽服務(wù)啟動異常。打開注冊表,進(jìn)入

HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener

查看ImagePath字符串項是否存在,如果沒有,設(shè)定值為

D:/oracle/ora92/BIN/TNSLSNR

不同的安裝路徑設(shè)定值做相應(yīng)的更改。這種方法同樣適用于Oracle實例服務(wù),同上,找到如同

HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE

查看ImagePath字符串項是否存在,如果沒有,則新建,設(shè)定值為

d:/oracle/ora92/binORACLE.EXE MYORACLE

以上是Oracle客戶端連接服務(wù)器端常見的一些問題,當(dāng)然不能囊括所有的連接異常。解決問題的關(guān)鍵在于方法與思路,而不是每種問題都有固定的答案。

16.ORA-12638: 身份證明檢索失敗

開始 -> 程序 -> Oracle -> Configuration and Migration Tools ->
Net Manager→本地→概要文件→Oracle高級安全性→驗證→去掉所選方法中的 "NTS" 

就可以了.

3.備份還原數(shù)據(jù)庫

3.1 備份數(shù)據(jù)庫

exp導(dǎo)出

ORACLE 11g新特性,當(dāng)表沒有數(shù)據(jù)時,不分配segment,以節(jié)省空間,所以exp導(dǎo)出的時候,不導(dǎo)出這些表。針對這個問題,首先執(zhí)行下面的sql:

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

復(fù)制上面語句生成的結(jié)果,再執(zhí)行這些即可。
在命令行執(zhí)行下面即可導(dǎo)出數(shù)據(jù)庫

exp  rad/rad@orcl  file='E:rad.dmp'  buffer=40960000

使用導(dǎo)出expdp工具

首先 指定轉(zhuǎn)儲文件和日志文件所在的目錄directory – lmm_db_bak

sqlplus  /nolog
		connect / as sysdba
		startup
create or replace directory lmm_db_bak as 'D:/lmm_db_bak';
grant read,write on directory lmm_db_bak to public;
  • 查看
select * from dba_directories;
  • 導(dǎo)出
 expdp  rad/rad@orcl  schemas= rad  dumpfile=rad-20170101.dmp directory= lmm_db_bak
  • 導(dǎo)出部分表使用include
 expdp  rad/rad@orcl  schemas= rad  dumpfile=rad-20170101.dmp directory= lmm_db_bak include=table:"like 'CT%'"

注:這種方式可以直接導(dǎo)出那些空表

3.2 還原數(shù)據(jù)庫

imp導(dǎo)入

如果是還原完整的oracle數(shù)據(jù)庫,可以先刪除當(dāng)前用戶,再創(chuàng)建用戶,導(dǎo)入數(shù)據(jù)庫

  • 刪除用戶
drop user rad cascade;
  • 創(chuàng)建用戶
create user rad identified by rad default tablespace TBS_LLM_DATA temporary tablespace TBS_LLM_TEMP;
grant connect,resource to rad;
grant dba to rad;

在命令行執(zhí)行下面即可導(dǎo)入數(shù)據(jù)庫

imp rad/rad@orcl  file='E:rad.dmp'  buffer=40960000 full=y;

導(dǎo)入非完整數(shù)據(jù)庫dmp文件(部分表)

如果自己原本數(shù)據(jù)庫和dmp中存在同樣的表,那么導(dǎo)入dmp文件是不會導(dǎo)入已經(jīng)有的同名表的。需要提前刪除自己本來庫里的同名表。

使用導(dǎo)入impdb工具

impdp  rad/rad@orcl  schemas= rad  directory= lmm_db_bak dumpfile=RAD-20170101.DMP FULL=y;
如果想導(dǎo)入的用戶已經(jīng)存在:
1. 導(dǎo)出用戶 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2. 導(dǎo)入用戶 impdp user2/pass2 directory=dumpdir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2 EXCLUDE=USER full=y;
如果想導(dǎo)入的用戶不存在:
1. 導(dǎo)出用戶 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2. 導(dǎo)入用戶 impdp system/passsystem directory=dumpdir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2 full=y;
3. user2會自動建立,其權(quán)限和使用的表空間與user1相同,但此時用user2無法登錄,必須修改user2的密碼

分享到:
標(biāo)簽:數(shù)據(jù)庫 Oracle
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定