對像我們一樣的一般的程式員來說, 只需關注oracle的資料庫引擎中最重要的的3個引擎,
分別是: SQL指令碼引擎, PL/SQL指令碼引擎, 和JVM
(根據我目前的理解,引擎是與指令碼語言對應的概念. 但在此, 不妨暫時把JVM理解成一種引擎)
這三個引擎用於解析並執行由使用者進程發到oracle伺服器上的程式(單獨的SQL程式, PL/SQL程式, JAVA程式,或者它們的混合體!)
這三個引擎並不是彼此獨立的, 而是可以相互配合的,在需要的時候!
資料庫引擎將訪問並操作與使用者串連的oracle執行個體, 最終把使用者進程的請求徹底解析,產生一個結果.
然後此結果將通過oracle net組件, 反饋給使用者.
使用者收到正確結果! 使用者很高興! 結果很完美!
[問題] when和where的問題, 搞得我現在還很不高興!
問題1, when: oracle資料庫引擎在什麼時候被載入記憶體? 可以自己控制嗎? 不想讓它不明不白地就被載入記憶體了...
問題2, where: oracle資料庫引擎在哪? oracle引擎肯定在記憶體中,而且肯定一個進程或是多個線程, 那麼究竟在哪???
關於這個問題, 通過目前查閱的材料, 我只能暫時做以下結論(只是我自己的理解, 尚有待核實, 目前材料還不夠, so, 僅供參考! ^_^) :
可以肯定的是: 在WINDOWS的服務管理員中啟動 oracleService***後, 通過查看工作管理員, 可發現多了一個進程oracle.exe. 而且只多了一個進程!!! 大家一般的理解是: 這個操作的目的只是為了啟動伺服器端的oracle執行個體(也可以稱為oracle常式), 只是! 只是! 只是! 只是! 只是!
...
...
只是!?? 那麼現在想一下, oracle資料庫引擎在哪???
...
...
很想知道這個問題的答案. 但現在只能推測他就在oracle.exe中, 以子線程的形式存在於oracle.exe進程中!!
我現在的結論就是: oracle.exe由兩個重要部分組成: oracle執行個體_和_oracle資料庫引擎.
不知這種想法是否正確, 望高人指點迷津, 將不勝感激!
---------------------------------------------------------------------------------------------------------------------------------------------------
communicate freely...
share our minds friendly...
enjoy it quitely...