oracle 数据库学习之体系结构(1-4章)

目录

oracle的框架概揽图:

oracle实例:

[oracle 的database:](#oracle 的database:)

总体系结构思维导图如下:

SGA的思维导图:

PGA思维导图:

各个进程的思维导图:

oracle的实例管理

修改参数的格式:

oracle的启动停止:

startup:开启数据库

Shutdown:关闭数据库

oracle的诊断文件:

实战操作:

找到跟踪文件

通过TKPROF报告结构详解

创建数据库实战:

[1. 首先是关掉数据库](#1. 首先是关掉数据库)

[2. 利用现有的数据库的spfile创建一个新数据库的pfile(1.可以用sql创建---create pfile from spfile;可以strings一个spfile文件复制到一个新创的pfile里,然后进行一些替换处理)最后得到一个pfile。](#2. 利用现有的数据库的spfile创建一个新数据库的pfile(1.可以用sql创建—create pfile from spfile;可以strings一个spfile文件复制到一个新创的pfile里,然后进行一些替换处理)最后得到一个pfile。)

[3. 接着创建对应的目录,主要的还是/u01/app/oracle/admin目录下创建bbk目录(可以复制原来的zjr目录,然后将里面的内容全删掉),在/u01/app/oradata/目录下创建bbk目录](#3. 接着创建对应的目录,主要的还是/u01/app/oracle/admin目录下创建bbk目录(可以复制原来的zjr目录,然后将里面的内容全删掉),在/u01/app/oradata/目录下创建bbk目录)

[4. 通过创建该sid的spfile](#4. 通过创建该sid的spfile)

[5. 过程的环境变量也得改变生效](#5. 过程的环境变量也得改变生效)

[​编辑6. 启动到nomount状态下](#编辑6. 启动到nomount状态下)

[7. 然后执行创建数据库脚本](#7. 然后执行创建数据库脚本)

[8. 创建属于用户的表空间,以后的数据可以存放在此表。](#8. 创建属于用户的表空间,以后的数据可以存放在此表。)

9.查找相关的sql语句的执行脚本。

11.运行"创建字典的所需"的sql脚本

[12. 到此数据库就建立好了](#12. 到此数据库就建立好了)

[13. 到这里就可以查看表和可以建立表。](#13. 到这里就可以查看表和可以建立表。)


oracle的框架概揽图:

oracle server:是一个管理系统:包括 instance 和database

oracle实例:

实例就是我们访问数据库database的一个中介

一个instance对应一个database,但是一个database可以多个instance来访问它,但是一个instance只能一次访问一个database。

instance组成:内存和进程

具体的每个内存里功能以及进程的作用可以看我前面写的"oracle的内存架构学习"

oracle 的database:

oracle 的database:主要数据文件(data file,redo log file,control file),还有参数文件parameter file ,archived log file。

总体系结构思维导图如下:

SGA的思维导图:

PGA思维导图:

各个进程的思维导图:

oracle的实例管理

修改参数的格式:

修改或者更新spfile或者是内存里面的参数信息格式:

oracle的启动停止:

启动顺序:
首先是找spfileSID.ora,如果没有找到的话就是会去找 默认的default spfile.ora ,再找不到的话就会去找initsid.ora。如果都找不到的话启动的时候就得指定pfile启动。
startup pfile=$ORACLE_HOME/dbs/initsid.ora
句式是这个,如果说是想还是想利用spfile启动的话就得initsid.ora里面是spfile的路径。
oracle的启动四个阶段的状态:

startup:开启数据库

Nomount:启动后台进程和一些基本的数据块(也就是划分出一些共享内存),用于创建数据库或恢复控制文件。

Mount: 将实例与数据库连接起来(将数据库打开给实例),也就是说这个过程她打开控制文件,其他用户不能访问数据库,只有管理员能访问,管理员可以做一些维护工作。(控制文件里包含数据文件可重做日志文件的一颗基本数据)用于重命名数据文件、开启归档模式、进行全库恢复。

Open:数据库的文件允许用户访问。

STARTUP RESTRICT:以受限模式启动,只允许具有 RESTRICTED SESSION 权限的用户(如DBA)访问。

只读形式打开数据库:先打开数据库到mount状态,然后就alter database open read only;

Shutdown:关闭数据库

SHUTDOWN NORMAL(默认):等待所有用户主动断开连接,不允许新连接,然后干净关闭。

SHUTDOWN TRANSACTIONAL:等待 所有活动事务提交或回滚完成后,断开用户连接并关闭。

SHUTDOWN IMMEDIATE:最常用。回滚所有活动事务,断开所有连接,然后关闭。能保证数据一致性。

SHUTDOWN ABORT:像拔电源。立即终止所有进程,实例崩溃式关闭。下次启动需要实例恢复。仅在紧急情况下使用。

oracle的诊断文件:

三个:altersid.log文件,一个是background trace files,一个是user trace file

Oracle 数据库中启用用户 SQL 跟踪的几种方法

实战操作:

准备一些表,有索引,已经是具有统计过的收集统计信息

-- 或者更详细的方式(推荐)

EXEC DBMS_SESSION.SESSION_TRACE_ENABLE(waits => TRUE, binds => TRUE);

启用会话跟踪会记录等待事件和绑定变量信息

接着进行一些查询操作?或者其他

然后停止跟踪

ALTER SESSION SET SQL_TRACE = FALSE;

-- 或者

EXEC DBMS_SESSION.SESSION_TRACE_DISABLE;

找到跟踪文件
通过TKPROF报告结构详解

有管TKPROF的解读

这里显示工具版本、分析时间和排序选项。

call: 调用类型

Parse: SQL解析次数

Execute: SQL执行次数

Fetch: 数据获取次数

count: 调用次数

cpu: CPU时间(秒)

elapsed: 总耗时(秒)

disk: 物理磁盘读取块数

query: 一致性读取块数(逻辑读)

current: 当前模式读取块数

rows: 处理的行数

从内向外阅读(最内缩进的操作最先执行)

cr: 一致性读取(逻辑读)

pr: 物理读取

pw: 物理写入

time: 时间(微秒)

查看当前会话被跟踪的文件路径

SQL> SELECT value as trace_file_path

FROM v$diag_info

WHERE name = 'Default Trace File';

使用TKPROF的不同排序选项

按CPU时间排序

tkprof tracefile.trc output=cpu_analysis.txt sys=no sort=prscpu,execpu,fchcpu

按磁盘读取排序

tkprof tracefile.trc output=disk_analysis.txt sys=no sort=prsdsk,exedsk,fchdsk

按逻辑读取排序

tkprof tracefile.trc output=logic_analysis.txt sys=no sort=prsqry,exeqry,fchqry

综合排序(最常用)

tkprof tracefile.trc output=comprehensive.txt sys=no sort=exeela,fchela

创建 database

有关不同用户,远程或本机的验证连接。

手动创建数据库步骤

创建数据库实战:

1. 首先是关掉数据库
2. 利用现有的数据库的spfile创建一个新数据库的pfile(1.可以用sql创建---create pfile from spfile;可以strings一个spfile文件复制到一个新创的pfile里,然后进行一些替换处理)最后得到一个pfile。

替换掉*.

用bbk替换掉zjr

3. 接着创建对应的目录,主要的还是/u01/app/oracle/admin目录下创建bbk目录(可以复制原来的zjr目录,然后将里面的内容全删掉),在/u01/app/oradata/目录下创建bbk目录
4. 通过创建该sid的spfile
5. 过程的环境变量也得改变生效
6. 启动到nomount状态下
7. 然后执行创建数据库脚本

查看下面执行的那个过程是否有问题?

这个就是数据库创建成功了

这个到此就是只创建了系统的表空间,主要适用于系统管理。

8. 创建属于用户的表空间,以后的数据可以存放在此表。
9.查找相关的sql语句的执行脚本。
11.运行"创建字典的所需"的sql脚本

其他的还有两个catelog.sql , sqlplus/admin/pupbld.sql

12. 到此数据库就建立好了
13. 到这里就可以查看表和可以建立表。
相关推荐
会编程的吕洞宾2 小时前
智能体学习记录二之发展史
学习
代码游侠2 小时前
应用——基于Linux的音乐播放器项目
linux·运维·笔记·学习·算法
TH_12 小时前
22、oracle导入数据,sys_user表数据错误
数据库·oracle
严文文-Chris2 小时前
【向量数据库到底是什么?】
数据库
老马聊技术2 小时前
HBase单节点环境搭建详细教程
大数据·数据库·hbase
子夜江寒2 小时前
Python 操作 MySQL 数据库
数据库·python·mysql
梦帮科技2 小时前
第二十二篇:AI驱动的工作流优化:性能瓶颈自动检测
数据结构·数据库·人工智能·python·开源·极限编程
myzzb2 小时前
python调用ffmpeg.exe封装装饰类调用
python·学习·ffmpeg·开发
Alex Gram2 小时前
SQL Server实时同步到MySQL:构建高效跨数据库数据流通方案
数据库·mysql·sqlserver