docker下安装 Oracle11gR2

这是第二次安装,在第一次安装过程部分内容参考自如下:

http://blog.sina.com.cn/s/blog_d840ff330102v4j0.html docker下oracle11g安装

http://blog.csdn.net/yangyinbo/article/details/6221220 HP-UX静默安装oracle11g过程

http://www.linuxidc.com/Linux/2012-03/56606p4.htm  CentOS 6.2 X64上64位Oracle 11gR2 静默安装

但是并没一次成功,中途遇到好多问题,一个一个逐步解决,最终安装成功。在这里只是做一个总结,欢迎指点和纠正。

这次是在安装的过程中同时记录,以备后续参考。

系统环境:

虚拟机Centos7 64位

docker:1.13.1

oracle:11gR2

容器:centos:6.6

第一次安装时最后能够保证连网,如不能连网需要提前准备好相应的包。

保证虚拟机ok,docker已经安装好,同时将oracle包拷贝至centos6.6的容器中的 /oracle_package目录下。

[root@bogon install_package]# docker cp linux.x64_11gR2_database_1of2.zip 22edf28f349d:/oracle_package
[root@bogon install_package]# docker cp linux.x64_11gR2_database_2of2.zip 22edf28f349d:/oracle_package
[root@22edf28f349d oracle_package]# ls
linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip

 

开始安装

1.安装oracle所需要的 gcc* 、glibc*相关的包 

gcc*在装的时候看到有很多个,每个都不是很大,只要网速不是特别差还是很快的。

[root@22edf28f349d oracle_package]# yum -y install gcc*
[root@22edf28f349d oracle_package]# yum -y install glibc*

也可以指安装所需的包,并且要注意顺序:

Oracle 对GCC的顺序:

glibc-common-2.12-1.80.el6.x86_64.rpm
kernel-headers-2.6.32-279.el6.x86_64.rpm
libgcc-4.4.6-4.el6.x86_64.rpm
glibc-2.12-1.80.el6.x86_64.rpm
libgomp-4.4.6-4.el6.x86_64.rpm
nscd-2.12-1.80.el6.x86_64.rpm
glibc-headers-2.12-1.80.el6.x86_64.rpm
glibc-devel-2.12-1.80.el6.x86_64.rpm
mpfr-2.4.1-6.el6.x86_64.rpm
ppl-0.10.2-11.el6.x86_64.rpm
cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
cpp-4.4.6-4.el6.x86_64.rpm
gcc-4.4.6-4.el6.x86_64.rpm
注:以上是安装gcc,软件安装顺序不能错
libstdc++-4.4.6-4.el6.x86_64.rpm
libstdc++-devel-4.4.6-4.el6.x86_64.rpm
gcc-c++-4.4.6-4.el6.x86_64.rpm
注:以上是安装gcc-c++

也可以使用yum的方式进行安装

 #yum -y install gcc
 #yum -y install make
 #yum -y install binutils
 #yum -y install gcc-c++
 #yum -y install compat-libstdc++-33
 #yum -y install elfutils-libelf-devel
 #yum -y install elfutils-libelf-devel-static
 #yum -y install ksh
 #yum -y install libaio
 #yum -y install libaio-devel
 #yum -y install numactl-devel
 #yum -y install sysstat
 #yum -y install unixODBC
 #yum -y install unixODBC-devel
 #yum -y install pcre-devel

 

注意:  

在使用yum安装时如果出现如下错误:

[root@d0361c82ec77 oracle_package]# yum -y install gcc*
Loaded plugins: fastestmirror
Setting up Install Process
Examining gcc-4.4.7-4.el6.x86_64.rpm: gcc-4.4.7-4.el6.x86_64
Marking gcc-4.4.7-4.el6.x86_64.rpm to be installed
base                                                     | 3.7 kB     00:00     
base/primary_db                                          | 4.7 MB     00:05     
epel                                                     | 4.3 kB     00:00     
epel/primary_db                                          | 4.6 MB     00:10     
Error: xz compression not available
[root@d0361c82ec77 oracle_package]# 

这个错误主要意思是没有epel或者存在错误的epel,可以这样来解决:

  1.remove 错误的epel

有可能会出现如下:说明系统还没有epel

[root@d0361c82ec77 oracle_package]# yum remove epel-release
Loaded plugins: fastestmirror
Setting up Remove Process
No Match for argument: epel-release
Determining fastest mirrors
Error: xz compression not available
[root@d0361c82ec77 oracle_package]# 

或者:移除epel成功

[root@d0361c82ec77 yum]# yum remove epel-release
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:6-8 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch            Version         Repository          Size
================================================================================
Removing:
 epel-release          noarch          6-8             installed           22 k

Transaction Summary
================================================================================
Remove        1 Package(s)

Installed size: 22 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Erasing    : epel-release-6-8.noarch                                      1/1 
warning: /etc/yum.repos.d/epel.repo saved as /etc/yum.repos.d/epel.repo.rpmsave
  Verifying  : epel-release-6-8.noarch                                      1/1 

