在安裝過程中出現的一些問題的解決辦法。值得收藏與學習。比如在安裝的時候如果有中文的路徑則會出現類似這樣的提示:加載數據庫時出錯:areasQueries
Oracle的系統要求
企業版:CPU 最低PENTIUM 200M 推薦 PENTIUMIII 1G以上
內存 最低128M 推薦 512M
硬盤空間 系統盤140M 安裝盤4.5G(FAT32)或2.75G(NTFS)
標準版:CPU 最低PENTIUM 200M 推薦 PENTIUMIII 866以上
內存 最低128M 推薦 256M
硬盤空間 系統盤140M 安裝盤4.5G(FAT32)或2.5G(NTFS)
個人版:CPU 最低PENTIUM 200M 推薦 PENTIUM 266以上
內存 最低128M 推薦 256M
硬盤空間 系統盤140M 安裝盤4.0G(FAT32)或2.5G(NTFS)
在P4機器上安裝Oracle 8i
P4的計算機最好安裝ORACLE 9I,如果不方便的話可以按照以下的方法安裝ORACLE 8I (其實也不是所有的P4CPU都不可以安裝ORACLE8I, 我的一臺P4 1。7 安裝ORACLE 8.1.6就一點問題沒有)
一、系統環境及準備工作
硬件:
Intel P4的處理器
256M的內存
硬盤有三個分區C、D、E,光驅為F
軟件:
操作系統WINDOWS 2000 SERVER、WINDOWS 98
數據庫ORACLE 8.0.6 for NT或ORACLE 8.1.x for NT
準備工作:
確保機器上沒有裝過Oracle產品。如有的話請先卸載,再將注冊表中所有Oracle的相關項刪除。
在WINDOWS 2000 SERVER上安裝Oracle Enterprise Edition
在WINDOWS 98上安裝Oracle Client
二、故障現象
1、在WINDOWS 2000 SERVER上安裝Oracle8.0.6時
當選擇定制安裝,并創建數據庫時,主要應用程序都已安裝完成,在提示“是否創建數據庫”,選擇是后就再也沒有反應。重啟機器后,點擊應用程序后沒有反應而簡單終斷。 點擊應用程序,鼠標呈現沙漏狀,然后消失,再沒有任何現象發生。
2、在WINDOWS 98上安裝Oracle8.0.6的Client后安裝成功,點擊應用程序,提示該程序執行了非法操作,即將關閉。
3、在WINDOWS 2000 SERVER上安裝Oracle8i時點擊安裝應用程序Setup.exe,程序掛起、或消失、或終止而沒有任何反應。
三、原因分析
使用Windows NT、 Windows 2000或NetWare操作系統和Intel P4處理器的計算機,安裝Oracle8或者Oracle8i時,將會碰到以上問題。主要原因是Oralce8 /8i的OUI(Oracle Universal Installer) 1.7.1.9.0或以前版本使用了Sun JRE 和 Symantec JIT(Just in Time Library),而JRE 和 JIT與Intel P4處理器不兼容。
四、解決辦法
1、 Oracle 8.0.6的解決辦法
(1)將安裝盤整個拷貝到硬盤。譬如E:\Oracle806。
(2)找到目錄E:\Oracle806\win32\JRE11下的symcjit.dll文件,將symcjit.dll改名為為symcjit.old。
(3)找到目錄E:\Oracle806\win32\JRE11下的Jre11.map文件,用文本編輯工具打開Jre11.map文件,找到以bin開頭的段,在其中可看到" " "symcjit.dll" "%JRE11%\bin\" 398336 false false false 00 00 00 "" "",將此行刪除,然后保存。注意此文件的屬性是只讀的。
(4)從目錄E:\Oracle806中執行安裝文件Setup.exe。
如果故障的現象是,Oracle8.0.6已經安裝完成,但是點擊建Oracle應用程序沒有任何反應(一般是在WINDOWS 2000 SERVER操作系統中)或點擊應用程序如Net8,提示該程序執行了非法操作,即將關閉(一般是在WINDOWS 98操作系統中)。。在這種情況下,可不卸載Oracle,而直接將系統安裝目錄相應位置下的symcjit.dll文件改名為symcjit.old即可。
2、Oracle 8.1.x解決辦法
(1)創建一臨時目錄,并將Oracle8i的安裝源程序拷貝到此目錄。找到目錄stage\Components\Oracle.swd.jre\1.1.7.30\1\DataFiles\Expanded\jre\win32\bin下的symcjit.dll 的文件,并改名為 symcjit.old。注意OEM目錄下還有一個symcjit.dll文件要改名。
(2)搜索到oraparam.ini文件,打開它,改變行RE_MEMORY_OPTIONS=-mx48m的參數為JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
(3)其它的參數保持不變。
(4)執行本地硬盤install\win32\setup.exe目錄下的Setup.exe文件。此時調用的是修改過的參數文件oraparam.ini。
(5)安裝時選擇自定義模式,并且不創建數據庫。
(6)安裝程序調用網絡配置助手Net8 Configuration Assistant (NetCA)時你需要強制終止它,然后退出安裝界面。
(7)Oracle8i安裝完成后,安裝目錄中的下列每一個文件都有需要作相應修改。
assistants\dbca\dbassist.cl
assistants\dbma\dbmig.cl
assistants\ifa\ifa.cl
bin\elogin.cl
bin\owm.cl
ldap\oidamdin\oidadmin.cl
network\tools\netasst.cl
network\tools\netca.cl
owm\install\instelogin.cl
owm\install\instowm.cl
用編輯工具依次打開上述文件,增加參數 – nojit,以dbassist.cl文件為例示意如下:
Command=("C:\Program Files\Oracle\jre\1.1.7\BIN\JREW" -nojit -classpath ....)
用相同的方法修改所列出的每一個.cl 文件內容。
(8)安裝成功的完成了,你可以在安裝完成后運行DBCA和NetCA。
在P4機器上安裝Oracle 8i簡略版
1、將ORACLE軟件拷貝到硬盤。
2、將 硬盤目錄文件\stage\Components\Oracle.swd.jre\1.1.7.30/1 \DataFiles\Expanded\jre\win32\bin\symcjit.dll 的文件改名為symcjit.old
3.從\install\win32 目錄下運行SETUP.exe文件進行安裝
Oracle 9i 在2000高級服務器版上的安裝
解決方法:
1. 如果機器上從來沒有安裝過Oracle817或其他版本的Oracle,則可以把待安裝所有文件解壓到一個臨時目錄,例如解壓在E盤的temp\install\disk1目錄中,然后用搜索文件工具,找到所有的symcjit.dll文件,將其名字更改為symcjit.old,那么就可以直接運行disk1目錄下的setup.exe文件,開始安裝。
2. 如果機器上曾經安裝過Oracle817,則需要完全卸載Oracle,然后安裝,步驟如下:
⑴開始->設置->控制面板->管理工具->服務
停止所有Oracle服務。
⑵開始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer
卸裝所有Oracle產品
⑶運行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個入口。
⑷運行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動這個列表,刪除所有Oracle入口。
⑸運行regedit,搜索所有與Oracle相關的項,并將其刪除。
⑹從桌面上、STARTUP(啟動)組、程序菜單中,刪除所有有關Oracle的組和圖標
⑺重新啟動計算機,重起后才能完全刪除Oracle所在目錄
⑻刪除與Oracle有關的文件,選擇Oracle所在的缺省目錄C:\Oracle及C:\Program Files\Oracle,刪除這個入口目錄及所有子目錄。
⑼把Oracle所有待安裝的文件解壓到一個臨時目錄,例如解壓在E盤的temp\install\disk1目錄中。
⑽打開文件disk1\install\oraparam.ini,做如下改動:
● SOURCE項改為SOURCE=e:/temp/install/disk1/stage/products.jar
●JRE_LOCATION項改為JRE_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.jre/1.1.7.30/1/DataFiles/Expanded/jre
●OUI_LOCATION項改為 OUI_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.oui/1.7.1.9.0/1/DataFiles/Expanded
● JRE_MEMORY_OPTIONS 項改為JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
3. 運行disk1\install\win32\setup.exe,安裝開始,根據提示做選擇,安裝下去,假設我安裝在D:\orant\ora81目錄下。
4. 安裝完畢后一些服務會報出錯,不能啟動,這些服務為:
Net8 Configuration Assistant
Database Configuration Assistant
HTTP服務雖然啟動,但是會報出一連串java.exe出錯,可以點擊開始->Oracle (數據庫名) ->Oracle HTTP server->Stop HTTP Server來停止HTTP Server服務。安裝完成了,可是全有問題。
5. 安裝完成后還需要做下面的工作,在安裝路徑下所有的“*.cl”后綴的文件中增添“-nojit”項,共十個文件,如下:
assistants\dbca\dbassist.cl;
assistants\dbma\dbmig.cl;
assistants\ifa\ifa.cl;
bin\elogin.cl;
bin\owm.cl;
ldap\oidamdin\oidadmin.cl;
network\tools\netasst.cl;
network\tools\netca.cl;
owm\install\instelogin.cl;
owm\install\instowm.cl;
Example:
Command=("C:\Program Files\Oracle\jre\1.1.7\bin\jrew"
-classpath
"C:\Program Files\Oracle\jre\1.1.7\lib\rt.jar;
C:\Program Files\Oracle\jre\1.1.7\lib\i18n.jar;
D:\Oracle\ora81\jlib\ewt-3_3_6.jar;
D:\Oracle\ora81\jlib\ewtcompat-opt-3_3_6.zip;
D:\Oracle\ora81\jlib\share-1_0_8.jar;
D:\Oracle\ora81\jlib\swingall-1_1_1.jar;
D:\Oracle\ora81\jlib\help-3_1_8.jar;
D:\Oracle\ora81\jlib\ice-4_06_6.jar;
D:\Oracle\ora81\network\jlib\sysmanmaf.jar;
D:\Oracle\ora81\owm\jlib\owm-2_1.jar;
D:\Oracle\ora81\owm\jlib\help\elogin\help"
Oracle.security.admin.lio.lioa.LioaApp Oracle.security.admin.lio.lioa.LioaApp -nojit)
6. 到這里4中的三項服務仍不能啟動,因為工作還沒做完。
到java.sun.com網站下載jre軟件,要1.2.2以上的版本,然后安裝在你的機器上,安裝完成后用其中的bin目錄和lib目錄覆蓋d:\orant\ora81\apache\jdk\jre下的bin目錄和lib目錄。到這里以上三個服務就可以順利啟動了。
Win2000上安裝Oracle 9i
問題:
在win2000server中安裝Oracle9.2時,加載文件是出錯,安裝Oracle8就不會出錯
解答:
需要打Sp1以上的補丁才行
同一臺PC機上安裝8I和9I
問題:
安裝時C:\PROGRAMME\ORACLE安裝程序回覆蓋先安裝的版本文件。不知道怎樣才能避免一切可能出現的沖突問題
解答:先裝8 后9,分主目錄裝。還有,如果在某個已經存在的Oracle_home中安裝,當你修復或更新Oracle,或者添加其他產品選項時,你應該確定停止從特定主目錄中運行的任何Oracle服務。
Oracle 9i的安裝過程
環境:New CY1G, 256+128M, win2000 SP3,Oracle 9.2.0.1.0
1.啟動OUI(Oracle universal installer),選擇下一步。
2.選擇安裝的產品,即Oracle Database。點擊下一步。
3.選中“標準版”,需要2.8G的空間,(這些安裝類型的主要差別是產品被授予許可的方式不同,企業版僅僅包括每個可能的選項,而標準版要求有想使用的每個選項的單獨授予許可。個人版意味著滿足測試目的的單機安裝)點擊下一步。在“數據庫配置選項”中,選中只安裝Oracle軟件(Software Only),不安裝數據庫,待安裝完Oracle軟件后,用DBCA創建數據庫。
4.安裝完Oracle軟件(不含Oracle數據庫)后,啟動DBCA (DataBase Configuration Assistant),將一步步指導你創建數據庫(New Database)。
5.創建完數據庫后,啟動NCA(Net Configuration Assistant),為數據庫配置監聽器。
Oracle Net Configration Assistan:
監聽程序配置:直接下一步,監聽程序名為默認的Listener,網絡協議為TCP,使用默認端口1521。命名方法配置:選中本地命名。
本地Net服務名配置:即修改本地tnsnames.ora文件,添加,選擇下一步,輸入數據庫全局名,在網絡協議里選擇TCP,輸入主機名,使用標準端口。使用sys用戶測試。
6.現在可以獨立登陸OEM(Sys/password as sysdba)
7.建立資料檔案庫,啟動EMCA(Enterprise Manager Configuration Assiatan),為數據庫創建資料檔案庫。
8.創建資料檔案庫完成后,可以啟動Console登陸到Oracle managerment server,默認用戶名為sysman/oem_temp。
Oracle在雙機備份服務器中的安裝步驟
1、在其中一臺電腦上安裝完整的Oracle 數據庫(通過自定義安裝,不要創建數據庫實例)
2、通過Oracle配置助手創建數據庫,將所有數據庫文件包括控制文件、表空間文件,日志文件等路徑指定到磁盤柜上。
3、在另一臺電腦上安裝Oracle數據庫,指定數據文件到磁盤柜上,覆蓋以前建立的數據文件。
4、要保持文件Oracle\ora81\database\PWDmyora.ora兩臺機子文件一樣,比如你在A機上導入dmp文件,需要把PWDmyora.ora拷入到B機上。
5、將兩臺機子的Oracle服務改成手動模式,通過dataware軟件實現切換。
刪除Oracle之一
軟件環境: 1、Windows 2000+ORACLE 8.1.7
2、ORACLE安裝路徑為:C:\ORACLE
實現方法:
1、 開始->設置->控制面板->管理工具->服務,停止所有Oracle服務。
2、 開始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer,卸裝所有Oracle產品,但Universal Installer本身不能被刪除
5、 運行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個入口。
6、 運行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動這個列表,刪除所有Oracle入口。
7、 運行regedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,刪除所有Oracle入口。
8、 開始->設置->控制面板->系統->高級->環境變量 刪除環境變量CLASSPATH和PATH中有關Oracle的設定
9、 從桌面上、STARTUP(啟動)組、程序菜單中,刪除所有有關Oracle的組和圖標
10、刪除\Program Files\Oracle目錄
11、重新啟動計算機,重起后才能完全刪除Oracle所在目錄
12、刪除與Oracle有關的文件,選擇Oracle所在的缺省目錄C:\Oracle,刪除這個入口目錄及所有子目錄,并從Windows 2000目錄(一般為C:\WINNT)下刪除以下文件ORACLE.ini、oradim73.ini、oradim80.ini、oraodbc.ini等等。
13、WIN.INI文件中若有[ORACLE]的標記段,刪除該段
14、如有必要,刪除所有Oracle相關的ODBC的DSN
15、到事件查看器中,刪除Oracle相關的日志
說明:
如果有個別DLL文件無法刪除的情況,則不用理會,重新啟動,開始新的安裝,
安裝時,選擇一個新的目錄,則,安裝完畢并重新啟動后,老的目錄及文件就可以刪除掉了。
刪除Oracle之二
如果需要卸載Oracle,請運行安裝光盤上的安裝文件Setup.exe,在“歡迎”窗口中,選擇“卸裝產品”按鈕,進入“Invertory 目錄”窗口: 在該窗口中選擇需要刪除的產品(在產品名稱前面的方框內打上在標記√),然后單擊“刪除”按鈕即可;或者直接在開始菜單中找到Oracle for NT程序組下的Oracle installer,同樣可以卸載Oracle。
卸載Oracle產品后,在系統的注冊表內仍然有相關信息,您可以參考以下方法進行手工刪除。
注意:對注冊表的操作可能對系統產生嚴重影響,請在操作前進行備份,以便在系統異常時恢復到原來的注冊表。該操作請參考Windows系統的相關說明。
運行RegEdit,在“HKEY_CURRENT_USER\Software”、“HKEY_LOCAL_MACHINE\Software”、“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services”主鍵中刪除所有的Oracle入口(如果找到的話),然后重新啟動計算機,如一切正常,則修改完成,如啟動有錯誤,可能您對注冊表的修改出錯,運行RegEdit,將備份的注冊表項目導入;如果誤刪了注冊表中的“Microsoft ODBC for Oracle”,可用以下方法恢復:
將“HKEY_LOCAL_MACHINE\software\Microsoft\DataAccess”中的Version的值由‘2.1.1a’改為‘1.1.1a’然后重新安裝財務軟件,安裝程序會自動安裝 MADC,并恢復“Microsoft ODBC for Oracle”。 (對Windows95/98,請立即進入Dos方式,將備份的system.dat文件(如system.bak)復制回system.dat);
(對Windows NT,如啟動失敗,請重新啟動計算機,在提示下,按空格鍵啟動“硬件配置文件/已知的最新正確配置”菜單,該菜單將注冊表還原到穩定狀態。按照屏幕上的指示操作,可以將注冊表還原為上次成功啟動時的狀態。)
在XP上安裝Oracle9i老是報錯提示加載數據庫時出錯:areasQueris
解答:去除安裝路徑中的中文
無法啟動監聽器——Ora-12560錯誤
1、控制面板-->管理工具-->服務下面的查看OracleOraHome92TNSListener服務有沒有啟動,如果沒有啟動則啟動。
2、把tnsnames.ora和listener.ora里面的HOST(等于機器名或者等于IP地址例如:HOST = springal)值一定要保持一致。
3、多配置幾次監聽器然后啟動嘗試。
4、DOS下lsnrctl命令進入監聽器信息窗口,使用help查看命令幫助,然后使用相關命令查看監聽器情況,并多次stop和start。
5、查看注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener項并設置ImagePath>D:\Oracle\Ora92\BIN\TNSLSNR(你的安裝目錄)
6、查看你配置的監聽器端口有沒有被其他服務站用(默認的是1521端口),DOS下可以使用netstat –a查看。
7、查看你的防火墻或者防病毒軟件是否屏蔽掉了1521端口。
8、據說還與你的系統有關系,重新安裝一下windows 2000 SP3,這個問題通常與sp3有關系。
Oracle啟動時,監聽器不啟動或打開出錯
軟件環境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安裝路徑為:C:\ORANT
錯誤現象:
1、ORACLE啟動時,監聽器不啟動或打開出錯
2、服務器端:用username/password登錄正常,但用username/password@alias登錄不成功
3、客戶端:用username/password@alias登錄不成功
解決方法:
1、如果是因為修改了NT的機器名,則把listener.ora文件中的host參數全部改為新的NT機器名,
重新啟動OracleTNSListenr80服務即可。
例如:
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1521))
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1526))
)
2、使用監聽器實用程序:LSNRCTL80.exe
3、檢查監聽器參數文件:c:\orant\NET80\admin\listener.ora
4、檢查監聽器日志文件:c:\orant\NET80\log\listener.log
5、Tnsnames.ora文件配置錯誤,重新配置。
6、檢查client 端 Tnsnames.ora
在單機上安裝805,OracleTNSListener80不能啟動
問題:
我在win2000下安裝了ORACLE805,有網卡,但是沒有沒有連網。
解答:
1.805必須聯網,設置Microsoft loopback或使用816。直接把Listener的偵聽地址設到127.0.0.1上試試看。
2.把(PROTOCOL=ipc 和snmp)的配置刪除,我是在win98下裝的804,
listener.ora配置如下:
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 192.168.1.4)
(Port = 1521)
)
(ADDRESS =
(PROTOCOL = TCP)
(Host = 127.0.0.1)
(Port = 1521)
)
#被注釋 (ADDRESS =
# (PROTOCOL = SPX)
# (Service = y_lsnr)
# )
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = ADMIN
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = y)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = extproc)
(PROGRAM=extproc)
)
)
運行正常。
ORA-12516 TNS:監聽程序無法找到匹配的信息棧的可用句柄錯誤
先打開 TNSNAMES.ORA 這個文件, (位于 //OraHome1/network/admin/tnsnames.ora) ,確定(INSTANCE_NAME=) 和 INITsid.ORA 文件中的 實例名(執行項次) 匹配
ORA-12154 TNS不能解析服務名
使用Oracle的網絡配置助手“net configration assistant”刪除所有的網絡的配置(主要是監聽程序的配置和本地網絡服務名的配置),然后重新配置。可以使用如下命令察看是否你的數據庫服務器已經啟動(在 *** 作系統中的“服務”中顯示為啟動,但你的數據庫并不一定啟動了。在MS-Dos提示符下輸入:
C:\svrmgrl
SVRMGR:>connect to internal
密碼:<輸入你的密碼,如果不知道,輸入ORACLE試試>
如果連接成功,執行help可以察看命令。
SVRMGR>startup
如果提示你的數據庫已經啟動,則執行“stop”停止數據庫,然后再執行“startup”啟動。
無法啟動實例服務
控制面板-->管理工具-->服務下面的查看OracleServiceTest服務有沒有啟動,如果沒有啟動則啟動。如果啟動時候報找不到路徑,則查看注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceTest項并設置 ImagePath>D:\Oracle\Ora92\BIN\Oracle.exe test(你的安裝目錄,參數為你的服務名)以上兩則都可能是由于運行了注冊表軟件造成,比如優化大師之類,我個人的解決辦法是在掃描注冊表的時候略過HKEY_LOCAL_MACHINE。
在Windows平臺上,安裝Oracle后產生如下服務
OracleMTSRecoveryService
OracleOraHome92Agent
OracleOraHome92HTTPServer
OracleOraHome92TNSListener
OracleServiceTest——以上為缺省配置為自動啟動的
OracleOraHome92ClientCache
OracleOraHome92PagingServer
OracleOraHome92SNMPPeerEncapsulator
OracleOraHome92SNMPPeerMasterAgent
設置自動啟動數據庫
可通過修改注冊表來實現:
hkey_local_machine->software->microsoft->windows->currentversion->run->添加一個鍵值Oraclestart->其值為:c:\Oracle\ora81\bin\oradim.exe -startup -sid 數據庫別名 -usepwd Oracle -starttype inst
在啟動ORACLE服務時無法啟動‘OracleOracleAgent’
問題:提示錯誤如下:“在本地計算機無法啟動OracleOracleAgent服務。錯誤:3221356559”
原因:
The Intelligent Agent stores all jobs and event requests in a series of queue files in the network/agent directory. Upon startup, the Agent compares the actual hostname of the server to the hostname stored in the queue files. If the hostname of the server changes, the Agent will not recognize the queue files and will consider them corrupt. Then, the Agent will not start.
解答:
1. Remove the services.ora and all "q" files (*.q) from the $Oracle_Home\network\agent directory
2. Re-start the Intelligent Agent.
技巧:
This fix should be done with the understanding that any jobs or events registered against that Agent will be lost. Any active jobs or registered events against this agent should be removed from OEM console before deleting the agent’s *.q files.
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist錯誤
問題:
剛剛裝上Oracle8.1.7以后(安裝過程非常正常),運行以下操作,一切正常。
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 20:01:20 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
連接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
但是只要重啟電腦,再運行同樣操作,就會出現如下的問題:
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 19:28:25 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
此時查看Oracle進程,所占用內存不到10m。
但是只要執行完Database Configuration Assistant--〉更改數據庫設置后,
再次執行如上操作,就能正常運行:
此時Oracle進程占用內存接近100m,應該比較正常。
但是只要重新啟動,就會依然出現
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
這種錯誤,只能用Database Configuration Assistant更改數據庫設置后才能使用,重啟后問題依舊。讓我百思不得其解。
解答:
數據庫實例沒隨計算機啟動。
1.數據庫啟動參數中是否有非PUBLIC回滾段! 要是有的話就先屏蔽掉,等創建完回滾段后重新打開,應該就沒有問題了。當時在ORACLE 7下成功。當時我用原有的數據庫配置參數(*.ORA)文件創建以后就出現了上面的問題。
2.建議此時手動啟動服務,觀察如果出現缺少路徑的提示,可以參照上文設定相關路徑。
ORA-12500: TNS: 監聽程序無法啟動專用服務器進程
1.lsnrctl status
2.lsnrctl start
3.sqlplus /nolog
4.connect / as sysdba
5.startup nomount
6.alter database open
逐步分解查找問題。
有可能是listener.ora文件被破壞了,遇到過類似的問題,重新配置listener.ora就可以了。
ORA-04031:unable to allocate … byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers")
問題:
DELL服務器裝不上ORACLE8.1.5的問題,出現下面的錯誤提示是在建立數據庫之前,系統先要檢查內存時出現的,
ORA-04031:unable to allocate 85141440 byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers"),是不是內存不夠?但實際物理內存是2G?什么原因呢?
解答:
在安裝時,把SGA區、JAVA池等東西的內存配小一些
ORA-01092 : Oracle instance terminated disconnection forced錯誤
Problem:
Your Oracle Server database on OpenVMS crashes. The following errors are reported: Background process DBWR unexpectedly terminated with error 1092
ORA-1092 Oracle instance terminated
ORA-313 open failed for members of log group 'n' of thread 'n'
ORA-600 [3228] reported from a PL/SQL script.
Explanation:
The most significant error reported here is the ORA-313 error. This error indicates a failure to open a file which indicates a problem with OpenVMS resources. When either CHANNELCNT and/or FILLM are too small, these errors can result.
Solution:
Increase the SYSGEN parameter CHANNELCNT. This should be done by an OpenVMS system manager and requires a reboot of your OpenVMS node. For more information on SYSGEN, please review the OpenVMS documentation.
If the CHANNELCNT parameter is already large enough to allow the expected number of files to be opened, check the FILLM quota. Review two areas when you check FILLM:
1) The Oracle background processes (PMON, DBWR, LGWR etc.)
2) The SERVER side (or SHADOW) process created when you use SVRMGRL to start the database. To get an idea of the quota available, use the command: $ SHOW PROCESS /QUOTA /ID=<pid> Where <pid> is the OpenVMS pid of the process to be reviewed. This command displays the remaining 'Open file quota' (FILLM) for the process, as well as other available quotas.
Example:
You have 226 data files, eight REDO log files and three control files for a total of 237 files. The SYSGEN setting for CHANNELCNT is at the default of 256. During normal operation, Oracle periodically needs to open additional files. These include the INIT parameter files, the ALERT log, various DCL scripts, trace files, etc. Under these conditions, a CHANNELCNT value of 256 is too small to accommodate the number of files that Oracle/OpenVMS needs open at the same time.
For most systems the default quotas should be adequate.
If not, please describe the infor u've encountered
ORA-00059錯誤及字符集修改
問題:在DBA studio中下的例程‘數據庫’自動變為已啟動,無法裝載也無法打開,提示‘ORA-00059??LOG--FILES????’在這種情況下如果不卸載重裝解決,能有其它的辦法嗎?
一般來說ORA-00059多出現maximum number of DB_FILES exceeded的錯誤,由于你機器上的字符集設置有些問題,所以 錯誤提示 變成了??,(字符集設置不對照成的) 雖然看的出于問題可能和Log file有關,但不確定.請修改Oracle的字符集
[字符集修改方法]
SQL> desc props$
列名 可空值否 類型
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)
SQL> col value$ format a40
SQL> select name,value$ from props$;
NAME VALUE$
------------------------------ -------------------------
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY$
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS.,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3
查詢到14記錄.
NLS_CHARACTERSET這個參數應該是ZHS16GBK,如不是,改為它。
ORA-12203:TNS:unable to connect destination錯誤
問題:
在Windows2000下安裝8.0.5,選擇none,沒有建立實例,為什么在執行svrmgr30 時報告Ora-12203:tns:unable to connect destination!
解答:
因為沒有創建實例,也就沒有環境變量。可參考“手工創建數據庫的全部腳本和說明”。
注意其中:
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
Ora-12571:TNS:包寫入程序失敗
把虛擬內存設的大一些
Ora-12705錯誤
Cause: There are two possible causes: Either an attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value; or the NLS_LANG environment variable contains an invalid language, territory, or character set.
Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable. For more information about the syntax of the ALTER SESSION command, see Oracle8i SQL Reference.
ORA-03113:通信通道的文件結束
Cause:
An unexpected end-of-file was processed on the communication channel. The problem could not be handled by the SQL*Net, two task, software. This message could occur if the shadow two-task process associated with a SQL*Net connect has terminated abnormally, or if there is a physical failure of the interprocess communication vehicle, that is, the network or server machine went down.
Action:
If this message occurs during a connection attempt, check the setup files for the appropriate SQL*net driver and confirm SQL*Net software is correctly installed on the server. If the message occurs after a connection is well established, and the error is not due to a physical failure, check if a trace file was generated on the server at failure time. Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.
Explanation:
There are numerous causes of this error. It is a 'catch all' type error which means 'I cannot communicate with the Oracle shadow process'. This usually occurs when the Oracle server process has died for some reason.
ORA-12515:TNS:監聽進程無法找到該演示文稿的句柄
解決方案是檢查目標服務器網絡配置,并使其接受HTTP的協議。如果你是使用一般數據使用,建議使用新的數據庫實例。
ORA-01031:insufficient privileges
Cause: An attempt was made to change the current username or password without the appropriate privilege. This error also occurs if attempting to install a database without the necessary operating system privileges. When Trusted Oracle is configure in DBMS MAC, this error may occur if the user was granted the necessary privilege at a higher label than the current login.
Action: Ask the database administrator to perform the operation or grant the required privileges. For Trusted Oracle users getting this error although granted the appropriate privilege at a higher label, ask the database administrator to regrant the privilege at the appropriate label.
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
問題:ORACLE8.1.7.0.0版本,,不知是哪里的問題,用internal 和 system 都無法登陸,錯誤提示:ORA1031 、ORA1017
解答:還有沒有其他DBA身份的用戶,如果有,最好登陸進去,然后alter user system identified by YOURPASSWORD; 你的系統密碼被人修改了
ORA-03121:沒連接接口驅動程序
Cause: This message occurs usually because the Net8 driver is not loaded into memory or there is a mismatch of the version of the driver. A user program linked with an obsolete library may also cause this message. Only programs provided by Oracle Corporation should use this interface.
Action: If the message occurred during use of a program provided by Oracle Corporation, contact Oracle Support Services. If a user program caused the message, relink the program with current versions of the Oracle libraries.
ORA-12638:憑證檢索失敗
問題:
2000ad server SP2 具域網,在網絡連接的情況下按裝ORACLE8I,到創建數據庫,初始化數據庫時,提示“ORA-12638 憑證檢索失敗”,裝了幾次都是這樣
解答:
憑證檢索失敗的錯誤一般都與網絡用戶集成有關,ORACLE中對于這個問題的管理是在SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES進行控制的,默認安裝都是SQLNET.AUTHENTICATION_SERVICES= (NTS)表示安裝ORACLE的用戶是通過操作系統的集成認證控制的,所以,我們只要把這個參數值屏蔽掉就行了。
修改\Oracle\Ora81\network\ADMIN目錄下SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES= (NTS)為# SQLNET.AUTHENTICATION_SERVICES= (NTS)
ORA-00604: error occurred at recursive SQL level 2
Cause: An error occurred while processing a recursive SQL statement (a statement applyingto internal dictionary tables).
Action: If the situation described in the next error on the stack can be corrected, do
so; otherwise contact Oracle Customer Support.
ORA-04030 out of process memory when trying to allocate string bytes (string,string)
Cause: Operating system process private memory has been exhausted.
Action: See the database administrator or operating system administrator to increase process memory quota. There may be a bug in the application that causes excessive allocations of process memory space.
ORA-04031:unable to allocate string bytes of shared memory("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the DBMS_SHARED_POOL package topin large packages, reduce your use of shared memory, or increase the amount ofavailable shared memory by increasing the value of the initialization parametersSHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory,increase the initialization parameter LARGE_POOL_SIZE.
ORA-01555:snapshot too old: rollback segment number 9 with name "USER_RS5" too small
問題:一個存儲過程執行的數據大概有100萬條,在執行到幾十萬條的時候,遇到了如上異常。
解答:原因有兩個方面:
1、由于你的這個操作執行的時間太長,導致SNAP SHOT失效(太老了),導致你的操作失敗;
2、你的RBS太小,無法容納那么多的操作。
處理方法:
1、加大回滾段的大小(增加RBS表空間,修改回滾段的參數等)
2、你這種編程方法有問題,如果第一個方法不能解決問題,說明是因為執行時間過長,SNAPSHOT失效,需要你調整一下程序。是不是先把100萬記錄讀到內存里(內存不夠,可以采用文件作為緩沖),然后再做處理。也可以采用分段處理的方法,一次處理10萬條。
ORA-01589:must use RESETLOGS or NORESETLOGS option for database open
問題:在startup 之后出現錯誤提示
解答:
Cause: Either incomplete or backup control file recovery has been performed. After these types of recovery you must specify either the RESETLOGS option or the NORESETLOGS option to open your database.
Action: Specify the appropriate option.
你的數據庫以前做過Media Recovery,用OPEN DATABASE RESETLOGS或OPEN DATABASE NORESETLOGS打開數據庫就可以了。
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
缺省密碼
8i:
scott/tiger
internal/change_on_install
system/manager
sys/oralce(密碼也可能是manager或change_on_install)
9i:
scott/tiger
sys/change_on_install
OEM的用戶名/密碼:sysman/oem_temp
重設system用戶的密碼
可以通過以下方法登陸
sqlplus /nolog
conn / as sysdba
alter user system identifed by '123'
Oracle的密碼文件
8i一般位于$ORACLE_HOME/PRODUCT/8.1.6/DBS/ORAPWD_[SID].ORA
如何激活用戶
8i:在DBA Studio里面,有“用戶”--然后找到用戶名--->然后選中“未鎖定”就可以了
Oracle的初始化文件
8i:安裝時設定的ORACLEHOME的目錄下會有:admin、oradata和ora81三個目錄,其中在admin目錄下的你安裝的數據庫目錄下的Prfile下的init.ora就是。
9i:在原來的目錄下看不到init文件了。不過你可以這樣:
create pfile from spfile;
這樣就可以看到init的文件了,因為9i里面的初始化文件有點變化。
Oracle 數據庫自帶數據的生成腳本
\ORACLE_HOME\rdbms\admin\SCOTT.SQL
日期亂碼
Oracle Server的設置如下
NLS_CHARACTERSET WE8ISO8859P1
NLS_LANGUAGE AMERICAN
NLS_NCHAR_CHARACTERSET AL16UTF16
機器上的注冊表
NLS_LANGUAGE AMERICAN_AMERICA.WE8ISO8859P1
問題:
Java程序傳日期到Oracle的function里,經過lower(to_char(xsched_date,'DY'))函數后,日期變成了亂碼。請問:
1. 我的字符集應當怎樣設置呢?
2. server的 NLS_CHARACTERSET 和 NLS_NCHAR_CHARACTERSET 不一樣,沒關系吧?NLS_NCHAR_CHARACTERSET 是什么意思?
解答:
1 先查看有關字符集的信息
SQL>col value$ format a40
SQL> select * from nls_database_parameters;
SQL> select * from V$NLS_PARAMETERS;
2 查得的主要對應client端的顯示
SQL> select * from sys.props$ WHERE NAME='NLS_LANGUAGE';
//可以把'AMERICAN' 改為'SIMPLIFIED CHINESE ',不過這個于本問題無關
3修改字符集
SQL> select * from sys.props$ WHERE NAME='NLS_CHARACTERSET';
//把你機器上的WE8ISO8859P1改為
SQL>UPDATE sys.PROPS$ SET VALUE$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
SQL>commit;
4 NLS_NCHAR_CHARACTERSET AL16UTF16 其中的UTF16為ZHS16GBK的子集,可顯示大多數漢字。
更改字符集
最好不要修改 props$表,可能會引起不正常的工作。
如果是客戶端 ,修改注冊表即可;
服務器端 "alter database character set 字符集"即可
Oracle客戶端打包安裝問題
我的程序是C/S架構的,所以客戶端電腦都要安裝ORACLE的客戶端程序,不知道有沒有辦法,將ORACLE的客戶端安裝程序打包進我的安裝程序,進行自動安裝。
解答:
1.其實ORACLE的安裝很簡單,你先安裝一套客戶端,然后把這些文件打包(從ORACLE_HOME開始全部取出),把注冊表中的ORACLE部分導出。然后自己編寫一個安裝程序,把這些文件按照某個路徑拷貝(不要修改相對路徑),如果你安裝的ORACLE_HOME改變了,就修改REG中的ORACLE_hone參數,然后將REG文件裝入。這些都可以通過編寫程序來實現。
2.實際上Oracle驅動微軟也有,主要就缺那個網絡服務名,用Filemon.exe軟件跟蹤一下,看看要用到些什么東西。
無法確定主機IP錯誤
問題:
Win2003+Oracle 9iR2
安裝的時候告訴我無法確定主機的IP,忽略后又報了幾次,最后還是不能安裝
解答:修改hosts文件。確認nslookup命令可以正確執行
沒有域名時設置Oracle9i中全局數據庫名
set globle_name=false
雙網卡連接外網問題
問題:
服務器雙網卡,一個內部用,一個通外網,裝ORACLE8I,客戶端連接服務器,當把外網網線拔掉,連接正常,把外網網線插上,連不上。
解答:把內部網的網關去掉,再在上面加一個NETBEUI協議這樣就可以了。
Oracle9i數據庫的企業版和標準版的區別
Oracle9i數據庫的企業版和標準版最主要的區別在于企業版有更強大的并行和分布式處理能力,標準版是專為開發、部署和管理部門級 Internet 應用程序而設計的數據庫管理系統,是用于傳統的部門級應用程序的一流數據庫。而應用超出部門級標準或訪問數據庫的人較多時,則應當選用企業版。
標準版包含下列組件: Jserver Enterprise Edition
InterMedia
Enterprise Manager
Workflow Standard Edition
Standard Management Pack
Object Option
Networking kit
Object for OLE
Distributed Option
64 bit Option
ODBC Driver
Sql*Plus
OCI
企業版包括標準版中所有組件,并且還含有下列額外的組件:
Jserver Enterprise Edition
InterMedia
Object Option
Networking kit
Object for OLE
Advance Replication Option
Distributed Option
Parallel Query Option
SQL*Plus
VIR
Workflow Enterprise Edition
Advanced backup & recovery
Connection Pool
64 bit Option
ODBC Driver
OCI
Enterprise Manager
Enterprise Backup Utility
另請參考http://www.Oracle.com.cn/cgi-bin/topic_show.cgi?id=117&h=1&bpg=13&age=0
Oracle與IIS地址沖突
問題:
我的機器的系統盤是 c 盤,Oracle8i也安裝在c盤,以前我把我的網站在“控制面板----管理工具——Internet服務管理器”中已經設置好了IIS的配置,所以在以前一打開http://127.0.0.1就可以看見我的網站,自從安裝了Oracle8i后,在打開http://127.0.0.1時,顯示的是關于Oracle的一個頁面,在IIS中的默認WEB站點已經“停止”了,當我再重新啟動的時候,說是“地址已被使用!”。我不知道該怎樣恢復成以前的情形。
解答:在服務管理里面停止ORACLE HTTP服務
一個控制文件被損壞,如何啟動
系統環境:
1、操作系統:Windows 2000 Server,機器內存128M
2、數據庫:Oracle 8i R2 (8.1.6) for NT 企業版
3、安裝路徑:C:\ORACLE錯誤現象:因硬盤有壞道,一個控制文件損壞了,或人工誤刪一個控制文件,控制面板的Oracle相關服務可以啟動成功,但用SQL*Plus無法連接,顯示以下錯誤
ORA-01034: ORACLE not available解決方法:
C:\>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown abort修改init.ora(C:\Oracle\admin\oradb\pfile\init.ora)文件,使無法使用的控制文件不在control_files參數中定義修改前
control_files = ("C:\Oracle\oradata\oradb\control01.ctl", "C:\Oracle\oradata\oradb\control02.ctl",
"C:\Oracle\oradata\oradb\control03.ctl")
修改后
control_files = ("C:\Oracle\oradata\oradb\control01.ctl", "C:\Oracle\oradata\oradb\control02.ctl")svrmgrl>startup
注意:最少要有兩個控制文件的存在,即使一個也可以正常應用。
某個數據文件損壞,如何打開數據庫——ORA-01033: ORACLE initialization or shutdown in progress錯誤
系統環境:
1、操作系統:Windows 2000 Server,機器內存128M
2、數據庫: Oracle 8i R2 (8.1.6) for NT 企業版
3、安裝路徑:C:\ORACLE
錯誤現象:
因誤操作,數據庫中某一數據文件被誤刪,
控制面板的Oracle相關服務顯示已啟動,但用SQL*Plus無法連接,
顯示以下錯誤
ORA-01033: ORACLE initialization or shutdown in progress
模擬現象:
create tablespace test datafile
'c:\test.ora' size 5M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
default storage (initial 128K next 1M pctincrease 0)
/
關閉所有服務stop.bat
net stop "OracleWebAssistant0"
net stop "OracleOraHome81TNSListener"
net stop "OracleServiceORADB"
shutdown
在操作系統中刪除test.ora文件
重新啟動服務start.bat
net start "OracleWebAssistant0"
net start "OracleOraHome81TNSListener"
net start "OracleServiceORADB"
服務里OracleServiceORADB顯示已啟動,但用SQL*Plus無法連接,
顯示ORA-01033: ORACLE initialization or shutdown in progress
解決方法:
先讓該數據文件脫機,就可以打開數據庫
C:\>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown
svrmgrl>startup mount
--ARCHIVELOG模式命令,文件名要大寫
svrmgrl>alter database datafile 'C:\TEST.ORA' offline;
--NOARCHIVELOG模式命令
svrmgrl>alter database datafile 'C:\TEST.ORA' offline drop;
svrmgrl>alter database open;
--查詢數據文件聯、脫機狀態
SQL> select file#,name,status from v$datafile;
SQL> drop tablespace test;
表空間已丟棄。
丟失聯機日志文件
分兩種情況處理
1、丟失的是非活動的日志文件;
2、丟失的是當前激活的日志文件。
如果是第一種情況,而發生故障的日志文件組又具有多個成員,可以先將數據庫shutdown,然后用操作系統命令將損壞日志文件組中好的日志成員文件把損壞的成員文件覆蓋(在同一個日志成員組中的所有日志文件的各為鏡象的),如果其物理位置不可用可將其拷貝到新的驅動器上,使用alter database rename file ‘xxxx’ to ‘xxxx’改變文件位置,之后啟動數據庫,如果正常馬上進行一個冷備份。如果損壞的日志組中只有一個日志成員,先mount上數據庫,將其轉換為noarchivelog模式,執行alter database add logfile member ‘xxx’ to group ‘x’給相關組增加一個成員,再執行alter database drop logfile member ‘bad_file’將損壞的日志文件刪除,由于數據庫的結構發生變動需要備份控制文件,之后將數據庫改回archivelog模式,做一個冷備份。
如果丟失的是當前激活的日志文件,數據庫又沒有鏡像而且當前日志組中所有成員均變為不可用。首先將數據庫shutdown abort,從最近的一次全備份中恢復所有的數據文件,將數據庫啟動到mount狀態。如果原來的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改變文件的存放位置。然后,使用recover database until cancel命令來恢復數據庫,直到提示最后一個歸檔日志運用完之后,輸入cancel。之后用alter database open resetlogs打開數據庫,如果沒有問題,立即進行一個冷備份。注意!所有包含在損壞的redo log中的信息將會丟失,也就是說數據庫崩潰前已經提交的數據有可能會丟失。這對于某些要求很高的應用將會損失慘重,因此應盡量使每個日志組具有多個日志成員,并且放置在不同的驅動器上防止發生介質故障。
需要升級或者購買服務了嗎
問題:
管理我單位的數據庫服務器,配置是: Compaq Alpha Es40 +512M+單800Mhz CPU. 只跑ORACLE數據庫。
因為對本單位的需求在系統設計的時候不很明確,以上配置是供貨商根據我單位當時的計算機應用情況配置的,Compaq的工程師在安裝的時候說機器很好,就是內存和CPU的配置小了點,我不太明白影響大不大。
沒想到的是,業務需求的增長大大超過了當初的預期,在最開始的時候客戶端的PC數量只有不超過50臺,不久很快就超過了100臺,我把unix系統下的單用戶進程數量調到了200,心想這應該沒多大問題了吧,結果是好景不長,不到半年200也不夠了,我現在把最大進程數調到了400。我想請教一下,Oracle服務器是不是為每一個客戶端在服務器單獨開一個進程?一臺服務器能夠聯接的客戶端數量相對于內存的大小在理論上是不是有個參考的經驗值?有的話大概是多少?
解答:
1.Oracle服務器可以分為專用服務器和共享服務器兩種。專用服務器為每個客戶端進程開啟一個服務器端進程;共享服務器則開啟數個服務器端進程,為所有的客戶端程序服務;
一般來說,采用專用服務器的話,你可以按照每個并發連接數需要2m內存來簡單計算。512M內存相對連接數較多,處理量較大的系統是不太夠的。Oracle9i 安裝就推薦512m內存了。
Oracle的設計思路是假設機器具有無限能力,在過去不怎么樣,因為機器性能差,但是隨著技術的發展,機器的能力倍增,而且代價也大大降低,花很少的錢就可以買到很好的機器了,現在看來,這種開發思路是極其成功的。
2.共享服務并不意味著不占用內存,只是采用共享池模式,將連接數據庫但暫時沒有數據作的用戶進程掛起,若并發用戶數量多而且頻繁時,會降低系統性能。
另Oracle數據庫使用內存最多的應該是SGA區,多數配置合理的系統中SGA區會占到系統內存的1/3甚至1/2以上,不合理的SGA區配置會極大地影響數據庫性能。至于SGA區大小和劃分與應用系統的數據量、客戶端數量、數據處理和程序代碼等相關。
根據我從事數據庫工作的經驗,2G內存應該是需要的,而且貴單位的數據庫很可能需要優化。
3.我覺得大家忽略了一點:系統負載不僅與用戶數有關,更多的與交易量相關。
數據庫中注冊用戶表可能達到幾千萬條,在創建時注意些什么設置
對超級大表,首先要注意的是存儲參數的設定,估計一下行數據量,對表最終的存儲空間要求大致估算以下,建表時設定好(next_extent和max_extents參數,以免最后表超過max_extents而無法擴展),pct_increase參數一定要設定為0,否則以后next_extent會呈幾何級數增長。
如果該表數據變化(增加、刪除、修改)頻繁,需要設定 PCT_FREE和PCT_USED參數(參數定義和用法請查找資料);如果空間足夠的話,最好在字段定義中不使用VARCHAR2數據類型,當前沒有數據也讓數據庫預留出空間,減少修改數據制造的數據碎片。
對超級大表的檢索、*** 作,主要靠索引,如何建好索引、用好索引是系統開發人員的職責。超級大表的檢索首先應該與主表分在不同的表空間(最好是不同的存儲介質),其次超級大表的檢索也會占很大的空間,檢索的存儲參數也是要設定好的。
對超級大表而言,一點點結構設計的不合理,甚至一句糟糕的程序代碼就可能使整個系統的性能讓人無法忍受。有些原則要記住:在超級大表上,不要存在與其他數據表的約束關系,約束關系可以通過程序代碼實現;對超級大表,不要隨意與其他數據表進行關聯,除非通過主鍵(至少是索引列)關聯且where條件能使用到索引;
如果你用到了ORACLE 8,對超級大表進行分區是非常有價值的。
重裝Oracle服務器后,恢復以前的數據系統環境
1、操作系統:Windows 2000 Server,機器內存128M
2、數據庫: Oracle 8i R2 (8.1.6) for NT 企業版
3、安裝路徑:C:\ORACLE
說明:
恢復的前提是要保留以下全部文件:
初始化參數文件INIT.ORA
所有數據文件
所有重做日志文件(聯機日志、歸檔日志)
所有控制文件
internal密碼文件
步驟:
1、重新安裝數據庫時,創建和原有數據庫相同的名字
2、shutdown
3、停掉NT上所有Oracle服務,刪除新建數據庫中的所有新建文件(和以上那些類似的文件)
4、將所有以上文件拷貝回原目錄
5、startup
日文系統改成英文的辦法
在注冊表中改一個鍵值。
具體如下:把HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> HOME0 -> NLS_LANG 的健值改成 AMERICAN_AMERICA.WE8ISO8859P1,然后就正常了。
Oracle 9i AS安裝錯誤
解決:按照它的提示編輯host文件,加上127.0.0.1 localhost #localhost
spfile 和 pfile異同
spfile,服務器參數文件是在Oracle9i及更高版本中一個新特性。其使Oracle9i可以更改大多數過去在使用數據庫聯機和用戶時不能動態更改的初始化參數。此外,服務器參數文件使Oracle9i能記住會話之間動態更改過的初始化參數的設置。
pfile,相當與Oracle8i及以前版本的Init.ora。
可以根據pfile建立spfile:如:create spfile from pfile =‘路徑/init.ora’
數據庫升級錯誤——不相關的字符集
數據庫從Oracle8.0.5升級到8.1.5,備份數據恢復時出現錯誤。錯誤提示:不相關的字符集(805到820)
1、重建Oracle 8i數據庫,建庫時指定同一字符集,再移植; 查看原數據庫字符集, select * from nls_database_parameters
2、設置原數據庫Oracle 805 的環境變量NLS_LANG與ora 8i數據庫一致,執行export時可以轉換字符集。
3、exp 與 imp 最好都使用Oracle 816 帶的,不要用Oracle 805 的exp 導出的dmp 文件,又用Oracle 816 的 imp 來導。
啟動 iSQL*Plus
要啟動 iSQL*Plus,請執行以下步驟:
連接到 Internet 或 Intranet,然后啟動 Web 瀏覽器。在 Web 瀏覽器的“位置”字段或“地址”字段中,輸入 Oracle9i HTTP Server URL,并接著輸入 isqlplus。iSQL*Plus URL 如下所示:http://machine_name.domain:7777/isqlplus
如果您不知道 Oracle9i HTTP Server URL,請向系統管理員咨詢。
按 Enter 鍵將轉到該 URL。Web 瀏覽器中將顯示 iSQL*Plus“登錄”屏幕。
在“用戶名”字段和“口令”字段中,輸入 Oracle9i 用戶名和口令。如果您不知道 Oracle9i 用戶名和口令,請向數據庫管理員咨詢。
將“連接標識符”字段保留為空可以連接到默認數據庫。輸入 Oracle Net 數據庫別名時,可以連接到默認數據庫以外的其他數據庫。如果已配置了限制的數據庫訪問,“連接標識符”字段就會變成可供選擇的可用數據庫的下拉列表。
單擊“登錄”,連接到相關數據庫。Web 瀏覽器上將會顯示 iSQL*Plus“工作屏幕”。
此時,您可以在“工作屏幕”的輸入區域中輸入并執行 SQL、PL/SQL 和 SQL*Plus 語句和命令。
Oracle 816中啟動Enterprise Manager
系統環境:
1、操作系統:Windows 2000
2、數據庫: Oracle 8i R2 (8.1.6) for NT 企業版
3、安裝路徑:C:\ORACLE
錯誤現象:
默認安裝完Oracle 816 for NT后,想使用Oracle816 for NT的OEM工具來管理數據庫,開始→程序→Oracle - OraHome81→Enterprise Manager→Console。這時系統出現以下畫面一:
點擊“確定”,出現畫面二、三。
在“添加管理服務器”欄上輸入本機IP地址,如:192.1.1.1,點擊“確定”,出現畫面四。
畫面顯示出的oradb就使本機名稱,點擊“確定”,出現畫面五,進行“Oracle Enterprise Manager 登錄”。
輸入口令/密碼:system/manager,點擊“確定”,出現畫面六,出現以下錯誤提示。
VTK-1000 : Unable to connect to the management server oradb. Please vertify that you have entered the correct host name nd the status of the Oracle Managerment Server.解決方法:
1、使用Enterprise Manager配置輔助工具
開始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
a、使用Configuration Assistant工具來創建一個新的資料檔案庫,如圖七。
單擊“下一步”,出現畫面八。
b、 先登錄 用戶名:system,密碼:manager,服務:oradb,注:輸入的用戶必須具有DBA權限,單擊“下一步”,出現畫面九。(9i為sysman/oem_temp)
c、再創建擁有此資料檔案庫的用戶,系統默認取機器名,這里我們設用戶名為:test,密碼:test,輸入兩遍口令,單擊“下一步”,出現畫面十。
d、因為輸入的是一個新用戶,系統要求指定用戶表空間,本例使用系統推薦,
單擊“下一步”,系統正在創建OEM_REPOSITORY表空間,創建完畢后出現畫面十一。
e、系統顯示“創建資料檔案庫概要”,單擊“完成”,顯示“配置輔助工具進度”,如圖十二。
單擊“顯示詳細資料”,可以看到系統正在創建各種對象的提示。
系統處理完成,單擊“關閉”,如圖十三。
2、 啟動OracleOraHome81ManagementServer服務:開始→設置→控制面版→管理工具→服務,如圖十四,找到Oracle相關服務的位置。
單擊“啟動”,如圖十五,如果上一步沒有創建資料檔案庫,則會啟動失敗。
把OracleOraHome81ManagementServer服務設置成自動啟動方式。
3、 重新進行Oracle Enterprise Manager 登錄:開始→程序→Oracle - OraHome81→Enterprise Manager→Console
Oracle Enterprise Manager 的默認管理員是 sysman/oem_temp,系統管理員應該馬上更改口令。
如圖十六,不要在管理員一欄直接寫sysman/oem_temp,而是分別輸入“用戶名/密碼”。
單擊“確定”,出現圖十七,安全警告,要求你立即更改sysman的口令。
本例輸入兩遍manager作為口令,輸入完口令后,單擊“更改”,系統正式調出“Oracle Enterprise Manager 控制臺 SYSMAN@oradb”的畫面。
備份和恢復數據庫的時候啟動OMS時總是提示VTD——0057連接資料檔案庫時出錯Oracle sysman emSDK client ons client NoDomainException
1.run "emca" to create a "repository" for oem
2.agentctl start
oemctl start oms
$ORACLE_HOME/network/snmp/peer/start_peer -a
3.oemapp dbastudio <= initial account/password=sysman/oem_temp
數據庫的創建腳本
系統環境:
1、操作系統:Windows 2000 Server,機器內存128M
2、數據庫: Oracle 8i R2 (8.1.6) for NT 企業版
3、安裝路徑:D:\ORACLE
建庫步驟:
1、手工創建相關目錄
D:\Oracle\admin\test
D:\Oracle\admin\test\adhoc
D:\Oracle\admin\test\bdump
D:\Oracle\admin\test\cdump
D:\Oracle\admin\test\create
D:\Oracle\admin\test\exp
D:\Oracle\admin\test\pfile
D:\Oracle\admin\test\udump
D:\Oracle\oradata\test
D:\Oracle\oradata\test\archive
2、手工創建初始化啟動參數文件:D:\Oracle\admin\test\pfile\inittest.ora,內容:
3、手工創建D:\Oracle\Ora81\DATABASE\inittest.ora文件,
內容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'
4、使用orapwd.exe命令,創建D:\Oracle\Ora81\DATABASE\PWDtest.ora
命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5
5、通過oradim.exe命令,在服務里生成一個新的實例管理服務,啟動方式為手工
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
6、生成各種數據庫對象D:\>svrmgrl
--創建數據庫
connect INTERNAL/Oracle
startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
CREATE DATABASE test
LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K,'D:\Oracle\oradata\test\redo02.log' SIZE 2048K, 'D:\Oracle\oradata\test\redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
控制文件、日志文件在上面語句執行時生成
connect INTERNAL/Oracle
--修改系統表空間
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
--創建回滾表空間
CREATE TABLESPACE RBS DATAFILE 'D:\Oracle\oradata\test\rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE(INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
--創建用戶表空間
CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\test\users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--創建臨時表空間
CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\test\temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE(INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;
--創建工具表空間
CREATE TABLESPACE TOOLS DATAFILE 'D:\Oracle\oradata\test\tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--創建索引表空間
CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\test\indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--創建回滾段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
--使回滾段在線
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
--修改sys用戶的臨時表空間為TEMP
alter user sys temporary tablespace TEMP;
--創建數據字典表
@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
@D:\Oracle\Ora81\Rdbms\admin\catproc.sql
@D:\Oracle\Ora81\Rdbms\admin\caths.sql
connect system/manager
@D:\Oracle\Ora81\sqlplus\admin\pupbld.sql
connect internal/Oracle
@D:\Oracle\Ora81\Rdbms\admin\catrep.sql
exit
--生成SQL*Plus幫助系統
sqlplus SYSTEM/manager
@D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql
exit
--修改system用戶默認表空間和臨時表空間
svrmgrl
connect internal/Oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit
7、將test實例啟動服務設置成自動啟動方式
D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto
啟動ARCHIVELOG模式
C:\>svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
版權所有 (c) 1997,1999,Oracle Corporation。保留所有權利。
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal
連接成功
SVRMGR>shutdown
已關閉數據庫。
已卸下數據庫。
已關閉 ORACLE 實例。
SVRMGR> startup mount
已啟動 ORACLE 實例。
系統全局區域合計有 57124108個字節
Fixed Size 70924個字節
Variable Size 40198144個字節
Database Buffers 16777216個字節
Redo Buffers 77824個字節
已裝入數據庫。
SVRMGR> alter database archivelog;
語句已處理。
SVRMGR> archive log start
語句已處理。
SVRMGR> alter database open;
語句已處理。
SVRMGR> alter system switch logfile; --強制系統進行日志切換,可馬上觀察到歸檔日志的產生
語句已處理。
SVRMGR> exit
服務器管理程序結束。
修改數據庫參數文件c:\Oracle\admin\oradb\pfile\init.ora,
取消以下語句的#注釋
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
關閉數據庫,重新啟動
查看C:\Oracle\oradata\oradb\archive目錄下,可以看到類似ORADBT001S01201.ARC的文件,說明歸檔成功
PLUS:Oracle9i中需要執行的部分
SQL> alter system set log_archive_dest_1 ="location=E:\Oracle\oradata\test\archive" scope = spfile;
SQL> alter system set log_archive_start = true scope = spfile;
補充一些概念
解釋init.ora參數文件中關于歸檔重做日志參數項的含義
歸檔模式是自動還是手工,true為自動,false為手工
log_archive_start = true
歸檔日志文件所保存的路徑
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
歸檔日志文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
歸檔命令:
啟動自動歸檔模式,系統重起后,將按init.ora中的參數log_archive_start的值設置歸檔方式
SVRMGR> archive log start
啟動手工歸檔模式
SVRMGR> archive log stop
查看歸檔信息:重做日志是否歸檔方式、是自動歸檔還是手工歸檔、歸檔路徑、最舊的聯機日志循序號
SVRMGR> archive log list
歸檔一個已滿,但沒有歸檔的聯機重做日志
SVRMGR> archive log next
歸檔所有已滿,但沒有歸檔的聯機重做日志
SVRMGR> archive log all
注意:一個事務即使不被提交,也會被寫入到重做日志中。
SYS下的程序包和程序包體僅STANDARD包體可以編譯為valid
問題:我的sys下的程序包和程序包體都是invalid.但是STANDARD包體可以編譯為valid.其他程序包都是invalid. 編譯時提示:
VBO-4553:PL/SQL 程序包編譯是不。有關詳細信息,請按該屬性頁上的顯示錯誤。ORA-06554:????? PL/SQL ???? DBMS_STANDARD
SQLPLUS連接時提示:ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
Error accessing package DBMS_APPLICATION_INFO
ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
解答:
用$ORACLE_HOME/RDBMS/ADMIN下面的相關文件重新創建一下這些包。
SYSDBA登陸運行
$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL
$ORACLE_HOME/RDBMS/ADMIN/CATPROC.SQL
如何實現:插入數據到數據庫A中的表TPROCESS,數據庫自動更新到數據庫B中的表TLOG?
1. at db1
chk tnsnames.ora
CONNECT_STRING_DB2 = ...
tnsping CONNECT_STING_DB2
sql> create public database link DB2 using 'CONNECT_STING_DB2';
2. at db2
chk tnsnames.ora
CONNECT_STRING_DB1 = ...
tnsping CONNECT_STING_DB1
sql> create public database link DB1 using 'CONNECT_STING_DB1';
3. at db1
sql> create trigger ... after insert ...
insert into USER.TABLE@DB2 ... <<== using database link !!!
:NEW.column1, :NEW.column2 ...
從一個字符集不是中文字符集的數據庫中EXP數據庫,然后導入到一個中文字符集的數據庫中
EXP/IMP是一種數據庫到出導入工具,但是在EXP/IMP對數據庫的字符集要求比較嚴格,如果EXP出的數據庫的字符集和導入數據庫的字符集不兼容。導入無法完成。此時需要采取一種特殊的方法進行操作。由于該操作是有一定危害性的操作,在操作過程中,數據庫突然出現故障的情況下,會導致數據庫可能無法正常啟動。因此操作前一定要先備份數據庫。
1、在原數據庫執行sqlplus,連接sys用戶,修改字符集參數,然后退出。
SQL> connect sys/******;
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
2、執行svrmgrl,關閉并重新開啟Oracle數據庫
SVRMGR> connect internal/******; (口令一般為"Oracle")
SVRMGR> shutdown immediate;
SVRMGR> startup mount;
SVRMGR> alter system enable restricted session;
SVRMGR> alter system set job_queue_process=0;
SVRMGR> alter database open;
SVRMGR> alter database character set ZHS16GBK;
SVRMGR> exit;
3、修改環境變量NLS_LANG
由 AMERICAN_AMERICA.WE8ISO8859P1
轉換為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
如果是WINDOWS,用Regedit修改ORACLE下的鍵值。如果是UNIX系統,修改環境變量:NLS_LANG=...;export NLS_LANG
如果是OpenVMS:修改Login.com文件中的設置,然后重新執行一次Login.com
4、執行exp導出數據
5、將環境變量NLS_LANG修改為原來的值
6、執行sqlplus,連接sys用戶,恢復字符集參數,然后退出。
connect sys/******; (口令一般為"manager")
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
7、重復步驟2,關閉并重新開啟Oracle數據庫
8、將導出的dmp文件導入目標數據庫(字符集為中文)
成功創建DBLink,但不能連接
問題:
ORACLE 8.1.6 for NT,現在需要連另一個ORACLE 8 FOR UNIX,當然是要建立DBLINK。但是建立本地網絡服務名時可以連接上了,所建DBLINK就是連接不上,為什么?
用select <xxx> from <表名>@<db_link>
錯誤是:ORA-02085: 數據庫鏈接ORA8I.US.ORACLE.COM與ORA8I相連結(ora8i 是DBLINK的名字)
解答:
如果你的源數據庫的GLOBAL_NAME=TRUE,那么你的DBLINK的名字必須和遠端數據庫的全局名一致,否則會發生2085 錯誤。
你可設置源數據庫的GLOBAL_NAME=FALSE,也可以在創建DBLINK的時候把DBLINK的名稱設置為遠程數據庫的全局名。
How to Configure the 9i Agent with Multiple Network Cards
fact: Oracle Intelligent Agent 9.0.1
fix:
Configuring the Version 9.0.1 Agent for Use with Multiple Network Cards (NIC)(From the Oracle IA User's Guide Release 9.0.1 Part Number A88771-02):
As with version 8.1.7 of the Intelligent Agent, 9i Intelligent Agent users have three options to configure the Agent on a machine with multiple network cards.By default the Agent will bind to the primary NIC on its machine ('le0' on UNIX platforms and 'network0' on Windows NT platforms). The other two options are:
a. Ability to bind to a NIC specified by the user.