zoukankan      html  css  js  c++  java
  • 记录一下 oracle 的相关信息

    关于 oracle 的版本

    database-releases-and-timeline-support-e1607667246793

    图源: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/

    关于 oracle 的连接与管理

    首先是官方数据库管理连接工具(SQL Developer)下载:https://www.oracle.com/tools/downloads/sqldev-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 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";

    输了你,赢了世界又如何...
  • 相关阅读:
    配置好IIS中的SMTP服务器
    金秋十月
    "小生"的Google搜索结果
    "苏州大本营"腐败大会第三次顺利召开
    我修改了半年的密码还没有成功修改,dudu你能修改吗?
    好资源大家分享
    利用Google来调用其他网站查询信息
    推荐一本书<<专家门诊——ASP.NET开发答疑200问>>
    谁能给我一个FeedDemon v1.1的序列号或者注册文件
    毕业2月有余,苏州同学腐败第二次大聚会
  • 原文地址:https://www.cnblogs.com/xwgli/p/14453008.html
Copyright © 2011-2022 走看看