Linux 非圖形介面安裝oracle資料庫

maohaiqing0304發表於2015-08-23


標題:Linux 非圖形介面安裝oracle資料庫 

作者:lōττéry©版權所有[文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任.]


註釋:
  一個未開圖形介面的Linux OS,如何安裝oracle軟體及資料庫,如下是2大步驟
  1、克隆軟體
  2、手動建庫


一、克隆軟體



1、基本配置

1.1)系統軟體包安裝 
       yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc   libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel

1.2)使用者建立
          groupadd oinstall
          groupadd dba
          useradd -g oinstall -G dba oracle
          echo 123456 | passwd --stdin oracle

1.3)檔案配置

     1.3.1) 環境變數 
               vi ~oracle/.bash_profile
               export ORACLE_BASE=/data/app/oracle
               export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1
               export ORACLE_SID=test                                                                                # 最多 8個字元 ; 作業系統和 oracle例項關聯的紐帶 ;ORACLE_HOME+ORACLE_SID==>hash==> 共享記憶體段
               export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin                        #      將安裝後的 oracle 命令追加到執行搜尋路徑
               export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib             #             動態庫的位置
       export nls_lang="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"       #客戶端字符集設定
              # 載入配置 :oracle 使用者登出重新登入 或 source .bash_profile 

     1.3.2) 主機 
          echo "10.240.1.7 Database-backup" >>  /etc/hosts    #避免報錯startup noumount時報錯ORA-00000: normal, successful completion

     1.3.3) 軟體目錄 
          mkdir -p /data/app/oracle/product/11.2.0.4/db_1
          chown -R oracle:oinstall /data/app

       1.3.4) 資源限制
             1.3.4,1) vim /etc/sysctl.conf  新增到檔案底端
                    kernel.shmall = 2097152                            
                    #Total amount of shared memory available(bytes or pages); 頁的數量 ;2097152*4096/1024/1024/1024=8G; 如果記憶體大於 8G,必須修改此引數
                    kernel.shmmax = 2147483648
                    # 要>= 實體記憶體的一半 Maximum size of shared memory segment(bytes); 建議 >=sga_max_size(oracle申請記憶體大小 );
                    # 單個程式記憶體段最大多少 ;4G 的話分為兩段 mem_seg1 mem_seg2,影響效率 ;
                    kernel.shmmni = 4096                 
                    #            Maximum number of shared memory segments system-wide; 頁的大小 ;
                   kernel.sem =250 32000 100 128  
                                       SEMMSL SEMMNS SEMOPM SEMMNI
                                          SEMMSL       Maximum number of semaphores per set; 每個訊號物件集的最大訊號物件數
                                          SEMMNS       Maximum number of semaphores system-wide; 系統範圍內最大訊號物件數 ;SEMMNS = SEMMSL*SEMMNI
                                          SEMOPM        每個訊號物件支援的最大運算元
                                          SEMMNI       Maximum number of semaphore identifiers; 系統範圍內最大訊號物件集數
                   fs.file-max                                   #系統中所允許的檔案控制程式碼最大數目
                   net.ipv4.ip_local_port_range          # 應用程式可使用的 IPv4 埠範圍
                   net.core.rmem_default                   #套接字接收緩衝區大小的預設值
                   net.core.rmem_max                       #套接字接收緩衝區大小的最大值
                   net.core.wmem_default                  #套接字傳送緩衝區大小的預設值
                   net.core.wmem_max                     #套接字傳送緩衝區大小的最大值

                   #註釋:OS32bit,oracle 最多申請 1.7G; 應該裝64bitOS
                   #載入引數 sysctl -p
    
1.3.4 ,2) /etc/security/limits.conf  oracle  linux 上操作的limit
                        [root@dba ~]# grep -v '^#' /etc/security/limits.conf
                       oracle soft nproc 2047      #oracle 在 linux上開啟 proc 數量
                       oracle hard nproc 16384
                       oracle soft nofile 1024          #oracle 在 linux上開啟 file 的數量
                       oracle hard nofile 65536
                       [root@dba ~]# grep 'limit' /etc/pam.d/system-auth
                       session     required      pam_limits.so
            1.3.4,3) 關閉防火牆、SELINUX 
                         iptables -F
                         更改 /etc/selinux/config 檔案 --&gtSELINUX=disabled

2、克隆 ORACLE_HOME

         2.1)將遠端ORACLE_HOME完全複製到本地
                #進入到本地ORACLE_HOME路徑 
                su - oracle
                cd /data/app/oracle/product/11.2.0.4/
                #將遠端ORACLE_HOME完全複製到本地
                scp  -pr oracle@10.240.1.8:/data/app/oracle/product/11.2.0.4/db_1/   .

       2.2)執行clone.pl 克隆指令碼更改引數配置(ORACLE_SID、ORACLE_HOME)
     cd /data/app/oracle/product/11.2.0.4/db_1/clone/bin
               $ ls
                  clone.pl prepare_clone.pl
               #注意每個引數後,等號後不能有空格,否則被識別成無效選項
               $ perl clone.pl  ORACLE_SID=test ORACLE_BASE=/data/app/oracle ORACLE_HOME=/data/app/oracle/product/11.2.0.4/db_1/ ORACLE_HOME_NAME=OraDb11g_home1     
                    .......最後提示如下資訊表示,克隆成功...
                    The following configuration scripts need to be executed as the "root" user.
                    /data/app/oracle/product/11.2.0.4/db_1/root.sh
                    To execute the configuration scripts:
                    1. Open a terminal window
                    2. Log in as "root"
                    3. Run the scripts
                              The cloning of OraDb11g_home1 was successful.
                              ...................



 二、手動建庫



