前天寫了Part I後,想想好像什麼東西好像沒交待清楚,昨天玩耍了一天後,才想到,還沒把TWO_TASK這個東西一起放進去,其實TWO_TASK這個環境變數不全然和remote password file相關,但是,每當遇到類似問題時,TWO_TASK就有可能需要被考慮進去,因此Part II就實驗這部份吧
《實驗環境》
[orar11@mylab ~]$ id
uid=504(orar11) gid=501(dba) groups=501(dba)
[orar11@mylab ~]$ echo $ORACLE_SID
R11LAB
[orar11@mylab ~]$ echo $TWO_TASK
[orar11@mylab ~]$ <<< TWO_TASK 沒東西哦! 看看connect as sysdba如何?
[orar11@mylab ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sat May 30 21:30:22 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
[實驗環境驗證: 沒問題,可以連]
****************************************************************************
實 驗 開 始
****************************************************************************
實驗目的:
如果把TWO_TASK EXPORT出去,會如何?
情境一: 隨意EXPORT TWO_TASK;
情境二: TWO_TASK和ORACLE_SID一樣;
情境三: 利用tnsnames connect
[[情境一: 隨意EXPORT TWO_TASK]]
[orar11@mylab ~]$ export TWO_TASK=JARWOW
[orar11@mylab ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sat May 30 21:35:46 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve service name
心中os: 蛤,無法識別 tns service name???
[[情境二: TWO_TASK和ORACLE_SID一樣]]
[orar11@mylab ~]$ export TWO_TASK=R11LAB
[orar11@mylab ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sat May 30 21:34:02 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
心中os: 蛤!權限不足???
[[情境三]]
[orar11@mylab ~]$ sqlplus "apps/try_me@R11LAB as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sat May 30 21:38:36 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
心中os: 啊, 要醬子才行?
心中最大的疑問,TWO_TASK到底什麼東西啊?有疑問時,不是讀書就是問Tom大叔囉!
Tom said:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:89412348059
以我讀過有限的書,還未看到有誰針對TWO_TASK做一番詳盡的解釋,不過我從公司的一位高高高高手那曾經聽過,在好久好久以前,在unix server頓位如同鋼鐵人片中的諾亞方舟反應爐那麼大隻; 照價如同一架中古F16(沒錯,就是山姆大叔賣給台灣的那玩意),那時Unix主機貴33,一台主機可能裝了好幾個database,當時Oracle還沒搞出ORACLE_SID這個環境變數時,就是用TWO_TASK這個環境變數控制連線至各個oracle database的行為!
這樣聽來就知道,這是一段有歷史的故事,但是,事實是什麼???
不要再扯了,回到實驗,依據Tom的說法,
情境一和三是可以被接受的, 但是情境二的insufficient privileges是怎麼回事?ORACLE_SID和TWO_TASK都一致了,反而跑出個insufficient privileges
那...
[orar11@mylab R11LAB_mylab]$ sqlplus "apps/try_me as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sat May 30 22:22:19 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
奇怪,就是 sqlplus "/ as sysdba"不行!!
發現一個怪現象, 啟用了TWO_TASK後, 似乎在connect as sysdba時,會去訪問listener
以下刻意把listener關掉
[orar11@mylab oraInventory]$ lsnrctl stop R11LAB
LSNRCTL for Linux: Version 9.2.0.5.0 - Production on 31-MAY-2009 07:42:40
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROCR11LAB))
The command completed successfully
然後來連看看
[orar11@mylab oraInventory]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sun May 31 07:44:26 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-12541: TNS:no listener
再把listener開起來
[orar11@mylab oraInventory]$ lsnrctl start R11LAB
.............略......................
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROCR11LAB))
STATUS of the LISTENER
------------------------
Alias R11LAB
Version TNSLSNR for Linux: Version 9.2.0.5.0 - Production
Start Date 31-MAY-2009 07:45:05
.............略......................
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "R11LAB" has 1 instance(s).
Instance "R11LAB", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
再連看看
[orar11@mylab oraInventory]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Sun May 31 07:46:41 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
嗯...現在已啟用password file認證,莫非,TWO_TASK這玩意跟遠端連線有關???
這不禁讓我想到那個古老的故事.....在很久很久以前,為了連線而存在的TWO_TASK環境變數...((啊...好想讀到有關這個故事的文獻哦!!!!))
從metalink doc id: 1043230.6 提到
The TWO_TASK environment variable is not required when connecting to the
database locally. When the TWO_TASK variable is set, the database assumes the
authentication is verified by the parameters in the initSID.ora:
REMOTE_OS_AUTHENT and REMOTE_LOGIN_PASSWORDFILE.
間接證實我剛才的發問!
在metalink爬文了好久,總算給我找到一個滿像回事的文章 1015197.4
它提到:
利用ORACLE_SID環境變數連線,走的是SQL*Net protocal(稱Bequeath),這是利用Unix pipes在各個 process間溝通,這部份不走network
但是利用TWO_TASK環境變數連線,則依賴對listener提出requests,listener會將收到的request透過一連串的處理(自己去看文件怎麼處理!)
這裡又有SQL*Net V1和V2的差別, V1是走剛才提的pipe方式,V2 就進步到可以利用tnsnames.ora去設定連線的資訊!
那麼, 對於那個 ORA-01031 的問題, 應該可以說TWO_TASK是依附listener而活動,在TWO_TASK有設定的情況下sqlplus "/ as sysdba"被當成是local connect
或許我們可以下個結論: TWO_TASK這個參數已經過時了,最好不要用!不過,如果有客戶還活在Oracle 7的恐龍時代,TWO_TASK better keep in mind!!!
2009年5月29日星期五
2009年5月28日星期四
remote password file這東東
啟動Oracle database,一般來說,都用OS認證比較多,方便嘛...但是,有時還是會遇到有客戶會說,『ㄟ...我可不可以像SQL Server那樣,在自己的電腦上開關資料庫啊?』,通常我會使出威脅恫嚇,多一台可以操控database client就多一份風險,不是嗎?希望客戶可以打消念頭,但是,總是有人不買帳...
要做到remote control,Oracle利用的是password file,想想,當database還沒啟動時,怎麼可能知道database裡的user,誰有開關db的權限,所以呢,Oracle 把具有開關database權限的使用者,記錄在password file裡。
以下則是實驗
[實驗前環境] 在沒有啟動spfile情況下及remote_login_passwordfile的設定
[orar11@mylab dbs]$ ls -trl
total 72
-rw-r--r-- 1 orar11 dba 8385 Mar 10 2002 init.ora
-rw-r--r-- 1 orar11 dba 12920 Mar 10 2002 initdw.ora
-rw-r--r-- 1 orar11 dba 19666 May 21 08:51 initR11LAB.ora
-rw-r--r-- 1 orar11 dba 0 May 21 09:18 R11LAB_mylab_ifile.ora
-rw-r--r-- 1 orar11 dba 19712 May 21 09:18 initR11LAB_noaq.ora
-rw-rw---- 1 orar11 dba 24 May 29 05:49 lkR11LAB
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> show parameter remote_login_passwordfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string NONE
****************************************************************************
實 驗 開 始
****************************************************************************
啟動spfile並且修改remote_login_passwordfile 為exclusive
SQL> create spfile from pfile;
File created.
[orar11@mylab dbs]$ ls -trlh
total 80K
-rw-r--r-- 1 orar11 dba 8.2K Mar 10 2002 init.ora
-rw-r--r-- 1 orar11 dba 13K Mar 10 2002 initdw.ora
-rw-r--r-- 1 orar11 dba 20K May 21 08:51 initR11LAB.ora
-rw-r--r-- 1 orar11 dba 0 May 21 09:18 R11LAB_mylab_ifile.ora
-rw-r--r-- 1 orar11 dba 20K May 21 09:18 initR11LAB_noaq.ora
-rw-rw---- 1 orar11 dba 24 May 29 05:49 lkR11LAB
-rw-r----- 1 orar11 dba 5.5K May 29 05:53 spfileR11LAB.ora
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string ?/dbs/spfile@.ora
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
alter system set remote_login_passwordfile=exclusive scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
[此處error表明,要update spfile裡的參數,需要重新啟動database]
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.
SQL> show parameter remote_login_passwordfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string NONE
雖已改成exclusive 但是還未啟用!
SQL> startup force;
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
ORA-01990: error opening password file
'/u01/R11LAB/db/r11labdb/9.2.0/dbs/orapw'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
這裡出現restart DB缺少password file ORA-01990 error
[orar11@mylab ~]$ orapwd
Usage: orapwd file= password= entries=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
[orar11@mylab ~]$ orapwd file=orapwdR11LAB.ora password=12345678 entries=5
在此我的想法是,password file應該和parameter file一樣,有個副檔名 .ora 比較一致吧
SQL> startup mount
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
ORA-01990: error opening password file
'/u01/R11LAB/db/r11labdb/9.2.0/dbs/orapw' <<< 人家認得是orapw
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
把orapwdR11LAB.ora rename一下
[orar11@mylab dbs]$ mv orapwdR11LAB.ora orapw
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
改成 orapw 就可以啟動了,那再改成 orapwdR11LAB呢?
[orar11@mylab dbs]$ mv orapw orapwR11LAB
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
驚!!!! password file不能加 .ora 耶!
還是我很蠢?為什麼副檔名要一致? 管他的,蠢不蠢不重要,知道這個結果就好
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
看一下現在有權限開關database, 沒錯,只有sys一個人
SQL> grant sysdba to apps;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
APPS TRUE FALSE
把apps也拖下水,也要擔負起startup/shutdown database的工作
[orar11@mylab dbs]$ sqlplus "apps/try_me as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Fri May 29 06:15:18 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
SQL>
這裡證明,在本機apps可以startup database,這只證明apps有sysdba的權限!
能不能remote control database,利用DOS prompt
C:\Users\Jarwow>sqlplus "apps/try_me@mylab as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 5月 28 23:27:07 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
連線到:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production
SQL> shutdown immediate;
資料庫關閉.
資料庫已卸載.
已關閉 ORACLE 執行處理.
SQL>
這樣,遠端也可以startup/shutdown database了
要做到remote control,Oracle利用的是password file,想想,當database還沒啟動時,怎麼可能知道database裡的user,誰有開關db的權限,所以呢,Oracle 把具有開關database權限的使用者,記錄在password file裡。
以下則是實驗
[實驗前環境] 在沒有啟動spfile情況下及remote_login_passwordfile的設定
[orar11@mylab dbs]$ ls -trl
total 72
-rw-r--r-- 1 orar11 dba 8385 Mar 10 2002 init.ora
-rw-r--r-- 1 orar11 dba 12920 Mar 10 2002 initdw.ora
-rw-r--r-- 1 orar11 dba 19666 May 21 08:51 initR11LAB.ora
-rw-r--r-- 1 orar11 dba 0 May 21 09:18 R11LAB_mylab_ifile.ora
-rw-r--r-- 1 orar11 dba 19712 May 21 09:18 initR11LAB_noaq.ora
-rw-rw---- 1 orar11 dba 24 May 29 05:49 lkR11LAB
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> show parameter remote_login_passwordfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string NONE
****************************************************************************
實 驗 開 始
****************************************************************************
啟動spfile並且修改remote_login_passwordfile 為exclusive
SQL> create spfile from pfile;
File created.
[orar11@mylab dbs]$ ls -trlh
total 80K
-rw-r--r-- 1 orar11 dba 8.2K Mar 10 2002 init.ora
-rw-r--r-- 1 orar11 dba 13K Mar 10 2002 initdw.ora
-rw-r--r-- 1 orar11 dba 20K May 21 08:51 initR11LAB.ora
-rw-r--r-- 1 orar11 dba 0 May 21 09:18 R11LAB_mylab_ifile.ora
-rw-r--r-- 1 orar11 dba 20K May 21 09:18 initR11LAB_noaq.ora
-rw-rw---- 1 orar11 dba 24 May 29 05:49 lkR11LAB
-rw-r----- 1 orar11 dba 5.5K May 29 05:53 spfileR11LAB.ora
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string ?/dbs/spfile@.ora
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
alter system set remote_login_passwordfile=exclusive scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
[此處error表明,要update spfile裡的參數,需要重新啟動database]
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.
SQL> show parameter remote_login_passwordfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string NONE
雖已改成exclusive 但是還未啟用!
SQL> startup force;
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
ORA-01990: error opening password file
'/u01/R11LAB/db/r11labdb/9.2.0/dbs/orapw'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
這裡出現restart DB缺少password file ORA-01990 error
[orar11@mylab ~]$ orapwd
Usage: orapwd file=
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
[orar11@mylab ~]$ orapwd file=orapwdR11LAB.ora password=12345678 entries=5
在此我的想法是,password file應該和parameter file一樣,有個副檔名 .ora 比較一致吧
SQL> startup mount
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
ORA-01990: error opening password file
'/u01/R11LAB/db/r11labdb/9.2.0/dbs/orapw' <<< 人家認得是orapw
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
把orapwdR11LAB.ora rename一下
[orar11@mylab dbs]$ mv orapwdR11LAB.ora orapw
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
改成 orapw 就可以啟動了,那再改成 orapwdR11LAB呢?
[orar11@mylab dbs]$ mv orapw orapwR11LAB
SQL> startup force
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
驚!!!! password file不能加 .ora 耶!
還是我很蠢?為什麼副檔名要一致? 管他的,蠢不蠢不重要,知道這個結果就好
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
看一下現在有權限開關database, 沒錯,只有sys一個人
SQL> grant sysdba to apps;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
APPS TRUE FALSE
把apps也拖下水,也要擔負起startup/shutdown database的工作
[orar11@mylab dbs]$ sqlplus "apps/try_me as sysdba"
SQL*Plus: Release 9.2.0.5.0 - Production on Fri May 29 06:15:18 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 581506616 bytes
Fixed Size 452152 bytes
Variable Size 402653184 bytes
Database Buffers 167772160 bytes
Redo Buffers 10629120 bytes
Database mounted.
Database opened.
SQL>
這裡證明,在本機apps可以startup database,這只證明apps有sysdba的權限!
能不能remote control database,利用DOS prompt
C:\Users\Jarwow>sqlplus "apps/try_me@mylab as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 5月 28 23:27:07 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
連線到:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production
SQL> shutdown immediate;
資料庫關閉.
資料庫已卸載.
已關閉 ORACLE 執行處理.
SQL>
這樣,遠端也可以startup/shutdown database了
2009年5月15日星期五
Oracle Database Installation on Oracle Enterprise Linux - Part II
接下來的Part II則是安裝Oracle 10g 了,這部份的工作較為單純,只需依照rapidInstaller的指示,Next/Next/Next就可以安裝出一個陽春版的Oracle Database,但是這個blog的重點不在於此,如能盡可能的了解Oracle的每個細節,這樣研究起來應該比較有趣吧!所以,好事多磨囉!
以下為Install ORACLE_HOME的畫面截取,在安裝之前必需先確認xWindows可以丟出 (本實驗是利用vnc執行遠端搖控)

