12c Oracle基础

第01课-Oracle数据库介绍

文档位置: Concepts->11.1 Introduction to Physical Storage Structures

什么是 Oracle 数据库
1.1 Oracle 介绍
网址,下载
docs.oracle.com

查看系统版本:
[oracle@ouzy ~]$ lsb_release -id
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)

检查启动情况
lsnrctl status 查看状态
lsnrctl start 启动监听

sqlplus / as sysdba
SQL> startup 手动启动数据库
SQL> select status from v$instance; 查看实例状态

1.2 Oracle 数据库
oracle 数据库是永久存储在磁盘上的一系列文件的集合,包括:
所在路径:/u01/app/oracle/oradata/prod
 数据文件
 临时文件
 控制文件
 Redo 日志文件,联机重做日志文件。
 Undo 文件
https://192.168.230.100:5500/em
在这里插入图片描述
1.3 Oracle 实例
oracle 实例是一组内存的集合,用来管理数据库文件
https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/physical-storage-structures.html#GUID-56DFECE5-FB81-494F-9AB8-25F120A1BDDC
在这里插入图片描述

第02课-配置Linux系统参数

下载Oracle软件:
使用 cksum 检验是否损坏
2.1检查硬件环境:
内存需求
查看:free、cat /proc/meminfo
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo

