Oracle数据库的使用及说明介绍Linux
作者:72861021
一、Oracle数据库介绍
Oracle 数据库是全球最主流的企业级关系型数据库管理系统(RDBMS)之一,由美国甲骨文(Oracle)公司开发,以稳定性强、功能全面、支持高并发和复杂业务场景而闻名。
Oracle 数据库被研发出来的初衷是开发一种关系型数据库管理系统(RDBMS),以提供高效、可靠的数据存储和检索能力,同时确保数据的完整性和安全性。
系型数据库管理系统(RDBMS):用 “表格(行和列)” 来组织数据,并用 “关系”(如主键、外键)关联不同表格的数据库管理软件。有关联的表A和表B同时改变,适用大多数生活场景,比如扣款和到账同时成功或者失败。
特点:
(1)高可用性:支持RAC实时应用集群(支持分布式数据处理)
(2)业务与安全能力强大
(3)多场景适配:兼具 OLTP(在线事务处理)和 OLAP(在线分析处理)能力
(4)跨平台兼容性:可运行于 Windows、Linux、Unix 等多种操作系统,支持 x86、ARM 等不同架构服务器;同时兼容 SQL 标准,能与 Java、Python 等主流开发语言及各类企业级应用无缝集成。
二、Oracle的简单架构
Oracle的特别之处
在Oracle的典型架构中,一个实例(Instance)通常挂载并管理一个数据库(Database)。对比之下MySQL是一个实例管理多个数据库,更接近数据仓库管理的感觉。
什么是实例
可以简单的将实例理解为进程加涉及的其他的资源(比如说内存资源,磁盘空间),在该运行环境内只允许有一个数据库。是Oracle数据库运行的载体。数据库指的就是磁盘上的物理文件的集合(比如说数据文件,日志文件,控制文件等组合使用的实际文件),是数据的实际存储载体。
前面提到过的RAC集群有一点不同,这里是多个实例共享一个数据库。
Oracle只能有一个数据库吗?
实际上是默认1个数据库,但是可以多实例对应多个独立的Oracle数据库。只是它创建多个数据库不像MySQL那样简单。
Oracle的端口号:1521
MySQL和Oracle的区别:
尝试对比MySQL和Oracle来学习Oracle的特别之处。
(1)Oracle新建数据库不同于MySQL新建数据库
在Oracle中,创建一个新的、独立的数据库环境,这个过程称为 “数据库创建(Database Creation)” 。会为它创建一个专属的 “实例”(独立的进程和内存空间,比如第二个实例叫 ORCL2)。而 MySQL 新建数据库,只是在现有实例的目录下新建一个 “文件夹”,不需要额外分配进程和内存 。
所以感觉上就像MySQL创建不同数据库就是在一张A4纸上划了一根线分出一块来,就创建了一个数据库。就是一个实例对应N个逻辑数据库,Oracle是一张纸就是一个数据库,创建新的数据库需要新的纸,就是一个物理数据库对应1个实例。这样分配独立的资源,在安全性和隔离性上来看,Oracle的会更强一些。当然这个例子并不能代表MySQL的存储上限就比Oracle的小。MySQL的单张纸也可以很大,Oracle的多张纸也可以很小,两者的存储上限和性能差异主要取决于涉及的目标。
三、Oracle如何解决数据库的安全机制问题?
虽然Oracle一个实例对应一个数据库,但是Oracle会通过逻辑隔离和精细化权限控制来保证数据的安全。
同样使用MySQL和Oracle的例子来举例。
1、MySQL的权限控制逻辑
授权结构:数据库用户--->数据库--->数据库下的表
数据库用户只可以使用被授权过的数据库和数据库下的表。例如:fruit数据库下的apple表对A用户授权,那么A用户就可以使用fruit数据库下的apple表,其他的表它便不可使用。如果fruit数据库授权A用户使用库下的所有表,那么A用户就可以全部使用。(grant all on fruit.* to A@'loaclhost' indentified by '123')。
MySQL中不同数据库之间的权限隔离,不同数据库的权限设置不相互影响。
2、Oracle的权限控制逻辑:单数据库多租户
(1)授权结构
通过表空间(Tablespace) 和用户 Schema 实现逻辑隔离,效果类似 MySQL 的 “多数据库”,但更灵活。Oracle的权限体系极其精细,避免单个用户删除库的风险。
- 表空间(物理隔离):数据库的物理文件被划分为多个表空间,不同用户的数据可存储在不同表空间中(如财务数据在
FIN_TBS,人事数据在HR_TBS)。即使某个表空间损坏,其他表空间的数据不受影响。 - 用户 Schema(逻辑隔离):每个用户默认拥有一个同名的 “Schema(模式)”,用户创建的表、视图等对象默认属于自己的 Schema。
例如:用户USER_A创建的表实际是USER_A.TABLE1。用户USER_B创建的表实际是USER_B.TABLE1两者名称相同但完全独立,互不干扰(类似同一文件夹下不同用户的文件)。
(2)Oracle的权限设置
权限分级
普通用户默认只有自己 Schema 的操作权限(CREATE TABLE、INSERT等),无法访问其他用户的对象,更不能删除整个数据库。只有SYSDBA等超级权限角色,才能执行DROP DATABASE等危险操作,而这类权限会严格限制给极少数管理员。
| 用户/角色 | 用户等级 | 用户权限 |
| sysdba | 最高级别的管理员账户 | 对数据库的完全控制权 |
| sysoper | 管理员账户 | 权限比sysdba低一些,可启动、关闭数据库,但不能创建数据库。 |
| SYS | 数据库初始就存在的管理员用户 | 天生拥有 sysdba 权限 |
| 普通用户 | 普通用户 | 需要通过被授权之后才可以对数据库进行操作 |
注释1:sysdba和sysper是Oracle数据库内置的两种最高级别的系统权限集合,也被称为 “特权身份”。就像Linux的超级管理员root一样。普通用户无法自动获得这两种身份,必须由已拥有 sysdba 权限的用户(如 SYS)手动授予。
使用特权登录:获得身份后,登录时需明确指定身份,否则默认以普通用户权限登录。
注释2:虽然表格中写的sysdba sysoper是用户/角色。但是实际上这两个是”特权身份令牌“。它们是 Oracle 底层权限机制的一部分,属于 “特权集合” 而非 “用户账号”。数据库安装完成后,这两种特权身份就已存在,但默认仅赋予 SYS 用户。
sysdba和sysoper已经作为系统基础组件存在,等待被分配给合适的用户(通常是 SYS,也可分配给其他用户)。
数据库安装完成 → 自动创建SYS用户 → SYS默认拥有sysdba特权 ↓ sysdba和sysoper作为内置特权机制,从安装完成就存在于系统中
操作审计与日志
所有关键操作(如删除表、修改权限)会被记录到审计日志中,可追溯操作人。同时,Oracle 的闪回技术(Flashback)能快速恢复误删除的数据。
数据备份与恢复机制
支持在线热备份、增量备份等,即使发生极端情况(如误删库),也能通过备份文件恢复数据,配合归档日志可实现 “任意时间点恢复”。
(3)MySQL和Oracle的对比
这里使用MySQL来做对比,方便理解。
安全性能上
MySQL 的 “一个实例多个数据库” 看似更隔离,但本质是逻辑文件夹的隔离,权限控制相对简单。
普通用户可能被赋予DROP DATABASE权限,风险更高。缺乏表空间级别的物理隔离,某数据库文件损坏可能影响整个实例。而 Oracle 的设计思路是通过精细化权限 + 逻辑隔离,在单数据库内实现比多数据库更强的安全性,同时避免多数据库带来的资源浪费和管理复杂度。
适用场景上
Oracle面向企业级市场(如银行、电信),解决 “大规模数据 + 高可靠性” 需求。
MySQL面向个人和中小型项目,主打 “轻量、开源、免费”。
四、Oracle的安装配置
1、Oracle版本
Oracle21版本,下载其他版本差别不大
2、安装环境
Centos7操作系统(Linux)
内存4G,磁盘空间20G
这里的内存给大一点,后面初始化的时候内存大一些可能时间会短一点。
[root@localhost ~]# hostnamectl set-hostname oracle [root@localhost ~]# bash
错点注意:这里最好关闭一下防火墙和SELinux,否则后面初始化Oracle数据库的时候可能会卡住。会出现权限拦截的问题。
[root@oracle ~]# systemctl stop firewalld.service [root@oracle ~]# getenforce Enforcing [root@oracle ~]# setenforce 0 [root@oracle ~]#
3、Oracle安装
安装预安装包
从 Oracle 官方 YUM 仓库下载并安装 Oracle Database 21c 的预安装包(oracle-database-preinstall-21c)。
注意:如果是使用虚拟机,需要虚拟机可以联网
yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm
补充:预安装包的作用:
具体来说,oracle-database-preinstall-21c 是 Oracle 为简化数据库安装而提供的专用预配置包,它的主要功能包括:
- 自动创建
oracle用户和相关用户组(如dba、oinstall等) - 配置系统内核参数(如共享内存、文件描述符限制等)以满足 Oracle 数据库运行要求
- 安装数据库依赖的基础库(如
libaio、glibc等) - 设置系统安全策略和资源限制,确保 Oracle 服务正常运行
安装Oracle数据库主程序
官方网址:https://www.oracle.com/cn/database/technologies/xe-downloads.html
下载之后传输到Linux中,要先安装预安装包否则可能报错
方式一:自定义源仓库
[root@oracle ~]yum -y install createrepo-0.9.9-28.el7.noarch [root@oracle ~]createrepo /oracle/ [root@oracle ~]vim /etc/yum.repos.d/oracle.repo [name] name=oracle baseurl=file:///oracle/ enabled=1 gpgcheck=0 [root@oracle ~]yum repolist [root@oracle ~]yum -y install /oracle/oracle-database-xe-21c-1.0-1.ol7
简单的yum仓库安装注意事项:
自定义源仓库之后:yum 会先查询本地缓存的 “仓库包索引”,通过你输入的 “包名”(如 percona-xtrabackup-24-2.4.7-1.el7.x86_64)匹配索引中对应的包信息(包括包的完整名称、版本、依赖等)。匹配成功后,yum 会自动从仓库下载该包,并解决依赖关系(比如自动安装 perl(DBD::mysql)、 rsync 等),因此无需手动指定 .rpm 后缀。
如果不是自定义源仓库:就需要输入完整的rpm包名字带后缀,比如这个【 yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm 】 本地已下载的.rpm 文件(非仓库中的包),yum 无法通过 “包名” 查询仓库索引(因为包不在仓库里),必须通过你提供的 “完整文件名 + 路径”(如 /root/percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm)定位到本地的.rpm 文件。 .rpm 后缀是 yum 识别 “本地 rpm 文件” 的关键标志 —— 如果不带后缀,yum 会默认去仓库中查找该 “包名”,但仓库中可能没有(或版本不匹配),最终导致安装失败
方式二:rpm本地安装
rpm -ivh oracle-database-xe-21c-1.0-1.ol7.x86_64.rpm
初始化Oracle数据库
在这一步的时候有些步骤会看起来像是卡住,请耐心等待,这是正常现象。
- 若服务器是普通虚拟机(2 核 4G 内存),通常需要 5-15 分钟。
- 若服务器配置较低(1 核 2G 内存),可能需要 20-30 分钟,期间终端无输出属于正常现象。
[root@oracle ~]# ls /etc/init.d/ | grep oracle
[root@oracle ~]# ls /etc/init.d/oracle-xe-21c
[root@oracle ~]# /etc/init.d/oracle-xe-21c configure
下面是详细的初始化流程每一步的解析:
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts: #设置密码(这里设置的是123321Dyq)
Confirm the password: ##确认密码
Configuring Oracle Listener. ##自动配置 Oracle Listener(默认监听端口 1521)
Listener configuration succeeded. ##表示监听设置成功
Configuring Oracle Database XE.
Enter SYS user password:
*********
Enter SYSTEM user password:
**********
Enter PDBADMIN User Password:
***********
Prepare for db operation ###数据库实例与结构创建阶段
7% complete
Copying database files ###复制数据库文件:将 Oracle 的基础模板文件(如数据文件、控制文件、日志文件)复制到指定目录默认/opt/oracle/oradata/XE。是数据存储的基础
29% complete
Creating and starting Oracle instance ###创建并启动 Oracle 实例,为后续的数据存储做准备
30% complete
33% complete
37% complete
40% complete
43% complete
Completing Database Creation ###完成数据库创建
47% complete
50% complete
Creating Pluggable Databases ###创建可插拔数据库
54% complete
71% complete
Executing Post Configuration Actions ##执行后续配置操作
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/XE.
Database Information:
Global Database Name:XE ### 全局数据库名
System Identifier(SID):XE ##系统标识符(SID),实例的唯一标识
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
Connect to Oracle Database using one of the connect strings:
Pluggable database: oracle/XEPDB1
Multitenant container database: oracle
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE注释:密码的作用范围(初始化日志中也可以看出来)
作用:该密码会同时应用于三个核心账户,这三个账户是后续管理和使用数据库的关键:
SYS:数据库最高权限账户,负责管理数据库结构(如创建表空间、用户)和系统级配置。SYSTEM:数据库管理员账户,用于日常管理(如创建用户、授权),权限略低于SYS。PDBADMIN:可插拔数据库(PDB)的管理员账户,负责管理后续创建的XEPDB1插件数据库。
配置环境变量
在文件末尾添加以下内容(根据实际安装路径调整,默认路径如下)
[root@oracle ~]# vim /home/oracle/.bash_profile ##单个用户的配置文件 核心配置: export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE #指定 Oracle 数据库软件的安装目录(主目录)。Oracle 的所有工具和服务都需要通过这个路径找到对应的程序才能运行。 主目录的位置:其实在前面的初始化最后提示你日志路径,便知道了主目录的位置在哪里了 export ORACLE_SID=XE ##指定当前要连接的数据库实例名,SID = System Identifier,初始化日志最后表明是XE。 export PATH=$ORACLE_HOME/bin:$PATH #将 Oracle 的命令目录添加到系统的可执行路径中。 额外配置(可选) export ORACLE_BASE=path #定义 Oracle 的「基础目录」(根目录) export ROACLE_PID=oral12 #定义数据库进程的标识,这个变量不是必须的,默认情况下 Oracle 会自动生成进程标识,只有多实例场景下才需要手动配置。 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib #指定程序运行时依赖的「动态链接库(.so 文件)」路径。 export LANG="zh_CN.UTF-8" #设置 Linux 系统的默认语言和字符集。LANG 是系统级变量,控制终端、日志等系统输出的语言编码。设置为 zh_CN.UTF-8 表示系统默认使用中文显示,且支持 UTF-8 编码(避免中文乱码)。 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" #设置 Oracle 客户端与数据库交互的「语言和字符集」。 export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' #统一日期数据的「显示格式」。
使配置生效
##注意:使用root用户编辑注意查看文件所有者是否是Oracle [root@oracle ~]# ll -d /home/oracle/.bash_profile [root@oracle ~]#source ~/.bash_profile
手动创建 systemd 服务文件
[root@oracle ~]# ls /usr/lib/systemd/system | grep oracle #如果有就可以省略这个步骤 [root@oracle ~]# vim /usr/lib/systemd/system/oracle-xe-21c.service [Unit] Description=Oracle Database 21c Express Edition After=network.target [Service] Type=forking User=root Group=root ExecStart=/etc/init.d/oracle-xe-21c start ExecStop=/etc/init.d/oracle-xe-21c stop ExecReload=/etc/init.d/oracle-xe-21c restart RemainAfterExit=yes [Install] WantedBy=multi-user.target
开启数据库服务
[root@oracle ~]#systemctl daemon-reload [root@oracle ~]# systemctl enable oracle-xe-21c.service --now [root@oracle ~]# systemctl status oracle-xe-21c.service #状态是 active (exited)表示成功
验证是否初始化成功
[root@oracle ~]# su - oracle [root@oracle ~]# sqlplus / as sysdba #这里可能需要卡一下,等待一会即可 SQL*Plus: Release 21.0.0.0.0 - Production on Thu Oct 16 02:57:17 2025 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL> ##结果是这样表示成功 命令解析: Oracle 自带的命令行客户端工具,用于连接数据库并执行 SQL 语句或管理命令。 /:表示 “使用操作系统认证”(而非密码认证) as sysdba:表示以 SYSDBA 身份登录(Oracle 中最高权限角色)。
错点注意:必须使用oracle用户
sqlplus / as sysdba 依赖「操作系统认证」,而这种认证必须以 oracle 用户身份执行,root 用户无法通过这种方式登录(即使知道密码也不行)。(或者在前面修改配置文件的时候切换用户同样可以)
如果是不oracle用户则会出现以下错误提示:
[root@oracle ~]# sqlplus / as sysdba SQL*Plus: Release 21.0.0.0.0 - Production on Thu Oct 16 02:55:23 2025 Version 21.3.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied Enter user-name:
管理Oracle服务
# 启动服务 systemctl start oracle-xe-21c # 停止服务 systemctl stop oracle-xe-21c # 查看服务状态 systemctl status oracle-xe-21c
安装完成
操作注意事项:SYSDBA 权限极高,操作需谨慎(如误执行 drop database 会直接删除数据库)。
仅能在数据库服务器本地执行(远程连接通常需要密码认证,除非特殊配置)。
五、Oracle的常用语法
Oracle数据库不能直接按删除键删除命令,按住ctrl+删除键即可。
Oracle的操作技巧(命令行)
【1】Oracle清屏命令
SQL> host clear; #滚轮上划可以看见历史命令
【2】自定义方向键
在Linux中,Oracle不像MySQL一样支持上行历史命令键。
解决方法:使用 rlwrap 工具增强 SQL*Plus 功能
(1)安装rlwrap工具
方式一:源安装(root用户)
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 yum install rlwrap
方式二:如果一不成功就是用官方Git仓库拉取rpm包源码编译安装
[root@oracle ~]# cd /tmp [root@oracle tmp]# curl -O https://github.com/hanslub42/rlwrap/releases/download/v0.46.1/rlwrap-0.46.1.tar.gz [root@oracle tmp]# ls /tmp/ CVU_21.0.0.0.0_oracle hsperfdata_oracle rlwrap-0.46.1.tar.gz vmware-root
方法三:二不行就使用这个
[root@oracle ~]# cd /tmp [root@oracle tmp]# wget https://github.com/hanslub42/rlwrap/releases/download/v0.47/rlwrap-0.47.tar.gz [root@oracle tmp]# ll -dh rlwrap-0.47.tar.gz
(2)源码编译安装
[root@oracle tmp]# yum -y install gcc make [root@oracle tmp]yum -y install readline-devel ##这个包不安装可能会报错 [root@oracle tmp]# tar -xf rlwrap-0.47.tar.gz [root@oracle tmp]# cd rlwrap-0.47/ [root@oracle rlwrap-0.47]#./configure --without-libptytty [root@oracle rlwrap-0.47]# make && make install [root@oracle rlwrap-0.47]# rlwrap --version rlwrap 0.47 ##如果显示版本信息就表示安装成功
(3)编辑配置文件和加载配置
最后一行插入别名: [root@oracle rlwrap-0.47]# vim /home/oracle/.bash_profile alias sqlplus='rlwrap sqlplus' [root@oracle rlwrap-0.47]# source /home/oracle/.bash_profile #使配置生效
(4)重新进入Oracle
此时按 ↑ 键就可以正常调取历史命令了,↓ 键可以向前切换,解决了乱码问题。而且使用删除键也可以正常使用了,不会出现乱码问题了。
sqlplus / as sysdba
注意:如果你是再其他终端执行的source命令,就再执行source命令的终端测试才可以成功。只对执行 source 命令的当前终端生效,对之前早就开启的其他终端完全不生效。source不会开启自子进程。
【3】Oracle自带的历史命令
如果不想那么麻烦,就是查看历史命令也是相同的。
SQL> set history on #开启历史命令 SQL> hist #查看历史命令
Oracle常用查询连接命令
dual是 Oracle 自带的一个特殊 “单行单列” 表(系统表),通常用于简单的查询测试或计算。- 执行后会返回一行结果
DUMMY(值为X),表示数据库可以正常响应 SQL 命令。
SQL> select * from dual; D - X
查看 Oracle 数据库的参数配置
SQL> show parameter name; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster_name string cell_offloadgroup_name string db_file_name_convert string db_name string XE db_unique_name string XE global_names boolean FALSE instance_name string XE lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string XE
查看当前登录用户
SELECT user FROM dual;
创建用户
CREATE USER 用户名 IDENTIFIED BY 密码 #指定用户密码(需符合 Oracle 密码规则) DEFAULT TABLESPACE 表空间名 #指定用户默认存储数据的表空间(如 USERS) TEMPORARY TABLESPACE 临时表空间名 #指定用户的临时表空间(通常为 TEMP) QUOTA 空间大小 ON 表空间名; #限制用户在表空间上使用的空间(UNLIMITED 表示无限制)
切换用户
切换前需知道目标用户的 正确密码,若密码包含特殊字符(如 @、#),需用双引号包裹,例如:CONNECT myuser/"My@Pass123";。
CONNECT 目标用户名/密码; -- 或带数据库实例(若需指定) CONNECT 目标用户名/密码@数据库实例名;
案例:创建一个名为 myuser 的用户,密码为 MyPass123,默认表空间为 USERS
CREATE USER myuser IDENTIFIED BY MyPass123 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;
注意:创建用户后,需授予基本权限才能操作(如登录权限)
GRANT CREATE SESSION TO myuser; -- 允许登录 GRANT CREATE TABLE TO myuser; -- 允许创建表
删除用户
仅删除用户(若用户有对象则会失败) DROP USER 用户名; 删除用户及其所有对象(级联删除) DROP USER 用户名 CASCADE; 删除用户及其所有的对象 DROP USER testuser CASCADE;
创建表,默认属于当前用户
-- 语法:CREATE TABLE 表名 (字段名 类型 [约束])
CREATE TABLE student (
id NUMBER(10) PRIMARY KEY, -- 数字类型,长度10,主键
name VARCHAR2(50) NOT NULL, -- 字符串类型(Oracle 常用VARCHAR2)
age NUMBER(3),
birthday DATE
);
注释:字符串类型常用 VARCHAR2 而非 VARCHAR(Oracle 中 VARCHAR 是兼容型,建议用 VARCHAR2)。
表的字段类型:和MySQL相差无几
表中插入值
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);
案例:假设存在表 employees(包含 id、name、salary、hire_date 列),插入一条记录
INSERT INTO employees (id, name, salary, hire_date)
VALUES (1001, '张三', 5000, TO_DATE('2023-01-15', 'YYYY-MM-DD'));
删除表
GRANT CREATE SESSION TO myuser; -- 允许登录 GRANT CREATE TABLE TO myuser; -- 允许创建表 普通 DROP TABLE:表会被放入 Oracle 回收站(RECYCLEBIN),必要时可通过 FLASHBACK TABLE 表名 TO BEFORE DROP 恢复。 加 PURGE 选项:表会被直接删除,不进入回收站,适合确认无需恢复的场景。
查看表
-- 查看当前用户所有表(仅表名) SELECT table_name FROM user_tables;
查看表结构
-- 查看表结构(类似 MySQL 的 DESC) DESCRIBE student; -- 或简写 DESC student;
查看其他用户的表
-- 查看所有用户的表(需管理员权限) SELECT owner, table_name FROM all_tables;
-- 查看指定用户(如 SCOTT)的表 SELECT table_name FROM all_tables WHERE owner = 'SCOTT'; -- 注意用户名大写
查看数据库已有用户
#查看所有用户(包括系统用户和普通用户) SELECT username FROM dba_users; #查看当前用户可访问的用户 SELECT username FROM all_users; #查看用户的详细信息(如创建时间、状态等) SELECT username, created, account_status FROM dba_users ORDER BY created DESC;
查看表的完整信息
-- 查看表的创建语句(需有对应权限)
SELECT dbms_metadata.get_ddl('TABLE', 'STUDENT') FROM dual; -- 表名大写
查看当前的Oracle数据库
方法1:查询系统视图(推荐)
SELECT sys_context('userenv', 'db_name') AS current_database FROM dual;
方法2:查询实例名(SID)
SELECT instance_name FROM v$instance; -- 需有对应权限
Oracle的表内容查询语句总览
1、基本查询 SELECT * FROM 表名; --查询表中所有行和所有列 SELECT 列1, 列2, 列3 FROM 表名; -- 只查询需要的列,多个列用逗号分隔 2、条件查询 SELECT 列名 FROM 表名 WHERE 条件; -- 按条件筛选行 常用条件运算符:=(等于)、>(大于)、<(小于)、>=、<=、!=/<>(不等于)、BETWEEN...AND(范围)、IN(包含)、LIKE(模糊匹配)、IS NULL(空值) 3、排序查询(ORDER BY) SELECT 列名 FROM 表名 ORDER BY 列1 [ASC/DESC], 列2 [ASC/DESC]; -- 按指定列排序,默认升序(ASC),降序需加 DESC 4、去重查询 SELECT DISTINCT 列名 FROM 表名; -- 去除结SELECT 分组列, 聚合函数 FROM 表名 GROUP BY 分组列 [HAVING 聚合条件];果中重复的行(所有列都相同才视为重复) 5、限制查询 SELECT * FROM 表名 WHERE ROWNUM <= N; -- 查询前N行数据 6、聚合查询(GROUP BY + 聚合函数) SELECT 分组列, 聚合函数 FROM 表名 GROUP BY 分组列 [HAVING 聚合条件]; 7、多表连接查询 -- 内连接(只显示匹配的记录) SELECT a.列, b.列 FROM 表A a INNER JOIN 表B b ON a.关联字段 = b.关联字段; -- 左连接(显示表A所有记录,表B无匹配则为NULL) SELECT a.列, b.列 FROM 表A a LEFT JOIN 表B b ON a.关联字段 = b.关联字段;
补充内容:国内外的数据库版本
| 国外版本 | 介绍 |
| MySQL | 开源免费,生态完善,是国内互联网公司最广泛使用的数据库之一 |
PostgreSQL | 功能强大,支持复杂查询,在金融、政府场景中常用 |
MongoDB | 文档型数据库,适合JSON数据存储 |
| Oracle | 甲骨文公司的一款关系数据库管理系统,在数据库市场上占有重要份额。它具有强大的功能、出色的性能和高可用性,支持大规模数据存储和复杂的业务逻辑,广泛应用于大型企业、金融机构等对数据处理要求较高的场景。 |
| SQL server | 由微软公司开发的关系型数据库管理系统,与 Windows 操作系统紧密集成,具有良好的兼容性和易用性,在 Windows 环境下的企业级应用中较为常见,适用于中小型企业的业务系统。 |
| IBM Db2 | IBM 公司推出的关系型数据库管理系统,高性能,高可靠性和强大的数据分析能力。 |
| Informix | IBM 公司的一款数据库产品,结合了关系型和面向对象的功能,可实现灵活的数据建模,支持 SQL、NoSQL/JSON 和时间序列数据,具有无缝整合特性,可进行高性能事务处理,适合嵌入式应用程序中的全天候事务和实时分析。 |
| Sybase | 最初由 Sybase 公司开发,后来被 SAP 公司收购。 |
| Redis | 内存数据库,常用于缓存,会话存储等场景 |
| 国产版本 | 介绍 |
OceanBase | 蚂蚁集团开发,常用于金融、电信、互联网等场景 |
| TiDB | 由 PingCAP 公司开发,是一款分布式 NewSQL 数据库,,适合分布式在线事务处理 |
| 达梦数据库(DM) | 由武汉达梦数据库有限公司研发,是一款完全自主研发的关系型数据库,高度兼容 Oracle,广泛应用于政府、金融、电信、能源等对数据安全要求高的行业。 |
| 人大金仓(Kingbase) | 由北京人大金仓信息技术股份有限公司开发,是入选国家自主创新产品目录的唯一数据库产品 |
| 南大通用(GBase) | 天津南大通用数据技术有限公司的产品。适用于金融、电信、政府等大数据处理需求高的行业。 |
TDSQL-C | 腾讯云自研的分布式数据库,兼容 MySQL 和 PostgreSQL,分布式架构适用于高并发业务。 |
PolarDB | 由阿里云开发,广泛应用于阿里云生态。 |
SequoiaDB(巨杉数据库) | 由巨杉数据库公司开发,主要应用于金融、电信、政府等大数据处理需求高的行业。 |
| GoldenDB | 由中兴通讯开发,成熟度较高,主要应用于金融行业的核心交易系统。 |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
