[root@jemora11204 /]# su - oracle[oracle@jemora11204 ~]$ lsnrctl start
[oracle@jemora11204 ~]$ sqlplus / as sysdba
SYS@JEM11G2> startup
SYS@JEM11G2>select * from v$version;
1.5 外部连接容器内的数据库
sqlplus sys/jem@192.168.1.54:21521/JEM11GR2 AS SYSDBA
注意:此处访问宿主机端口为21521,容器内部是1521,端口映射,系统管理员密码为jem
1.6 修改配置
docker run -itd --name oracle11204 -h oracle11204 --privileged=true -p 1521:1521 -p 222:22 -p 21158:1158 xingyuyu123/oracle:oracle11204 init
#那么现在的容器名称就是oracle11204,但是配置文件不是需要修改[root@api-new local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
697f19ec9a76 xingyuyu123/oracle:oracle11204 "init"21 minutes ago Up 21 minutes 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:21158->1158/tcp, :::21158->1158/tcp oracle11204
[root@api-new local]# #进入容器
docker exec -it oracle11204 bash# 修改root以及oralce口令echo root |passwd root --stdin
echo oracle |passwd oracle --stdin
# 修改主机名su - oracle
#修改listener.ora(将HOST后面修改为容器名称)vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora
LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS =(PROTOCOL = TCP)(HOST = oracle11204)(PORT =1521))))
ADR_BASE_LISTENER = /u01/app/oracle
#修改tnsnames.ora(将HOST后面修改为容器名称),这里的orcl是已经修改过的服务名vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora
orcl =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = oracle11204)(PORT =1521))(CONNECT_DATA =(SERVER = DEDICATED)#(SERVICE_NAME = JEM11GR2)(SERVICE_NAME = orcl)))#修改服务名
sqlplus / as sysdba或者sqlplus sys/jem as sysdba
#查看当前服务名
show parameter service_name
#修改服务名
alter system setservice_names='orcl'scope=both;#修改tnsnames.ora(将HOST后面修改为容器名称),这里的orcl是已经修改过的服务名vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora
orcl =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = oracle11204)(PORT =1521))(CONNECT_DATA =(SERVER = DEDICATED)#(SERVICE_NAME = JEM11GR2)(SERVICE_NAME = orcl)))#修改两处#修改sys密码
ALTER USER sys IDENTIFIED BY system;#验证密码是否修改成功exit
sqlplus sys/new_password as sysdba
1.7 数据库密码过期的方法
select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';#显示结果是密码的生命周期是180天。
若要将其设置为生命周期无限制可以执行下面语句:
alter profile default limit password_life_time unlimited;
commit;#进行以上步骤之后需要改变密码,否则还会出现password has expired异常#改变密码的命令
alter user XXXUSER identified by yourPassword;#如果账号被锁住,则需要解锁命令
alter user XXXUSER identified by oracle account unlock;