redhat開源版本(如centos)oracle安裝事宜

kidking2010發表於2011-07-26
--安裝oracle前的準備:

-1.hareware required:
at least 1G  physical memory        (移動的海量記憶體250G)
swap  >  physical memory *1.5
/tmp >400m

補丁patch:
rpm -ivh compat-oracle-rhel4-1.05.i386.rpm            可打可不打,在生產環境中最好打,需網路下載

rpm -ivh /mnt/cdrom/redhat/rpms/libaio-0.3.102-1.i386.rpm        也是一個補丁,也是可打可不打,這兩個包不影響現在的安裝

yum install -y libXp                    這個包要裝,否則裝oracle和執行都會出現問題

-2.create database:
groupadd dba
groupadd oinstall                
useradd oracle -g oinstall -G dba            
passwd oracle


mkdir -p /opt/oracle/product/10g
mkdir /opt/oracle/database
chown -R oracle.oinstall /opt/oracle
chmod 755 -R /opt/oracle

-3.configure environment 變數
vi ~/.bash_profile

export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/10g
export ORACLE_SID=orcl                    SID不要超過8位,超過8位會自動只取前8位
export PATH=$ORACLE_HOME/bin:$PATH

source ~/.bash_profile                   source一下使他生效

-4.modify kernel parameter
vi /etc/sysctl.conf            

kernel.shmmax = 2148483648
kernael.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144    
net.core.wmem_max = 262144        


sysctl -p    使生效

配置這些引數是為了更好的支援oralce,具體意思要查詢相關文件,如果用oralce公司的linux系統就不用了,它已經調好了

注意這些引數寫的時候等號兩邊要有空格,否則用vim看sysctl檔案顏色會變                                            


-5.vi /etc/pam.d/login
session    required    /lib/security/pam_limits.so


vi /etc/security/limits.conf            檔案限制
    oracle    soft    nproc    2047
    oracle    hard    nporc     16384
    oracle    soft    nofile    1024
    oracle    hard    nofile    65536    

然後把oracle的安裝包拷過來10201_database_linux32.zip     
解壓unzip 10201_database_linux32.zip  -d /opt/oracle/    下         也可以解壓到別的地方  不要解壓到/opt/oracle/product/10g下,因為這是資料庫10g的家目錄

然後在root使用者下用xhost + 給oralce使用者一個圖形安裝介面

再su - oracle切換到oralce使用者

cd /opt/oracle/database
有一個runinstaller的檔案
./runinstaller    就可以用圖形安裝了             (見圖1)
                設定一個密碼,要求以字元開頭的密碼,數字開頭的不行
                上面的是基礎安裝,下面的是高階安裝,這裡預設就用上面的基礎安裝
                點下一步
    --(問題:當開啟圖形時出現的亂碼情況,就要去root使用者檢視一下語言環境,並改為中文,vi /etc/sysconfig/i18n 或者export lang=en_US )
(見圖2)   直接下一步
(見圖3) 這裡會check你的安裝要求是否都透過,透過的有succeeded,錯誤會顯示error,或者警告warning 資訊,並會在下方顯示,根據他的提示來修改
(見圖4)這裡點password management 可以改密碼,(見圖5)看到目前只有SYS和SYSTEM兩個管理使用者是解鎖的,別的使用者都是鎖著的,這裡先不解鎖點OK到下一步
安裝完後,會提示要用root使用者再執行這兩個指令碼(也可以安裝完後再做),這時可以再開一個終端用root使用者執行完這兩個指令碼(執行時會告訴你這兩個指令碼做了什麼,只是改了下目錄許可權和確認了一下環境變數等),再點OK完成安裝
 


 
sqlplus  "/as sysdba"   能登入表示安裝OK


裝完後
要支援在oracle命令裡支援上下翻頁要裝三個包
IO-Tty-1.07.tar.gz Term-ReadLine-Gnu-1.16.tar.gz uniread-1.01.tar.gz
cd $IO-Tty/
cd $Term-ReadLine-Gnu/
cd $uniread/
perl Makefile.PL;make;make install  這三個軟體都要編譯
whereis uniread   看是否有這個命令 
su - oracle
~/.bash_profile
    加一句 alias sql="uniread sqlplus"
source .bash_profile  使之生效   
然後要用sql "/as sysdba"去登入才能翻頁,  因為sql命令是uniread sqlplus的別名
用sqlplus "/as sysdba"也能登入,但不能翻頁

--############################################################
linux下完全解除安裝oralce 10g   (在AIX系統下也可行,別的系統還未經測試)

