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