Removed:
  epel-release.noarch 0:6-8                                                     

Complete!

这两种情况都没有问题,接着执行下面步骤

  2.清理epel 缓存

[root@d0361c82ec77 yum]# rm -rf /var/cache/yum/x86_64/6/epel

  3.重新安装正确的epel:

[root@d0361c82ec77 yum]# rpm -ivh http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.M6IbHz: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

  4.使用 yum search munin 检测是否安装正确

[root@d0361c82ec77 yum]# yum search munin
Loaded plugins: fastestmirror base
| 3.7 kB 00:00 base/primary_db | 4.7 MB 00:14 epel/metalink | 5.4 kB 00:00 epel | 4.3 kB 00:00 epel/primary_db | 5.9 MB 00:27 extras | 3.4 kB 00:00 extras/primary_db | 37 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 5.4 MB 00:09 ============================== N/S Matched: munin ============================== PyMunin.noarch : Python Module for developing Munin Multigraph Monitoring : Plugins munin-java-plugins.noarch : java-plugins for munin munin-ruby-plugins.noarch : ruby-plugins for munin munin.noarch : Network-wide graphing framework (grapher/gatherer) munin-async.noarch : Network-wide graphing framework (asynchronous client tools) munin-cgi.noarch : Network-wide graphing framework (cgi files for apache) munin-common.noarch : Network-wide graphing framework (common files) munin-netip-plugins.noarch : Network-wide graphing framework (dhcpd3 and ntp : plugins) munin-nginx.noarch : Network-wide graphing framework (cgi files for nginx) munin-node.noarch : Network-wide graphing framework (node) Name and summary matches only, use "search all" for everything.

到此这个问题就已经解决了,如果还有问题可以重复上述1.2.3.4步骤。

再次运行:

[root@d0361c82ec77 yum]# yum -y install gcc*
Loaded plugins: fastestmirror
Setting up Install Process
Determining fastest mirrors
 * epel: mirrors.neusoft.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.4.7-17.el6 will be installed
--> Processing Dependency: libgomp = 4.4.7-17.el6 for package: gcc-4.4.7-17.el6.x86_64
--> Processing Dependency: cpp = 4.4.7-17.el6 for package: gcc-4.4.7-17.el6.x86_64
--> Processing Dependency: libgcc >= 4.4.7-17.el6 for package: gcc-4.4.7-17.el6.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.4.7-17.el6.x86_64
...

在安装过程中如果提示:

Public key for gcc-objc-4.4.7-17.el6.x86_64.rpm is not installed

在网上找到了解决方法:
此时要导入rpm的签名信息即可
以root登录,执行下面命令
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

根据我的Linux版本是CentOS 6.6
于是我执行下面命令
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

 


 

安装 unzip指令 vim指令,因为centos6.6容器中没有这两个指令的,后边需要用到,容器中自带了vi,看个人习惯了

[root@22edf28f349d oracle_package]# yum -y install unzip
[root@22edf28f349d oracle_package]# yum -y install vim

 

2.修改主机名

这里主要将容器id 加入hostname中,如果hostname不正确后边启动监听可能会出现问题。

[root@22edf28f349d oracle_package]# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hadoop

 

3.修改host文件

先用hostname查看当前的主机名为:

[root@22edf28f349d oracle_package]# hostname
22edf28f349d

 

内容如下:

[root@22edf28f349d oracle_package]# vim /etc/hosts
127.0.0.1       hadoop
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#172.17.0.2     1c0d06324543

 

4. 创建用户oracle及组dba

[root@22edf28f349d oracle_package]# vim /etc/hosts
[root@22edf28f349d oracle_package]# groupadd dba
[root@22edf28f349d oracle_package]# useradd -g dba oracle
[root@22edf28f349d oracle_package]# passwd oracle
Changing password for user oracle.
New password: 
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@22edf28f349d oracle_package]# 

 

5.创建oracle目录和设置权限

[root@22edf28f349d oracle_package]# mkdir -p /u01/app/oracle
[root@22edf28f349d oracle_package]# mkdir -p /u01/app/product/11.2.0/db_1  //数据库系统安装目录
[root@22edf28f349d oracle]# mkdir /u01/app/oracle/oraInventory  //清单目录
[root@22edf28f349d oracle_package]# chown -R oracle:dba /u01
[root@22edf28f349d oracle_package]# chmod -R 775 /u01
[root@22edf28f349d oracle]# mkdir /opt/oradata  //数据存放目录
[root@22edf28f349d oracle]# mkdir /opt/oradata_back  //数据备份目录

 

 记录一下:

mkdir -p 中-p 的作用,如果递归创建目录没有-p会报错,同时-p有如下作用:

-p, --parents     no error if existing, make parent directories as needed

 

chown 用户名:组名 文件路径(可以是就对路径也可以是相对路径)