[root@ouzy ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2895444      821764     1279052       18960      794628     1963788
Swap:       4194300           0     4194300

2.2自动存储管理(AMM, Automatic Memory Management)
AMM 需要共享内存和文件描述符。
/dev/shm 的值要比 MEMORY_MAX_TARGET 和 MEMORY_TARGET 大。
查看共享内存大小: df -h /dev/shm/
增加共享内存大小:(一般比物理内存小一点)
cat /etc/fstab
mount -o remount /dev/shm
在这里插入图片描述
2.3系统架构(看是32位还是64位,以便安装对应软件)
uname –m

2.4检查软件环境:(版本)
操作系统要求
cat /etc/redhat-release 或 lsb_release –id
CentOS 7.3(本视频使用)

2.5安装包需求
等到安装的时候再检查

2.6创建用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

2.7配置内核参数
touch /etc/sysctl.d/97-oracledatabase-sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152(物理内存*90%/4096)
kernel.shmmax = 536870912(物理内存*90%)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

sysctl --system(立即生效)
sysctl -a|grep shmmax
sysctl -a|grep shmall

2.8 配置资源限制
/etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 3145728
oracle hard stack 3145728

2.9创建目录

mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01

2.10设置环境变量

export ORACLE_SID=prod
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1
export PATH=$PATH:$ORACLE_HOME/bin

2.11修改/etc/hosts 文件
在文件最后添加如下设置:
192.168.230.100 ouzy ouzy

2.12关闭 selinux
/etc/selinux/config
SELINUX=disabled

关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

1.13关闭透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
[always]代表启用
[never]代表禁用
vi /etc/default/grub
GRUB_CMDLINE_LINUX=“crashkernel=auto rhgb quiet
transparent_hugepage=never”

重新加载:grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统
cat /proc/cmdline
在这里插入图片描述

第03课-虚拟机环境说明

Root:Oracle123
oracle 密码:Oracle123
sys 密码:Oracle123
虚拟机 IP:192.168.230.100

第04课-Linux系统上安装Oracle12c

执行/database目录下的runInstaller
./runInstaller

第05课-使用DBCA安装数据库使用 DBCA 安装数据库

1 使用 netca 创建监听器
在这里插入图片描述

2 使用 dbca 创建数据库
在这里插入图片描述
安装完数据库取消密码过期问题:
alter profile default limit password_life_time unlimited;
alter profile default limit failed_login_attempts unlimited;

取消段延迟特性:
alter system set deferred_segment_creation=false scope=both;

设置大小写忽略(12c 已经废弃这个参数,但是兼容):
alter system set sec_case_sensitive_logon=false scope=both;
注意事项:12c不设置大小写忽略,否则导致普通用户无法登陆。

第06课-实例和监听的启动关闭

6.1 实例的启动关闭
sqlplus / as sysdba
startup 启动
shutdown immediate 干净关闭
select status from v$instance 查看实例状态

6.2 监听启动关闭
lsnrctl status 查看状态
lsnrctl start 启动监听
lsnrctl stop 关闭监听
alter system register; 手工注册监听(sqlplus下执行)

注意:
如果监听关闭了,原有已经连接的客户端不会断开。

第07课-EM Express的启动关闭

EM Express 的启动关闭
在 Oracle 12c 的版本中,引入了简化的 EM 版本,这一版本被称为:
EM Database Express 12c。 Express 版本的 EM 对之前的 EM 做出了大
量的简化,使之更加轻量级。12c 不再支持 database control。
在这里插入图片描述
1 EM Express 启动关闭
企业管理器 Enterprise Manager Database Express(Oracle 12c)
使用 EM Express:

打开 em:
exec dbms_xdb_config.sethttpsport(5500); – https
exec dbms_xdb_config.sethttpport(5505); – http

关闭 em:
exec dbms_xdb_config.sethttpsport(0); – https
exec dbms_xdb_config.sethttpport(0); – http

查看 em 端口:
select dbms_xdb_config.gethttpsport from dual; – https
select dbms_xdb_config.gethttpport from dual; – http

使用浏览器连接到 EMS Express:
https://192.168.230.100:5500/em
http://192.168.230.100:5505/em

第08-10课-参数文件spfile和pfile

参数文件 spfile 和 pfile
文档位置: Concepts->13.5 Overview of Parameter Files
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cncpt/oracle-database-instance.html#GUID-2F760754-174C-4A30-800C-8A147561B64C

当启动一个数据库实例的时候,oracle 会读取服务器参数文件(server
parameter file,spfile,二进制文件)或者文本初始化参数文件(text
initialization parameter file,pfile,文本文件)。
位置:/u01/app/oracle/product/12.2.0.1/db_1/dbs

初始化参数分为 2 类:基本参数和高级参数。
Xxx=xxx

调整大约 30 个基本参数就可以获得很好的性能。
基本参数例如:
CONTROL_FILES
DB_BLOCK_SIZE
DB_NAME
UNDO_TABLESPACE

服务器参数文件也叫做spfile,此文件只有1个,且存在于数据库服务器
上。Spfile 只能被数据库服务器读取,而不能被客户端读取。Spfile 是
一个二进制文件,不能被文本编辑器编辑。
文本初始化参数文件也叫做 pfile,是基于文本的,可以被文本编辑器编
辑。Vi,gedit
在这里插入图片描述
8.1 参数文件命名规则
spfile 命名规则:spfileSID.ora
pfile 命名规则:initSID.ora
位置:
ORACLE_HOME/dbs (Linux)
ORACLE_HOME/database (windows)

举例,修改操作系统最大进程数:alter system set processes=500 scope=spfile;
shutdown immediate
startup (重启)
[oracle@ouzy dbs]$ strings spfileprod.ora (查看文件spfile,路径:/u01/app/oracle/product/12.2.0.1/db_1/dbs)

8.2 修改参数:
参数有静态和动态之分,动态参数又分为:会话级别参数和系统级别参数,静态
的参数修改需要重启实例生效。
会话级别参数:影响当前用户会话。(NLS_DATE_FORMAT)
系统级别参数:影响数据库和所有用户会话。(MEMORY_TARGET)
Alter system set key=value scope=memory|spfile|both(默认模式)
alter session set nls_date_format = ‘yyyy-mm-dd hh24:mi:ss’;

2.1 动态参数:
undo_retention
open_cursors
v p a r a m e t e r . i s s y s m o d i f i a b l e = I M M E D I A T E s e l e c t f r o m v parameter.issys_modifiable='IMMEDIATE' (select * from v parameter t where t.NAME=‘open_cursors’)

2.2 静态参数:
processes
db_unique_name
control_files
v$parameter.issys_modifiable=‘FALSE’

2.3 spfile 和 和 pfile 相互创建
create spfile from pfile;
create pfile from spfile;
create pfile=’/u01/p.ora’ from spfile;

2.4 参数文件启动顺序
1.spfileORACLE_SID.ora
2.spfile.ora
3.initORACLE_SID.ora

实验:
a.将spfile更名
mv spfileprod.ora spfile.ora
show parameter spfile;
SQL> shutdown immediate
rm spfile.ora (SQL> shutimmdiate )
show parameter spfile; (startup后)
show parameter pfile;
在这里插入图片描述
在这里插入图片描述
b.将pfile更名
mv initprod.ora x.ora
SQL> shutdown immediate
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/12.2.0.1/db_1/dbs/initprod.ora’

startup pfile=/u01/app/oracle/product/12.2.0.1/db_1/dbs/x.ora

SQL> alter system set open_cursors=800 scope=spfile;
[oracle@ouzy dbs]$ strings p.ora (查看是否已修改)
在这里插入图片描述
c.将pfile文件情况,并内容指向fpfile
cat /dev/null > initprod.ora
vi initprod.ora

spfile=/u01/app/oracle/product/12.2.0.1/db_1/dbs/p.ora

mv spfileprod.ora p.ora

SQL> shutdown immediate
SQL> startup
SQL> show parameter spfile;
在这里插入图片描述
在这里插入图片描述

第11-12课-控制文件Controlfile

Oracle 控制文件
文档位置: Concepts->11.3 Overview of Control Files
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cncpt/physical-storage-structures.html#GUID-90EAC9F2-B396-4C59-9821-B03BF7B6BCD0
控制文件是一个很小的二进制文件,用于记录数据库的物理结构。
一个控制文件只属于一个数据库。当数据库的物理结构改变的时候,
Oracle 会更新控制文件(例如增加文件)。用户不能编辑控制文件,控
制文件的修改由 Oracle 完成。
SQL> show parameter control
cd /u01/app/oracle/oradata/prod
strings control01.ctl

控制文件包含了如下信息:
 数据库名字
 数据库创建的时间戳
 数据文件、重做日志、归档日志位置
 表空间信息
 RMAN 备份信息

控制文件作用:
1.控制文件含有数据文件,redo 日志文件等位置信息,数据库打开会用
到这个信息。当数据库增加、重命名、删除了文件,会更新控制文件。
2.包含一些元数据,在数据库未 open 之前。
控制文件里面包含有检查点 checkpoint 信息,当数据库需要恢复时需
要这个信息。每3秒钟检查点进程 CKPT 会记录检查点到控制文件。

多份控制文件:
至少有 1 份,一般都是 2 份以上.完全相同的。同时打开。
可以避免单点故障。
控制文件在多个磁盘的放置。

控制文件结构:
由 section 组成,每个 section 由多个记录 record 组成。
alter session set events ‘immediate trace name controlf level 3’;
select * from v$diag_info;
在这里插入图片描述
2 种类型的记录:
循环重用记录:
这些记录包含可以被覆盖的非关键信息。当所有可用的记录槽用完
时,数据库需要扩展控制文件或覆盖最旧的记录,以便为新记录腾出
空间。循环重用记录可以删除,并且不会影响数据库运行,如:RMAN
备份记录,归档日志历史信息等信息。

非循环重用记录:
这些记录包含不经常更改且不能被覆盖的关键信息。包括表空间、
数据文件、联机重做日志文件、redo 线程。oracle 数据库绝不会重用
这些记录,除非从表空间中删除相应的对象。

相关视图和参数:
SQL> show parameter control
CONTROL_FILE_RECORD_KEEP_TIME

v$controlfile(    select * from v$controlfile;)
v$controlfile_record_section(    select * from v$controlfile_record_section;)

在这里插入图片描述
增加控制文件实验:
增加/删除一个控制文件
alter system set control_files=file1,file2 scope=spfile
shutdown immediate
cp control01.ctl control03.ctl
startup
pfile->spfile

方式1 :
SQL> alter system set control_files=’/u01/app/oracle/oradata/prod/control01.ctl’,’/u01/app/oracle/oradata/prod/control02.ctl’,’/u01/app/oracle/oradata/prod/control03.ctl’ scope=spfile;

关机后复制: [oracle@ouzy prod]$ cp control01.ctl control03.ctl (/u01/app/oracle/oradata/prod)
然后重启
在这里插入图片描述
在这里插入图片描述
方式 2:
SQL> create pfile from spfile;
[oracle@ouzy dbs]$ vi initprod.ora (/u01/app/oracle/product/12.2.0.1/db_1/dbs)
SQL> shutdown immediate
SQL> create spfile from pfile;
SQL> startup
SQL> show parameter control
在这里插入图片描述
在这里插入图片描述
清理控制文件中的记录:
alter system switch logfile;(切换日志,将产生记录存在v l o g h i s t o r y s e l e c t f r o m v log_history表中) select * from v log_history;
1.通过重建控制文件或设置 control_file_record_keep_time=0。

2.使用 execute sys.dbms_backup_restore.resetCfileSection 清理。
清理 v$log_history 对应的记录:
execute sys.dbms_backup_restore.resetCfileSection(9);

清理 v$archived_log 对应的记录:
execute sys.dbms_backup_restore.resetCfileSection(11);

清理 v$rman_status 对应的记录:
execute sys.dbms_backup_restore.resetCfileSection(28);

清理 rman 备份信息:
execute sys.dbms_backup_restore.resetCfileSection(12);

第13-14课-常用工具-SQLPlus和PLSQLDeveloper

Oracle 常用工具的使用:
sqlplus 命令行工具
PLSQL Developer 开发人员使用
sqldeveloper oracle 的工具,比较少
Toad DBA,管理多

1 sqlplus (服务器上登陆)
sqlplus / as sysdba
sqlplus hr/hr (创建的用户)(12c不能设置密码大小写忽略)
创建:create user hr identified by hr;
授权:grant connect,resource to hr;
授权:alter user hr quota unlimited on users;(给用户添加表空间的权限)
sqlplus hr/[email protected]:1521/prod
sqlplus system/[email protected]:1521/prod
sqlplus sys/[email protected]:1521/prod as sysdba
sqlplus sys/[email protected]:1521/prod as sysoper
grant sysdba to hr;
sqlplus hr/[email protected]:1521/prod as sysdba

2 PLSQL Developer
设置保存密码:
【工具】-【首选项】
在这里插入图片描述
连接 Oracle:
在这里插入图片描述
$ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION=8
原因:客户端版本不是 12c
设置字体:
在这里插入图片描述
设置美化器规则文件:
在这里插入图片描述
代码注释:
1.–
2./* */

第15课-常用工具-sqldeveloper和Toad

Oracle 常用工具的使用:
sqlplus 命令行工具
PLSQL Developer 开发人员使用
sqldeveloper oracle 的工具,使用比较少
Toad DBA,管理多
1 sqldeveloper
在这里插入图片描述
在这里插入图片描述
2 Toad
在这里插入图片描述
表空间查询:
在这里插入图片描述

第16-17课-实例instance

Oracle 实例
文档位置: Concepts->13 Oracle Database Instance
1 什么是实例 instance:
A database instance is a set of memory structures that manage
database files.
Oracle 实例(instance)是一块内存区域,当实例启动的时候,会分配一个叫做
SGA(System Global Area)的内存区域和启动若干后台进程,也就是 实例=SGA+后台
进程。

实例可以单独启动。
在这里插入图片描述
Process monitor
System monitor
Database write
Log write
checkpoint

实验:实例可以单独启动
[oracle@ouzy ~]$ echo O R A C L E S I D [ o r a c l e @ o u z y   ] ORACLE_SID(查看当前环境变量的实例) [oracle@ouzy ~] export ORACLE_SID=orcl(指定环境变量实例)
[oracle@ouzy ~]$ sqlplus / as sysdba
SQL> startup nomount(启动到nomount状态,可看出无法找到spfile/pfile文件)

ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/12.2.0.1/db_1/dbs/initorcl.ora'

[oracle@ouzy ~]$ cd O R A C L E H O M E / d b s [ o r a c l e @ o u z y d b s ] ORACLE_HOME/dbs [oracle@ouzy dbs] touch initorcl.ora(在 O R A C L E H O M E / d b s p f i l e [ o r a c l e @ o u z y d b s ] ORACLE_HOME/dbs路径下,手动创建pfile文件) [oracle@ouzy dbs] vi initorcl.ora (内容为:db_name=orcl)
在这里插入图片描述
[oracle@ouzy dbs]$ sqlplus / as sysdba
SQL> startup nomount

ORACLE instance started.

Total System Global Area  268435456 bytes
Fixed Size		    8619496 bytes
Variable Size		  201329176 bytes
Database Buffers	   50331648 bytes
Redo Buffers		    8155136 bytes

SQL> show parameter spfile;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string

[oracle@ouzy ~]$ ps -ef|grep ora_

oracle    22013      1  0 09:38 ?        00:00:00 ora_pmon_orcl
oracle    22015      1  0 09:38 ?        00:00:00 ora_clmn_orcl
oracle    22017      1  0 09:38 ?        00:00:00 ora_psp0_orcl
oracle    22020      1  6 09:38 ?        00:00:04 ora_vktm_orcl
oracle    22024      1  0 09:38 ?        00:00:00 ora_gen0_orcl
oracle    22026      1  0 09:38 ?        00:00:00 ora_mman_orcl
oracle    22030      1  0 09:38 ?        00:00:00 ora_gen1_orcl
oracle    22034      1  0 09:38 ?        00:00:00 ora_diag_orcl
oracle    22036      1  0 09:38 ?        00:00:00 ora_ofsd_orcl
oracle    22040      1  0 09:38 ?        00:00:00 ora_dbrm_orcl
oracle    22042      1  0 09:38 ?        00:00:00 ora_vkrm_orcl
oracle    22044      1  0 09:38 ?        00:00:00 ora_svcb_orcl
oracle    22047      1  0 09:38 ?        00:00:00 ora_pman_orcl
oracle    22049      1  0 09:38 ?        00:00:00 ora_dia0_orcl
oracle    22057      1  0 09:38 ?        00:00:00 ora_dbw0_orcl
oracle    22060      1  0 09:38 ?        00:00:00 ora_lgwr_orcl
oracle    22062      1  0 09:38 ?        00:00:00 ora_ckpt_orcl
oracle    22064      1  0 09:38 ?        00:00:00 ora_lg00_orcl
oracle    22066      1  0 09:38 ?        00:00:00 ora_smon_orcl
oracle    22068      1  0 09:38 ?        00:00:00 ora_lg01_orcl
oracle    22070      1  0 09:38 ?        00:00:00 ora_smco_orcl
oracle    22072      1  0 09:38 ?        00:00:00 ora_reco_orcl
oracle    22074      1  0 09:38 ?        00:00:00 ora_w000_orcl
oracle    22076      1  0 09:38 ?        00:00:00 ora_lreg_orcl
oracle    22078      1  0 09:38 ?        00:00:00 ora_w001_orcl
oracle    22080      1  0 09:38 ?        00:00:00 ora_pxmn_orcl
oracle    22084      1  0 09:38 ?        00:00:00 ora_mmon_orcl
oracle    22086      1  0 09:38 ?        00:00:00 ora_mmnl_orcl
oracle    22088      1  0 09:38 ?        00:00:00 ora_tmon_orcl
oracle    22362  22268  0 09:39 pts/1    00:00:00 grep --color=auto ora_

SGA 用途有很多,例如:

  1. 维护内部数据结构
  2. 缓存磁盘的数据
  3. 缓存 redo 数据
  4. 存储 SQL 执行计划

2 SGA 组成部分
Database Buffer Cache
In-Memory Area
Redo Log Buffer
Shared Pool
Large Pool
Java Pool
Streams Pool
Fixed SGA

database buffer
redo log buffer
shared pool 共享池
large pool 大池
java pool java 池
stream pool 流池
fixed sga

shared pool 共享池组成:
① library cache 库缓冲
② data dictionary cache 数据字典缓冲

3 相关视图:
v i n s t a n c e g v instance gv instance
v s g a i n f o , v sgainfo,v sgastat

4 后台进程
后台进程包括:PMON,SMON,DBWn,LGWR,CKPT 等。
可查询相关视图:v p r o c e s s , v process,v bgprocess

5 单实例和 RAC
RAC: real application cluster 实时应用集群,真正应用集群
在这里插入图片描述
单实例:1 对 1
RAC:1 对多
一台服务可以存在多个实例。

第18课-静态数据字典

Oracle 系统视图分两类:
 静态数据字典
 动态性能视图

文档位置: Reference->2.1 About Static Data Dictionary Views
静态数据字典中的视图分为三类,它们分别由三个前缀够成:
 user_
 all_

 dba_*

查询所有的数据字典视图: DICTIONARY
select * from dictionary t;
SQL> revoke sysdba from hr1;(收回dba权限)
user_:该视图存储了关于当前用户所拥有的对象的信息。
all_
:该视图存储了当前用户能够访问的对象的信息。
dba_*:该视图存储了数据库中所有对象的信息。
一个用户可以查询所有数据字典:授权 SELECT ANY DICTIONARY 权限
SQL> grant select any dictionary to hr1;(授权any dictionary)
在这里插入图片描述
例如:dba_tables,all_tables,user_tables

create user zy1 identified by zy1 ;
grant connect,resource to zy1 ;

create user zy2 identified by zy2 ;
grant connect,resource to zy2 ;

alter user zy1 quota unlimited on users;(创建使用表空间的权限)
alter user zy2 quota unlimited on users;

 drop table tbs01;
create table tbs01(name varchar2(100));(登陆zy1后创建tbs01)
grant select on zy1.tbs01 to zy2 ;(登陆sys授权)

第19-20课-动态性能视图(重点)

Oracle 系统视图分两类:
 静态数据字典(User_,all_,dba_)
 动态性能视图(V$)

文档位置: Reference->7.1 About Dynamic Performance Views
动态性能视图: 当数据库运行的时候它们会不断进行更新,一般
以 v , v 开头,例如 v sga,v s g a i n f o , v sgainfo,v instance,v$session

select * from v$sga;
select * from v$sgainfo;
select * from v$instance;
select * from v$session;

要求数据库处于 mount 或者 open 状态。
http://docs.oracle.com 文档

所有视图:
select * from dictionary;
select * from dict;

v : g v 开头:本地实例动态性能视图 gv 开头:全局动态性能视图(RAC 环境下)
例子:v i n s t a n c e , g v instance,gv instance

常用视图:

v$version 数据库版本
select * from v$version;

v$database 数据库信息
select * from v$database;

v$instance 实例信息
select * from v$instance;

v$session 会话信息
select * from v$session;
结束会话进程:SQL> alter system kill session '414,43296';

v$tablespace,dba_tablespaces 表空间
select * from v$tablespace;  
select * from dba_tablespaces;

v$datafile,v$dbfile,dba_data_files 数据文件(不含临时文件)
select * from v$datafile; 
 select * from v$dbfile; 
 select * from dba_data_files;

v$tempfile, dba_temp_files 临时文件
select * from v$tempfile; 
select * from dba_temp_files;

dba_tables 系统中所有的表
select * from dba_tables;

dba_indexes 系统中所有的索引
select * from dba_indexes;

dba_views 系统中所有的视图
select * from dba_views

v$log,v$logfile 重做日志信息(redo log)
select * from v$log; --日志文件
select * from v$logfile; --redo文件
select * from v$controlfile; --控制文件

第21课-密码文件

密码文件
文档位置:Administrator’s Guide->1.7 Creating and Maintaining a
Database Password File

密码文件存放路径:
$ORACLE_HOME/dbs/orapwSID(Linux)
$ORACLE_HOME\database\PWDORACLE_SID.ora(windows)

密码文件用于具有 sysdba 身份的用户执行远程登录数据库,Oracle
允许用户通过密码文件验证,在数据库未启动之前登录,从而启动实
例,加载打开数据库;

相关参数:
remote_login_passwordfile=EXCLUSIVE
若remote_login_passwordfile=NONE,客户端无法使用 sysdba 登录数据库
在这里插入图片描述
查询拥有 sysdba 权限的用户:
select * from v$pwfile_users;

密码文件读取顺序:
orapwSID->orapw
无需重启

实验:sys 密码忘记怎么办?
方式1:重建密码文件
[oracle@ouzy dbs]$ orapwd file=orapwprod password=ouzy123@123 force=y
=号两边无空格。

方式2:使用sys操作系统验证的方式登陆修改
[oracle@ouzy ~]$ sqlplus / as sysdba
SQL> alter user sys identified by Oracle123;

第22-24课-数据类型

文档位置: SQL Language Reference->2.1 Data Types

varchar2:
长度可变
MAX_STRING_SIZE = STANDARD 最大 4000 字节或字符,(默认)
MAX_STRING_SIZE = EXTENDED 最大 32767 字节或字符.

char:
固定长度,最大 2000 字节或字符.

number:
包含精度(即总位数,1 - 38)和刻度(即小数位数,-84 - 127),占用 1-22 字节。

nchar:
national
国家字符集类型,采用 unicode 编码。

nvarchar2:
国家字符集类型,采用 unicode 编码, 长度可变 MAX_STRING_SIZE =
STANDARD 最大 4000 字节或字符,MAX_STRING_SIZE = EXTENDED 最大
32767 字节或字符.

long:
最大 2GB 字节,已被 clob 取代,一个表只能包含一个 LONG 类型的列。
存储的数据是在段里面的。

日期类:
date
sysdate 当前日期
sysdate-1 前 1 天
sysdate-1/24 前 1 小时
sysdate-1/24/60 前 1 分钟
sysdate-1/24/60/60 前 1 秒

时间戳 timestamp:
insert into test(c3) values(to_timestamp(‘2018-01-01
12:10:10.1’,‘yyyy-mm-dd hh24:mi:ss.ff’))

Lob 类型
Binary char lob
内置的 LOB 数据类型包括 BLOB、CLOB、NCLOB、BFILE(外部存储)
的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。

clob:
字符串,可以多个 clob 类型的列,存储的是一个指针
nclob 采用 unicode 编码

Blob:
存储非结构化的二进制数据大对象,存储各种文件。
最大:(4 gigabytes - 1) * (database block size).

Bfile:
二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文
件当二进制文件处理。
使用 vsize 函数查看所占字节
使用 length 函数查看长度

dump 函数
1)8:以 8 进制返回结果的值
2)10:以 10 进制返回结果的值(默认)
3)16:以 16 进制返回结果的值
4)17:以单字符的形式返回结果的值z
5)1000:以上 4 种加上 1000,表示在返回值中加上当前字符集
select dump(‘abc’,16) from dual;
select dump(name) from t2;
select dump(name,‘16’) from t2;
select dump(name,‘1016’) from t2;