-1.$ORACLE_HOME/bin/localconfig delete        用root使用者執行
-2.rm -rf $ORACLE_BASE/ *                    用oracle使用者執行               
-3.rm -rf /etc/oraInst.loc    /etc/oratab            用root使用者執行
-4.rm -rf /etc/oracle                            用root使用者執行
-5.rm -rf /usr/local/bin/coraenv /usr/local/bin/dbhome    /usr/local/bin/oraenv        用root使用者執行
-6.userdel oracle               groupdel dba        groupdel oinstall                要完全解除安裝就要把使用者和組也刪掉


上面都是安裝時要寫入的檔案,要這樣來解除安裝, 直接rm 掉oracle家目錄是不行

--##############################################################


管理員職責:管理資料庫正常可用。
    根據開發要求設計建立資料庫
    管理物理結構
    管理與設計規劃儲存
    管理與維護安全性
    網路配置與管理 (net8協議)
    備份與恢復保證資料的完整與可靠性。
    資料庫效能監控與調整。


DG:資料的保護與容災。 data guard    (standby database)

RAC  :real application cluster    實現instance叢集



開發方向的DBA:plsql  java  php  c/c++  EBS
oracle軟體是30%c/c++和70%java


學習:   熟練它的結構;
 熟練所有的操作命令(非圖形);
熟練效能維護的檢視或工具,如:statspack/wait interface event
         

邏輯結構,體系結構。

oracle啟動指令碼:

dbstart
dbshut

要用上面的指令碼,要更改下面兩個配置檔案。
[oracle@stu140 bin]$ vi /etc/oratab
orcl:/opt/oracle/db/10g:Y
[oracle@stu140 bin]$ vi $ORACLE_HOME/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME


也可以自己手動寫指令碼:
sql /nolog <conn /as sysdba
startup
EOF


sql /nolog <conn /as sysdba
shutdown immediate
EOF

--#####################################################################################################################

oracle安裝後的元件介紹:

$ORACLE_HOME/bin  目錄下   包括了很多工具(其中就有重要的sqlplus)

sqlplus "/as sysdba" 或者sqlplus '/as sysdba' 或者sqlplus / as sysdba  (/後面有個空格)  這裡不用密碼登入上,因為是用oracle使用者去登入的,它是屬於dba組的(前面裝oracle時做過這個步驟)

$ORACLE_HOME/network/admin  目錄下是做網路配置的        可以直接vi 來改,也可以用netmgr這個命令來圖形配置(不過用這個命令配置的話,先確認這個目錄下沒有listener.ora和tnsname.ora檔案,這樣才可以去用圖形新建)

host 寫上主機名或者IP   注意主機名不要寫錯,否則會啟不了監聽    --(見圖7)    
上面選database service    下面點add database   --(見圖8)

改一下global database name   確認家目錄 和SID沒錯  --(見圖9)

再改tnsname.ora

選擇tnsname.ora後  點左上角的綠色+號   寫一個網路服務名,隨便寫,比如我要連66就寫一個o66  --(見圖10)

選擇連線方式,這裡有三種方式,這裡選擇TCP  下一步  --(見圖11)

填寫遠端伺服器IP或者地址        --(見圖12)

填寫遠端伺服器庫名  下面選擇dedicated server      (也可以選擇共享模式)  --(見圖13)

再點finish完成,最後點右上角的X     會問你是否儲存,儲存退出



配好後 可以看一下
vi listener.ora        這是監聽檔案,如果是伺服器端只要配這個就可以了

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /opt/oracle/product/10g)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521))--(這是本機的主機名,監聽埠預設為1521,用TCP連線)
  )


vi tnsname.ora        客戶端遠端登入別人要配置這個

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521))        --(這就表示能登入li.lll.com這臺主機,或者寫上IP,)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

o212 =                                    --(隨便改個名,遠端登入時要用,這是網路服務名,是客戶端自己給遠端伺服器取的名)
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.212)(PORT = 1521))    --(這裡表示能登入10.1.1.212,這一大段是把上面一段直接拷一份修改就行)   
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)                --(這裡是伺服器端的服務名)
    )
  )


lsnrctl     start  命令啟動監聽     然後netstat -ntl | grep 1521  看到埠起來了
lsnrctl    stop    關閉監聽
lsnrctl    stat    檢視監聽狀態

遠端登入方法:
sqlplus sys/oracle@o212 as sysdba        來遠端登入


 這就是一個C/S模式, 有時會給你一個測試庫的IP和密碼  讓你去做一份工作,  遠端登入就是第一步

如果客戶機沒有,

ORACLE支援大併發(支援幾千個session併發,比如10086的查話費餘額,在移動裡還算小的庫,併發也是幾千的)


--#################################################################

