歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

在SCO5下安裝Oracle 7.3.4 (4)

僅供參考:
4. ORACLE數據庫的安裝
4.1. 准備工作
用ora734用戶登錄後執行cd $ORACLE_HOME/dbs目錄,由於系統還沒有安裝數據庫文件,所以要先創建設置文件,執行cp init.ora initora734.ora,然後執行vi initora734.ora,如找到db_block_size則修改,否則增加一行為db_block_size = 8192,如找到db_name則修改,否則增加一行為db_name=ora734,如找到COMPATIBLE則修改,否則增加一行為COMPATIBLE=7.3.4.0,如找到unlimited_rollback_segments則修改,否則增加一行unlimited_rollback_segments = TRUE,另外,在/usr/ora734下執行以下命令,
cd /usr/ora734
mkdir oradata
cd oradata
mkdir ora734
chown -R ora734:dab /usr/oracle/oradata
以便為創建庫文件做好准備。
4.2. 建立數據庫
在ora734用戶登錄後,執行svrmgrl命令並回車,再執行以下SQL語句,
connect internal;
startup nomount ;
CREATE DATABASE ora734
CONTROLFILE REUSE
LOGFILE
GROUP 1 ('/usr/ora734/oradata/ora734/log11.log') SIZE 10000K,
GROUP 2 ('/usr/ora734/oradata/ora734/log21.log') SIZE 10000K,
GROUP 3 ('/usr/ora734/oradata/ora734/log31.log') SIZE 10000K,
GROUP 4 ('/usr/ora734/oradata/ora734/log41.log') SIZE 10000K,
GROUP 5 ('/usr/ora734/oradata/ora734/log51.log') SIZE 10000K
MAXLOGFILES 20
MAXDATAFILES 20
NOARCHIVELOG
EXCLUSIVE
CHARACTER SET ZHS16GBK
DATAFILE
'/usr/ora734/oradata/ora734/sysora734.dbf'size 100m AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
建立數據庫要注意:字符集的選定,如果要從舊的系統中將數據轉換過來,字符集要與舊系統的字符集一致,如果只有一個磁盤,則redo log的member只選取一個,這樣可以減少無關的I/O。
第二步:建立數據字典(在internal用戶下)
@/usr/ora734/app/oracle/product/7.3.4/rdbms/admin/catalog.sql
/
@/usr/ora734/app/oracle/product/7.3.4/rdbms/admin/catproc.sql
/
第三步:建立回退段,臨時表空間(在internal用戶下)
create tablespace user_data
datafile '/usr/ora734/oradata/ora734/usr1ora734.ora' size 10M reuse autoextend on next 5M maxsize unlimited;
create tablespace rbs_pafront
datafile '/usr/ora734/oradata/ora734/rbs1ora734.ora' size 500M reuse autoextend on next 5M maxsize unlimited;
create tablespace temporary_data
datafile '/usr/ora734/oradata/ora734/tmp1ora734.ora' size 200M reuse autoextend on next 5M maxsize unlimited default storage( initial 256k next 256k minextents 20 pctincrease 0 maxextents unlimited) temporary;
-- Change the SYSTEM users' password, default tablespace and
-- temporary tablespace.
alter user system temporary tablespace user_data;
alter user system default tablespace user_data;
-- Create 16 rollback segments. Allows 16 concurrent users with open
-- transactions updating the database. This should be enough.
create public rollback segment rbs_card storage(initial 5m next 5m minextents 10 maxextents 1000) tablespace rbs_pafront;
create public rollback segment rb1 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
create public rollback segment rb2 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
create public rollback segment rb3 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
create public rollback segment rb4 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
create public rollback segment rb5 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
create public rollback segment rb6 storage(initial 40K next 40K minextents 10 maxextents 50000 optimal 40m) tablespace rbs_pafront;
在以上的建立中,rbs_pafront為應用建立的用於回退的表空間
建立要點:
* 建立臨時表空間,INITIAL(in bytes)為n*SORT_AREA_SIZE+DB_BLOCK_SIZE,n的取值為同時進行排序操作的最小用戶數,NEXT=INITIAL,PCTINCREASE為0,MINEXTENTS為最大同時連接的用戶數。
* 建立回退段參數,INITIAL為最大表大小的0.1%,NEXT=INITIAL,MINEXTENTS=20(在每四個交易擁有一個回退段時,回退段的個數也據此建立)
第四步:建立默認的profile(以system用戶登錄)
@/usr/ora734/app/oracle/product/7.3.4/sqlplus/admin/pupbld.sql
/
至此,數據庫ora734已經建立完成,關閉數據庫,修改initora734.ora
rollback_segments = (rbs_card,rb1,rb2,rb3,rb4,rb5,rb6)
重新啟動數據庫。
4.3. 應用數據庫的安裝
第一步:建立應用系統用戶和表空間(以system用戶連入系統),以ora734用戶執行sqlplus system/manager,其中manager是system用戶的密碼,如果密碼被修改,請換成相應的密碼,建議修改system和sys用戶的密碼,修改方法如下,在以system用戶登錄成功後,執行alter user system identified by NEWPWD;再執行alter user sys identified by NEWPWD1;其中NEWPWD是system用戶新密碼,NEWPWD1是sys用戶新密碼。當提示成功後,修改密碼完成。當以system用戶登錄成功後再執行以下語句,以下語句中pa_front是前置的用戶名,pa_paic是該用戶的密碼。如有變化,請相應更改。
drop user pa_front cascade;
create user pa_front identified by pa_paic ;
grant connect,resource to pa_front;
alter user pa_front temporary tablespace temporary_data;
drop tablespace pa_tablespace;
create tablespace pa_tablespace datafile '/usr/ora734/oradata/ora734/pafront.dbf' size 800m autoextend on next 10m maxsize unlimited
default storage( initial 16k next 16k minextents 1 maxextents unlimited
pctincrease 0 ) online;
drop tablespace pa_tablespace_idx;
create tablespace pa_tablespace_idx datafile '/usr/ora734/oradata/ora734/pa_tablespace_idx.dbf' size 400m autoextend on next 10m maxsize unlimited
default storage( initial 256k next 256k minextents 2 pctincrease 0 maxextents unlimited )
online;
alter user pa_front default tablespace pa_tablespace;
建立用戶數據表空間和索引空間的要點:
* 如果有多個物理磁盤,將這些文件進行分布
* 數據表空間和索引表空間的數據文件一次給的足夠大,同時也要允許自動擴展
第二步:建立應用系統對象(表,索引等)
在建立表的存貯參數的選取要點:
* INITIAL為2*k*db_block_size* db_file_multiblock_read_count 的整數倍,k的取值與表的大小相關,
* NEXT=INITIAL,PCTINCREASE為0
* 設置MINEXTENTS時如果已知表的大小,則設置此值使初始分配空間為此表的大小,即 table size = INITIAL(in bytes) * MINEXTENTS;如果未知表大小,則估算
* 設置MAXEXTENTS為UNLIMITED
4.4. 應用數據庫的表的安裝
請執行隨應用程序分發的的SQL腳本來創建相應的表格及索引。詳細的SQL文本請參閱應用程序清單。
5. 數據庫性能調整
5.1. 內存調整
說明:以下統計參數中,要求系統運行一段時間後,統計參數才有意義,對於排序,應用程序應進行過排序操作。所有內存的增加要在不引起系統產生虛存交換的情況下進行(用sar -w 1 10000查看)。
5.1.1 shared_pool_size

