一、docker环境准备
这个配置好阿里云镜像加速
申请阿里云账号,然后会分配一个加速地址
复制
1.准备docker环境;
2.docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g --pull 镜像(6个多G)
容器内部 root密码 helowin
3.docker run -d -p 1521:1521 -v usr/local/docker-data/oracle:/data/oracle --name oracle11 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g --运行oracle镜像并映射本地1521端口;
4.docker exec -it oracle11 bin/bash --进入容器;
5.配置环境变量,使用root 配置/etc/profile ,增加以下内容:
su root
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$PATH:$ORACLE_HOME/bin
6.保存后执行source etc/profile 加载环境变量;
7.su - oracle 切换到oracle用户下执行数据库相关用户的修改与配置信息的修改;
sqlplus nolog
conn as sysdba
alter user system identified by oracle;–修改system用户账号;
alter user sys identified by oracle;–修改sys用户账号;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --修改密码规则策略为密码永不过期;
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;
8.修改以上信息后,需要重新启动数据库;
sqlplus nolog
conn as sysdba
shutdown immediate; --关闭数据库
startup; --启动数据库
9.退出docker后可使用pl/sql等客户端工具进行测试。
二、创建测试数据库
经过上面的操作,我们的数据库就能够访问了,使用Navicat或者其他链接oracle数据的可视化工具,下面我们创建测试用的数据库;
我使用的是Navicat;
1.创建用户
create user xzp identified by xzp;
复制
2.給用户授权
grant connect,resource,create session,create table to xzp;
复制
3.创建表空间
create tablespace xzp datafile '/home/oracle/app/oracle/oradata/helowin/xzp.dbf' size 50m autoextend on next 50M maxsize UNLIMITED;
复制
4.将空间分配给用户
alter user xzp default tablespace xzp ;
复制
5.允许自动扩展表空间
alter database datafile '/home/oracle/app/oracle/oradata/helowin/xzp.dbf' autoextend on;
复制
三、创建表
我们以简单的学生的课表的管理系统为例:
我们创建下面的三个表:学生信息表,课程信息表,学生课程表
学生表的创建语句如下:
CREATE TABLE "XZP"."userinfo_tb" (
"id" NUMBER NOT NULL,
"name" VARCHAR2(255 BYTE),
"age" NUMBER,
"gender" VARCHAR2(2 BYTE),
"telephone" VARCHAR2(20 BYTE),
"email" VARCHAR2(100 BYTE),
"bz" VARCHAR2(255 BYTE)
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;
-- ----------------------------
-- Primary Key structure for table userinfo_tb
-- ----------------------------
ALTER TABLE "XZP"."userinfo_tb" ADD CONSTRAINT "SYS_C0011089" PRIMARY KEY ("id");
复制
课程表:
CREATE TABLE "XZP"."classinfo_tb" (
"id" NUMBER NOT NULL,
"name" VARCHAR2(255 BYTE),
"time" NUMBER,
"bz" VARCHAR2(255 BYTE)
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;
COMMENT ON COLUMN "XZP"."classinfo_tb"."id" IS '课程id';
COMMENT ON COLUMN "XZP"."classinfo_tb"."name" IS '课程名';
COMMENT ON COLUMN "XZP"."classinfo_tb"."time" IS '上课时长';
COMMENT ON COLUMN "XZP"."classinfo_tb"."bz" IS '备注';
复制
学生课程关系表:
CREATE TABLE "XZP"."stuclass_tb" (
"studentid" NUMBER NOT NULL,
"classid" NUMBER
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;
-- ----------------------------
-- Foreign Keys structure for table stuclass_tb
-- ----------------------------
ALTER TABLE "XZP"."stuclass_tb" ADD CONSTRAINT "classid_ref" FOREIGN KEY ("classid") REFERENCES "XZP"."classinfo_tb" ("id") ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "XZP"."stuclass_tb" ADD CONSTRAINT "studentid_ref" FOREIGN KEY ("studentid") REFERENCES "XZP"."userinfo_tb" ("id") ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
复制
我们创建好之后,就可以使用Navicat或者其他的工具进行测试啦!
参考:
https://blog.csdn.net/qq_38380025/article/details/80647620