搭建环境介绍
entos7 vmware虚拟机环境
1.更新yum
yum update
2.安装Docker
yum install docker
安装完成后查看Docker的版本:
docker version
查看Docker的信息:
docker info
3.安装完后启动Docker
systemctl start docker.service
如果启动报错:
could not change group /var/run/docker.sock to docker: group docker not found
编辑:vi /etc/fstab 文件并在未尾加入以下内容:
none /sys/fs/cgroup cgroup defaults 0 0
然后再启动Docker
开机自启动:
chkconfig docker on
4.下载安装Oracle-xe-11g
docker pull wnameless/oracle-xe-11g
下载过程可能要花费一定的时间,下载完成后运行以下命令启动一个Oracle XE容器
docker run -d -p 1521:1521 -p 8080:8080 wnameless/oracle-xe-11g
查看并进入Docker 容器
[root@localhost text]# docker ps -a
进入容器空间即可进行sqlplus登录操作
[root@localhost text]# docker exec -it f7**7 /bin/bash
进入容器后操作
Oracle有两个用户sys和system默认密码都是oracle。
这里我用sys账户登录。
首先进入sqlplus
提示要用sysdba,最后用sys as sysdba 进入
就是第一次进入sqlplus时,会提示这个信息,大意就是密码将在7天内过期。
ERROR: ORA-28002 : the password will expire within 7 days
出现上述情况的原因在于Oracle11g在default profile中设定了180 days。PS:有人肯定会问这不是180天吗跟7天有什么关系,在这里不作详细解释。
具体解决方案等会使用Intellij IDEA 连接后解决。PS:主要是好操作。
可用IDEA工具连接
解决密码过期问题
1.检查该用戶的profile是哪個,一般都是DEFAULT。
SQL SELECT username,PROFILE FROM dba_users;
2.查看该DEFAULT的密码有效期配置。
SQL SELECT * FROM dba_profiles d WHERE d.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3.將密码有效期由180天改成无期限。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
到这里就已经搞定,但是这只是代表了后面用别的用户登录不会出现ORA-28002错误,但之前我们用sys用户登录该用户密码依然会在7天后过期,所以只需要我们在修改一次密码行了。
alter user sys identified by 密码
解锁和创建用户
1.解锁HR用户
首先查看用户名和用户状态
SELECT username,account_status FROM dba_users ORDER BY username;
2.然后解锁HR用户
ALTER USER hr ACCOUNT UNLOCK
3.通过修改密码来改变状态
alter user HR identified by 密码
再去查询
SELECT username,account_status FROM dba_users ORDER BY username;
创建SCOTT用户
首先创建用户
CREATE USER scott IDENTIFIED BY tiger;
然后授权
GRANT CONNECT ,RESOURCE ,DBA TO scott;
再去查询
SELECT username,account_status FROM dba_users ORDER BY username;
启动数据库
启动模式有3种:
1)Startup nomount (nomount模式)启动实例不加载数据库。
2)Startup mount (mount模式)启动实例加载数据库但不打开数据库
3)Startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令
Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,
关闭数据库
1)正常关闭 shutdown
2 ) 立即关闭 shutdown immediate
3 ) 关闭事务 shutdown transactional
4 ) 强行关闭 shutdown abort,当然谁都不想碰到这种情况。