入行以來,最害怕之一就是Oracle了。。前段時間在Linux上靜默安裝它,現在又在Windows下安裝它,而且過程也是充滿艱辛。。整個人就是被折磨過無數遍瀕臨崩潰狀態,我覺得能成功安裝它是一個講究幸運的事情,好了,下面開始記錄一些東西。或許以後還是可以參考一下!
==============================以上是抱怨的分割線==================================
1、先從完全卸載Oracle說起
之所以先講它是因爲我重複了10+遍了有。。完全卸載oracle才能再次嘗試安裝時有成功的可能。
1)計算機->管理->服務和應用程序->服務: 停止所有Oracle有關的服務;
2)開始->程序 裏查找Universal Installer裏卸載除dbhome_1(也許還有dbhome_2/dbhome_3)之外所有的組件;
3)找到dbhome_1所在的目錄,刪除;
4)註冊表刪除
刪除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目錄。
刪除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb爲開頭的鍵。
刪除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle開頭的鍵。
刪除HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services中所有以oracle或OraWeb爲開頭的鍵。
刪除HKEY_LOCAL_MACHINE/SYSETM/ControlSet001/Services/Eventlog/application中所有以oracle開頭的鍵。
刪除HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services中所有以oracle或OraWeb爲開頭的鍵。
刪除HKEY_LOCAL_MACHINE/SYSETM/ControlSet002/Services/Eventlog/application中所有以oracle開頭的鍵。
刪除HKEY_CLASSES_ROOT目錄下所有以Ora、Oracle、Orcl或EnumOra爲前綴的鍵。
刪除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 開頭的鍵。
刪除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle註冊表鍵以外的所有含有Oracle的鍵。
5)刪除所有與Oracle相關的目錄
c:\Program file\Oracle目錄、 ORACLE_HOME目錄、c:\Documents and Settings\系統用戶名、C:\Users\xxxx\Oracle(xxxx爲用戶名)、C:\Windows\System32\config\systemprofile\Oracle
6)開始->程序裏所有的與oracle相關的快捷啓動方式
確保以上全部刪除,重啓電腦即可。
2、安裝Oracle
2.1 安裝Oracle Database
1)首先需要注意的是,解壓包如下:
請同時選中這2個壓縮包再解壓,如果你只選擇一個解壓後再把另一個解壓到同目錄,會很容易出現目錄的錯亂。
2)解壓後的setup.exe請最好「以管理員身份」運行,經驗之談,不然會被各種權限的問題給搞死。。
3)步驟2的安裝選項最好是「僅安裝數據庫軟件」,這樣可以把Oracle Database配置工作與安裝過程解耦。這樣做是因爲在Oracle Database配置工作時很容易出錯,如果你忽略或中止,整個安裝過程沒有成功完成就會退出,下次你再安裝又會創建一個dbhome,造成紊亂;
4)步驟3選擇「單實例數據庫安裝」,步驟6的安裝目錄可以自己指定,但基目錄後面的目錄結構最好不要修改。字符什麼的最好用默認的即可~
5)安裝完成Oracle數據庫產品後,我們就開始着手數據庫實例的安裝與配置工作。
2.2 數據庫實例安裝與配置
6)開始->程序->Oracle->配置和移植工具:選擇Database Configuration Assistant(最好以管理員身份運行,否則安裝過程可能會提示:insufficient privilege權限不足)開始實例安裝工作。
7)安裝過程到Oracle Database Configuration Assistant時可能會出現如下錯:
解決辦法:開始->程序->Oracle->配置和移植工具:選擇Net Manager->本地->概要文件->Oracle安全特性->所選方法中去掉NTS
等待安裝過程完成即可。安裝後的「口令管理」千萬別忘了,解鎖被鎖的所有用戶併爲sys和system用戶設置你自己的密碼~
(PS:安裝成功真的要靠運氣……)
3、使用PL/SQL Developer
好了,如果足夠幸運成功安裝Oracle,那麼我接下來使用PL/SQL developer(以下簡稱PL/SQL)又是一頓折騰。
PL/SQL的使用要特別注意位數(bite)的概念,如果你的PL/SQL是32位的話,是無法加載64位的oci.dll的。
要注意以下概念:
“如果我plsql是32位的,說明它無法支持64位的oci.dll所以我就需要“曲線救國”,手動再安裝一個32位的客戶端供32位的plsql連接(32位的instant_client或win32_11gR2_client.zip),這時候我本地就相當於安裝了2個oracle客戶端,一個32位一個64位”
——你在安裝oracle的時候客戶端也一併安裝的,但由於我安裝的是64位的,如果PL/SQL不是64位的就麻煩了。。正確安裝位數對應的PL/SQL很重要!!!
正確安裝好位數對應的PL/SQL後,不要登錄,先配置:
這樣,你在tnsnames.ora裏面配置的數據庫別名就可以直接被使用了。如:
E:\app\xxxxxx\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora:
#ORCL爲數據庫別名 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
這樣,你在登錄PL/SQL時,Database那一項就會有你已經配置好的數據庫別名選項,而無需你自己輸入IP和端口之類的參數了。
4、創建表空間和用戶
創建表空間是需要最高權限的,一般是sys用戶,我們先在dos裏面登入:
注意。sqlplus可能碰上中文亂碼問題,別忘了設置環境變量:
或者用PL/SQL登錄,只不過Connect as選擇SYSDBA罷了。
1)表空間和用戶、表的關係:
一個表只能屬於一個表空間。一個用戶可以擁有多個表空間。 一個表空間可以有多個表。
一般情況下,一個用戶對應一個表空間。
表空間分爲:臨時表空間和永久表空間。我們可以命名不同的永久表空間,把功能相似的表放在同一個表空間下。表空間相當於一個“盛放表的容器”。
所以有這種語法:create(select) table 用戶名.表名……
2)創建表空間、用戶的步驟如下:
/*創建臨時表空間 ,可以不做*/
create temporary tablespace 臨時表空間名(如:soacloud_temp)
tempfile 'E:\oracle\oradata\XE\臨時表空間名.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*創建數據表空間(dbf文件由你自己指定,無需事先創建,運行該語句後會自動生成) */
create tablespace 表空間名 logging
datafile 'F:\app\oracle\oradata\orcl\pdborcl3\表空間名.dbf'
size 300m
autoextend on
next 100m maxsize 20480m
extent management local;
/*創建用戶並指定表空間 */
create user 用戶名 identified by 密碼
default tablespace 表空間名
temporary tablespace 臨時表空間名;
/*第4步:給用戶授予權限 */
grant connect,resource,dba to 用戶名; (dab權限慎給)
3)sys用戶和system用戶
system是數據庫內置的一個普通管理員,你手工創建的任何用戶在被授予dba角色後都跟這個用戶差不多。
sys用數據庫的超級用戶,數據庫內很多重要的東西(數據字典表、內置包、靜態數據字典視圖等)都屬於這個用戶,sys用戶必須以sysdba身份登錄。
查看所有的用戶:select username from dba_users;
5、service_name和sid
service_name:是這個數據庫對外宣稱的名字,外面的人要想連接我這個數據庫,你就在客戶端的連接串裏寫上service_name;
sid:一個數據庫可以有多個實例(如RAC),SID是用來標識這個數據庫內部每個實例的名字
windows環境查看oracle的sid和services_name
1)查看sid:
方法一:打開註冊表(win+R輸入regedit)->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraDb11g_home1->ORACLE_SID
方法二:sys用戶登錄,運行sql語句select instance_name from v$instance;
2)查看某數據庫的service_name:
方法一:E:\app\用戶名\product\11.2.0\dbhome_1\NETWORK\tnsnames.ora裏面的指定數據庫的SERVICE_NAME對應的內容
方法二:sys用戶登錄,運行sql語句
show parameter service_names
所以一個數據庫對應一個service_name,多個數據庫實例。
一般情況下,一個數據庫對應一個實例。windows下可以通過DBCA(Database Configuration Assistant工具)來創建一個instance實例。
jdbc的url用service_name和sid連接的不同方式
jdbc:oracle:thin:@<host>:<port>:<SID>
jdbc:oracle:thin:@//<host>:<port>/<service_name>