資料庫的三種
RDBMS 關係型資料管理系統  mysql是這種  做一個外掛能支援物件中的類
ODBMS 物件資料管理系統  
ORDBMS 又是關係又是物件   oracle是這種
sqlplus /nolog   不連線登陸
conn /as sysdba    用超級管理員身份連上
startup  可以啟動
shutdown immediate 關閉
SQL> alter user scott identified by tiger account unlock; 選擇scott使用者密碼為tiger 並解鎖  在10i裡是鎖的  9i裡是預設沒鎖的
SQL> conn scott/tiger  用scott使用者連入  或者直接在最外面用sql scott/tiger連

SQL語句

先用scott這個使用者來測試(ORACLE建立的用來測試的使用者,這個使用者下有幾張表用來做測試的,預設是鎖的,要解鎖)

SQL> alter user scott identified by tiger account unlock;    設定scott使用者密碼為tiger,並解鎖  (不過預設它的密碼也是tiger)

User altered.

SQL> grant connect,resource to scott;              授權

Grant succeeded.

conn scott/tiger            用scott使用者連線

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE

SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)



SQL> select ename,sal,hiredate from emp;                    不區分大小寫

ENAME             SAL HIREDATE
---------- ---------- ---------
SMITH              800 17-DEC-80
ALLEN            1600 20-FEB-81
WARD             1250 22-FEB-81
JONES            2975 02-APR-81            --(字串和時間型別是預設是左對齊,數值是右對齊,這裡是複製的,所以不夠齊~.~)
MARTIN          1250 28-SEP-81
BLAKE            2850 01-MAY-81           
CLARK            2450 09-JUN-81
SCOTT            3000 19-APR-87
KING               5000 17-NOV-81
TURNER         1500 08-SEP-81
ADAMS            1100 23-MAY-87

ENAME             SAL HIREDATE
---------- ---------- ---------
JAMES             950 03-DEC-81
FORD             3000 03-DEC-81
MILLER           1300 23-JAN-82

14 rows selected.

                       
SQL結構查詢語言
包括DQL 資料查詢語言  主要指select
   DDL 資料定義語言  主要指create alter drop rename truncate (這些語句一執行不能回退)
   DCL 資料控制語言  主要指grant revoke
   DTL 資料事物語言  主要指commit rollback  savepoint
   DML 資料操縱語言  主要指 insert update delete merge



列的別名:三種方法
空格後接別名
as 別名
“別名”      當別名裡有空格或者特殊字元時就用雙引號括起


字串:
日期和字元只能在單引號出現

SQL> select ename|| ' sal is '||sal from emp;        連線符

ENAME||'SALIS'||SAL
----------------------------------------------------------
SMITH sal is 800
ALLEN sal is 1600
WARD sal is 1250
JONES sal is 2975
MARTIN sal is 1250
BLAKE sal is 2850
CLARK sal is 2450
SCOTT sal is 3000
KING sal is 5000
TURNER sal is 1500
ADAMS sal is 1100

ENAME||'SALIS'||SAL
----------------------------------------------------------
JAMES sal is 950
FORD sal is 3000
MILLER sal is 1300

14 rows selected.

SQL>select sal.(sal+100)*12 from emp;  (把sal加上一百再12倍)
有+ - * / ()等運算

SQL>select sal.(sal+100)*12 asal from emp; (別名為asal,但預設為大寫)
SQL>select sal.(sal+100)*12 “asal“ from emp; (這樣別名就為小寫的asal,sql語句不區分大小寫,但在單或者雙引號下就區分大小寫)

SQL>clear screen  清屏命令  支援簡寫  可以SQL>cle scr

不屬於SQL語句的可以不用; SQL語句就要用;

SQL>spool /vmware/oracle/bak/emp.txt
SQL>select ename,sal from emp;
SQL>spool off
這三句可以把emp表的ename,sal項的內容寫到emp.txt裡

SQL>ho  cat /vmware/oracle/bak/emp.txt 用ho接shell命令直接呼叫shell的命令
SQL>!    打完!號再可以輸入shell命令

當寫錯了 替換方法
SQL>select ename,sa from emp;  這一句sa寫錯了
SQL>l 1  選擇1
SQL>c/sa/sal  sa換成sal
SQL>/

SQL>/
SQL>run
SQL>r    這三條命令是執行前一次執行的SQL語句

SQL>select empno..............................from emp;  很長的一條SQL語句
SQL>save /vmware/oracle/bak/1.sql  把這個很長的語句儲存下來方便下次用   要以.sql結尾
SQL>@ /vmware/oracle/bak/1.sql    執行它  最後用1或者1.sql都可以
SQL>start /vmware/oracle/bak/1    這種也可以 最後1或者1.sql
SQL>get /vmware/oracle/bak/1   這種也可以 get只是把它讀到快取裡還沒執行
SQL>l 1 檢視發現讀進來了   可以看清是要執行的再用run / r 三種之一執行  
SQL>run