查看字符集:select * from nls_database_parameters;

第25-26课-实例的启动过程分析

文档位置:Concepts->13.2 Overview of Database Instance Startup and Shutdown
数据库由关闭到打开经历 4 个阶段: shutdown->nomount->mount->open
关闭->卸载->挂载->打开
在这里插入图片描述
alert 文件位置:
/u01/app/oracle/diag/rdbms/prod/prod/trace/alert_SID.log
跟踪日志记录:[oracle@ouzy trace]$ tail -f alert_prod.log(实时打印启动情况)

  1. shutdown->nomount
    SQL>startup nomount;
    select status from v$instance;
    STARTED 状态
  1. 寻找初始化参数文件
    spfileSID.ora->spfile.ora->initSID.ora
    spfileprod.ora->spfile.ora->initprod.ora
    可以指定 spfile 和 pfile 路径启动
  2. 读取参数文件的参数
  3. 根据参数分配 SGA 大小 memory_target
  4. 启动后台进程 实例=SGA+后台进程
  5. 将所有显示的参数写入 alert 日志
    此期间并未和数据库关联
  1. nomount->mount
    SQL>alter database mount;
    select status from v$instance;
    MOUNTED 状态
    数据库挂载,获取控制文件(控制文件位置由参数 control_files 控制),读取控制文件
    获取数据文件和 redo 联机重做日志文件位置。
    在挂载状态,数据库并未打开。此时客户端可以连上监听。
    CLUSTER_DATABASE=false
    SQL> show parameter cluster_database

  2. mount->open
    SQL>alter database open;
    OPEN 状态
    数据文件位置:/u01/app/oracle/oradata/prod/