服務器物理內存(M)
shared_pool_size
說明
64
6M

128
9M

256
20M


* shared_pool_size的確定依據:在連入一個正常操作用戶時執行下面語句:
SELECT SUM(value) "session_total_mem"
FROM v$sesstat, v$statname
WHERE name like 'session uga memory'
AND v$sesstat.statistic# = v$statname.statistic#;
假如系統使用時的用戶個數(指連接的session,下同)為n,則系統的總的shared_pool_size = n * session_total_max_mem
* shared_pool_size是否合適的檢驗
查看select sum(pins) pins,sum(reloads) reloads
from v$librarycache;
要求reloads / (pins + reloads) 越小越好,一般要小於0.01否則要增加shared_pool_size
另外要考慮v$rowcache
select sum(gets) gets,sum(getmisses) getmisses
from v$rowcache;
要求 gets*100/( gets + getmisses)接近於100%最好,一般要求大於90%
在shared_pool_size值增加到一定程度後,如果結果還沒有明顯變化,需要加大
SESSION_CACHED_CURSORS(注意:與OPEN_CURSORS的不同,OPEN_CURSORS只是對會話可打開最大CURSOR的限制,不影響性能)
select name,value
from v$sysstat
where name in (' session cursor cache count');
5.1.2 sort_area_size
以bytes為單位,查看
v$sysstat的sorts(memory),sorts(disk),sorts(rows)
在有較大的sorts(rows)時,sorts(disk)應盡可能小,sorts(disk)/sorts(memory)應小於0.1
5.1.3 log_buffer
log_buffer以bytes為單位,取值的參考為v$sysstat中的
redo entries /redo log space requests理想的情況,要求此值大於5000,如果過小,要增加log_buffer的值,但此值過大也不行。一般取值為163840或327680
5.1.4 db_block_buffers

