linux系统docker 安装oracle 数据库11.2.0.4
下载oracle 数据库11.2.0.4 安装包
下载地址:
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_1of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_1of7.zip
https://updates.oracle.com/Orion/Services/download/p13390677_112040_Linux-x86-64_2of7.zip?aru=16716375&patch_file=p13390677_112040_Linux-x86-64_2of7.zip
这里我把文件放在了/home/data/oracle-11g 目录下面
cd /home/data/oracle-11g
unzip -o p13390677_112040_Linux-x86-64_1of7.zip
unzip -o p13390677_112040_Linux-x86-64_2of7.zip
将两个压缩包放在相同目录下依次解压得到一个database目录, 也就是oracle数据库的安装目录
此时目录可以看到:
|home
|data
|oracle-11g
|database
拉取oracle数据环境docker镜像包(jaspeen/oracle-11g)
sudo docker run --privileged --name oracle11g -p 1521:1521 -v /home/data/oracle-11g:/install jaspeen/oracle-11g
docker run --privileged --name 容器名 -p 1521:1521 -v database目录所在的目录路径:/install jaspeen/oracle-11g
jaspeen/oracle-11g该镜像在启动时执行安装数据库脚本指定了安装目录在/install下面, 所以这里需要将oracle安装目录database挂载到容器目录的/install下面
** 踩坑(1)**
运行上面的命令后
应该会出现包含报错信息:
Checking swap space: 0 MB available, 150 MB required. Failed
解决:
-
创建2G的空间, if 表示infile, of表示outfile, bs=1M代表增加的模块大小, count=2048代表2048个模块, 也就是2G空间
dd if=/dev/zero of=/swap1 bs=1M count=2048
-
将目的文件设置为swap分区文件
mkswap /swap1
-
激活swap,立即启用交换分区文件
swapon /swap1
-
用free -m 命令查看当前swap大小, 可以看到Swap total的值差不多2g, 但这只是临时性的,如果机器重启会失效
df -h
-
解决上面的临时问题, 编辑/etc/fstab文件
vi /etc/fstab
最后一行加入:
/swap1 swap swap defaults 0 0
** 踩坑(2) **
解决的上面的问题后再次启动该镜像
docker start oracle11g
应该会出现包含报错信息:
[FATAL] [INS-10105] The given response file /assets/db_install.rsp is not valid.
解决:
- 将容器中的/assets/dbca.rsp文件, 拷贝到当前目录
docker cp oracle11g:/assets/dbca.rsp .
-
修改该文件第611行, INITPARAMS=“memory_target=0,sga_target=500,pga_aggregate_target=100,java_jit_enabled=false”
vi dbca.rsp
-
在当前目录下创建rsp.txt文件
vi rsp.txt
docker@docker:/setup/ora$ cat rsp.txt #------------------------------------------------------------------------------ # Do not change the following system generated value. #------------------------------------------------------------------------------ oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 #------------------------------------------------------------------------------ # Specify the installation option. # 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=database #------------------------------------------------------------------------------- # Specify the Unix group to be set for the inventory directory. #------------------------------------------------------------------------------- UNIX_GROUP_NAME=oinstall #------------------------------------------------------------------------------- # Specify the location which holds the inventory files. # This is an optional parameter if installing on # Windows based Operating System. #------------------------------------------------------------------------------- INVENTORY_LOCATION=/opt/oracle/oraInventory #------------------------------------------------------------------------------- # 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 # # all_langs : All languages # # Specify value as the following to select any of the languages. # Example : SELECTED_LANGUAGES=en,fr,ja # # Specify value as the following to select all the languages. # Example : SELECTED_LANGUAGES=all_langs #------------------------------------------------------------------------------ SELECTED_LANGUAGES=en,de #------------------------------------------------------------------------------ # Specify the complete path of the Oracle Home. #------------------------------------------------------------------------------ ORACLE_HOME=/opt/oracle/app/product/11.2.0/dbhome_1 #------------------------------------------------------------------------------ # Specify the complete path of the Oracle Base. #------------------------------------------------------------------------------ ORACLE_BASE=/opt/oracle/app #------------------------------------------------------------------------------ # 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.install.db.InstallEdition=EE #------------------------------------------------------------------------------ # This variable is used to enable or disable custom install and is considered # only if InstallEdition is EE. # # true : Components mentioned as part of 'optionalComponents' property # are considered for install. # false : Value for 'optionalComponents' is not considered. #------------------------------------------------------------------------------ oracle.install.db.EEOptionsSelection= #------------------------------------------------------------------------------ # This variable is considered only if 'EEOptionsSelection' is set to true. # # Description: List of Enterprise Edition Options you would like to enable. # # 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 enable. # # oracle.oraolap:11.2.0.4.0 - Oracle OLAP # oracle.rdbms.dm:11.2.0.4.0 - Oracle Data Mining # oracle.rdbms.dv:11.2.0.4.0 - Oracle Database Vault # oracle.rdbms.lbac:11.2.0.4.0 - Oracle Label Security # oracle.rdbms.partitioning:11.2.0.4.0 - Oracle Partitioning # oracle.rdbms.rat:11.2.0.4.0 - Oracle Real Application Testing #------------------------------------------------------------------------------ #oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0 oracle.install.db.optionalComponents= ############################################################################### # # # 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 value to be specified for OSDBA and OSOPER group is only for UNIX based # # Operating System. # # # ############################################################################### #------------------------------------------------------------------------------ # The DBA_GROUP is the OS group which is to be granted OSDBA privileges. #------------------------------------------------------------------------------ oracle.install.db.DBA_GROUP=dba #------------------------------------------------------------------------------ # The OPER_GROUP is the OS group which is to be granted OSOPER privileges. # The value to be specified for OSOPER group is optional. #------------------------------------------------------------------------------ oracle.install.db.OPER_GROUP=dba #------------------------------------------------------------------------------ # Specify the cluster node names selected during the installation. # Example : oracle.install.db.CLUSTER_NODES=node1,node2 #------------------------------------------------------------------------------ oracle.install.db.CLUSTER_NODES= #------------------------------------------------------------------------------ # This variable is used to enable or disable RAC One Node install. # # true : Value of RAC One Node service name is used. # false : Value of RAC One Node service name is not used. # # If left blank, it will be assumed to be false #------------------------------------------------------------------------------ oracle.install.db.isRACOneInstall= #------------------------------------------------------------------------------ # Specify the name for RAC One Node Service. #------------------------------------------------------------------------------ oracle.install.db.racOneServiceName= #------------------------------------------------------------------------------ # 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= #------------------------------------------------------------------------------ # Specify the Starter Database SID. #------------------------------------------------------------------------------ oracle.install.db.config.starterdb.SID= #------------------------------------------------------------------------------ # 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 #------------------------------------------------------------------------------ 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. #------------------------------------------------------------------------------ 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.install.db.config.starterdb.memoryLimit= #------------------------------------------------------------------------------ # 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=ChangeOnInstall #------------------------------------------------------------------------------- # 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 #------------------------------------------------------------------------------- # Specify the Management Service to use if Grid Control is selected to manage # the database. #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= ############################################################################### # # # 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 #------------------------------------------------------------------------------ # 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 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= #------------------------------------------------------------------------------- # 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 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= #------------------------------------------------------------------------------- # 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= #------------------------------------------------------------------------------- # 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_STORAGE #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/opt/datafile #------------------------------------------------------------------------------- # Specify the backup and recovery location. # # Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE #------------------------------------------------------------------------------- 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_STORAGE #------------------------------------------------------------------------------- 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_STORAGE #------------------------------------------------------------------------------- oracle.install.db.config.asm.ASMSNMPPassword= #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username. # # Example : MYORACLESUPPORT_USERNAME=abc@oracle.com #------------------------------------------------------------------------------ MYORACLESUPPORT_USERNAME= #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username password. # # Example : MYORACLESUPPORT_PASSWORD=password #------------------------------------------------------------------------------ MYORACLESUPPORT_PASSWORD= #------------------------------------------------------------------------------ # 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= #------------------------------------------------------------------------------ # Specify whether user doesn't want to configure Security Updates. # The value for this variable should be true if you don't want to configure # Security Updates, false otherwise. # # The value can be either true or false. If left blank it will be assumed # to be false. # # Example : DECLINE_SECURITY_UPDATES=false #------------------------------------------------------------------------------ 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= #------------------------------------------------------------------------------ # Specify the proxy realm. This value is used if auto-updates option is selected. # # Example : PROXY_REALM=metalink #------------------------------------------------------------------------------ PROXY_REALM= #------------------------------------------------------------------------------ # Specify the Oracle Support Hub URL. # # Example : COLLECTOR_SUPPORTHUB_URL=https://orasupporthub.company.com:8080/ #------------------------------------------------------------------------------ COLLECTOR_SUPPORTHUB_URL= #------------------------------------------------------------------------------ # Specify the auto-updates option. It can be one of the following: # a.MYORACLESUPPORT_DOWNLOAD # b.OFFLINE_UPDATES # c.SKIP_UPDATES #------------------------------------------------------------------------------ oracle.installer.autoupdates.option=SKIP_UPDATES #------------------------------------------------------------------------------ # In case MYORACLESUPPORT_DOWNLOAD option is chosen, specify the location where # the updates are to be downloaded. # In case OFFLINE_UPDATES option is chosen, specify the location where the updates # are present. oracle.installer.autoupdates.downloadUpdatesLoc= #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username which has the patches download privileges # to be used for software updates. # Example : AUTOUPDATES_MYORACLESUPPORT_USERNAME=abc@oracle.com #------------------------------------------------------------------------------ AUTOUPDATES_MYORACLESUPPORT_USERNAME= #------------------------------------------------------------------------------ # Specify the My Oracle Support Account Username password which has the patches download privileges # to be used for software updates. # # Example : AUTOUPDATES_MYORACLESUPPORT_PASSWORD=password #------------------------------------------------------------------------------ AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
-
删除刚才创建的容器
docker rm oracle11g
-
重新创建容器
docker run --privileged --name oracle11g -p 1521:1521 -v /home/data/oracle-11g:/install -v /home/data/oracle-11g/dbca.rsp:/assets/dbca.rsp -v /home/data/oracle-11g/rsp.txt:/assets/db_install.rsp jaspeen/oracle-11g
** 踩坑(3) **
踩完上面的坑, 大概率你的容器还是启动不了
因为: Docker部署Oracle后不会生成监听文件,使用的系统默认监听。需要手动自己配置监听文件到/opt/oracle/app/product/11.2.0/dbhome_1/network/admin目录
解决:
-
创建 listener.ora文件 , 注意:配置中HOST的IP不是服务器的IP填写为Docker容器的IP
vi listener.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.2)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) ) ) ADR_BASE_LISTENER = /opt/oracle/app
-
创建 sqlnet.ora 文件
vi sqlnet.ora
configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /opt/oracle/app
-
创建 tnsnames.ora文件
vi tnsnames.ora
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.2)(PORT = 1521)) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
-
将这三个文件拷贝到容器的/opt/oracle/app/product/11.2.0/dbhome_1/network/admin目录下
docker cp ./listener.ora oracle11g:/opt/oracle/app/product/11.2.0/dbhome_1/network/admin/listener.ora
docker cp ./sqlnet.ora oracle11g:/opt/oracle/app/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
docker cp ./tnsnames.ora oracle11g:/opt/oracle/app/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
-
前面的坑都踩完了, 现在运行容器
docker start oracle11g
到这里你的oracle-11.2.0.4就安装完成了