只有数据库 open,用户才能对数据进行操作。例如增删改查操作,exp 导出操作。
1.打开除了 undo 表空间外的表空间的数据文件。
如果表空间是离线的,那么数据文件也会离线。
2.打开 Undo 表空间的文件。
如果有多个 undo 表空间,则根据参数 UNDO_TABLESPACE 决定使用哪个。

使用 lsof 命令:
1) 查看进程打开的文件
lsof -p 进程号
2) 查看文件被哪个进程打开
lsof redo01.log
实验操作:
SQL> startup mount(启动到mount状态)
[oracle@ouzy ~]$ ps -ef|grep ora_(查看进程)
[oracle@ouzy ~]$ cd /u01/app/oracle/oradata/prod/
[oracle@ouzy prod]$ lsof control01.ctl(查看文件被哪个进程打开)
[oracle@ouzy prod]$ lsof -p 16306 (查看打开的文件)
SQL> alter database open;(启动到open状态)
[oracle@ouzy prod]$ lsof -p 16306(再次查看打开的文件)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.打开联机重做日志文件。
startup mount
startup nomount
startup open(startup)

排查步骤:

  1. startup nomount;参数文件
  2. alter database mount;控制文件
  3. alter database open;数据文件

第27课-实例的关闭过程分析

在这里插入图片描述
文档位置: Concepts->13.2.2 Overview of Database and Instance
Shutdown
alert 文件位置:
/u01/app/oracle/diag/rdbms/prod/prod/trace/alert_SID.log
跟踪日志记录:[oracle@ouzy trace]$ tail -f alert_prod.log(实时打印启动情况)

