Loading

docker安装oracle11g

获取镜像

docker pull oracleinanutshell/oracle-xe-11g

创建容器

docker run -d -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true -e ORACLE_DISABLE_ASYNCH_IO=true -e ORACLE_ENABLE_XDB=true  --restart=always --name oracle11g oracleinanutshell/oracle-xe-11g

镜像参数详情

// 端口映射  物理机端口:容器端口
-p 49161:1521
//是否支持远程登录
ORACLE_ALLOW_REMOTE
//是否开启磁盘I/O
ORACLE_DISABLE_ASYNCH_IO
//是否创建默认用户XDB
ORACLE_ENABLE_XDB

详细参数说明:https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g

数据库信息

hostname: localhost
port: 49161
sid: xe
username: system
password: oracle

默认编码使用的是AL32UTF8,因为我的工作需要,需要改成ZHS16GBK

SQL> select * from nls_database_parameters;

PARAMETER						     VALUE
------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE						     AMERICAN
NLS_TERRITORY						     AMERICA
NLS_CURRENCY						     $
NLS_ISO_CURRENCY					     AMERICA
NLS_NUMERIC_CHARACTERS					     .,
NLS_CHARACTERSET					     AL32UTF8            -------------数据库字符集
NLS_CALENDAR						     GREGORIAN
NLS_DATE_FORMAT 					     DD-MON-RR
NLS_DATE_LANGUAGE					     AMERICAN
NLS_SORT						     BINARY
NLS_TIME_FORMAT 					     HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT				                      DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT					     HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT 				     DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY					     $
NLS_COMP						     BINARY
NLS_LENGTH_SEMANTICS				                      BYTE
NLS_NCHAR_CONV_EXCP				                     FALSE
NLS_NCHAR_CHARACTERSET				    AL16UTF16          ---------------------国家字符集(用的少)
NLS_RDBMS_VERSION					     11.2.0.1.0
# 进入docker容器的bash
docker exec -i -t XXXX /bin/bash
# 切换oracle用户
su oracle
# 声明实例名称
export ORACLE_SID=xe
# 使用sysdba登录sqlplus
sqlplus "/as sysdba"
# 先关闭数据库实例
SHUTDOWN IMMEDIATE;
#  打开控制文件
STARTUP MOUNT;
# 开启限制会话模式
ALTER SYSTEM ENABLE RESTRICTED SESSION;
# ALTER SYSTEM DISABLE RESTRICTED SESSION;  取消限制会话模式
# 设定job队列可以启动的进程数
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
# 禁用队列监视器协调器
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
# 修改并打开数据库
ALTER DATABASE OPEN;
# 修改数据库字符集
ALTER DATABASE CHARACTER SET ZHS16GBK;
# 当提示我们:新字符集必须为旧字符集的超集合,使用以下命令:
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
# 查看参数列表
select * from v$nls_parameters;
# 设置完成后,关闭数据库
SHUTDOWN IMMEDIATE;
# 再次打开数据库
STARTUP OPEN;
# 这时我们再使用之前的方式查看字符集
select userenv('language') from dual;

数据库的字符集就改为了CHINESE_CHINA.ZHS16GBK

数据库备份导入

expdp dumpfile=xxx.dmp logfile=xxx.log full=y

system用户被锁定,system修改密码

1、用管理员账户登录

conn sys/sys@bl as sysdba;

2、解锁账户

alter user system account unlock;

3、重置账户密码

alter user system identified by manager;
posted @ 2025-08-14 14:40  污橘  阅读(589)  评论(0)    收藏  举报