SQL書寫標準 
    大小寫不區分,單引或者雙引裡的要區分
    關鍵字不能省略 如select from
    可以分行寫,但關鍵字和單雙引內的不能分行寫
    別名一般用雙引
    字串用單引


別名的好處
SQL>select ename as "ename",job from emp;
1,非法語句合法化     30個字元以上的名字會報錯  用別名就不會
2.
3.做子查詢的別名,讓子查詢語句可以執行

去除重複行
SQL>select distinct deptno from emp;  去掉deptno裡的重複行  這個要排序
SQL>select unique deptno from emp;  也是去掉重複行  這個不要排序 效率要高點

SQL>select ename from emp where sal>3000;   用where做查詢限制  查出所有工資大於3000的
SQL>select ename from emp where sal between 2000 and 3000;  查工資大於2000小於3000的 
SQL>select ename from emp where sal sal>=2000 and sal<=3000; 用執行符查
SQL>select ename from emp where sal in(3000,5000); 查工資為3000或者5000的
SQL>select ename from emp where ename like 'A%'; 查詢匹配A開頭的    -  短橫匹配一個字元   %多個字元  s-轉義  s%轉義
SQL>select ename from emp where ename like '--A'; 查詢三個字元 第三個字元為A的項
SQL>insert into emp (empno,ename,sal) values (51,'B%123',10000); 
SQL>select ename from emp where comm is not null; 查詢非空值   有獎金的員工 空值這裡沒有資金  空值也會佔一個位   只是現在沒有值


SQL優先順序別
1算術
2|| (連線字串用)
3關係
4 is null/is not null, like ,in  
5 between
6 not   (取反)
7 and
8 or 


SQL>select sal from emp order by sal asc;  升序排列
SQL>select sal from emp order by sal desc; 降序排列
SQL>select sal from emp order by sal 2 desc;


小練習:
查詢部門為30的員工名字,職位,薪水
SQL> select ename,job,sal from emp where deptno=30;

查詢字元最後為N的員工的上級領導是哪個
SQL> select mgr from emp where ename like '%N';

顯示員工名字,上班日期,反序排列
SQL> select ename,hiredate from emp order by hiredate desc;

顯示10部門員工 按照ename "sal is:"sal,
SQL> select ename||' sal is: '||sal||' ,comm is:'||comm from emp;

今天一個同事問我在的時候出現了
Exception in thread "main".lang.InternalError: Can't connect to X11 window
using ':0.0' as the value of the DISPLAY variable.

這個錯誤是為什麼,其實我知道是由於當前使用者不是或者環境變數設定的不正確導致的,因為每次都是用oracle使用者解壓,安裝,沒有遇到這個問題,所以也沒有仔細研究過這個錯誤,今天正好同事問到我這個問題,如果不回答清楚了顯的我很不專業,呵呵,在這裡簡單說明一下自己的理解:

cause:
X-Windows emulation is not yet correctly configured or is being mis-used.
solution:
1.Make sure that "DISPLAY” is set properly as either:
     :0.0
          or
     :0.0
note:In this example, ip_address/hostnameis the host name or IP address of the system that you want to use to display Oracle Universal Installer (your workstation or PC).
eg.[root@rac1 ~]# xhost +
access control disabled, clients can connect from any host
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ export DISPLAY=192.16.2.98:0.0
[oracle@rac1 ~]$ cd database/
[oracle@rac1 database]$ ./runInstaller
Starting Oracle Universal Installer... 
Checking installer requirements... 
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
                                      Passed 
All installer requirements met. 
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-03-05_03-36-28PM. Please wait ...[oracle@rac1 database]$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999,, Oracle. All rights reserved.

2. Oracle Customer Support has seen instances where use of the UNIX/Linux “su” command, even “su - oracle” has caused this “Can't connect to X11 window server” error. Therefore, please be sure that you are LOGGED ON as the oracle account. Log directly into the install session. Do not use any variety of “su”.
     use oracle log on , not "su - oracle"
eg. [oracle@rac1 database]$ ./runInstaller

3.Oracle Customer Support has seen instances where the incorrect “ulimit” setting for number of files (aka “-n”, aka “nofiles”) has caused this “Can't connect to X11 window server” error. Therefore, please be sure that your values for “nofiles” in the output of “ulimit -a” is at least 65536.

備註:前2個辦法只需要滿足其中一個就可以避免這個錯誤了:直接用oracle登陸,不能su - oracle  or 設定display=ip_address_that you want to use to display Oracle Universal Installer:0.0


注意在給了xhost +以後

圖形安裝直接這樣 su oracle

然後執行安裝指令碼


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23141985/viewspace-703165/,如需轉載,請註明出處,否則將追究法律責任。

相關文章