1.open->close
SQL>alter database close;

1.正常关闭
将 SGA 的数据写入到数据文件和 redo 文件, 关闭数据文件和联机重做日志文件,
数据库将处于 mount 状态 ,但控制文件依旧是打开的状态。

2.非正常关闭
使用 shutdown abort,断电等情况。没来得及将SGA 的数据写入到数据文件和redo
文件,下次实例启动,oracle 会自动进行数据恢复。

2.close->nomount
关闭控制文件,但是实例仍存在于内存中。
SQL>alter database dismount;

3.nomount->shutdown
SQL>shutdown;
实例关闭,后台进程终止。
在某些情况下,实例无法干净地关闭,无法重新启动实例,这时候可以使用
shutdown abort 先关闭。
INSTANCE_ABORT_DELAY_TIME:(单位秒,12.2 开始有这个参数)指定发生内部错误
延迟多长时间实例终止。

第28课-实例的4种关闭模式

在这里插入图片描述
数据库关闭有 4 种模式:
在这里插入图片描述
Shutdown abort:
使用此种模式和断电一样的效果,速度最快,但下次启动需要进行实例恢复,这种
恢复是 oracle 自动进行的。
在这里插入图片描述
Shutdown immediate:
此种模式的速度仅次于 shutdown abort,断开用户连接,终止活动的事务,未提交的
事务进行回滚。

