docker 安装oracle 12C

拉取Oracle 12c镜像:
docker pull truevoly/oracle-12c

挂载目录
mkdir -p /data/oracle/data_temp && chmod 777 /data/oracle/data_temp

运行(运行3分钟后,添加用户)
docker run --restart always -d -p 8080:8080 -p 11521:1521 -v /data/oracle/data_temp:/home/oracle/data_temp -v /etc/localtime:/etc/localtime:ro --name oracle12c truevoly/oracle-12c

进入容器:
docker exec -it oracle12c /bin/bash
sqlplus / as sysdba
默认账号system密码oracle

创建sa用户。在SQL*Plus提示符下输入以下命令:
CREATE USER sa IDENTIFIED BY Tianrong#1;
grant connect,resource,dba to sa; – 对于普通用户:授予connect, resource权限。

退出容器:
exit

连接数据库

navicat工具连接,端口11521。实例名xe,用户名sa,密码Tianrong#1

查询Oracle 12C实例名
SELECT instance_name FROM v$instance;

查询Oracle中所有的用户
SELECT * FROM dba_users;

Oracle 12C中有多个用户角色,其中一些主要的包括:

  • sys:这个账户相当于SQL Server中的sa账户,是个超级账户,拥有的权限最大,可以完成数据库的所有管理任务。
  • system:普通dba用户角色,用于存放一级的内部数据,如oracle的一些特性或工具管理信息。该用户的默认密码是:oracle。
  • dba:数据库管理员角色,包括无限制的空间限额和给其他用户授予各种权限的能力。

Oracle数据库创建100万条数据

–创建students数据表,创建1000条数据

create table OUTLN.Students as
select rownum as id,
to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,
CONCAT('zhang',rownum) as studen_name,
CONCAT('183',trunc(dbms_random.value(00000000, 99999999))) as stu_number,
trunc(dbms_random.value(0, 100)) as stu_age,
dbms_random.string('x', 20) random_string
from dual
connect by level <= 1000000;

这段sql的作用是创建一个名为OUTLN.Students的表,并填充数据。下面是对每一行代码的解释:

CREATE TABLE OUTLN.Students AS:创建一个名为OUTLN.Students的表,并将结果存储在当前数据库中。
SELECT rownum AS id:选择rownum作为id列的值。rownum是一个自动递增的数字,从1开始。
TO_CHAR(SYSDATE + ROWNUM / 24 / 3600, ‘yyyy-mm-dd hh24:mi:ss’) AS inc_datetime:将当前系统日期加上rownum除以24再除以3600的结果,格式化为’yyyy-mm-dd hh24:mi:ss’的形式,并将结果存储在inc_datetime列中。
CONCAT(‘zhang’, ROWNUM) AS student_name:将字符串’zhang’与rownum拼接起来,并将结果存储在student_name列中。
CONCAT(‘183’, TRUNC(DBMS_RANDOM.VALUE(00000000, 99999999))) AS stu_number:将字符串’183’与trunc函数处理后的结果拼接起来,其中trunc函数用于截取DBMS_RANDOM.VALUE(00000000, 99999999)的前几位数字,并将结果存储在stu_number列中。
TRUNC(DBMS_RANDOM.VALUE(0, 100)) AS stu_age:将trunc函数处理后的结果存储在stu_age列中,其中trunc函数用于截取DBMS_RANDOM.VALUE(0, 100)的前几位数字。
DBMS_RANDOM.STRING(‘x’, 20) random_string:生成一个长度为20的随机字符串,并将其存储在random_string列中。
FROM DUAL:指定从DUAL表中获取数据。DUAL是一个虚拟表,通常用于在没有实际表的情况下执行一些简单的操作。
CONNECT BY LEVEL <= 1000000:使用LEVEL变量进行递归连接,LEVEL从1开始递增,直到LEVEL大于等于1000000时停止。这样可以生成1000000行数据。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