例1:chown oracle:dba /tmp/tmp1
就是把tmp下的tmp1的用户名和用户组改成oracle和dba(只修改了tmp1的属组).
例2:chown -R oracle:dba /tmp/tmp1
就是把tmp下的tmp1下的所有文件的属组都改成oracle和oracle。

chmod -R 775 /u01

chmod用法
用来修改某个目录或文件的访问权限

语法:chmod [who] [+ | - | =] [mode] 文件名
 命令中各选项的含义为: 
操作对象who可是下述字母中的任一个或者它们的组合:
   u 表示“用户(user)”,即文件或目录的所有者。
   g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
   o 表示“其他(others)用户”。
   a 表示“所有(all)用户”。它是系统默认值。
 操作符号可以是:
   + 添加某个权限。
   - 取消某个权限。
   = 赋予给定权限并取消其他所有权限(如果有的话)。
 设置 mode 所表示的权限可用下述字母的任意组合:
   r 可读。
   w 可写。
    x 可执行。
   X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
   s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
       方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
   t 保存程序的文本到交换设备上。
   u 与文件属主拥有一样的权限。
   g 与和文件属主同组的用户拥有一样的权限。
   o 与其他用户拥有一样的权限。
 文件名:以空格分开的要改变权限的文件列表,支持通配符。

 

在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。
例如我用ls -l命令列文件表时,得到如下输出:
-rw-r--r--  1 bu users  2254 2006-05-20 13:47 tt.htm
从第二个字符起rw-是说用户bu有读、写权,没有运行权,接着的r--表示用户组users只有读权限,没有运行权,最后的r--指其他人(others)只有读权限,没有写权和运行权。
这是系统默认设置,我可以改写tt.htm,同组的人和其他人只有权读,没人有权运行,因为只是一个html文件,不必运行。这在Novell的directory services之前很先进。 读、写、运行三项权限可以用数字表示,就是r
=4,w=2,x=1。所以,上面的例子中的rw-r--r--用数字表示成644。 反过来说777就是rwxrwxrwx,意思是该登录用户(可以用命令id查看)、他所在的组和其他人都有最高权限。 再多说一句。我用chmod o-r tt.htm命令改权限,o-r是others的权限中减掉读。结果是 -rw-r----- 1 bu users 2254 2006-05-20 13:47 tt.htm 如果用命令chmod 777 tt.htm,结果是 -rwxrwxrwx 1 bu users 2254 2006-05-20 13:47
tt.htm 任何人都有读、写、运行三项权限。
理论上就是这样,但实际运用上往往需要加上1执行权,否则执行不了读或写

 

6.设置环境变量,修改oracle用户的 .bash_profile 文件

[oracle@22edf28f349d ~]# vim .bash_profile 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin

 

使环境变量生效 

[root@22edf28f349d ~]# source .bash_profile

 

7.将oracle的两个安装包解压到同一个目录下,如果不是同一个目录后边会报错

[root@22edf28f349d oracle_package]# unzip linux.x64_11gR2_database_1of2.zip -d ./oracle
[root@22edf28f349d oracle_package]# unzip linux.x64_11gR2_database_2of2.zip -d ./oracle

 

8.将刚解压后的rsp文件复制到 /home/oracle目录下

[root@22edf28f349d oracle_package]# cp ./oracle/database/response/* /home/oracle/

 

查看 /home/oracle目录下的rsp文件

[root@22edf28f349d oracle]# ls
dbca.rsp  db_install.rsp  netca.rsp

 

9.修改db_install.rsp文件的内容:

详细解释来自:http://blog.chinaunix.net/uid-23886490-id-3565908.html

[root@22edf28f349d oracle]# vim db_install.rsp 
####################################################################
## Copyright(c) Oracle Corporation 1998,2008. All rights reserved.##
##                                                                ##
## Specify values for the variables listed below to customize     ##
## your installation.                                             ##
##                                                                ##
## Each variable is associated with a comment. The comment        ##
## can help to populate the variables with the appropriate        ##
## values.                              ##
##                                                                ##
## IMPORTANT NOTE: This file contains plain text passwords and    ##
## should be secured to have read permission only by oracle user  ##
## or db administrator who owns this installation.                ##
##                                                                ##
####################################################################

#------------------------------------------------------------------------------
# Do not change the following system generated value. 
#------------------------------------------------------------------------------
#标注响应文件版本,这个版本必须和要#安装的数据库版本相同,安装检验无法通过,不能更改
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 

#------------------------------------------------------------------------------
# Specify the installation option.#选择安装类型:1.只装数据库软件 2.安装数据库软件并建库 3.升级数据库
# It can be one of the following:
# 1. INSTALL_DB_SWONLY
# 2. INSTALL_DB_AND_CONFIG
# 3. UPGRADE_DB
#-------------------------------------------------------------------------------
oracle.install.option=INSTALL_DB_SWONLY