Shutdown transactional:
等待当前所有事务结束就关闭数据库。

Shutdown normal(默认模式):
等待所有用户断开连接就关闭数据库。

生产库:

  1. 运行了很长时间 1 年,2 年
    Shutdown immediate
    Shutdown abort—实例恢复

生产库关闭步骤:
2. 刷新 SGA 数据到数据文件
Alter system flush buffer_cache;(可重复执行几次)
3. 写检查点
Alter system checkpoint;(可重复执行几次)
4. shutdown immediate
5. shutdown abort(若shutdown immediate迟迟无法关闭再选择shutdown abort,并且先刷新SGA数据到数据文件中、写检查点命令执行)
6. startup

第29课-物理存储结构

文档: Concepts->11 Physical Storage Structures
Oracle 数据库是由一组数据文件的组成的,这些文件永久得存储在磁盘上。包括
数据文件,临时文件,控制文件,联机重做日志文件。
实例是一块内存区域,用来管理数据文件的。SGA+后台进程
一个数据库可以有多个实例(RAC)。
在这里插入图片描述
CREATE DATABASE 语句:
在这里插入图片描述
数据文件相关视图:dba_data_files,v d a t a f i l e , v datafile,v dbfile
临时文件相关视图:dba_temp_files,v t e m p f i l e : v tempfile 控制文件相关视图:v controlfile
联机重做日志相关视图:v l o g , v log,v logfile

