一.修改系統版本
Oracle10g時代,Red Hat版本還是4.x,根據不認識6.5版本,因此在安裝時作兼容性檢查時會報錯,解決辦法是更改系統版本信息文件/etc/redhat-release,將6.5改爲4.8。
二.設置內核參數
vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 101365
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.ip_local_port_range = 1024 65000
運行以下命令使其生效: #/sbin/sysctl -p 生效
使用sysctl -a查看
三.創建oracle用戶和組
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle -d /home/oracle
# chmod -R 755 /home/oracle
# chown oracle:oinstall /home/oracle
# passwd oracle
四.安裝Xmanager
如果你是在本機上安裝,可以忽略此步驟。我是在windows下用仿真終端遠程登錄Linux的,因此需要安裝Xmanager來顯示圖形界面。安裝完後,用Xshell以oracle登錄Linux,執行以下環境變量操作:
1
2
|
export DISPLAY=198.20.1.21.0:0 (198.20.1.21爲windows的IP) xhost + |
在終端會話選項下勾選 Forward X11 connections to: Xmanager,啓動Xmanager passive被動接受連接。
五.安裝Oracle
以oracle登錄:
1
|
cpio -idmv < 10201_database_linux_x86_64.cpio |
進入database目錄,執行:
1
|
. /runInstaller |
如果一切正常,應該會彈出以下界面:
填好數據庫名及管理用戶的密碼。如果不在這裏創建數據庫,也可以在安裝完成後,執行dbca安裝數據庫。點擊下一步。
系統兼容性檢查。下一步
點Install安裝
中途會報一個錯,點Continue忽略它,是此版本的一個Bug
配置助手,會自動幫你配置一些東西
開始安裝數據庫
完成後,會出現下面界面
此處可以重新配置sys及system的密碼,如果需要,點Password Management
出現上面界面時,先以root用戶登錄,執行root.sh後再點OK按鈕。因爲我之前裝過一次,所以會提示是否覆蓋。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@SMNG2021 10g] # ./root.sh Running Oracle10 root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /home/oracle/db/product/10g Enter the full pathname of the local bin directory: [ /usr/local/bin ]: The file "dbhome" already exists in /usr/local/bin . Overwrite it? (y /n ) [n]: y Copying dbhome to /usr/local/bin ... The file "oraenv" already exists in /usr/local/bin . Overwrite it? (y /n ) [n]: y Copying oraenv to /usr/local/bin ... The file "coraenv" already exists in /usr/local/bin . Overwrite it? (y /n ) [n]: y Copying coraenv to /usr/local/bin ... Creating /etc/oratab file ... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. |
完成後,點Exit,完成Oracle的安裝。
六.配置ora文件
/home/oracle/db/product/10g/network/admin/tnsnames.ora(本機登錄sqlplus需用到此文件)
1
2
3
4
5
6
7
8
|
CCBDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 198.20.1.21)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ccbdb) ) ) |
/home/oracle/db/product/10g/network/admin/listener.ora,(遠程客戶端登錄偵聽程序lsnrctl需用到此文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /home/oracle/db/product/10g ) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ccbdb) (ORACLE_HOME = /home/db/oracle/product/10g ) (SID_NAME = CCBDB) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 198.20.1.21)(PORT = 1521)) ) ) |
如果直接sqlplus “ /as sysdba “ 則使用的是UDP協議,直聯本機數據庫服務器。
如果sqlplus xydpb/xydpb@ods 則使用的是TCP協議,聯的服務器取決於tnsnames.ora裏的配置。而要讓ORACL偵聽TCP端口1521 需修改listener.ora
七.配置環境變量
1
2
3
4
5
6
7
|
ORACLE_BASE= /home/oracle/db ORACLE_HOME=$ORACLE_BASE /product/10g ORACLE_SID=CCBDB #與上面tnsnames.ora上配置的要一致 PATH=$PATH:$HOME /bin :$ORACLE_HOME /bin LD_LIBRARY_PATH=$ORACLE_HOME /lib : /usr/lib LANG=AMERICAN_AMERICA.ZHS16GBK export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG |
八.查看目前系統情況
已經建了很多dbf數據文件及控制文件等。
有如下一些配置文件
oracle服務已經啓動
八.啓動實例
1
|
sqlplus "/as sysdba" |
進入後執行
1
|
startup |
於是問題來了:
-
問題:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/home/oracle/db/product/10g/dbs/initCCBDB.ora’
解決:
到/home/oracle/db/product/10g/dbs下,執行cp initdw.ora initCCBDB.ora
-
問題:
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORA-00371: not enough shared pool memory,should be atleast 128265318 bytes
解決:
改initCCBDB.ora參數:
# Shared pool size should be, in general, equal to 5-10% of the
# available memory. Data warehouses typically do not require as much
# memory for shared pool as OLTP systems.
#shared_pool_size = 20M #DEMO
#shared_pool_size = 50M #SMALL
shared_pool_size = 400M #MEDIUM
#shared_pool_size = 800M #LARGE
-
問題:
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORA-01506: missing or illegal database name
解決:
打開initCCBDB.ora設置db_name = CCBDB
-
問題
ORA-01102: cannot mount database in EXCLUSIVE mode
解決 :
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[oracle@SMNG2021 dbs]$ pwd /home/oracle/db/product/10g/dbs [oracle@SMNG2021 dbs]$ ls hc_CCBDB.dat hc_ccbdb.dat init.ora initCCBDB.ora initdw.ora lkCCBDB orapwccbdb spfileccbdb.ora 查看使用lkCCBDB的進程 [oracle@SMNG2021 dbs]$ fuser -u lkCCBDB lkCCBDB: 19214(oracle) 19216(oracle) 19218(oracle) 19220(oracle) 19222(oracle) 19224(oracle) 19226(oracle) 19228(oracle) 19230(oracle) 19232(oracle) 19234(oracle) 19243(oracle) 20197(oracle) 20199(oracle) 25346(oracle) 殺了它們 [oracle@SMNG2021 dbs]$ fuser -k lkCCBDB lkCCBDB: 19214 19216 19218 19220 19222 19224 19226 19228 19230 19232 19234 19243 20197 20199 25386 [oracle@SMNG2021 dbs]$ fuser -u lkCCBDB |
-
問題
ORA-00205: error in identifying control file, check alert log for more info
-
解決:
打開initCCBDB.ora設置
# Define at least two control files by default
control_files = (/home/oracle/db/oradata/ccbdb/control01.ctl,
/home/oracle/db/oradata/ccbdb/control02.ctl,
/home/oracle/db/oradata/ccbdb/control03.ctl)
-
問題:
ORA-00201: control file version 10.2.0.1.0 incompatible with ORACLE version
10.2.0.0.0
ORA-00202: control file: '/home/oracle/db/oradata/ccbdb/control01.ctl'
解決:
打開initCCBDB.ora設置
compatible = 10.2.0.1.0
(sqlplus –version或sqlplus "/as sysdba"進入後可查看當前版本)
再次執行startup,成功!
可能有人會覺得多次改那配置很煩,爲什麼不一次性弄好再寫出來呢,其實這是爲了讓大家更瞭解一些問題,所以特意把問題都列出來了。
Oracle就這樣成功安裝了,接下來是創建表空間和用戶,根據自己需要吧!
九.創建表空間和用戶
-
查看目前用戶情況
1
|
SQL> select username from dba_users; |
USERNAME
——————————
MGMT_VIEW
SYS
SYSTEM
DBSNMP
SYSMAN
OUTLN
MDSYS
ORDSYS
EXFSYS
DMSYS
WMSYS
USERNAME
——————————
CTXSYS
ANONYMOUS
XDB
ORDPLUGINS
SI_INFORMTN_SCHEMA
OLAPSYS
SCOTT
TSMSYS
BI
PM
MDDATA
USERNAME
——————————
IX
SH
DIP
OE
HR
27 rows selected.
-
查看目前表空間情況
1
2
3
4
|
SQL> set line 120 SQL> col file_name for a50 SQL> col tablespace_name for a16 SQL> select tablespace_name,file_name,bytes/1024/1024 from dba_data_files; |
TABLESPACE_NAME | FILE_NAME | BYTES/1024/1024 |
USERS | /home/oracle/db/oradata/ccbdb/users01.dbf | 5 |
SYSAUX | /home/oracle/db/oradata/ccbdb/sysaux01.dbf | 240 |
UNDOTBS1 | /home/oracle/db/oradata/ccbdb/undotbs01.dbf | 30 |
SYSTEM | /home/oracle/db/oradata/ccbdb/system01.dbf | 480 |
EXAMPLE | /home/oracle/db/oradata/ccbdb/example01.dbf | 100 |
-
創建表空間
1
|
SQL> create tablespace ccbdbdata datafile '/home/oracle/db/oradata/ccbdb/ccbdb_data_10g_01' size 10240m autoextend off ; |
Tablespace created.
-
創建用戶及授權
1
|
SQL> create user ccbsmg identified by ccbsmg default tablespace ccbdbdata; |
User created.
1
|
SQL> grant unlimited tablespace to ccbsmg; |
Grant succeeded.
1
|
SQL> grant create session to ccbsmg; |
Grant succeeded.
1
|
SQL> grant create any table to ccbsmg; |
Grant succeeded.
1
|
SQL> grant delete any table to ccbsmg; |
Grant succeeded.
1
|
SQL> grant create any procedure to ccbsmg; |
Grant succeeded.
1
|
SQL> grant dba to ccbsmg; |
Grant succeeded.
-
創建索引空間(把索引的表空間與數據表空間分開,也可以不分開)
1
2
|
SQL> create tablespace ccbdbidx datafile '/home/oracle/db/oradata/ccbdb/ccbdb_data_10g_02' size 10240m autoextend off ; |
Tablespace created.
-
查看錶空間創建情況
1
|
SQL> select tablespace_name,file_name,bytes/1024/1024 from dba_data_files; |
TABLESPACE_NAME | FILE_NAME | BYTES/1024/1024 |
USERS | /home/oracle/db/oradata/ccbdb/users01.dbf | 5 |
SYSAUX | /home/oracle/db/oradata/ccbdb/sysaux01.dbf | 240 |
UNDOTBS1 | /home/oracle/db/oradata/ccbdb/undotbs01.dbf | 30 |
SYSTEM | /home/oracle/db/oradata/ccbdb/system01.dbf | 480 |
EXAMPLE | /home/oracle/db/oradata/ccbdb/example01.dbf | 100 |
CCBDBDATA | /home/oracle/db/oradata/ccbdb/ccbdb_data_10g_01 | 10240 |
CCBDBIDX | /home/oracle/db/oradata/ccbdb/ccbdb_data_10g_02 | 10240 |
大功告成!