#-------------------------------------------------------------------------------
# Specify the hostname of the system as set during the install. It can be used
# to force the installation to use an alternative hostname rather than using the
# first hostname found on the system. (e.g., for systems with multiple hostnames 
# and network interfaces)
#-------------------------------------------------------------------------------
ORACLE_HOSTNAME=hadoop  #指定操作系统主机名,通过hostname命令获得

#-------------------------------------------------------------------------------
# Specify the Unix group to be set for the inventory directory.  
#-------------------------------------------------------------------------------
UNIX_GROUP_NAME=dba   #指定oracle inventory目录的所有者,通常会是oinstall或者dba

#-------------------------------------------------------------------------------
# Specify the location which holds the inventory files.
#-------------------------------------------------------------------------------
INVENTORY_LOCATION=/u01/app/oracle/oraInventory  #指定产品清单oracle inventory目录的路径,如果是Win平台下可以省略

#-------------------------------------------------------------------------------
# Specify the languages in which the components will be installed.             
#
# en   : English                  ja   : Japanese                  
# fr   : French                   ko   : Korean                    
# ar   : Arabic                   es   : Latin American Spanish    
# bn   : Bengali                  lv   : Latvian                   
# pt_BR: Brazilian Portuguese     lt   : Lithuanian                
# bg   : Bulgarian                ms   : Malay                     
# fr_CA: Canadian French          es_MX: Mexican Spanish           
# ca   : Catalan                  no   : Norwegian                 
# hr   : Croatian                 pl   : Polish                    
# cs   : Czech                    pt   : Portuguese                
# da   : Danish                   ro   : Romanian                  
# nl   : Dutch                    ru   : Russian                   
# ar_EG: Egyptian                 zh_CN: Simplified Chinese        
# en_GB: English (Great Britain)  sk   : Slovak                    
# et   : Estonian                 sl   : Slovenian                 
# fi   : Finnish                  es_ES: Spanish                   
# de   : German                   sv   : Swedish                   
# el   : Greek                    th   : Thai                      
# iw   : Hebrew                   zh_TW: Traditional Chinese       
# hu   : Hungarian                tr   : Turkish                   
# is   : Icelandic                uk   : Ukrainian                 
# in   : Indonesian               vi   : Vietnamese                
# it   : Italian                                                   
#
# Example : SELECTED_LANGUAGES=en,fr,ja
#------------------------------------------------------------------------------
SELECTED_LANGUAGES=en,zh_CN #指定数据库语言,可以选择多个,用逗号隔开。选择en, zh_CN(英文和简体中文)

#------------------------------------------------------------------------------
# Specify the complete path of the Oracle Home.
#------------------------------------------------------------------------------
ORACLE_HOME=/u01/app/product/11.2.0/db_1  #设置ORALCE_HOME的路径

#------------------------------------------------------------------------------
# Specify the complete path of the Oracle Base. 
#------------------------------------------------------------------------------
ORACLE_BASE=/u01/app/oracle  #设置ORALCE_BASE的路径

#------------------------------------------------------------------------------
# Specify the installation edition of the component.                        
#                                                             
# The value should contain only one of these choices.        
# EE     : Enterprise Edition                                
# SE     : Standard Edition                                  
# SEONE  : Standard Edition One
# PE     : Personal Edition (WINDOWS ONLY) #选择Oracle安装数据库软件的版本(企业版,标准版,标准版1),不同的版本功能不同
#------------------------------------------------------------------------------
oracle.install.db.InstallEdition=EE

#------------------------------------------------------------------------------
# This variable is used to enable or disable custom install.
#
# true  : Components mentioned as part of 'customComponents' property
#         are considered for install.
# false : Value for 'customComponents' is not considered.
#------------------------------------------------------------------------------

  #是否自定义Oracle的组件,如果选择false,则会使用默认的组件

  #如果选择true否则需要自己在下面一条参数将要安装的组件一一列出。

  #安装相应版权后会安装所有的组件,后期如果缺乏某个组件,再次安装会非常的麻烦。

oracle.install.db.isCustomInstall=true