select * from dba_data_files;
select * from v$datafile;
select * from v$dbfile;
select * from dba_temp_files;
select * from v$tempfile;
select * from v$controlfile;
select * from v$log; --日志组
select * from v$logfile;  --日志文件

SELECT a.GROUP#, b.MEMBER
  FROM v$log a
 INNER JOIN v$logfile b
    ON a.GROUP# = b.GROUP#

第30课-逻辑存储结构

Oracle 数据库的逻辑结构和物理结构对应图
在这里插入图片描述
oracle 数据块–操作系统数据块的整数倍
oracle 数据块:db_block_size
操作系统块:
xfs_info /dev/sda3
file -s /dev/sda3
lsblk -f
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Tablespace:表空间(dba_tablespaces,v$tablespace)
Segment:段(dba_segments,表,index)
Extent:区(dba_extents)
Datablock:Oracle 数据块

select * from dba_tablespaces;
select * from dba_segments t where t.owner='HR1';
select * from dba_extents t where t.owner='HR1';

在这里插入图片描述
在这里插入图片描述

第31课-数据库诊断文件

ADR(Automatic Diagnostic Repository,自动诊断资料档案库)是一个目
录结构,用来存储跟踪文件,日志文件等。
路径:/u01/app/oracle/diag/rdbms/prod/prod/trace
在这里插入图片描述
在这里插入图片描述
参数:DIAGNOSTIC_DEST

SQL> show parameter diag  
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest 		     string	 /u01/app/oracle

可以使用 v$diag_info 查看此目录。
在这里插入图片描述
1 Alert 文件(/u01/app/oracle/diag/rdbms/prod/prod/trace)
数据库、监听、ASM、clusterware
每一个数据库都有一个 alert 文件,按照时间顺序记录了如下一些信息:
1.1所有内部错误(ORA-600),块崩溃错误(ORA-1578),死锁(ORA-60)
1.21DDL 语句 ,startup,shutdown,archive log,recover
1.3其他信息 alter system set

2 Tracer 文件
服务器和后台进程都有相关的跟踪文件。以.trc 为后缀。
后台进程产生的跟踪文件为:SID_进程名_PID.trc。
服务器进程产生的跟踪文件为:SID_ora_PID.trc。
Prod_ora_28439.trc
Prod_ora_98269.trc
跟踪文件有时候会伴随一些.trm 文件,这些文件记录了跟踪文件的结构化信息,用
来搜索和导航。
SELECT PID, PROGRAM, TRACEFILE FROM V P R O C E S S ; D I A G N O S T I C D E S T , A D R s e l e c t f r o m v PROCESS; DIAGNOSTIC_DEST 相关参数,指定 ADR 位置 select * from v process;(查看进程)
在这里插入图片描述
在这里插入图片描述
DDL log:
ENABLE_DDL_LOGGING
记录 ddl 语句
SQL> alter system set enable_ddl_logging=true;(修改为true便会记录ddl执行记录)

SQL> show parameter ddl
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
ddl_lock_timeout		     integer	 0
enable_ddl_logging		     boolean	 FALSE

实验:查看ddl操作记录
SQL> create table t1(name varchar2(20));
日志记录位置:
/u01/app/oracle/diag/rdbms/prod/prod/log(ddl_prod.log 简要信息)
/u01/app/oracle/diag/rdbms/prod/prod/log/ddl(log.xml 详细信息)

[oracle@ouzy log]$ cat ddl_prod.log (简要信息)
2019-06-30T17:39:06.265056+08:00
diag_adl:create table t1(name varchar2(20))