服務器物理內存(M)
shared_pool_size
說明
64
20M

128
80M

256
120M

db_block_buffers以db_block_size為單位,取值的參考為v$sysstat中
physical reads/(db block gets+consistent gets)
該值接近與0最好
5.1.5 回退段
* 回退段的數量:設置回退段的個數為系統中最大事務數的四分之一,即每個回退段平均有四個事務運行。
* 如何判斷系統中回退段是否足夠?
連續執行下面兩個語句,
SELECT class, count
FROM v$waitstat
WHERE class IN ('system undo header','system undo block','undo header','undo block');
SELECT SUM(value) total_gets
FROM v$sysstat
WHERE name IN ('db block gets','consistent gets');
執行結束後,計算下面的四個比值
system undo header/total_gets
system undo block/total_gets
undo header/total_gets
undo block/total_gets
要求這四個值均小於0.01,否則考慮增加回退段。
5.1.6 檢查點調整
調整目標:減少檢查點,要調整的參數有CHECKPOINT_PROCESS, LOG_CHECKPOINT_INTERVAL,LOG_CHECKPOINT_TIMEOUT
設置CHECKPOINT_PROCESS=TRUE, LOG_CHECKPOINT_TIMEOUT=0
對於LOG_CHECKPOINT_INTERVAL要考慮redo log file的大小,設置為
( redo log file in bytes)/ 512 ,其中redo log file in bytes為創建時指定的大小(不是存貯在系統上實際文件的大小),512為操作系統的塊大小
5.1.7 redo log 設置
所有redo log文件的大小是相同的,為了減少檢查點,設置redo log文件為5M-50M左右。如果只有一個磁盤或系統用RAID 5,則每個redo log組只有一個成員。
系統至少要有兩個redo log組,設置合適的組使進行最大的數據更新(insert or update)操作時在alert文件中不出現thread 1 cannot allocate new log, sequence XXX,Checkpoint not complete為止。
對於單CPU系統,LOG_SMALL_ENTRY_MAX_SIZE和LOG_SIMULTANEOUS_COPIES參數不要做調整。
5.2. 不太重要的參數的調整
以下參數在上面的參數進行調整後,如果系統中內存還有較大的空閒內存時,進行調整。
* 內存參數
sort_direct_writes,sort_write_buffers,sort_write_buffer_size
設置sort_direct_writes為TRUE,系統將為每一個排序操作額外分配SORT_WRITE_BUFFERS * SORT_WRITE_BUFFER_SIZE的字節的內存用於直接磁盤操作。SORT_WRITE_BUFFERS * SORT_WRITE_BUFFER_SIZE為sort_area_size的十分之一。一般用系統默認值即可。
* 用戶表和索引freelist的競爭
當有多個用戶同時更新一個表時,可能會產生freelist的競爭,
SELECT class, count
FROM v$waitstat WHERE class = 'free list';
SELECT SUM(value) total_gets
FROM v$sysstat
WHERE name IN ('db block gets','consistent gets');
要求 count/total_gets越小越好,不要大於0.01,如果此值過大,只能在建表時增加FREELISTS的大小。

