Centos6/7下静默安装oracle10g

Centos6/7下静默安装Oracle10g

远程安装oracle10g,通过网上资料,不断摸索成功安装。先在本地虚拟机上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器上安装,中间遇到各种问题特记录下来分享。

在linux下安装oracle主要注意点:

1.关闭不必要的服务
2.安装必要的依赖包(少包会引起各种问题)
3.根据系统版本选择合适的oracle安装包
4.添加用户和用户组,创建安装文件夹
5.配置系统环境(创建修改各种文件)
6.安装软件并建库

检查硬件需求(略)

关闭防火墙

1、关闭firewall:

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

2、iptables防火墙

vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sampleconfiguration for iptables service
# you can edit thismanually or use system-config-firewall
# please do not askus to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT[0:0] :OUTPUT ACCEPT[0:0] -A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -jACCEPT -A INPUT -i lo -jACCEPT -A INPUT -p tcp -mstate --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -jACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080-j ACCEPT -A INPUT -j REJECT--reject-with icmp-host-prohibited -A FORWARD -jREJECT --reject-with icmp-host-prohibited COMMIT
:wq! #保存退出
备注:这里使用808080端口为例。***部分一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。
systemctlrestart iptables.service #最后重启防火墙使配置生效
systemctlenable iptables.service #设置防火墙开机启动

3.编写关闭服务脚本(根据需要来)

#vi serverstop.sh
chkconfig iptables off  
chkconfig ip6tables off  
chkconfig cups off  
chkconfig firstboot off  
chkconfig wpa_supplicant off  
chkconfig postfix off  
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config 
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config 

执行关闭服务脚本

#sh serverstop.sh

准备文件Oracle10g

上传文件 xxx.zip 到 /oracle(没有就建,放哪都行)目录下(工具任意Xshell带的Xftp,SecureCRT带的SecureFX);
[root@lym oracle]# unzip xxx.zip

如果压缩格式是cpio.gz  这种格式有这样几种解压缩方式  
 a.  # zcat XXXX.cpio.gz | cpio -idmv 
 b.  # gunzip XXXX.cpio.gz
 解压出XXXX.cpio文件然后再> # cpio -idvm < XXXX.cpio 解压缩完成后,设置oracle帐户可以操作安装文件所在的目录 
 chown -R oracle:oinstall 安装文件所在目录

添加用户组和用户,并为oracle用户设置密码

[root@lym Server]# groupadd oinstall
[root@lym Server]# groupadd dba
[root@lym Server]# groupadd oper

[root@lym Server]# useradd -g oinstall -G dba oracle
[root@lym Server]# passwd oracle

Changing password for user oracle.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

创建安装Oracle的文件夹,并设置其相应权限给Oracle用户

[root@lym Server]# mkdir -p /u01/app/oracle/product/10.2.0/db_1
[root@lym Server]# chown -R oracle.oinstall /u01
[root@lym Server]# chmod 775 /u01

oraInst.loc

在/etc目录下创建一个名为 oraInst.loc 的文件,文件中的内容(两行代码)如下:

inventory_loc=/u01/app/oracle/oraInventory
inst_group= oinstall

输入下面的命令在oraInst.loc文件上设置合适的拥有者,组和权限:

[root@lym oracle]# chown oracle:oinstall oraInst.loc
[root@lym oracle]# chmod 664 oraInst.loc

安装常用软件及必需软件

从网上搜集的,可能有重复包,不影响,yum安装时,已安装会自动略过

安装常用包

yum -y install autoconf automake binutils-devel bison cpp dos2unix ftp gcc gcc-c++ lrzsz python-devel

安装Oracle必需软件:

yum -y install compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 glibc-* glibc-*.i686 libXpm-*.i686 libXp.so.6 libXt.so.6 libXtst.so.6 libgcc_s.so.1 ksh libXp libaio-devel numactl numactl-devel unixODBC unixODBC-devel

或者一起安装(推荐再执行一次,以免遗漏,不费力)

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

遇到下面问题[1]
Centos6/7下静默安装oracle10g_第1张图片
解决方法:

Ctrl+c退出命令

rm –f /var/run/yum.pid

配置内核及其他参数

sysctl.conf

vi /etc/sysctl.conf

加入以下11行代码(并将原来的# kernel.shmmax和kernel.shmall这两行参数屏蔽)

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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

执行以下命令使以上参数修改生效

[root@lym Server]# /sbin/sysctl -p

limits.conf

vi /etc/security/limits.conf

加入以下四行代码

oracle              soft    nproc   2047  
oracle              hard    nproc   16384  
oracle              soft    nofile  1024  
oracle              hard    nofile  65536 

login

vi /etc/pam.d/login 

加入最后一行上面,下面一行代码(64位和32位注意lib64/lib这个区别)

session    required     /lib64/security/pam_limits.so  
session    required     pam_limits.so

config

vi /etc/selinux/config

禁用SELINUX,安装完后可再还原成原值) 将SELINUX设置为

 SELINUX=disabled

伪装操作系统版本

vi /etc/centos-release 

注释掉原来的,添加下面的,因为oracle支持的操作系统包含rh4