[oracle@ouzy ddl]$ cat log.xml (详细信息,包括ip地址)
<msg time='2019-06-30T17:39:06.264+08:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4695:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='ouzy' host_addr='192.168.230.100'
 pid='68796' version='1'>
 <txt>create table t1(name varchar2(20))
 </txt>
</msg>

Ora 错误:
Oerr ora xxx
在这里插入图片描述
在这里插入图片描述

3 ADRCI 工具
which adrci(查看目录所在)
help
show base
show alert
show tracefile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第32课-表空间管理方式

文档位置:Concepts->12.Logical Storage Structures
表空间管理方式:
在这里插入图片描述
区管理方式:本地管理和字典管理:字典管理->转化->本地管理
段管理方式:自动和手工

SYSTEM,TEMP,UNDOTBS 表空间的段管理使用手动方式,其它自动
方式
表空间相关视图: dba_tablespaces,v$tablespace

第33-34课-操作表空间

三种类型:
1️⃣永久表空间
2️⃣临时表空间 tempoary
3️⃣ 撤销表空间 undo

1️⃣ 创建永久表空间

create tablespace tbs01 datafile '/u01/tbs.dbf' size 100m
reuse
autoextend on next 100m maxsize unlimited
extent management local uniform size 1m --区管理
segment space management auto; --段管理

表空间 offline/online 操作:

ALTER TABLESPACE tbs01 ONLINE;
ALTER TABLESPACE tbs01 OFFLINE;

表空间只读/读写:

ALTER TABLESPACE tbs01 READ ONLY;
ALTER TABLESPACE tbs01 READ WRITE;

实验:表空间操作练习

SQL> create user rw identified by rw;
SQL> grant connect,resource to rw;
SQL> alter user rw quota unlimited on tbs01;

SQL> alter user rw default tablespace tbs01;(设置rw用户的默认表空间为tbs01)

SQL> conn rw/rw
SQL> create table t(id int);
SQL> insert into t values(100);
SQL> commit;

SQL> conn / as sysdba
SQL> alter tablespace tbs01 read only;(设置表空间为只读)

SQL> conn rw/rw
SQL> insert into t values(101);(插入操作)
insert into t values(101)
            *
ERROR at line 1:
ORA-00372: file 5 cannot be modified at this time
ORA-01110: data file 5: '/u01/tbs01_1.dbf'

SQL> select * from t;(可查询)

	ID
----------
       100

创建 bigfile 类型:
单个文件大小可以达到 4G block(32TB)

create bigfile tablespace tbs02 datafile '/u01/tbs02.dbf'
size 100m reuse
autoextend on next 100m maxsize unlimited
extent management local uniform size 1m
segment space management auto;

创建压缩表空间:

create tablespace tbs01 datafile
'/u01/tbs01.dbf'
size 100m reuse autoextend on next 50m maxsize 20g
default compress for oltp;

2️⃣ 创建临时表空间

create temporary tablespace temp2 tempfile
'/u01/temp2.dbf' size 100m reuse
autoextend on next 100m maxsize unlimited;

指定临时表空间组:

CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE
'/u02/oracle/data/lmtemp201.dbf'
SIZE 50M
TABLESPACE GROUP group1;

查询:( select * from dba_tablespace_groups;)

ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;

3️⃣ 创建撤销表空间类型(UNDO)
SQL> show parameter undo_

create undo tablespace undotbs datafile '/u01/undo.dbf'
size 100m reuse
autoextend on next 100m maxsize unlimited;

4️⃣ 向表空间添加数据文件

alter tablespace users add datafile '/u01/users02.dbf'  size 100m; ---永久型
alter tablespace temp add tempfile '/u01/temp02.dbf' size 100m; ---临时型
alter  tablespace  undotbs1  add  datafile   '/u01/undotbs02.dbf' size 100m ; ---undo 型

5️⃣ 删除表空间

drop tablespace testtbs;(有内容的情况无法删除)
drop tablespace testtbs including contents;(数据文件还在)
drop tablespace testtbs including contents and datafiles; (连数据文件一起删除)

6️⃣ 收缩(增长)表空间

alter database datafile 4 resize 50m;
alter database datafile '/u01/tbs01_3_1.dbf' resize 100m;

第35课-使用Toad管理表空间

在这里插入图片描述

第36课-管理undo数据

当某个进程更改了数据库中的数据时,Oracle 数据库会保存旧值(还原数据)。按数据修改前的原样存储数据。如果捕获了还原数据,则可以回退未提交的数据。还原数据还用于支持读取一致性和闪回查询。

undo 段(撤销段)
undo_management
undo_tablespace
undo_retention

创建 undo 表空间
create undo tablespace undotbs2 datafile ‘/u01/undo02.dbf’ size 100m;

更改 undo 默认表空间
alter system set undo_tablespace=undotbs2 scope=both;

设置 undo 保留时间(默认900s太少,需调整)
alter system set undo_retention=3600 scope=both;
在这里插入图片描述
确保还原保留期
select tablespace_name,retention from dba_tablespaces;
alter tablespace undotbs1 retention guarantee;
alter tablespace undotbs1 retention noguarantee;
在这里插入图片描述
相关视图:
dba_rollback_segs
v$rollname
dba_undo_extents
select * from dba_segments t where t.tablespace_name=‘UNDOTBS2’;

猜你喜欢

转载自blog.csdn.net/qq_41141058/article/details/93762560