在確認xWindows可以成功丟出後,就可以launch installer了
定義 ORACLE_HOME 相關訊息(Name & Path)
安裝Enterprise Edition
我們不要陽春DB,所以請選擇Advanced Installation


這部份Oracle會執行相關系統檢查,如有不符規格,會請你調整相關設定
這個環境還存在一個EBS的9i DB被Oracle偵測到,它問我,你是不是想要Upgrade?在此點選"No"
這個實驗只打算安裝Software,不打算讓Oracle幫我們建DB,所以選擇"Install database Software only"

走到這裡,就準備開始安裝了,可以review一下剛才的設定

processing bar 咻咻咻的跑

安裝完成後,會要求利用root到$ORACLE_HOME下去執行root.sh

大功告成

到此僅完成軟體安裝
2009年5月13日星期三
Oracle Database Installation on Oracle Enterprise Linux - Part I
一直以來都是使用RedHat Linux,對於Oracle Enterprise Linux沒有投注太大的關心,最近因為欠一個實驗環境,打算來弄個環境玩玩,所以就先試試Oracle Enterprise Linux 5囉!
- Motherboard: ASUS P5KPL-AM
- RAM: Kingston 4G (2G*2)
- HD: WDC STATII 640G
Install Linux時,一開始就遇到
Oops IPC 0x0000...
[<\c054c18a\>] dev_driver_string to x2/0x21 SS:ESP 0068:f762eddc <0> kernel panic - not syncing: Fatal exception
總而言之就是遇到kernel panic啦!Solution即是利用BIOS Disable LAN Card後即可順利安裝(這部份需要自己再去買張LAN Card裝上去就是),大致遇到問題如上
等我把網卡搞定後,再來繼續後面的工作
[後記]
研究了一下,Oracle Enterprise Linux和RedHat Enterprise Linux的kernel是一樣的 = =a,
http://www.oracle.com/technologies/linux/el5cert-ds.pdf,這個我就搞不懂了,要取得RHEL的binary是要叩叩的,Oracle Enterprise Linux整個大放送,只收Support fees,同樣一個核心的東西有兩種不同營運模式,看來還有很多「枚角」在裡頭哦
安裝Linux最擔心的就是硬體和各Linux distribution的相容問題,最需留意的不外乎就是主機版和distribution之間的關係,因此在採購機器前我大致先爬了一些這方面的文章(免得機器買了卻不能run),真的去找資料才發現要找到十分精確的資料實在很困難,以下是爬過的文:
鳥哥的 Linux 新手討論區
http://phorum.vbird.org/viewforum.php?f=2
利用Search功能找出心中屬意的主機版相關的資料,這個討論區裡的一位高手日京三子好像是硬體專家,發問前要把問題研究清楚,不然就等著被電吧...(這好像都是高手的用心良苦啊....呵!)
http://phorum.vbird.org/viewforum.php?f=2
利用Search功能找出心中屬意的主機版相關的資料,這個討論區裡的一位高手日京三子好像是硬體專家,發問前要把問題研究清楚,不然就等著被電吧...(這好像都是高手的用心良苦啊....呵!)
Linux-Tested Compatibility Testing
這個站把各大廠牌的硬體和Linux的相容程度做了十分完整的報告,交叉比對後發現可信度還不錯。
redhat.com Certified Hardware
如果需要採購主機(非玩票性質),可以到這裡看看相關硬體訊息
再來說明機器規格--
- CPU: Intel Pentium Duo-Core E5200 (2.5GHz)- Motherboard: ASUS P5KPL-AM
- RAM: Kingston 4G (2G*2)
- HD: WDC STATII 640G
Install Linux時,一開始就遇到
Oops IPC 0x0000...
[<\c054c18a\>
總而言之就是遇到kernel panic啦!Solution即是利用BIOS Disable LAN Card後即可順利安裝(這部份需要自己再去買張LAN Card裝上去就是),大致遇到問題如上
等我把網卡搞定後,再來繼續後面的工作
[後記]
研究了一下,Oracle Enterprise Linux和RedHat Enterprise Linux的kernel是一樣的 = =a,
http://www.oracle.com/technologies/linux/el5cert-ds.pdf,這個我就搞不懂了,要取得RHEL的binary是要叩叩的,Oracle Enterprise Linux整個大放送,只收Support fees,同樣一個核心的東西有兩種不同營運模式,看來還有很多「枚角」在裡頭哦
2009年4月27日星期一
Instance name & DB name
Instance Name和DB Name彼此之間有什麼差別?
啟動Oracle Database時都知道需要設定一環境變數:ORACLE_SID,這個環境變數和啟動資料庫有什麼關係?本篇即針對這些問題進行討論和實驗
在討論這個問題之前需要先了解一個運行正常的Oracle資料庫是由Instance和Database所構成,Instance是一塊虛擬記憶體空間;Database則是儲存資料的實體存在(Storage/HD/Tape...)
再者Instance則是由SGA及許多Background process所構成,SGA指的是一塊連續的記憶體空間;Background process則是負責資料庫運行的process(這句話聽起來有點癈話...-___-")
有了這些認識後,即能針對這個主題進行實驗
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:32:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/ora10g/oracle/product/10.2.0/db_1/dbs/initJASON.ora'
[學到一] 從這裡可以得知一事,當資料庫讀取參數檔時,Oracle的邏輯為init$ORACLE_SID.ora
[ora10g@jarwow dbs]$ cp initJARWOW.ora initJASON.ora
[ora10g@jarwow dbs]$ echo $ORACLE_SID
JASON
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:37:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[學到二]我們單純將initJARWOW.ora原封不動內容的copy to initJASON.ora發現一件事,instname_name隨著ORACLE_SID的給定而跟著變成JASON
[學到三]instance_name和db_name在啟動階段可以不一樣
[疑問一]如果刻意將initJASON.ora裡的instance_name設為JARWOW,Oracle是否允許?
[ora10g@jarwow dbs]$ vi initJASON.ora
加入
*.instance_name='JARWOW'
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:44:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JARWOW
[學到四]就算是ORACLE_SID和instance_name不同,Oracle允許這種情形
[疑問二]那要ORACLE_SID這個環境變數幹嘛?看似多次一舉
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:50:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
重覆剛才的實驗,另外驗證os process
[ora10g@jarwow ora10g]$ ps -efgrep pmon
ora10g 4898 1 0 20:50 ? 00:00:00 ora_pmon_JASON
[疑問三]那如果把ORACLE_SID設為JARWOW,再啟動Oracle,可以嗎?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JARWOW
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JARWOW
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:54:58 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 75499764 bytes
Database Buffers 88080384 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JARWOW
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[ora10g@jarwow ora10g]$ ps -efgrep pmon
ora10g 4898 1 0 20:50 ? 00:00:00 ora_pmon_JASON
ora10g 4931 1 0 20:55 ? 00:00:00 ora_pmon_JARWOW
ora10g 4958 4853 0 20:55 pts/1 00:00:00 grep pmon
[學到五]ORACLE_SID是用來區分os上process之用;parameter file裡的instance_name才是真的區分instance之用,如instance_name沒有設定default為$ORACLE_SID
[學到六]一個ORACLE_HOME可以用來開啟數個instance,只要memory足夠
[疑問四]目前看來只有針對instance部份,如果instance_name和db_name不同,資料庫開得起來嗎?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:59:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[學到六] instance_name和db_name不同,資料庫照樣可以開
[疑問五] 如果這時,instance_name=JARWOW也去mount資料庫會怎樣?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JARWOW
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JARWOW
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 21:02:31 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
[學到七] database只能被一個instance mountd,除非database處於share mode
[疑問六] 如果initJASON.ora裡的db_name改成JASON,會怎樣?
[猜想一] RAC應該就需要這方面的參數配合(remote_login_passwordfile)
[ora10g@jarwow dbs]$ echo $ORACLE_SID
JASON
[ora10g@jarwow dbs]$ vi initJASON.ora
修改為JASON,如下
*.db_name='JASON'
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 21:10:01 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
ORA-01103: database name 'JARWOW' in control file is not 'JASON'
[學到八] 改db_name需要recreate control file
啟動Oracle Database時都知道需要設定一環境變數:ORACLE_SID,這個環境變數和啟動資料庫有什麼關係?本篇即針對這些問題進行討論和實驗
在討論這個問題之前需要先了解一個運行正常的Oracle資料庫是由Instance和Database所構成,Instance是一塊虛擬記憶體空間;Database則是儲存資料的實體存在(Storage/HD/Tape...)
再者Instance則是由SGA及許多Background process所構成,SGA指的是一塊連續的記憶體空間;Background process則是負責資料庫運行的process(這句話聽起來有點癈話...-___-")
有了這些認識後,即能針對這個主題進行實驗
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:32:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/ora10g/oracle/product/10.2.0/db_1/dbs/initJASON.ora'
[學到一] 從這裡可以得知一事,當資料庫讀取參數檔時,Oracle的邏輯為init$ORACLE_SID.ora
[ora10g@jarwow dbs]$ cp initJARWOW.ora initJASON.ora
[ora10g@jarwow dbs]$ echo $ORACLE_SID
JASON
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:37:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[學到二]我們單純將initJARWOW.ora原封不動內容的copy to initJASON.ora發現一件事,instname_name隨著ORACLE_SID的給定而跟著變成JASON
[學到三]instance_name和db_name在啟動階段可以不一樣
[疑問一]如果刻意將initJASON.ora裡的instance_name設為JARWOW,Oracle是否允許?
[ora10g@jarwow dbs]$ vi initJASON.ora
加入
*.instance_name='JARWOW'
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:44:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JARWOW
[學到四]就算是ORACLE_SID和instance_name不同,Oracle允許這種情形
[疑問二]那要ORACLE_SID這個環境變數幹嘛?看似多次一舉
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:50:52 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
重覆剛才的實驗,另外驗證os process
[ora10g@jarwow ora10g]$ ps -efgrep pmon
ora10g 4898 1 0 20:50 ? 00:00:00 ora_pmon_JASON
[疑問三]那如果把ORACLE_SID設為JARWOW,再啟動Oracle,可以嗎?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JARWOW
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JARWOW
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:54:58 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 75499764 bytes
Database Buffers 88080384 bytes
Redo Buffers 2973696 bytes
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JARWOW
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[ora10g@jarwow ora10g]$ ps -efgrep pmon
ora10g 4898 1 0 20:50 ? 00:00:00 ora_pmon_JASON
ora10g 4931 1 0 20:55 ? 00:00:00 ora_pmon_JARWOW
ora10g 4958 4853 0 20:55 pts/1 00:00:00 grep pmon
[學到五]ORACLE_SID是用來區分os上process之用;parameter file裡的instance_name才是真的區分instance之用,如instance_name沒有設定default為$ORACLE_SID
[學到六]一個ORACLE_HOME可以用來開啟數個instance,只要memory足夠
[疑問四]目前看來只有針對instance部份,如果instance_name和db_name不同,資料庫開得起來嗎?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JASON
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JASON
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 20:59:43 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string JASON
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JARWOW
[學到六] instance_name和db_name不同,資料庫照樣可以開
[疑問五] 如果這時,instance_name=JARWOW也去mount資料庫會怎樣?
[ora10g@jarwow ora10g]$ export ORACLE_SID=JARWOW
[ora10g@jarwow ora10g]$ echo $ORACLE_SID
JARWOW
[ora10g@jarwow ora10g]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 21:02:31 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
[學到七] database只能被一個instance mountd,除非database處於share mode
[疑問六] 如果initJASON.ora裡的db_name改成JASON,會怎樣?
[猜想一] RAC應該就需要這方面的參數配合(remote_login_passwordfile)
[ora10g@jarwow dbs]$ echo $ORACLE_SID
JASON
[ora10g@jarwow dbs]$ vi initJASON.ora
修改為JASON,如下
*.db_name='JASON'
[ora10g@jarwow dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 3 21:10:01 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
ORA-01103: database name 'JARWOW' in control file is not 'JASON'
[學到八] 改db_name需要recreate control file
2009年4月20日星期一
訂閱:
文章 (Atom)