redhat-4

Oracle 10g 默认不支持中文

安装时将 /etc/sysconfig/i18n 中的 LANG改为 en 即可

export LANG=en_US

设置Oracle环境变量(可根据你的需要作适当更改)

[root@lym Server]# vi /home/oracle/.bash_profile 

加入内容如下,注释原PATH及export

# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

静默安装模板文件

注销root用户,并登录oracle用户,在/home/oracle目录下建立一个名为enterprise01.rsp的文件,里面的具体内容如下(参考/oracle/database/response目录下面的enterprise.rsp文件,该目录下有三个文件enterprise.rsp(企业版静默安装文件),standard.rsp(标准版静默安装文件)和custom.rsp(客户版静默安装文件),另外还有其他三个静默安装文件)。

有三四个值在enterprise.rsp中没有,直接使用下面的配置

RESPONSEFILE_VERSION=2.2.1.0.0
FROM_LOCATION="../stage/products.xml"
ORACLE_HOME="/u01/app/oracle/product/10.2.0/db_1/"
ORACLE_HOME_NAME="OraDb10g_home1"
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"}
DEINSTALL_LIST={"oracle.server","10.2.0.1.0"}
SHOW_SPLASH_SCREEN=false
SHOW_WELCOME_PAGE=false
SHOW_COMPONENT_LOCATIONS_PAGE=false
SHOW_CUSTOM_TREE_PAGE=false
SHOW_SUMMARY_PAGE=false
SHOW_INSTALL_PROGRESS_PAGE=false
SHOW_REQUIRED_CONFIG_TOOL_PAGE=false
SHOW_CONFIG_TOOL_PAGE=false
SHOW_RELEASE_NOTES=false
SHOW_ROOTSH_CONFIRMATION=false
SHOW_END_SESSION_PAGE=false
SHOW_EXIT_CONFIRMATION=false
NEXT_SESSION=false
NEXT_SESSION_ON_FAIL=false
SHOW_DEINSTALL_CONFIRMATION=false
SHOW_DEINSTALL_PROGRESS=false
ACCEPT_LICENSE_AGREEMENT=true
COMPONENT_LANGUAGES={"en"}
CLUSTER_NODES=
INSTALL_TYPE="EE"
s_nameForDBAGrp=dba
s_nameForOPERGrp=dba
b_oneClick=false
SHOW_DATABASE_CONFIGURATION_PAGE=false
b_createStarterDB=false

安装oracle

[oracle@lym ~]$ cd /oracle/database
[oracle@lym database]$ ./runInstaller -silent -responseFile /home/oracle/enterprise01.rsp

安装完成查看日志
这里写图片描述
如果只有下面这个问题(其它问题自行百度),可以忽略

执行oracle脚本

以root用户运行安装后环境所需脚本(千万主意:要以root用户去执行这两个脚本,执行后一个脚本时,回车一下就可以了)

[root@lym ~]# sh /u01/app/oracle/oraInventory/orainstRoot.sh(非第一次安装,可无)
[root@lym ~]# sh /u01/app/oracle/product/10.2.0/db_1/root.sh

Centos6/7下静默安装oracle10g_第2张图片

测试看能否进sqlplus

至此Oracle的产品已经安装完成,可是目前为止我们还没有建立数据库。 由于没有X界面无法启动dbca ,所以不能用dbca来帮我们建立数据库。这时候你可能会想到用create database 语句来建立数据库,可是语法实在是繁琐,并且还要运行许多的oracle脚本 。

此时,我们可以利用oracle提供的种子数据库还原一个数据库出来(详细见以下操作) 假设我们要建立的数据库的名称为TSH1(这个名称跟你安装前设置的环境变量中的ORACLE_SID相一致)。

建库

利用oracle提供的种子数据库还原一个数据库出来 的详细步骤

建议同时建立三个远程连接,一个root,一个oracle下一般操作,一个oracle下rman操作,避免来回切换引起的不便和带来意想不到的问题(注意在重启数据库时要退出rman)。

建立所需目录,并授权

[root@lym Server]# mkdir -p /u01/app/oracle/admin/TSH1/{a,b,u}dump
[root@lym Server]# mkdir -p /u01/app/oracle/oradata/TSH1
[root@lym Server]# chown -R oracle.oinstall /u01
[root@lym Server]# chmod 775 /u01

你可以在oracle用户下,看刷新授权前后,权限的变化(比较如下)。

[oracle@lym oracle]$ ls -l     

刷新授权前/uo1/oracle/oracle下面各文件的权限

/u01/app/oracle
total 16
drwxr-xr-x 3 root   root     4096 May 22 06:24 admin
drwxr-xr-x 3 root   root     4096 May 22 06:25 oradata
drwxr-xr-x 6 oracle oinstall 4096 May 22 06:19 oraInventory
drwxr-xr-x 3 oracle oinstall 4096 May 22 06:08 product   

种子数据库控制文件

找到oracle为种子数据库提供的控制文件并copy至/u01/app/oracle/oradata/TSH1目录下(在Oracle用户下操作)。

[oracle@lym oracle]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/

这里写图片描述