#------------------------------------------------------------------------------
# This variable is considered only if 'IsCustomInstall' is set to true. 
#
# Description: List of Enterprise Edition Options you would like to install.
#
#              The following choices are available. You may specify any
#              combination of these choices.  The components you choose should
#              be specified in the form "internal-component-name:version"
#              Below is a list of components you may specify to install.
#        
#              oracle.rdbms.partitioning:11.2.0.1.0 - Oracle Partitioning
#              oracle.rdbms.dm:11.2.0.1.0 - Oracle Data Mining
#              oracle.rdbms.dv:11.2.0.1.0 - Oracle Database Vault 
#              oracle.rdbms.lbac:11.2.0.1.0 - Oracle Label Security
#              oracle.rdbms.rat:11.2.0.1.0 - Oracle Real Application Testing 
#              oracle.oraolap:11.2.0.1.0 - Oracle OLAP
#------------------------------------------------------------------------------
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,
oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,
oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,
oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0 ############################################################################### # # # PRIVILEGED OPERATING SYSTEM GROUPS # # ------------------------------------------ # # Provide values for the OS groups to which OSDBA and OSOPER privileges # # needs to be granted. If the install is being performed as a member of the # # group "dba", then that will be used unless specified otherwise below. # # # ############################################################################### #------------------------------------------------------------------------------ # The DBA_GROUP is the OS group which is to be granted OSDBA privileges. #------------------------------------------------------------------------------ oracle.install.db.DBA_GROUP=dba #指定拥有OSDBAOSOPER权限的用户组,通常会是dba #------------------------------------------------------------------------------ # The OPER_GROUP is the OS group which is to be granted OSOPER privileges. #------------------------------------------------------------------------------ oracle.install.db.OPER_GROUP=dba #------------------------------------------------------------------------------ # Specify the cluster node names selected during the installation. #------------------------------------------------------------------------------ oracle.install.db.CLUSTER_NODES= #如果是RAC的安装,在这里指定所有的节点 #------------------------------------------------------------------------------ # Specify the type of database to create. # It can be one of the following: # - GENERAL_PURPOSE/TRANSACTION_PROCESSING # - DATA_WAREHOUSE #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.type=GENERAL_PURPOSE #选择数据库的用途,一般用途/事物处理,数据仓库 #------------------------------------------------------------------------------ # Specify the Starter Database Global Database Name. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.globalDBName=orcl #指定GlobalName #------------------------------------------------------------------------------ # Specify the Starter Database SID. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.SID=orcl #------------------------------------------------------------------------------ # Specify the Starter Database character set. # # It can be one of the following: # AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2, # EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257, # BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6, # AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8, # IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE, # KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950, # ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258 #------------------------------------------------------------------------------

 #选择字符集。不正确的字符集会给数据显示和存储带来麻烦无数。

 #通常中文选择的有ZHS16GBK简体中文库,建议选择unicodeAL32UTF8国际字符集

oracle.install.db.config.starterdb.characterSet=AL32UTF8

