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