一起学习网 一起学习网

探索Oracle12c新特性新型目录架构(Oracle12c目录)

随着企业对数据的需求越来越大,数据库的管理变得尤为重要。如今Oracle数据库已经迎来了其最新版本 —— Oracle 12c,它的特性也日益丰富。其中,新型目录架构是比较重要的特性之一。本篇文章将介绍Oracle 12c的目录架构,并分析它如何简化管理和提高性能。

目录架构在数据库中都很重要。如果一个数据库中存在大量的表格和对象,数据访问就会变得更加困难。这就是为什么一些数据库会引入目录,以组织和管理数据并加速数据访问。Oracle 12c的新型目录架构就是在这个背景下应运而生的。该目录架构采用了新的方法来组织和管理数据库中的对象,可以将数据存储在多个目录中,使它们更容易被找到和访问。

在以前的版本中,Oracle数据库中的所有对象被存储在一个名为用户架构(user schema)的目录中。这个目录是基于Oracle的早期版本设计的,它将所有的对象都存放在与用户相关的架构中,因此所有的表、视图、程序和包都属于该用户。这在小型的数据库中运行得很好,但随着数据库增长,架构变得过于庞大,而且对Oracle用户在管理和维护数据库时也产生了很大的限制。

在新型目录架构中,Oracle 12c引入了一个新的概念:容器和容器数据库。容器是一个具有自己命名空间的存储结构,而容器数据库则包含了容器及其内容和其它的系统对象。容器和容器数据库的引入意味着 Oracle 12c 中的用户实例不再是一个完整的数据库,而是残缺的部分。容器数据库是多租户数据库,并且比以前的架构更为复杂。一个容器可以被多个用户使用,但数据在容器中仅属于一个用户,容器中的数据可以被其他用户访问。这样就可以有效地隔离不同用户的数据,在数据库管理上也变得更为高效。

在新的目录架构中,有一个重要的概念是PDB(Pluggable Database)。一个PDB就像一个容器,其中包含用户的架构。每个PDB在容器中是唯一的,并且它会在容器的根数据库中显示为一个单独的数据库,用户可以使用它来管理和维护数据。因此,用户可以使用一个根数据库来管理多个PDB,并将它们分配给不同的团队或应用程序。PDB的使用添加了一定的复杂性并防止数据泄露,但能够带来更灵活和高效的管理方式。

接下来我们看一个具体的例子来看新型目录架构如何更好地管理数据。在下面的代码中,我们将创建两个用户并为它们分配角色和权限。然后,我们将使用容器数据库和PDB名字空间来创建两个容器,分别分配给两个用户。在容器中,我们将创建一个表,并观察它的权限和角色如何在容器内被访问。

#创建两个用户
CREATE USER user1 IDENTIFIED BY user1;
CREATE USER user2 IDENTIFIED BY user2;
#分配角色和权限
GRANT CONNECT TO user1, user2;
GRANT CREATE SESSION TO user1, user2;

#创建两个容器
CREATE DATABASE CONTNER contner1 ADMIN USER user1 IDENTIFIED BY user1;
CREATE DATABASE CONTNER contner2 ADMIN USER user2 IDENTIFIED BY user2;

#创建表并在容器内进行操作
CREATE TABLE emp
(
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
);
ALTER SESSION SET CONTNER=contner1;
INSERT INTO emp VALUES (7369, 'SMITH', 'CLERK', 7902, '17-DEC-80', 800, NULL, 20);
ALTER SESSION SET CONTNER=contner2;
SELECT * FROM emp;

在这个例子中,我们创建了两个用户并分配了角色和权限,然后创建了两个容器并将其分配给对应的用户。在容器中,我们创建了一个表,但是由于我们将用户和容器分离,用户1永远也看不到容器2中的数据,用户2也无法看到容器1中的数据。

总结一下,新型目录架构是Oracle 12c中的一个重要特性,它通过在数据库中引入容器和容器数据库来简化管理和提高性能。使用这种架构,数据库可以被拆分成更小的组件以提高可管理性,并提供更好的数据隔离和安全性。当然,在使用这种新型目录架构时也需要更多的学习和使用成本。但这种新的数据库架构依然是非常值得尝试的。