#------------------------------------------------------------------------------
# This variable should be set to true if Automatic Memory Management 
# in Database is desired.
# If Automatic Memory Management is not desired, and memory allocation
# is to be done manually, then set it to false.
#------------------------------------------------------------------------------
#11g的新特性自动内存管理,也就是SGA_TARGETPAG_AGGREGATE_TARGET#不用设置了,Oracle会自动调配两部分大小
oracle.install.db.config.starterdb.memoryOption=true #------------------------------------------------------------------------------ # Specify the total memory allocation for the database. Value(in MB) should be # at least 256 MB, and should not exceed the total physical memory available # on the system. # Example: oracle.install.db.config.starterdb.memoryLimit=512 #------------------------------------------------------------------------------
#指定Oracle自动管理内存的大小,最小是256MB
oracle.install.db.config.starterdb.memoryLimit=512 #------------------------------------------------------------------------------ # This variable controls whether to load Example Schemas onto the starter # database or not. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.installExampleSchemas=false #是否载入模板示例 #------------------------------------------------------------------------------ # This variable includes enabling audit settings, configuring password profiles # and revoking some grants to public. These settings are provided by default. # These settings may also be disabled. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.enableSecuritySettings=true #是否启用安全设置 ############################################################################### # # # Passwords can be supplied for the following four schemas in the # # starter database: # # SYS # # SYSTEM # # SYSMAN (used by Enterprise Manager) # # DBSNMP (used by Enterprise Manager) # # # # Same password can be used for all accounts (not recommended) # # or different passwords for each account can be provided (recommended) # # # ############################################################################### #------------------------------------------------------------------------------ # This variable holds the password that is to be used for all schemas in the # starter database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.password.ALL=oracle #设定所有数据库用户使用同一个密码,其它数据库用户就不用单独设置了。 #------------------------------------------------------------------------------- # Specify the SYS password for the starter database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.password.SYS= #------------------------------------------------------------------------------- # Specify the SYSTEM password for the starter database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.password.SYSTEM= #------------------------------------------------------------------------------- # Specify the SYSMAN password for the starter database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.password.SYSMAN= #------------------------------------------------------------------------------- # Specify the DBSNMP password for the starter database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.password.DBSNMP= #------------------------------------------------------------------------------- # Specify the management option to be selected for the starter database. # It can be one of the following: # 1. GRID_CONTROL # 2. DB_CONTROL #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.control=DB_CONTROL #数据库本地管理工具DB_CONTROL,远程集中管理工具GRID_CONTROL #------------------------------------------------------------------------------- # Specify the Management Service to use if Grid Control is selected to manage # the database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= #GRID_CONTROL需要设定grid control的远程路径URL #------------------------------------------------------------------------------- # This variable indicates whether to receive email notification for critical # alerts when using DB control. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false #是否启用Email通知启用后会将告警等信息发送到指定邮箱 #------------------------------------------------------------------------------- # Specify the email address to which the notifications are to be sent. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.dbcontrol.emailAddress= #设置通知EMAIL地址 #------------------------------------------------------------------------------- # Specify the SMTP server used for email notifications. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.dbcontrol.SMTPServer= ############################################################################### # # # SPECIFY BACKUP AND RECOVERY OPTIONS # # ------------------------------------ # # Out-of-box backup and recovery options for the database can be mentioned # # using the entries below. # # # ############################################################################### #------------------------------------------------------------------------------ # This variable is to be set to false if automated backup is not required. Else # this can be set to true. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.automatedBackup.enable=false #设置自动备份,和OUI里的自动备份一样。 #------------------------------------------------------------------------------ # Regardless of the type of storage that is chosen for backup and recovery, if # automated backups are enabled, a job will be scheduled to run daily at # 2:00 AM to backup the database. This job will run as the operating system # user that is specified in this variable. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.automatedBackup.osuid= #自动备份会启动一个job,指定启动JOB的系统用户ID #------------------------------------------------------------------------------- # Regardless of the type of storage that is chosen for backup and recovery, if # automated backups are enabled, a job will be scheduled to run daily at # 2:00 AM to backup the database. This job will run as the operating system user # specified by the above entry. The following entry stores the password for the # above operating system user. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.automatedBackup.ospwd= #自动备份会开启一个job,需要指定OSUser的密码 #------------------------------------------------------------------------------- # Specify the type of storage to use for the database. # It can be one of the following: # - FILE_SYSTEM_STORAGE # - ASM_STORAGE #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.storageType= #自动备份,要求指定使用的文件系统存放数据库文件还是ASM #------------------------------------------------------------------------------- # Specify the database file location which is a directory for datafiles, control # files, redo logs. # # Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM #-------------------------------------------------------------------------------
##使用文件系统存放数据库文件才需要指定数据文件、控制文件、Redo log的存放目录
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= #------------------------------------------------------------------------------- # Specify the backup and recovery location. # # Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM #-------------------------------------------------------------------------------
##使用文件系统存放数据库文件才需要指定备份恢复目录
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= #------------------------------------------------------------------------------- # Specify the existing ASM disk groups to be used for storage. # # Applicable only when oracle.install.db.config.starterdb.storage=ASM #-------------------------------------------------------------------------------
##使用ASM存放数据库文件才需要指定存放的磁盘组
oracle.install.db.config.asm.diskGroup= #------------------------------------------------------------------------------- # Specify the password for ASMSNMP user of the ASM instance. # # Applicable only when oracle.install.db.config.starterdb.storage=ASM_SYSTEM #-------------------------------------------------------------------------------
##使用ASM存放数据库文件才需要指定ASM实例密码
oracle.install.db.config.asm.ASMSNMPPassword= #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username. # # Example : MYORACLESUPPORT_USERNAME=metalink #------------------------------------------------------------------------------ MYORACLESUPPORT_USERNAME= ##指定metalink账户用户名 #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username password. # # Example : MYORACLESUPPORT_PASSWORD=password #------------------------------------------------------------------------------ MYORACLESUPPORT_PASSWORD= ## 指定metalink账户密码 #------------------------------------------------------------------------------ # Specify whether to enable the user to set the password for # My Oracle Support credentials. The value can be either true or false. # If left blank it will be assumed to be false. # # Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true #------------------------------------------------------------------------------ SECURITY_UPDATES_VIA_MYORACLESUPPORT= ## 用户是否可以设置metalink密码 #------------------------------------------------------------------------------ # Specify whether user wants to give any proxy details for connection. # The value can be either true or false. If left blank it will be assumed # to be false. # # Example : DECLINE_SECURITY_UPDATES=false #------------------------------------------------------------------------------

False表示不需要设置安全更新,注意,在11.2的静默安装中疑似有一个BUG

Response File中必须指定为true,否则会提示错误,不管是否正确填写了邮件地址

# 这里必须为 true 否则会失败

DECLINE_SECURITY_UPDATES=true

#------------------------------------------------------------------------------
# Specify the Proxy server name. Length should be greater than zero.
#
# Example    : PROXY_HOST=proxy.domain.com 
#------------------------------------------------------------------------------
PROXY_HOST=  ##代理服务器名

#------------------------------------------------------------------------------
# Specify the proxy port number. Should be Numeric and atleast 2 chars.
#
# Example    : PROXY_PORT=25 
#------------------------------------------------------------------------------
PROXY_PORT=  ##代理服务器端口

#------------------------------------------------------------------------------
# Specify the proxy user name. Leave PROXY_USER and PROXY_PWD 
# blank if your proxy server requires no authentication.
#
# Example    : PROXY_USER=username 
#------------------------------------------------------------------------------
PROXY_USER=  ##代理服务器用户名