[oracle@lym templates]$ cp Seed_Database.ctl /u01/app/oracle/oradata/TSH1

pfile文件

建立pfile文件(在Oracle用户下操作)。

[oracle@lym templates]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs

注意权限

[oracle@lym templates]$ vi initTSH1.ora  

输入以下三行并保存退出

*.db_name=SEEDDATA
control_files='/u01/app/oracle/oradata/TSH1/Seed_Database.ctl'
compatible=10.2.0.1.0

注:因为Seed_Database.ctl控制文件中记录的db_name为SEEDDATA,所以第一行的设置如此

spfile

启动数据库到mount状态,并使用默认的参数建立spfile文件;然后重新启动数据库并更改sga_max_size,sga_target参数的值;然后再次重新启动数据库(具体操作如下)。
问题
这里写图片描述

先 cd /u01/app/oracle/product/10.2.0/db_1/bin/

报错
说明oracle_home的问题
临时解决方案(可能原因是从root用户切换过引起的,直接使用oracle用户登录,或者su - oracle 切换)

echo $ORACLE_HOME
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
echo $ORACLE_SID
export ORACLE_SID=TSH1

也可以建立软链接

ln -s /u01/app/oracle/product/10.2.0/db_1/bin/sqlplus /usr/bin

Centos6/7下静默安装oracle10g_第3张图片

[oracle@lym dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 22 06:56:19 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.
Total System Global Area  113246208 bytes
Fixed Size                  1218004 bytes
Variable Size              58722860 bytes
Database Buffers           50331648 bytes
Redo Buffers                2973696 bytes
Database mounted.

如果出现问题:

这里写图片描述
解决方法:

more /proc/sys/vm/hugetlb_shm_group
SQL> create spfile from pfile;
File created.

SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.
Total System Global Area  113246208 bytes
Fixed Size                  1218004 bytes
Variable Size              58722860 bytes
Database Buffers           50331648 bytes
Redo Buffers                2973696 bytes
Database mounted.

问题:

该文件权限问题,可能当时copy的时候使用的是root,修改一下就行

SQL> alter system set sga_max_size=200M scope=spfile;
System altered.
SQL> alter system set sga_target=160M scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

这里写图片描述

SQL> startup mount
ORACLE instance started.
Total System Global Area  209715200 bytes
Fixed Size                  1218580 bytes
Variable Size             100665324 bytes
Database Buffers          104857600 bytes
Redo Buffers                2973696 bytes
Database mounted.

用rman连接数据库

[oracle@lym ~]$ rman target /
/u01/app/oracle/product/10.2.0/db_1/bin/rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 22 07:22:51 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: SEEDDATA (DBID=3891038516, not open)

RMAN> list backup;
using target database control file instead of recovery catalog

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    89.23M     DISK        00:00:36     30-JUN-05      
        BP Key: 1   Status: AVAILABLE  Compressed: YES  Tag: 
        Piece Name: /ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  1       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/system01.dbf
  2       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/undotbs01.dbf
  3       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/sysaux01.dbf
  4       Full 446074     30-JUN-05 /ade/aime_10.2_lnx_push/oracle/oradata/seeddata/users01.dbf

RMAN> 

可以看到,我们可以利用

/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb

这个备份集来还原数据库。
上面的地址是其他人的,我的是下面的,注意一下就行,灵活变通

/ade/aime_ship_10gR2_050630.0022/oracle/oradata/Seed_Database.dfb

但是很明显我们系统中并没有这样一个文件

/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb

但是查找发现路径

/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates

下有 Seed_Database.dfb文件

有两种方法解决此问题,一个是建立一个软链接

/ade/aime_10.2_lnx_push/oracle/oradata/Seed_Database.dfb 

指向

/u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb 

另一个是创建目录

/ade/aime_10.2_lnx_push/oracle/oradata/

并将Seed_Database.dfb copy至其下 。
这里,我们使用第二种方法(具体操作如下):

[root@lym ~]# mkdir -p mkdir -p /ade/aime_ship_10gR2_050630.0022/oracle/oradata/
[root@lym ~]# chown -R oracle.oinstall /ade
[root@lym ~]# chmod 775 /ade
[root@lym ~]# su - oracle

[oracle@lym ~]$ cd /u01/app/oracle/product/10.2.0/db_1/assistants/dbca/templates
[oracle@lym templates]$cp Seed_Database.dfb /ade/aime_ship_10gR2_050630.0022/oracle/oradata/

还原数据库(先在RMAN下执行如下命令)

run {
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/system01.dbf' to '/u01/app/oracle/oradata/TSH1/system01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/sysaux01.dbf' to '/u01/app/oracle/oradata/TSH1/sysaux01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/undotbs01.dbf' to '/u01/app/oracle/oradata/TSH1/undotbs01.dbf';
set newname for datafile '/ade/aime_ship_10gR2_050630.0022/oracle/oradata/seeddata/users01.dbf' to '/u01/app/oracle/oradata/TSH1/users01.dbf';
restore database;
switch datafile all;
}

还没整理完,继续补充完善。。。。

你可能感兴趣的:(oracle,虚拟机,centos,服务器,oracle10g)