Oracle 19c 是甲骨文公司(Oracle Corporation)发布的一款关系型数据库管理系统(RDBMS),属于 Oracle Database 19c 版本。它是 Oracle 12c 和 18c 系列的后续版本,提供了多个重要的功能改进和新特性,旨在提升数据库的性能、可扩展性和可靠性。Oracle 19c 的特点包括:
-
自动化与优化:
- 自动化管理功能:Oracle 19c 引入了更多的自动化管理特性,例如自动化的存储管理和内存管理,使数据库管理员的工作变得更加轻松。
- 自动索引功能:Oracle 19c 在数据库中自动创建索引并在查询执行时根据需求优化索引,提高了查询效率。
-
性能提升:
- 采用了更高效的存储引擎和查询优化器,提高了数据处理的速度和吞吐量。
- 高性能的 SQL 执行:增加了对大规模查询的优化,支持大数据量时仍能保证稳定的查询性能。
-
多云与混合云支持:
- 支持在多云环境下的运行,可以同时在多个云平台或本地数据中心中进行部署,提供灵活的云集成选项。
-
新功能:
- JSON 支持:Oracle 19c 增强了对 JSON 数据类型的支持,方便处理非结构化数据。
- 自动化的数据加密:为提高数据安全性,Oracle 19c 提供了更加灵活和自动化的数据加密方案。
- 多租户架构(CDB/PDB):引入了多租户架构,允许用户在单个数据库实例中创建多个数据库容器(PDB),实现资源共享和管理优化。
-
高可用性与灾难恢复:
- 提供了增强的备份、恢复和高可用性功能,包括更快的故障恢复和容灾能力。
-
版本稳定性:
- Oracle 19c 被认为是一个“长期支持版本”(Long Term Support,LTS),意味着该版本会得到长时间的更新和支持,适合用于企业级应用。
Oracle 19c 是企业级应用的理想选择,特别适合那些需要高性能、可靠性以及灵活扩展能力的环境。
下载地址:
Oracle 数据库下载官网:数据库软件下载 |神谕
SQL Develope 数据库连接工具下载官网:Oracle SQL Developer Downloads
国内容器镜像拉取地址:docker.io/heartu41/oracle19c:latest - 镜像下载 | docker.io
第一步 安装Docker
#移除旧的Docker版本
yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
#清理旧缓存并重新生成
yum clean all
yum makecache
# 安装必要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加阿里云 Docker 的仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装Docker
yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io
#设置开机自启动
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
#查看可用的Docker版本
yum list docker-ce --showduplicates | sort -r
#查看docker版本
docker --version
#查看docker详细信息
docker info
第二步 拉取镜像 并启动
#拉取镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/heartu41/oracle19c:latest
#启动镜像命令
docker run -d \--name oracle19c-prod \--restart=unless-stopped \--cpus=2 \--memory=4g \-p 1521:1521 \-p 5500:5500 \-e ORACLE_SID=ORCLCDB \-e ORACLE_PDB=ORCLPDB1 \-e ORACLE_PWD=YourStrongPassword@123 \-e ORACLE_CHARACTERSET=AL32UTF8 \-v /data/oracle19c/oradata:/opt/oracle/oradata \-v /data/oracle19c/backup:/opt/oracle/backup \--health-cmd="lsnrctl status" \--health-interval=2m \swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/heartu41/oracle19c解释说明:
docker run -d \ # 后台运行容器--name oracle19c-prod \ # 为容器指定名称为 oracle19c-prod--restart=unless-stopped \ # 设置容器自动重启策略,除非手动停止,否则容器会在系统重启后自动启动--cpus=2 \ # 限制容器使用 2 个 CPU 核心--memory=4g \ # 限制容器使用 4GB 内存-p 1521:1521 \ # 将宿主机的 1521 端口映射到容器的 1521 端口(Oracle 数据库默认端口)-p 5500:5500 \ # 将宿主机的 5500 端口映射到容器的 5500 端口(用于 Oracle 数据库的 Web 控制台)-e ORACLE_SID=ORCLCDB \ # 设置 Oracle 实例名为 ORCLCDB-e ORACLE_PDB=ORCLPDB1 \ # 设置 Oracle PDB(Pluggable Database)为 ORCLPDB1-e ORACLE_PWD=YourStrongPassword@123 \ # 设置 Oracle 数据库管理员密码-e ORACLE_CHARACTERSET=AL32UTF8 \ # 设置 Oracle 数据库字符集为 AL32UTF8-v /data/oracle19c/oradata:/opt/oracle/oradata \ # 将宿主机的 /data/oracle19c/oradata 目录挂载到容器的 /opt/oracle/oradata 目录(存储数据库数据)-v /data/oracle19c/backup:/opt/oracle/backup \ # 将宿主机的 /data/oracle19c/backup 目录挂载到容器的 /opt/oracle/backup 目录(存储数据库备份)--health-cmd="lsnrctl status" \ # 设置健康检查命令,检查 Oracle Listener 的状态--health-interval=2m \ # 设置健康检查的时间间隔为 2 分钟swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/heartu41/oracle19c # 使用 Oracle 19c 镜像(指定镜像地址)
第三步、关闭防火墙
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭selinux
# 临时
setenforce 0
# 永久
sed -i 's/enforcing/disabled/' /etc/selinux/config
第四步、使用数据库连接工具
进入docker容器
docker exec -it oracle19c-prod bash
连接数据库
sqlplus / as sysdba
查看实例名命令(也就是SID)
SELECT instance_name FROM v$instance;SID介绍:
SID(System Identifier,系统标识符)是Oracle数据库实例的唯一名称标识。它是Oracle数据库实例在操作系统层面的唯一标识,用于区分同一台服务器上运行的不同Oracle实例。
使用sqldeveloper 进行连接
使用Navicat 连接
第五步、创建表空间
#创建表空间
CREATE TABLESPACE yongyou_U8
DATAFILE '/opt/oracle/oradata/ORCLCDB/yongyou_U8.dbf' SIZE 100M
AUTOEXTEND ON NEXT 50M MAXSIZE 1G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;解释说明:
1、CREATE TABLESPACE yongyou_U8创建一个名为 yongyou_U8 的新表空间表空间是 Oracle 中用于存储数据库对象的逻辑存储单元2、DATAFILE '/opt/oracle/oradata/ORCLCDB/yongyou_U8.dbf' SIZE 100M指定表空间的数据文件位置和大小数据文件路径:/opt/oracle/oradata/ORCLCDB/yongyou_U8.dbf初始大小:100MB(这是 Oracle 容器的标准数据文件路径)3、AUTOEXTEND ON NEXT 50M MAXSIZE 1G设置数据文件自动扩展属性AUTOEXTEND ON:启用自动扩展功能NEXT 50M:当需要更多空间时,每次自动扩展50MBMAXSIZE 1G:数据文件最大可扩展到1GB4、EXTENT MANAGEMENT LOCAL指定区(extent)管理方式为本地管理本地管理比字典管理更高效,是现代 Oracle 数据库的推荐方式区是Oracle分配空间的基本单位5、SEGMENT SPACE MANAGEMENT AUTO指定段空间管理方式为自动管理自动管理使用位图而不是空闲列表来跟踪块的使用情况这提高了空间管理效率,减少了DBA的手动干预
Oracle数据库常用命令:
连接数据库:
方法1:使用操作系统认证 (不需要密码)
sqlplus / as sysdba
方法2:使用用户名和密码连接
sqlplus username/password@hostname:port/servicenameusername:数据库用户名。
password:用户名对应的密码。
hostname:Oracle数据库主机名或IP地址。
port:数据库监听端口(默认是1521)。
servicename:数据库服务名(可以是SID或服务名称)。查看版本
SELECT * FROM v$version;
用户与角色:
用户名 默认密码 用途
SYS 安装时设定 最高权限用户,拥有数据字典和数据库管理权限,必须用 AS SYSDBA 登录。
SYSTEM 安装时设定 次高权限用户,用于日常管理(如创建用户、表空间等)。
SYSDG 安装时设定 用于 Oracle Data Guard 管理。
SYSKM 安装时设定 用于加密密钥管理(Oracle Key Vault)。
SYSBACKUP 安装时设定 用于 RMAN 备份和恢复操作。
SYSRAC 安装时设定 用于 Oracle RAC(Real Application Clusters)管理。显示当前会话登录用户
SELECT USER FROM dual;
查看所有用户
SELECT username, user_id, created, account_status, default_tablespace
FROM dba_users;
创建用户:
CREATE USER username IDENTIFIED BY password;
案例:
CREATE USER C##gao IDENTIFIED BY 123456;
注意 19C版本之后需要加C##
授予权限给用户:
GRANT CREATE SESSION, CREATE TABLE TO username;
创建角色并授予权限:
CREATE ROLE role_name;
GRANT SELECT, INSERT ON table_name TO role_name;
将创建的角色授予用户,可以使用 GRANT 语句:
GRANT role_name TO user_name;
删除角色
DROP ROLE role_name;
删除用户
DROP USER user_name CASCADE;
锁定/解锁用户:
ALTER USER username ACCOUNT LOCK;
ALTER USER username ACCOUNT UNLOCK;
表空间:
表空间(Tablespace) 是一个用于存储数据库对象(如表、索引等)的逻辑存储结构。它是数据库文件的容器,将物理文件(如数据文件)映射到数据库对象上,便于数据库管理和数据存储。
SYSTEM:系统表空间,用于存储数据库的核心数据字典、系统对象等。
SYSAUX:系统辅助表空间,存储数据库的辅助数据。
UNDOTBS1:回滚段表空间,用于存储回滚数据(UNDO信息)。
TEMP:临时表空间,通常用于存储排序、合并等临时数据。
USERS:用户表空间,通常用于存储用户的表和数据。数据字典视图查询所有表空间
SELECT tablespace_name, status, contents, logging
FROM dba_tablespaces;
查看所有表空间及其详细信息
SELECT * FROM dba_tablespaces;
查看当前用户可访问的表空间
SELECT * FROM user_tablespaces;
案例:
创建表空间
CREATE TABLESPACE YONGYOU_U8
DATAFILE '/opt/oracle/oradata/YONGYOU_U8.dbf'
SIZE 500M
AUTOEXTEND ON NEXT 50M MAXSIZE 2G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
LOGGING;仅删除空表空间(不包含任何对象)
DROP TABLESPACE users_data;
彻底删除表空间及其所有内容和数据文件(最常用)
DROP TABLESPACE YONGYOU_U8 INCLUDING CONTENTS AND DATAFILES;
数据库表:
创建表
CREATE TABLE employees (employee_id NUMBER PRIMARY KEY,first_name VARCHAR2(50),last_name VARCHAR2(50),hire_date DATE
);删除表
DROP TABLE employees; 查看表结构
DESC user_tablespaces;重命名表:
RENAME old_name TO new_name;
增删改查:
插入数据:
INSERT INTO employees (employee_id, first_name, last_name, hire_date)
VALUES (1, 'John', 'Doe', TO_DATE('2021-01-01', 'YYYY-MM-DD'));
查询数据:
SELECT * FROM employees;
更新数据:
UPDATE employees SET first_name = 'Jane' WHERE employee_id = 1;
删除数据:
DELETE FROM employees WHERE employee_id = 1;
视图:
创建视图:
CREATE VIEW employee_view
AS
SELECT employee_id, first_name, last_name
FROM employees;
删除视图:
DROP VIEW view_name;
事务:
BEGIN TRANSACTION:开始一个新的事务。
COMMIT:提交事务,所有对数据库的更改将永久保存。
ROLLBACK:回滚事务,撤销自上次提交以来的所有更改。
备份还原:
导出数据 (expdp):
expdp username/password@db_name dumpfile=export.dmp logfile=export.log schemas=schema_name
导入数据 (impdp):
impdp username/password@db_name dumpfile=export.dmp logfile=import.log schemas=schema_name