记录一下 oracle 的相关信息

关于 oracle 的版本

图源:

用上面一张图可能看的比较清晰,11gr2 应该是对应 11.2 版本(官方下载:oracle database 11gr2 express edition for linux x64),比较经典的一个版本?

最新的长支持版本是 19c,功能最新是 21c,似乎从 18 年起就开始按年份命名了(官方下载:)

 

关于 oracle 的 docker 镜像

因为使用 docker 镜像部署测试比较方便也干净,但官方镜像似乎版本不是想要的,找到了两个第三方网友做的镜像:

1、这个需要自己下载 oracle 11g 的安装包映射至容器进行安装:

2、这个似乎打包了 11gr2 express 版本在镜像中,更方便:

以第二个镜像为例,运行容器:

docker run -d \
-p 1521:1521 \
-e oracle_allow_remote=true \
--name oracle-xe-11g-r2 wnameless/oracle-xe-11g-r2

默认帐号:system,密码:oracle

数据文件存储路径:/u01/app/oracle/oradata/xe/

 

关于 oracle 的连接与管理

首先是官方数据库管理连接工具(sql developer)下载:

第三方全平台数据库管理工具:

database .net(基于 .net 4.6.1):https://fishcodelib.com/database.htm

dbeaver(基于 java jdk 11):

 

关于 oracle 的基本概念

在 oracle 中,数据表是存储在表空间中的(类似数据库),所以想要存储数据需要建立表空间,但是访问表空间需要先建立用户,然后将表空间绑定至用户(用户默认的表空间为 system),该用户在绑定表空间中建立的表都会挂有该用户名的前缀。

-- 创建用户
-- =================
-- 注意:某些工具(如 oracle sql developer)可能在登录连接时不区分用户名的大小写,统一默认大写,所以为了保证兼容性,请在设置用户名时不要设置小写)
-- =================
create user "sa" identified by "sa";

-- 修改密码
alter user "sa" identified by "sa";

-- 删除用户
drop user "sa"

-- 创建表空间
create tablespace "test_space" datafile '/u01/app/oracle/oradata/xe/test_space.dbf' size 50m;

-- 删除表空间
drop tablespace "test_space" including contents and datafiles;

-- 查询用户默认表空间
select username, default_tablespace from dba_users where username like 'sa';

-- 修改用户默认表空间
alter user "sa" default tablespace "test_space";

若想使用新建立的用户访问数据库,需要先对用户授权,常用的用户角色有:connect(只读)、resource(授权资源的使用)、dba(数据库管理员)

-- 将 connect、resource 角色分别赋予 sa
grant "connect" to "sa" ;
grant "resource" to "sa" ;

-- 将 sa 的默认角色设置为 connect+resource(连接+建表)
alter user "sa" default role "connect","resource";

可以多个用户绑定同一个表空间,但相互之间并不直接共享数据表,需要授权以及带用户名前缀以访问其它用户的表。

-- 建立测试数据表
create table student
(
    sname varchar(20) primary key,
    sage number,
    semail varchar(100),
    sphone varchar(20),
    saddress varchar(100)
);
 
insert into student values('jack',22,'test@qq.com','13901234567','beijing');
insert into student values('jack1',22,'test@qq.com','13901234567','beijing');
insert into student values('jack2',22,'test@qq.com','13901234567','beijing');
insert into student values('jack3',22,'test@qq.com','13901234567','beijing');
insert into student values('jack4',22,'test@qq.com','13901234567','beijing');
insert into student values('jack5',22,'test@qq.com','13901234567','beijing');
insert into student values('jack6',22,'test@qq.com','13901234567','beijing');
insert into student values('jack7',22,'test@qq.com','13901234567','beijing');
insert into student values('rose',22,'test@qq.com','13901234567','beijing');
insert into student values('rose1',22,'test@qq.com','13901234567','beijing');
insert into student values('rose2',22,'test@qq.com','13901234567','beijing');
insert into student values('rose4',22,'test@qq.com','13901234567','beijing');
insert into student values('andi',22,'test@qq.com','13901234567','beijing');
insert into student values('andi2',22,'test@qq.com','13901234567','beijing');
insert into student values('niyes',22,'test@qq.com','13901234567','beijing');
insert into student values('jassic',22,'test@qq.com','13901234567','beijing');
insert into student values('carken',22,'test@qq.com','13901234567','beijing');
insert into student values('donview',22,'test@qq.com','13901234567','beijing');

commit;

-- 授权一个用户的表给另一个用户(但是在另一个用户的表中是不能直接看到的,需要加用户名前缀查询,或者在图形工具中其它用户的表中进行查看)
grant all on "sa"."student" to "test";
(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