1、配置引數檔案 (測試環境簡單引數,若有需求,可補充 )
         [oracle@Database-backup ~]$ cd $ORACLE_HOME/dbs
         [oracle@Database-backup dbs]$ pwd
         /data/app/oracle/product/11.2.0.4/db_1/dbs
         [oracle@Database-backup dbs]$  

         [oracle@Database-backup dbs]$ cat inittest.ora 
         db_name=test
         db_files = 80
         db_file_multiblock_read_count = 8
         log_checkpoint_interval = 10000
         processes = 50
         parallel_max_servers = 5
         log_buffer = 32768
         max_dump_file_size = 10240    # limit trace file size to 5 Meg each
         global_names = TRUE
         #control_files = (ora_control1, ora_control2)
         sga_max_size=300M
         sga_target=300M
         *.local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=10.240.1.7)(Port=1521)))'  #避免啟動資料庫時報錯(ORA-00119、ORA-00130 local_listener配置無效)
         [oracle@Database-backup dbs]$

2、啟動資料庫到nomount 
       

         #進入資料庫
         [oracle@Database-backup dbs]$sqlplus / as sysdba   

         #開啟資料庫到nomount狀態
         SQL> startup nomount
         ORACLE instance started.

          Total System Global Area  313159680 bytes
          Fixed Size              2252824 bytes
          Variable Size            104861672 bytes
          Database Buffers       201326592 bytes
          Redo Buffers              4718592 bytes
          SQL>  

3、建立資料庫,到open狀態   ---&gt前提:mkdir -p /data/app/dbf/;chown -R oracle:oinstall /data/app/dbf/
SQL>CREATE DATABASE test
       USER SYS IDENTIFIED BY change_on_install
       USER SYSTEM IDENTIFIED BY manager
       LOGFILE GROUP 1 ( '/data/app/dbf/redo01.log') SIZE 100M,
               GROUP 2 ('/data/app/dbf/redo02.log') SIZE 100 M,
               GROUP 3 ('/data/app/dbf/redo03.log') SIZE 100 M
       MAXLOGFILES 5
       MAXLOGMEMBERS 5
       MAXLOGHISTORY 1
       MAXDATAFILES 100
       MAXINSTANCES 1
       CHARACTER SET ZHS16GBK
       NATIONAL CHARACTER SET AL16UTF16
       DATAFILE '/data/app/dbf/system01.dbf' SIZE 325M REUSE
       EXTENT MANAGEMENT LOCAL
       SYSAUX DATAFILE '/data/app/dbf/sysaux01.dbf' SIZE 325 M REUSE
       DEFAULT TABLESPACE users datafile '/data/app/dbf/users.dbf' size 50m
       DEFAULT TEMPORARY TABLESPACE tempts1
          TEMPFILE '/data/app/dbf/temp01.dbf'
          SIZE 20 M REUSE
       UNDO TABLESPACE undotbs
          DATAFILE '/data/app/dbf/undotbs01.dbf'
          SIZE 200 M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;  

        Database created.

         SQL>  

4、確認資料庫狀態
        SQL> select status from v$instance;

         STATUS
         ------------
         OPEN

         SQL> 

5、 將DBF 設定自動擴充套件,避免稍後執行指令碼載入資料字典表/包/scott用 時空間不足
          alter database datafile 1 autoextend on;
          alter database datafile 2 autoextend on;
          alter database datafile 3 autoextend on;
          alter database datafile 4 autoextend on;

6、建立資料字典/包/scott使用者
          資料字典檢視      : @?/rdbms/admin/catalog.sql
          系統包/儲存過程 : @?/rdbms/admin/catproc.sql
          使用者PROFILE表  : @?/sqlplus/admin/pupbld.sql

以上已完成安裝oracle軟體及資料庫.

題整理和完善

1、***** sqlplus / as sysdba 提示未找到libclntsh.so.11.1檔案
          [oracle@Database-backup ~]$ sqlplus / as sysdba
          sqlplus: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory     
          [oracle@Database-backup ~]$cd $ORACLE_HOME/lib/
          [oracle@Database-backup lib]$ ls libclntsh.so*
          libclntsh.so       libclntsh.so.10.1 --&gt只有10.1 cp -rp 連帶屬性完全複製一份,正常若有libclntsh.so.11.1檔案可能是許可權問題。 
          [oracle@Database-backup lib]$ cp -rp  libclntsh.so.10.1 libclntsh.so.11.1
          [oracle@Database-backup lib]$ sqlplus / as sysdba
          ... 正常.

2、用於sys密碼登入
          orapwd file=orapwtest password=test

3、ORA-00904: "wm_concat":invalid identifier
        執行建立WMSYS使用者指令碼
        SQL>@?/rdbms/admin/owmctab.plb
        SQL>@?/rdbms/admin/owmaggrs.plb
        SQL>@?/rdbms/admin/owmaggrb.plb

4、建立資料庫時報錯
     ERROR at line 1:
     ORA-01092: ORACLE instance terminated. Disconnection forced
     ORA-01501: CREATE DATABASE failed
     ORA-01519: error while processing file '?/rdbms/admin/dtxnspc.bsq' near line 5
     ORA-00604: error occurred at recursive SQL level 1
     ORA-30012: undo tablespace 'UNDOTBS02' does not exist or of wrong type
     Process ID: 35451
     Session ID: 2661 Serial number: 1
     原因:引數檔案和建立資料庫指令碼的預設undo空間不一致。

  【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...


此條目發表在  Oracle  分類目錄。將固定連線加入收藏夾。



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

相關文章