当前位置: 代码网 > it编程>数据库>Oracle > Oracle数据库的使用及说明介绍Linux

Oracle数据库的使用及说明介绍Linux

2026年03月09日 Oracle 我要评论
一、oracle数据库介绍oracle 数据库是全球最主流的企业级关系型数据库管理系统(rdbms)之一,由美国甲骨文(oracle)公司开发,以稳定性强、功能全面、支持高并发和复杂业务场景而闻名。o

一、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 tableinsert等),无法访问其他用户的对象,更不能删除整个数据库。只有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

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 为简化数据库安装而提供的专用预配置包,它的主要功能包括:

  1. 自动创建 oracle 用户和相关用户组(如 dbaoinstall 等)
  2. 配置系统内核参数(如共享内存、文件描述符限制等)以满足 oracle 数据库运行要求
  3. 安装数据库依赖的基础库(如 libaioglibc 等)
  4. 设置系统安全策略和资源限制,确保 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(包含 idnamesalaryhire_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 db2ibm 公司推出的关系型数据库管理系统,高性能,高可靠性和强大的数据分析能力。
informixibm 公司的一款数据库产品,结合了关系型和面向对象的功能,可实现灵活的数据建模,支持 sql、nosql/json 和时间序列数据,具有无缝整合特性,可进行高性能事务处理,适合嵌入式应用程序中的全天候事务和实时分析。
sybase最初由 sybase 公司开发,后来被 sap 公司收购。
redis内存数据库,常用于缓存,会话存储等场景
国产版本介绍

oceanbase

蚂蚁集团开发,常用于金融、电信、互联网等场景
tidb由 pingcap 公司开发,是一款分布式 newsql 数据库,,适合分布式在线事务处理
达梦数据库(dm)由武汉达梦数据库有限公司研发,是一款完全自主研发的关系型数据库,高度兼容 oracle,广泛应用于政府、金融、电信、能源等对数据安全要求高的行业。
人大金仓(kingbase)由北京人大金仓信息技术股份有限公司开发,是入选国家自主创新产品目录的唯一数据库产品
南大通用(gbase)天津南大通用数据技术有限公司的产品。适用于金融、电信、政府等大数据处理需求高的行业。

tdsql-c

腾讯云自研的分布式数据库,兼容 mysql 和 postgresql,分布式架构适用于高并发业务。

polardb

由阿里云开发,广泛应用于阿里云生态。

sequoiadb(巨杉数据库)

由巨杉数据库公司开发,主要应用于金融、电信、政府等大数据处理需求高的行业。
goldendb由中兴通讯开发,成熟度较高,主要应用于金融行业的核心交易系统。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com