Oracle体系结构+用户管理+案例:简单易懂

    技术2022-07-11  80

    Oracle逻辑结构:

    从逻辑角度分析数据库的组成:表空间——段——区——块——模式等。

    表空间:每个Oracle都是通过若干个表空间构成的。用户在数据库中建立的所有内容都存放在指定数据库的指定表空间。但一个数据文件只能属于一个表空间。

    表空间目的:

     

     

    例:

    创建一个表空间名字为LINFAN.dbf的自动增长,空间大小为10M。

    SQL> CREATE TABLESPACE LINFAN

      2  DATAFILE '/u01/app/oracle/oradata/LINFAN.dbf'

      3  size 10M autoextend on;

     

    表空间已创建。

     

    更改空间大小

     

    SQL> ALTER DATABASE DATAFILE

      2  '/u01/app/oracle/oradata/LINFAN.dbf'

      3  resize 80M;

     

    数据库已更改。

     

    向指定的表空间添加文件

    SQL> alter tablespace LINFAN

      2   add datafile '/u01/app/oracle/oradata/orcl/LINFAN.dbf'         

      3  size 50M autoextend on;

     

    表空间已更改。

     

    删除表空间

    SQL> DROP TABLESPACE LINFAN  INCLUDING CONTENTS;

     

    表空间已删除。

    Ps:INCLUDING CONTENTS 是可选项;删除有数据的表空间需要指定此项。

     

    查看系统有多少个数据文件

    SQL> select FILE_NAME from dba_data_files;

    FILE_NAME

    --------------------------------------------------------------------------------

    /u01/app/oracle/oradata/orcl/system01.dbf

    /u01/app/oracle/oradata/orcl/sysaux01.dbf

    /u01/app/oracle/oradata/orcl/undotbs01.dbf

    /u01/app/oracle/oradata/orcl/users01.dbf

     

     

    查看有多少个表空间

    SQL> SELECT NAME FROM V$TABLESPACE;

     

    NAME

    --------------------------------------------------------------------------------

    SYSAUX

    SYSTEM

    UNDOTBS1

    ...........

     

    CBD和PDB的基本操作

    什么是CBD和PDB?

     Oracle12c开始,Oracle引入可插拔数据库的概念,为云计算而生。可插拔的结果又一个容器数据库(CBD),和若干个组成数据库(PDB)组成。

     

    SQL> SHOW CON_NAME                         #查看当前容器

     

    CON_NAME

    ------------------------------

    CDB$ROOT                                                 # CDB$ROOT代表当前在CDB下。

     

    SQL> SHOW PDBS;                                    #查看所有容器

     

        CON_ID CON_NAME                         OPEN MODE  RESTRICTED

    ---------- ------------------------------ ---------- ----------

              2 PDB$SEED                     READ ONLY  NO

              3 ORCLPDB                       MOUNTED           #状态MOUNTED并没有打开(open)    

     

     

    SQL> ALTER PLUGGABLE DATABASE ORCLPDB OPEN;  #修改CBD下修改可插拔库orclpdb状态

     

    插接式数据库已变更。

     

    SQL> ALTER SESSION SET CONTAINER=ORCLPDB;               #CDB下切换会话到orclpdb中

     

    会话已更改。

     

    SQL> SHOW CON_NAME                                          #查看当前位置位于ORCLPDB下

     

    CON_NAME

    ------------------------------

    ORCLPDB

     

     

     

    CDB切换到PDB以及相关的操作:

    SQL> ALTER SESSION SET CONTAINER=ORCLPDB;                #切换到PDB

            

    会话已更改。

     

    SQL> SHOW CON_NAME                                                   #查看当前容器(相当与查看当前位置)

     

    CON_NAME

    ------------------------------

    ORCLPDB

     

     

    SQL> SHUTDOWN IMMEDIATE                                         #在PDB下关闭插接式数据库

    插接式数据库已关闭。

    SQL> STARTUP                                                                              #在PDB下打开插接式数据库

    插接式数据库已打开。

     

    SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;             #切换为CDB

    会话已更改。

     

    SQL> SHOW CON_NAME                                                   ##查看当前容器(相当与查看当前位置)               

    CON_NAME

    ------------------------------

    CDB$ROOT                                                

     

     

     

    用户管理:

    用户介绍:SYS               SYSTEM                      自定义用户

    SYS:Oracle中的一个超级用户,主要管理实例和维护系统。数据库中的所有数据都存储在sys模式中。

     

    SYSTEM:Oracle默认的管理员,用有DBA的权限,该用户存储管理工具使用的内部表和试图。

     

    自定义用户:

    创建一个表空间

    SQL>  create tablespace shiyan

      2  datafile '/u01/app/oracle/oradata/orcl/shiyan.dbf'

      3  size 10M autoextend on;

     

    表空间已创建。

     

    案例:以system用户的身份登录Oracle数据库的CDB,创建一个c##lisi的用户。

    SQL> create user c##lisi                               用户名

      2  identified by pwd123                         密码pwd123

      3  default tablespace shiyan                 用户确定的表空间shiyan

      4  temporary  tablespace  temp       tablespace表示有多大配额就用多少

      5  quota unlimited on shiyan                unlimited参数没有限制

      6  password expire;                                第一次登录密码修改密码

     

    用户已创建。

    修改密码的格式:

    SQL> alter   user  c##lisi  identified  by  mpwd;

     

    用户已更改。

     

     

    删除用户

    SQL> alter user c##lisi identified by mpwd;

     

    用户已更改。

     

     

    数据库权限管理:

    案例:授权CONNECT, RESOURCE给lisi

    SQL> GRANT  CONNECT, RESOURCE TO c##LISI ;

     

    授权成功。

    取消授权GRANT换成revoke

    Ps:一半开发人员只要授权这连个角色即可。  

     

     

    案例:在PDB模式下创建jack,并对其授权。

    SQL> ALTER  PLUGGABLE DATABASE ORCLPDB OPEN;

     

    警告: PDB 已变更, 但出现错误。

     

    SQL> CREATE USER JACK IDENTIFIED BY JACK;

     

    用户已创建。

     

    SQL> ALTER USER JACK IDENTIFIED BY JACK123;

     

    用户已更改。

     

    SQL> GRANT CONNECT TO JACK;

     

    授权成功。

     

    SQL> GRANT CONNECT TO JACK;

     

    授权成功。

     

    SQL> ALTER SESSION SET CONTAINER=CDB$ROOT

      2  ;

     

    会话已更改。

     

    SQL> SHOW CON_NAME

     

    CON_NAME

    ------------------------------

    CDB$ROOT

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Processed: 0.015, SQL: 9