#------------------------------------------------------------------------------
# Specify the proxy password. Leave PROXY_USER and PROXY_PWD  
# blank if your proxy server requires no authentication.
#
# Example    : PROXY_PWD=password 
#------------------------------------------------------------------------------
PROXY_PWD=  ##代理服务器密码

 

 

10.开始安装oracle11g 容器中没有图形界面,只能静默安装(silent),所以需要配置以上文件

切换到oracle用户下

[root@22edf28f349d oracle]# su oracle
[oracle@22edf28f349d ~]$ cd /

 

进去刚才解压oracle两个zip包的目标目录,并且进入database目录下 执行安装:

[oracle@22edf28f349d database]$ ls
doc  install  response  rpm  runInstaller  sshsetup  stage  welcome.html
[oracle@22edf28f349d database]$ ./runInstaller -ignoreSysPrereqs -ignorePrereq -silent -responseFile /home/oracle/db_install.rsp

 

安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。

打开另一个终端,执行
 #tail -100f /home/oracle/inventory/logs/installActions......log
 可以实时跟踪查看安装日志,了解安装的进度。

[root@22edf28f349d /]# tail -100f /tmp/OraInstall2017-03-08_06-02-45PM/installActions2017-03-08_06-02-45PM.log

 

安装过程比较花时间,慢慢等待吧。

当出现如下语句就表示安装成功了:

[oracle@22edf28f349d database]$ The following configuration scripts need to be executed as the "root" user. 
 #!/bin/sh 
 #Root scripts to run

/u01/app/oracle/oraInventory/orainstRoot.sh
/u01/app/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.

 

11.按照提示在root用户下执行两个脚本

[root@22edf28f349d /]# /u01/app/product/11.2.0/db_1/root.sh
Check /u01/app/product/11.2.0/db_1/install/root_22edf28f349d_2017-03-08_18-45-38.log for the output of root script

 

查看日志:

[root@22edf28f349d /]# tail -100f /u01/app/product/11.2.0/db_1/install/root_22edf28f349d_2017-03-08_18-45-38.log

Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/product/11.2.0/db_1

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

 

执行脚本:

[root@22edf28f349d /]# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oracle/oraInventory to dba.
The execution of the script is complete.
[root@22edf28f349d /]# 

 

到此oracle11g软件已经安装成功了。。。

12.安装listener

[oracle@22edf28f349d database]$ netca /silent /responsefile /home/oracle/netca.rsp
UnsatisfiedLinkError exception loading native library: njni11
java.lang.UnsatisfiedLinkError: /u01/app/product/11.2.0/db_1/lib/libnjni11.so: libaio.so.1: cannot open shared object file: No such file or directory
java.lang.UnsatisfiedLinkError: jniGetOracleHome
    at oracle.net.common.NetGetEnv.jniGetOracleHome(Native Method)
    at oracle.net.common.NetGetEnv.getOracleHome(Unknown Source)
    at oracle.net.ca.NetCALogger.getOracleHome(NetCALogger.java:230)
    at oracle.net.ca.NetCALogger.initOracleParameters(NetCALogger.java:215)
    at oracle.net.ca.NetCALogger.initLogger(NetCALogger.java:130)
    at oracle.net.ca.NetCA.main(NetCA.java:404)

Error: jniGetOracleHome
Oracle Net Services configuration failed.  The exit code is 1

 

安装时报错,按照网上的解决办法:

安装 libaio.so.1 并将 libaio.so.1拷贝到$ORACLE_HOME/lib目录下

[root@22edf28f349d /]# yum -y install libaio*
[oracle@22edf28f349d lib64]$ cp /lib64/libaio.so.1 $ORACLE_HOME/lib

 

重现安装listener:

[oracle@22edf28f349d lib64]$ netca /silent /responsefile /home/oracle/netca.rsp

Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /home/oracle/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /u01/app/product/11.2.0/db_1/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@22edf28f349d lib64]$ 

 

显示listener安装成功。

查看listener的状态:

[oracle@22edf28f349d lib64]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-MAR-2017 18:55:11

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                08-MAR-2017 18:54:17
Uptime                    0 days 0 hr. 0 min. 54 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/22edf28f349d/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@22edf28f349d lib64]$ 

 

13.使用dbca 静默建库(创建数据库实例)

由于我们在安装数据库的时候在db_install.rsp配置了:

#------------------------------------------------------------------------------
# Specify the installation option.#选择安装类型:1.只装数据库软件 2.安装数据库软件并建库 3.升级数据库
# It can be one of the following:
# 1. INSTALL_DB_SWONLY
# 2. INSTALL_DB_AND_CONFIG
# 3. UPGRADE_DB
#-------------------------------------------------------------------------------
oracle.install.option=INSTALL_DB_SWONLY

 

此时还没有数据库和实例,可以通过dbca.rsp 来创建数据库和实例

编辑dbca.rsp文件:

