获取镜像
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;
