记录一下 oracle 的相关信息
关于 oracle 的版本
图源:https://k21academy.com/dba-to-cloud-dba/oracle-database-21c-now-available-on-oracle-cloud-oci/
用上面一张图可能看的比较清晰,11gR2 应该是对应 11.2 版本(官方下载:Oracle Database 11gR2 Express Edition for Linux x64),比较经典的一个版本?
最新的长支持版本是 19c,功能最新是 21c,似乎从 18 年起就开始按年份命名了(官方下载:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html)
关于 oracle 的 docker 镜像
因为使用 docker 镜像部署测试比较方便也干净,但官方镜像似乎版本不是想要的,找到了两个第三方网友做的镜像:
1、这个需要自己下载 oracle 11g 的安装包映射至容器进行安装:https://hub.docker.com/r/jaspeen/oracle-11g
2、这个似乎打包了 11gR2 Express 版本在镜像中,更方便:https://hub.docker.com/r/wnameless/oracle-xe-11g-r2
以第二个镜像为例,运行容器:
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/
连接字符串示例: Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xe)));User ID=sa;Password=sa;
关于 oracle 的连接与管理
首先是官方图形化管理工具(SQL Developer)下载:https://www.oracle.com/tools/downloads/sqldev-downloads.html
另一个官方的命令行管理工具(Instant Client 中的 SQL*Plus)可在多系统中使用,下载:https://www.oracle.com/database/technologies/instant-client/downloads.html
第三方全平台数据库管理工具:
Database .NET(基于 .NET 4.6.1):https://fishcodelib.com/Database.htm
DBeaver(基于 JAVA JDK 11):https://dbeaver.io/download
关于 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 T_STUDENT ( sName VARCHAR(20) PRIMARY KEY, sAge NUMBER, sEmail VARCHAR(100), sPhone VARCHAR(20), sAddress VARCHAR(100) ); INSERT INTO T_STUDENT VALUES('Jack',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack1',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack2',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack3',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack4',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack5',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack6',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jack7',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Rose',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Rose1',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Rose2',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Rose4',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Andi',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Andi2',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Niyes',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Jassic',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Carken',22,'test@qq.com','13901234567','Beijing'); INSERT INTO T_STUDENT VALUES('Donview',22,'test@qq.com','13901234567','Beijing'); COMMIT; -- 授权一个用户的表给另一个用户(但是在另一个用户的表中是不能直接看到的,需要加用户名前缀查询,或者在图形工具中其它用户的表中进行查看) GRANT ALL ON "SA"."T_STUDENT" TO "TEST";
授予创建视图权限
GRANT CREATE ANY VIEW TO USERNAME;
创建视图示例
CREATE VIEW V_STUDENT AS SELECT sName,sAge,sEmail,sPhone,sAddress FROM T_STUDENT WITH READ ONLY
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-02-26 docker registry 私有仓库的配置和管理
2020-02-26 linux 下查看文件和文件夹的大小
2014-02-26 html input select等控件宽度对不齐?请使用box-sizing。