今天上午实践了一次使用docker镜像安装oracle的操作,不得不说,过程还是很艰辛的,这里记录一下,以作后续使用。
docker版本: 1.17.ce
oracle版本:11.2.0
操作系统版本:ubuntu 16.04LTS
目录
第一步:docker下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g (镜像比较大,6.5G, 但是就这也比其它的快呀,下载完成后就能使用,你还犹豫什么~)
第二步:启动镜像,挂载目录
docker run -d --name oracle_11g -p 1521:1521 -v /iflytek/oracle/oradata/:/home/oracle/app/oracle/oradata/ registry.aliyuncs.com/helowin/oracle_11g
注意挂载端口1521, 监听端口,当然你也可以修改docker镜像, 换成别的端口
第三步:进入镜像,删除原实例
docker exec -it oracle_11g /bin/bash
进入之后,执行如下命令
source /home/oracle/.bash_profile
sqlplus /nolog
connect /as sysdba
shutdown abort (管理oralce进程)
切换至shell , 开启清理之前实例的残留文件
[oracle@f3781c5f2fee dbs]$ find $ORACLE_BASE/ -name $ORACLE_SID /home/oracle/app/oracle/admin/helowin /home/oracle/app/oracle/diag/rdbms/helowin /home/oracle/app/oracle/diag/rdbms/helowin/helowin /home/oracle/app/oracle/flash_recovery_area/helowin [oracle@f3781c5f2fee dbs]$ rm -rf /home/oracle/app/oracle/admin/helowin [oracle@f3781c5f2fee dbs]$ rm -rf /home/oracle/app/oracle/diag/rdbms/helowin [oracle@f3781c5f2fee dbs]$ rm -rf /home/oracle/app/oracle/diag/rdbms/helowin/helowin [oracle@f3781c5f2fee dbs]$ rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin 最重要的一步,删除/etc/oratab文件最后一行. |
第四步:创建新实例 xiuzhu
cd $ORACLE_HOME/dbs
cp init.ora initxiuzhu.ora
修改initxiuzhu.ora 如下:
db_name='xiuzhu' # memory_target=1G docker的memory不允许这个配置,因此务必注释掉,否则实例启动不成功 processes = 150 audit_file_dest='/home/oracle/app/oracle/admin/xiuzhu/adump' audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest='/home/oracle/app/oracle/flash_recovery_area/xiuzhu' db_recovery_file_dest_size=2G diagnostic_dest='/home/oracle/app/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' # You may want to ensure that control files are created on separate physical # devices control_files = (ora_control1, ora_control2) compatible ='11.2.0' |
修改环境变量:
export ORALCE_SID=xiuzhu
进入oracle shell:
sqlplus /nolog
connect /as sysdba
执行命令启动实例 startup nomount
SQL> startup nomount ORACLE instance started. Total System Global Area 217157632 bytes Fixed Size 2211928 bytes Variable Size 159387560 bytes Database Buffers 50331648 bytes Redo Buffers 5226496 bytes SQL> SQL> SQL> SQL> SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- xiuzhu |
至此,实例xiuzhu创建成功,记得修改/home/oracle/.bash_profile中实例的变量(ORALCE_SID)
第④步:创建数据库 xiuzhu
执行如下命令创建数据库,注意相关路径及数据库名称(数据库名称跟实例名称保持一致)
CREATE DATABASE xiuzhu USER SYS IDENTIFIED BY sys USER SYSTEM IDENTIFIED BY manager LOGFILE GROUP 1 ('/home/oracle/app/oracle/oradata/xiuzhu/redo01.log') SIZE 20M, GROUP 2 ('/home/oracle/app/oracle/oradata/xiuzhu/redo02.log') SIZE 20M, GROUP 3 ('/home/oracle/app/oracle/oradata/xiuzhu/redo03.log') SIZE 20M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 CHARACTER SET US7ASCII NATIONAL CHARACTER SET UTF8 DATAFILE '/home/oracle/app/oracle/oradata/xiuzhu/system01.dbf' SIZE 325M REUSE EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE '/home/oracle/app/oracle/oradata/xiuzhu/sysaux01.dbf' SIZE 325M REUSE DEFAULT TABLESPACE tbs_1 datafile '/home/oracle/app/oracle/oradata/xiuzhu/tbs_1.dbf' size 50m DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/home/oracle/app/oracle/oradata/xiuzhu/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE undotbs1 DATAFILE '/home/oracle/app/oracle/oradata/xiuzhu/undotbs1.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; SQL> select name from v$database; NAME --------- XIUZHU |
第⑤步:创建数据字典和相关视图
SQL>conn sys as sysdba SQL>@?/rdbms/admin/catalog.sql; //此过程可能需要10分钟左右 SQL>@?/rdbms/admin/catproc.sql; /此过程可能需要15分钟左右 SQL>@?/rdbms/admin/catblock.sql; SQL>@?/rdbms/admin/catoctk.sql; SQL>@?/rdbms/admin/owminst.plb; SQL>conn system/ manager SQL>@?/sqlplus/admin/pupbld.sql; SQL>@?/sqlplus/admin/help/hlpbld.sql helpus.sql |
第⑥步:配置监听
进入$ORACLE_HOME/network/admin
修改tnsnames.ora,添加如下:
LISTENER_XIUZHU = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) xiuzhu = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = xiuzhu) ) ) |
修改listener.ora,添加如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = xiuzhu) (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_2) (PROGRAM = extproc) ) ) ADR_BASE_LISTENER = /home/oracle/app/oracle |
第⑦步:重启数据库,重启监听
sqlplus / as sysdba SQL> shutdown immediate --“关闭数据库实例��� SQL> startup --“启动数据库实例” SQL>exit $ lsnrctl stop listener -停止名为listener的监听服务 $ lsnrctl start listener -启动名为listener的监听服务 $ lsnrctl reload listener -重新加载名为listener的监听服务 |
第⑧步:创建表空间,创建用户
sqlplus / as sysdba SQL>create tablespace my_tablespace datafile '/home/oracle/app/oracle/oradata/xiuzhu/my_data.dbf' size 1000M; SQL>create user xiuzhu identified by QAZ2wsx default tablespace my_tablespace; SQL>grant connect,resource to xiuzhu; SQL>grant dba to xiuzhu; |
第⑨步:登录数据库,自己玩去吧