6. 數據庫啟動參數設置
6.1. 修改數據庫監聽設置和網絡解析設置
1)用ora734用戶登錄,檢查/etc目錄下是否有listener.ora和tnsnames.ora這兩個文件,如沒有,執行cp $ORACLE_HOME/network/admin/listener.ora /etc/和cp $ORACLE_HOME/network/admin/tnsnames.ora /etc/,將這兩個文件拷貝到/etc目錄;
2)修改/etc/listen.ora文件,將其中<oracle_sid>換成ORACLE_SID的內容,即ora734;修改/etc/tnsnames.ora文件,將其中<oracle_sid>換成ORACLE_SID的內容,即ora734;
3)由於需要聯接平保後台的ORACLE數據庫,因此需要在/etc/tnsnames.ora文件中增加平保後台的ORACLE數據庫聯接,在文件後面增加以下內容:
lutest =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= 10.16.100.2)(Port= 1528))
(CONNECT_DATA = (SID = lutest))
)
其中,第一個lutest是本地對應平保後台的SERVICE名字,10.16.100.2是平保主機地址,1528是平保主機ORACLE的監聽端口,第二個lutest是平保主機ORACLE數據庫的SID,請根據實際值進行相應修改。
4)試著啟動ORACLE數據庫;執行以下命令啟動數據庫:
svrmgrl
connect internal
startup
如提示already running.則先輸入shutdown命令,再執行startup。
5)試著啟動ORACLE監聽器:執行以下命令啟動監聽器:
lsnrctl
start
如提示already started,則先輸入stop命令,再執行start;
6.2. 設置成自動啟動數據庫
增加自動啟動功能,即在SCO系統啟動時自動啟動ORACLE;
1)用root用戶登錄;
2)執行vi /etc/oratab,將其中最後面的N改成Y;
3)執行vi /etc/rc.d/7/udaemons,在文件後面增加以下幾行:
su - ora734 -c /usr/ora734/app/oracle/product/7.3.4/bin/dbstart
su - ora734 -c /usr/ora734/app/oracle/product/7.3.4/bin/lsnrctl <<EOF
start
EOF
4)在正常關閉ORACLE數據庫後,重啟機器,檢查是否生效。
6.3. 關閉和啟動數據庫的命令
先用ora734用戶登錄
* 啟動數據庫
svrmgrl
connect internal
startup
* 啟動監聽器
lsnrctl
start
* 檢查監聽器
lsnrctl
status
* 關閉監聽器
lsnrctl
stop
* 關閉數據庫
svrmgrl
connect internal
shutdown [ normal | immediate | abort ]
其中normal是正常關閉,默認值;immediate是立即關閉,如果有聯接,則直接關閉;abort是無條件關閉,只在數據庫發生錯誤時使用。
6.4. 常見問題解決
* 監聽程序啟動失敗:
如果是TCP監聽失敗,請檢查/etc/listener.ora中的對應TCP的參數如IP地址和PORT端口;
如果是IPC監聽失敗,請先刪除/tmp/.oracle/sXXX,其中XXX是/etc/listener.ora中IPC監聽的KEY值;
* 數據庫關閉失敗:
請先確認數據庫已無其他聯接,即無程序在使用數據庫;如還無法關閉,則在執行svrmgrl後,輸入shutdown abort強行關閉數據庫;
  建立數據庫的shel&laquo;



Copyright © Linux教程網 All Rights Reserved