Centos6.5 x86_64下 静默安装Oracle 11g R2

时间:2022-05-25 06:28:46
1、安装前需要进行必要的软硬件检查,以免出现问题(一般都符合)


2、创建所需的操作系统组和用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
设置oracle用户密码
passwd oracle (建议使用oracle)


3、修改内核参数
在/sbin/sysctl.conf 文件中,使用文本编辑器或vi命令增加或修改以下参数
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
修改后,使设置生效

/sbin/sysctl -p


在/etc/sysctl.conf 文件中

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 9000 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144




4、修改用户限制
在/etc/security/limits.conf 文件中,使用文本编辑器或vi命令增加或修改以下参数 
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
在/etc/pam.d/login 文件中,使用文本编辑器或vi命令增加或修改以下内容
session required /lib/security/pam_limits.so
session required pam_limits.so
在/etc/profile 文件中,使用文本编辑器或vi命令增加或修改以下内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使设置生效
source /etc/profile


5、创建安装目录(可根据情况,选择比较多空间的目录创建 soft目录下)
mkdir -p /soft/u01/app/  (这个目录只是百度的,具体看你喜好)
        chown -R oracle:oinstall /soft/u01
chown -R oracle:oinstall /soft/u01/app/
chmod -R 775 /soft/u01/app/


6、创建/etc/oraInst.loc文件,内容如
inventory_loc=/soft/u01/app/oracle/oraInventory
inst_group=oinstall
更改文件的权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc


7、设置oracle环境变量
su - oracle 
vi ~/.bash_profile
在最后加上以下内容
export ORACLE_BASE=/soft/u01/app/oracle
export ORACLE_SID=orcl
注意,除了ORACLE_BASE和ORACLE_SID,( /etc/profile和.bash_profile中)不设置任何oracle相关环境变量(ORACLE_HOME, PATH, LD_LIBRARY_PATH等)。
使设置生效
source /home/oracle/.bash_profile
检查环境变量:
env


8、解压oracle安装文件
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip


9、复制响应文件模板(只针对11G,其他的版本请百度)
mkdir etc
cp /home/oracle/database/response/* /home/oracle/etc/
设置响应文件权限
su - root
chmod 700 /home/oracle/etc/*.rsp


10、静默安装Oracle软件
su - oracle
修改安装Oracle软件的响应文件/home/oracle/etc/db_install.rsp 
oracle.install.option=INSTALL_DB_SWONLY //29 行 安装类型
ORACLE_HOSTNAME=java-linux-test //37 行 主机名称(自己对应的主机名称,可利用hostname查看)
UNIX_GROUP_NAME=oinstall //42 行 安装组
INVENTORY_LOCATION=/soft/u01/oraInventory //47 行 INVENTORY目录 必须在ORACLE_BASE路径以外
SELECTED_LANGUAGES=en,zh_CN,zh_TW //78 行 选择语言
ORACLE_HOME=/soft/u01/app/oracle/product/11.2.0/db_1 //83 行 oracle_home
ORACLE_BASE=/soft/u01/app/oracle //88 行 oracle_base
oracle.install.db.InstallEdition=EE //99 行 oracle版本
oracle.install.db.isCustomInstall=true //108行 自定义安装
oracle.install.db.DBA_GROUP=dba //142行 dba用户组
oracle.install.db.OPER_GROUP=oinstall //147行 oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //160行 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl //165行 globalDBName
oracle.install.db.config.starterdb.SID=orcl //170行 SID
oracle.install.db.config.starterdb.memoryLimit=512 //192行 自动管理内存的最小内存(M)(200行)
oracle.install.db.config.starterdb.password.ALL=oracle //233行 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true //385行 设置安全更新
        具体可查看db_install.rsp文件
进行静默安装Oracle软件

cd database
./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp 

如果出现:
$ Exception in thread "main" java.lang.NoClassDefFoundError 
        at java.lang.Class.forName0(Native Method) 
        at java.lang.Class.forName(Class.java:164) 
        at java.awt.Toolkit$2.run(Toolkit.java:821) ...
        这些错误提示,可能是环境变量还没有完全变为oracle下的,那么最好断开与主机的连接,然后重新使用oracle           身份连接:ssh oracle@192.168.122.70;


如果出现:
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-07-29_03-58-41PM. Please wait ...               [oracle@localhost database]$You can find the log of this  install session at: //则表示安装顺利
如果出现:
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-07-29_03-58-41PM. Please wait ...               [oracle@localhost database]$  //之后就没有反应

或者报错[FATAL] [INS-13013] Target environment do not meet some mandatory requirements

        则需要按下面步骤进行:

安装命令中加入选项-ignorePrereq, 详情请见
安装中,如果提示 [WARNING] 不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。
大约需要五分钟左右......
如果需要查看安装日志信息了解安装进度,可以:
cd $ORACLE_BASE/oraInventory/logs
tail -100f installActions*.log
出现类似如下提示表示安装完成:
#-------------------------------------------------------------------
...
/soft/u01/app/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window 
2. Log in as "root" 
3. Run the scripts 
4. Return to this window and hit "Enter" key to continue
 
Successfully Setup Software.
#-------------------------------------------------------------------
 
使用root用户执行root.sh
 
su root
/soft/u01/app/oracle/product/11.2.0/db_1/root.sh
增加oracle环境变量
 
su - oracle
 
vi ~/.bash_profile
 
在最后加上以下内容
 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
export DISPLAY=127.0.0.1:0.0

使设置生效
 
source /home/oracle/.bash_profile


11、静默配置网络
$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/etc/netca.rsp
可能会出现以下错误:
UnsatisfiedLinkError exception loading native library: njni11
         java.lang.UnsatisfiedLinkError: /soft/u01/app/oracle/product/11.2.0/db_1/lib/libnjni11.so: libclntsh.so.11.1:                  cannot open shared object file: No such file or directory
可能是有些oracle依赖包没有安装:
检查以下RPM包是否安装(官方推荐必装包):
  binutils-2.20.51.0.2-5.11.el6 (x86_64) 
  compat-libcap1-1.10-1 (x86_64)  
  compat-libstdc++-33-3.2.3-69.el6 (x86_64) 
  compat-libstdc++-33-3.2.3-69.el6.i686 
  gcc-4.4.4-13.el6 (x86_64)  
  gcc-c++-4.4.4-13.el6 (x86_64) 
  glibc-2.12-1.7.el6 (i686) 
  glibc-2.12-1.7.el6 (x86_64)  
  glibc-devel-2.12-1.7.el6 (x86_64) 
  glibc-devel-2.12-1.7.el6.i686 ksh  
  libgcc-4.4.4-13.el6 (i686) 
  libgcc-4.4.4-13.el6 (x86_64) 
  libstdc++-4.4.4-13.el6 (x86_64) 
  libstdc++-4.4.4-13.el6.i686  
  libstdc++-devel-4.4.4-13.el6 (x86_64) 
  libstdc++-devel-4.4.4-13.el6.i686 
  libaio-0.3.107-10.el6 (x86_64) 
  libaio-0.3.107-10.el6.i686  
  libaio-devel-0.3.107-10.el6 (x86_64) 
  libaio-devel-0.3.107-10.el6.i686 
  make-3.81-19.el6  
  sysstat-9.0.4-11.el6 (x86_64)

  使用rpm -qa|grep XX  查看是否安这些依赖包,这些依赖包缺一不可

  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

  如果没有直接在google搜索,下载对应版本就可以了
  最后别忘了:
  $ORACLE_HOME/bin/relink all 

  然后重新执行网络配置



12、静默安装数据库
修改仅安装数据库的响应文件/home/oracle/etc/dbca.rsp
 
GDBNAME="orcl.java-linux-test" //78 行 全局数据库的名字=SID+主机域名
SID="orcl" //149行 SID
CHARACTERSET="AL32UTF8" //415行 数据库字符集编码,注意将前面的#号去掉(改为ZHS16GBK待测试)
NATIONALCHARACTERSET="UTF8" //425行 编码
SYSPASSWORD="sys"//190行 密码可自己设置
SYSTEMPASSWORE="system"//200行 密码可自己设置
        具体可查看dbca.rsp文件
进行静默安装数据库
 
$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp

[oracle@localhost ~]$ $ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/e                                                                                        tc/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/soft/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.

   建库后实例检查:

ps -ef | grep ora_ | grep -v grep | wc -l
21
ps -ef | grep ora_ | grep -v grep
oracle    6637     1  0 16:46 ?        00:00:00 ora_pmon_orcl
oracle    6639     1  0 16:46 ?        00:00:00 ora_vktm_orcl
oracle    6643     1  0 16:46 ?        00:00:00 ora_gen0_orcl
oracle    6645     1  0 16:46 ?        00:00:00 ora_diag_orcl
oracle    6647     1  0 16:46 ?        00:00:00 ora_dbrm_orcl
oracle    6649     1  0 16:46 ?        00:00:00 ora_psp0_orcl
oracle    6651     1  0 16:46 ?        00:00:00 ora_dia0_orcl
oracle    6653     1  0 16:46 ?        00:00:00 ora_mman_orcl
oracle    6655     1  0 16:46 ?        00:00:00 ora_dbw0_orcl
oracle    6657     1  0 16:46 ?        00:00:00 ora_lgwr_orcl
oracle    6659     1  0 16:46 ?        00:00:00 ora_ckpt_orcl
oracle    6661     1  0 16:46 ?        00:00:00 ora_smon_orcl
oracle    6663     1  0 16:46 ?        00:00:00 ora_reco_orcl
oracle    6665     1  0 16:46 ?        00:00:00 ora_mmon_orcl
oracle    6667     1  0 16:46 ?        00:00:00 ora_mmnl_orcl
oracle    6669     1  0 16:46 ?        00:00:00 ora_d000_orcl
oracle    6671     1  0 16:46 ?        00:00:00 ora_s000_orcl
oracle    6761     1  0 16:46 ?        00:00:00 ora_qmnc_orcl
oracle    6776     1  0 16:46 ?        00:00:00 ora_cjq0_orcl
oracle    6778     1  0 16:46 ?        00:00:00 ora_q000_orcl
oracle    6780     1  0 16:46 ?        00:00:00 ora_q001_orcl


建库后监听检查
 
lsnrctl status
如果出现以下错误
 
lsnrctl: error while loading shared libraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannotrestore segment prot after reloc: Permission denied
或者
ORA-12547: TNS:lost contact
 
解决办法:在root用户下执行以下命令
 
su - root
setenforce 0 不需要重启
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,需要重启

注意:如果在没有将依赖包全部安装完成后强行安装数据库,那么登录数据库时将会出现:ORA-12547:                     TNS:lost contact错误,出现这个错误,就重新安装吧



13、修改oracle启动配置文件
su - oracle
vi /etc/oratab
 
orcl:/soft/u01/app/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
 
这样就可以通过dbstart 启动此实例,监听器。
 
dbstart $ORACLE_HOME
此时所有oracle的进程关闭,监听器也停止。
 
dbshut $ORACLE_HOME
再次查看监听器状态。
 
lsnrctl status
 
如果使用归档日志
 
sqlplus / as sysdba
 
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on; (如果要启用数据库闪回功能则执行)
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial(); (重新编译所有可能失效对象)
SQL> alter system archive log current; (手工归档测试)
 
默认安装的数据库用户检查
 
SQL> set lines 256 pages 500
SQL> select USER_ID,USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE from dba_users order by 


具体请看http://www.2cto.com/database/201307/229218.html




四、修改linux数据库字符集以及客户端相关问题


如果linux能够利用sqlplus / as sysdba 显示SQL> 表示数据库已经安装成功,但是由于安装的时候使用的是                 AL32UTF8需要改为ZHS16GBK
SQL> conn /as sysdba (sqlplus / as sysdba)
SQL> shutdown immediate; (如果无反应 shutdown abort)
SQL> startup mount 
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
SQL> alter database open; 
SQL> ALTER DATABASE CHARACTER SET AL32UTF8; 
ORA-12712: new character set must be a superset of old character set 
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: 
SQL> ALTER DATABASE character set INTERNAL_USE AL32UTF8; 
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说               INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. 
SQL> shutdown immediate; 
SQL> startup 
以后安装oracle的时候记得选择自定义安装,把这个字符集的事情事先弄好。 


涉及三方面的字符集,
1. oracel server端的字符集;
2. oracle client端的字符集;
3. dmp文件的字符集。
在做数据导入的时候,需要这三个字符集都一致才能正确导入。


查询oracle server端的字符集
SQL> select userenv('language') from dual;


客户端添加环境变量NLS_LANG。
AMERICAN_AMERICA.ZHS16GBK


五、导入数据

六、配置监听

若PLSQL无法远程连接数据库,可修改监听文件,
oracle账户下,修改监听文件 /soft/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
HOST="192.168.118.118" //第8行,HOST默认是主机名,改为本机的ip地址
然后增加以下内容:
SID_LIST_LISTENER =
          (SID_LIST =
          (SID_DESC =
            (SID_NAME = orcl)
            (ORACLE_HOME = /soft/u01/app/oracle/product/11.2.0/db_1)
            (PROGRAM = extproc)
          )
          (SID_DESC =
            (GLOBAL_DBANAME = orcl)
            (ORACLE_HOME = /soft/u01/app/oracle/product/11.2.0/db_1)
            (SID_NAME = orcl)
          )
        )


  oracle账户下,继续修改文件/soft/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
HOST="192.168.118.118" // 第六行,同上将HOST主机名该为本机的IP地址
具体查看listener.ora和tnsnames.ora两个文件。