目录
[oracle 的database:](#oracle 的database:)
[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. 创建属于用户的表空间,以后的数据可以存放在此表。)
[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. 到这里就可以查看表和可以建立表。