RESPONSEFILE_VERSION = "11.2.0"  //不能更改
 OPERATION_TYPE = "createDatabase"
 GDBNAME = "orcl"  //数据库的名字
 SID = "orcl"    //对应的实例名字
 TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件
 SYSPASSWORD = "oracle"   //SYS管理员密码
 SYSTEMPASSWORD = "oracle"  //SYSTEM管理员密码
 DATAFILEDESTINATION =  //数据文件存放目录 默认为 $ORACLE_BASE/oradata
 RECOVERYAREADESTINATION= //恢复数据存放目录 默认为$ORACLE_BASE/flash_recovery_area
 CHARACTERSET = "UTF8"   //字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
 TOTALMEMORY = "5120"    //oracle内存5120MB
[oracle@22edf28f349d lib64]$ dbca -silent -responseFile /home/oracle/dbca.rsp 
sh: /bin/ksh: No such file or directory
sh: /bin/ksh: No such file or directory
/bin/cat: /proc/sys/net/core/wmem_default: No such file or directory
sh: /bin/ksh: No such file or directory
sh: /bin/ksh: No such file or directory
/bin/cat: /proc/sys/net/core/wmem_default: No such file or directory
sh: /bin/ksh: No such file or directory
sh: /bin/ksh: No such file or directory
/bin/cat: /proc/sys/net/core/wmem_default: No such file or directory
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 "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.

 

14.再次查看监听:

[oracle@22edf28f349d lib64]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-MAR-2017 19:27:33

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                08-MAR-2017 18:54:17
Uptime                    0 days 0 hr. 33 min. 16 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/22edf28f349d/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@22edf28f349d lib64]$ 

 

15.连接sqlplus

[oracle@22edf28f349d lib64]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 8 19:28:08 2017

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION       STARTUP_T STATUS     PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS       SHU DATABASE_STATUS     INSTANCE_ROLE        ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
          1 orcl
22edf28f349d
11.2.0.1.0      08-MAR-17 OPEN     NO          1 STOPPED
ALLOWED    NO  ACTIVE         PRIMARY_INSTANCE   NORMAL    NO


SQL> 

到此docker下成功完成oracle11g实例的安装完成。

 

16.建立表空间和用户
在创建之前需要目标目录需要存在即:

[root@7a0b6182a059 orcl]# pwd
/opt/oracle/oradata/orcl

并赋予权限:

[root@7a0b6182a059 ~]# chown -R oracle:dba /opt/oracle
[root@7a0b6182a059 ~]# chmod -R 775 /opt/oracle

创建临时表空间:

SQL> create temporary tablespace user_temp tempfile '/opt/oracle/oradata/orcl/user_temp.dbf' size 50m
  2  autoextend on
  3  next 50m maxsize 20480m
  4  extent management local;

Tablespace created.

SQL> 

 创建数据表空间

SQL> create tablespace user_data
  2  logging
  3  datafile '/opt/oracle/oradata/orcl/user_data.dbf'
  4  size 50m
  5  autoextend on
  6  next 50m maxsize 20480m
  7  extent management local;

Tablespace created.

SQL> 

 创建用户并指定表空间

SQL> create user jzptpub identified by jzptpub
   2  default tablespace user_data
  3  temporary tablespace user_temp;

User created.

 给用户授予权限

SQL> grant connect,resource to jzptpub;

Grant succeeded.


 此时在其他机器上可以远程登录这个用户,命令为:
 $sqlplus test/test@ip/orcl

17.用新建的用户连接数据库,并建立一个表

$ export NLS_LANG=American_America.AL32UTF8 

 注意:UTF8是为了使得sqlplus和linux终端环境一致起来,此时发往数据库的是UTF8,数据库存储前会转为ZHS16GBK.
 当读取时,Sqlplus会把收到的ZHS16GBK转换为UTF8发送到Linux终端。

$sqlplus test/test@ip/orcl

 SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 14 08:22:11 2012

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


 Connected to:
 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
 With the Partitioning, OLAP, Data Mining and Real Application Testing options

 SQL> create table STUDENT(ID int, NAME varchar(20));

 Table created.

 SQL> insert into STUDENT values(1, '张三');

 1 row created.

 SQL> select * from student;

   ID NAME
 ---------- ------------------------------------------------------------
    1 张三

 

需要注意的地方:

客户端连接配置tnsname.ora文件
docker =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle11g)
    )
  )

用pl/sql连接

注1:192.168.114.130为宿主机IP,1521也是宿主机端口,而容器中oracle服务端口1521是映射到宿主机的1521端口
注2:在容器中启动listener,要主意$ORACLE_HOME/network/admin下的listener.ora和tnsname.ora文件中的host参数,这个参数不能写成IP,也不能写成/etc/sysconfig/network中的hostname,只能写成
容器启动时的容器ID号,也可在容器中使用命令查看主机信息uname -a
如:
[oracle@d2126eb6637e ~]$ uname -a
Linux d2126eb6637e 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

 

posted @ 2017-03-09 03:29  wq3435  阅读(28247)  评论(0编辑  收藏  举报