摘要:最近了解了一下oracle数据库,记录一下学习过程

数据库特征

windows

端口号: 1521
进程特征如下:

linux

端口号: 1521

进程特征如下:

[oracle@apps scripts]$ ps -ef | grep pmon
oracle    3705     1  0 20:59 ?        00:00:00 ora_pmon_EBSCDB
oracle   25737     1  0 22:14 ?        00:00:00 ora_pmon_app3cdb

物理文件特征如下:

// oracle数据库 19.0.0版本
control01.ctl
sysaux01.dbf 
temp01.dbf
sys1.dbf
system12.dbf
undotbs001.dbf

// oracle数据库11g版本
system01.dbf 
sysaux01.dbf
undotbs01.dbf
users01.dbf
tbsp_1.dbf
control01.ctl

基础概念

数据库:
不同于mysql中的库的概念,oracle中的一个数据库可以简单理解为一份文件。一个操作系统里面可以有很多个数据库。

实例:
前面说了,一个数据库可以简单理解为一份文件,文件不能直接被用户访问。因此,oracle为每份文件创建一个实例来让用户对这些文件进行访问。在一般情况下,数据库名和实例名是一对一的关系,oracle会为每个数据库创造一个对应的实例。但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。

用户:
每个实例都有所属的用户,不同实例的用户彼此互相隔离。一个用户可以有很多一个表空间。

表空间:
每个实例可以创建多个表空间,不同实例的表空间彼此互相隔离。一个表空间可以分给很多个用户。

表:
每个表空间下面存放很多表。不同的用户在同一表空间下面可以拥有相同名字的表。

CDB(Container Database):
Oracle Database 19c后出现的新玩意。相当于虚拟化的数据库。CDB下面有很多PDB,PDB拿来存放数据。
概念类似于虚拟机的概念,CDB是宿主机,PDB是客户机。

PDB(Pluggable Database):
Oracle Database 19c后出现的新玩意。真正拿来存放的数据的玩意。PDB没有实例,操作系统只会为CDB创建一个实例。

常用命令

导入oracle环境变量

export ORACLE_SID=EBSCDB
export ORACLE_HOME=/u01/install/APPS/19.0.0
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

查询正在运行的实例SID(也叫:ORACLE_SID):

// "ora_pmon_"后面的就是实例的SID。本例子中SID是"EBSCDB"、"app3cdb"
[oracle@apps scripts]$ ps -ef | grep pmon
oracle    3705     1  0 20:59 ?        00:00:00 ora_pmon_EBSCDB
oracle   25737     1  0 22:14 ?        00:00:00 ora_pmon_app3cdb

查看电脑上所有实例的SID和ORACLE_HOME

//这台电脑上有ebscdb、ebsdb、app3cdb三个实例的SID
//ORACLE_HOME为 u01/install/APPS/19.0.0
[root@apps ~]# cat /etc/oratab
ebscdb:/u01/install/APPS/19.0.0:N
ebsdb:/u01/install/APPS/19.0.0:N
app3cdb:/u01/install/APPS/19.0.0:N

常用sql语句

查询数据文件存放位置

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/install/APPS/19.0.0/test/oradata/APP3/system01.dbf
/u01/install/APPS/19.0.0/test/oradata/APP3/sysaux01.dbf
/u01/install/APPS/19.0.0/test/oradata/APP3/undotbs01.dbf
/u01/install/APPS/19.0.0/test/oradata/APP3/pdbseed/system01.dbf

查询控制文件存放位置

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/install/APPS/19.0.0/test/oradata/APP3/control01.ctl
/u01/install/APPS/19.0.0/test/flash_recovery_area/APP3/control02.ctl

查询全局数据库名字

//如果在PDB中查询到的是CDB数据库的名字
SQL> select name from v$database;

NAME
---------
APP3

查询实例名

//如果在PDB中查询到的是CDB数据库的实例名
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
app3cdb

查询正在连接的数据

//比如在CDB中查询到的是CDB数据库的名字,对应rsp文件中的gdbName
//比如在PDB中查询到的是PDB数据库的名字,对应rsp文件中的pdbName
[oracle@apps scripts]$ export ORACLE_SID=app3cdb
[oracle@apps scripts]$ sqlplus / as sysdba
SQL> SELECT * FROM global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
APP3



[oracle@apps scripts]$ export ORACLE_SID=app3cdb
[oracle@apps scripts]$ sqlplus / as sysdba
SQL> alter session set container=app3pdb;
SQL> SELECT * FROM global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
APP3PDB