首页 / ORACLE / ORACLE学习笔记 第四天
ORACLE学习笔记 第四天
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ORACLE学习笔记 第四天,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含27474字,纯文字阅读大概需要40分钟。
内容图文
OACLE 体系结构
实例(INSTANCE,内存结构)
一个数据库只能在一个实例中打开,用户通过实例访问数据库。实例就是数据库在内存中的镜像。
SGA( SYSTEM GLOBAL AREA ):各种缓冲区。
DATABASE BUFFER CACHE:缓存用户最近访问的数据。
REDO LOG BUFFER:缓存和事务有关的重作日志。
SHARED POOL:提高SQL的执行效果。
库缓存:用来缓存用户最近执行的SQL语句( 二进制分析代码即分析编译结果),分析代码,执行计划。
一条语句可能被分析多次 (可共享分析代码,但书写不一样,大小写不一样,不能共享分析代码,所以要注意规范,尽量使用变量。如:ID = '1111';SELECT ....... WHERE ....= ID)。
数据字典缓存:缓存用户最近访问的数据对象结构信息 (但数据字典、系统表,存在硬盘上而不在内存上,频繁访问会降低数据库性能)。
结构缓存:缓存最近的SQL执行结果 ,减少硬盘读的操作。
后台进程(DBW进程):DBW把数据库缓冲区中的脏缓冲区写入到数据文件,(注意:这个不是时时刻刻在工作,在一定时机下工作,如:脏缓冲区一定数量、空闲缓冲区很少、超时、发出检查点)
数据库(硬盘文件。新技术:内存数据库)
数据文件
控制文件
重做日志文件
连接模式
专用模式
共享模式(如:12306)
ORALCE特色
初始化参数
动态性能视图:与性能有关 。
DESC 视图、表
数据字典视图:与结构有关
USER_:当前用户所拥有的的某类数据对象 USER_TABLE、USER_VIEWS
ALL_:当前用户有权限访问的某类数据库对象 ALL_TABLES
DBA_:当前数据库中所有的某类数据库对象 DBA_TABLE、DBA_USER、DBA_INDEX
SGA(SGA:SYSTEM GLOBAL AREA是ORACLE INSTANCE的基本组成部分,在实例启动时分配;条件允许的情况下,越大越好、为公共场所)
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
SGA_MAX_SIZE(是从ORACLE9I以来一直存在,是不可动态修改的。 尽量不要修改)
SGA_TARGET(ORACLE10G中用于实现自动SGA内存管理而新增加的,可以上下浮动)
可以用如下命令修改SGA_MAX_SIZE与SGA_TARGET的值
SQL> ALTER SYSTEM SET SGA_MAX_SIZE=160M SCOPE=SPFILE;
SQL> ALTER SYSTEM SET SGA_TARGET=160M SCOPE=SPFILE;
PGA(PROCESS GLOBAL AREA是为每个连接到ORACLE DATABASE的用户进程保留的内存)
属于每个会话(私有)
程序全程区
游标、堆栈
内存管理(内存调整优化)
自动内存管理(ORACLE 9I):只需要指定ORACLE可用最大内存,SGA、PGA自动调整
MEMORY_MAX_TARGET:指定可用的最大内存
MAMORY_TARGET:实际的可用内存大小
自动共享内存管理:分别指定SGA和PGA的大小
SGA_MAX_SIZE
SGA_TARGET
PGA_AGGREGATE_TARGET
手工共享内存管理(ORACLE 8I):分别指定各种缓冲区大小
缓冲区状态
空闲
PINGED:忙得,正在被某个进程访问
DIRTY:数据被修改,还未被写会数据文件
事务(TRANSACTION):能够引起数据变化的一系列SQL的集合(如:存款、取款,下订单、买票等)
作为整体执行的一系列DML语句(执行语句),不能只执行一部分(如:转账,作为整体来执行),需要手工COMMIT或ROLLBACK 。
单条的DDL语句 (如:CRATE、DROP、ALTER) 立刻提交,结构变化。
单条的DCL语句(如:GRANT、REVOKE) 立刻提交,结构变化。
事务的处理
COMMIT(银行转账)
ROLLBACK(回滚)
数据库复制同步
GOLDNGATE:抽取在线日志中的数据变化。转换为GGS自定义的数据格式存放在本地队列或远端队列中。
DATAGUARD:复制归档日志或在线日志
SQL的执行过程
第一步:客户端把语句发给服务器端执行
第二步:语句解析。产生分析代码和执行计划,最花费时间,占据总时间的2/3。
第三步:语句执行
第四步:提取数据
参考:HTTPS://WWW.CNBLOGS.COM/ILIUYUET/P/4431845.HTML
初始化参数类型
动态参数:直接修改、立刻生效。
静态参数:修改结果,写入参数文件,数据库服务器重启后生效。
不可修改的参数:DB _BLOCK _ SIZE
表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K、8K、16K、32K、64K等几种大小。
ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
参考:HTTPS://WWW.CNBLOGS.COM/ZJFJAVA/P/9556311.HTML
SCN(SYSTEM CHANGE NUMBER)
递增,不重复,每个事务都有个SCN
数据文件、控制文件、重做文件中的SCN,要减少差距,定期同步(检查点)
完全一致:上次数据库正常关闭,可以直接打开
三个文件一致,最后一个SCN之后还有一些重做日志,属于没提交事务的SCN,事务被回滚
重做日志文件SCN领先,事务重新执行一遍(更新数据文件、控制文件),重新执行已经提交
参考:HTTPS://CZMMIAO.ITEYE.COM/BLOG/1010267
DML的执行
服务器进程把数据文件读写到数据库缓冲区缓存(以数据块为单位)
服务器进程在缓存中对数据加锁
服务器进程对事务产生重做日志,重做日志缓冲区
服务器进程在缓存中修改数据,产生脏缓冲区
事务的提交
服务器进程把事务SCN 写入重做日志缓冲区
LGWR 进程把该事务的重做日志和SCN 重做日志文件
向用户进程报告事务状态
服务进程在缓存中对数据加锁
事务的回滚
服务器进程把以前的数据UNDO表空间写会原表
向用户进程报告事务状态
服务器进程在缓冲区中对事务加锁
注:ORACLE 默认锁的级别为行级别的锁;
数据库启动、关闭
启动STARTUP
STARTUP NOMOUNT :在内存中产生实例,读参数文件
STARTUP MOUNT:实例需要读控制文件
STARTUP OPEN:实例打开数据文件和重做日志文件
关闭SHUTDOWN
SHUTDOWN ABORT: 不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。
SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动ROLLBACK的。启动时不需要实例恢复。
SHUTDOWN TRANSACTIONL:不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
SHUTDOWN NORMAL:不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
数据库远程连接
在服务器端,需要配置监听器(NETMANAGER )
命令:NETMGR(直接在终端输入,无需ROOT权限)
ROOT命令:SU ROOT;在输入密码。
再用IFCONFIG -ALL命令检查网络,
重启网络服务SERVICE?NETWORK?RESTART?
在客户端,不需要配置监听器
ORACLE客户端,需要配置的字符串SERVICE NAMING 可以解析为:客户端需要知道的IP地址+数据库名称+对方端口
监听器命令
STATUS OF THE LISTENER
命令:LSNRCTL START
LSNRCTL STOP
LSNRCTL STATUS
修改网络配置后,必须先停止监听,在启动监听才可链接新的监听。
身份验证
ORACLE对于普通账户和超级管理员(指SYSDBA和SYSOPER)的认证机制不一样,前者是通过数据字典,后者主要是通过操作系统验证和密码文件验证。
数据库验证:普通用户
外部验证(操作系统验证): SYS用户本地登录
命令:EXPORT ORACLE_SID=TESTDB
口令文件验证:SYS用户的远程登录,远程登录必须输入正确的用户名口令
注:忘记SYS密码解决办法
命令:CD $ORACLE_HOME/DBS
找到文件ORAPW数据库名
删除RM ORAPW数据库名
指定名称和新密码 ORAPWD FILE= 'ORAPW数据库名' PASSWORD='XX'
表空间类型
字典管理表空间:已经被淘汰
本地管理表空间:区大小都一样,没有存储碎片
表空间
SYSTEM表空间:数据字典
SYSAUX表空间:系统数据(不必要的)
临时表空间:存储临时数据(TEMP)
UNDO表空间:允许用户回滚数据
USERS用户默认表空间:把不同类型数据分开
DBA_TABLESPACES:数据库中表空间的信息
PERMANENT永久的
DBA_DATA_FILES:表空间中的数据文件信息
命令:DESC DBA_TABLESPACES
DESC DBA_DATA_FILES
COLUMN FILE_NAME FORMAT A40 修改长度
参考:https://www.cnblogs.com/eastsea/p/3863354.html
创建表空间
ORACLE中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
数据表空间 (TABLESPACE) :存放数据总是需要空间, ORACLE把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
数据表:在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
数据文件:以上几个概念都是逻辑上的, 而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现
命令:CREATE TABLESPACE 表间名 DATAFILE '数据文件名' SIZE 表空间大小
CREATE TABLESPACE DATA_TEST DATAFILE 'E:\ORACLE\ORADATA\TEST\DATA_1.DBF' SIZE 2000M;
CREATE TABLESPACE IDX_TEST DATAFILE 'E:\ORACLE\ORADATA\TEST\IDX_1.DBF' SIZE 2000M;
创建表空间和默认区大小
命令:CREATE TABLESPACE BXJ_DATA
DATAFILE '/ORADATA/BXJ_DATA_001.DBF'
SIZE 100M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO ONLINE;
创建表空间和指定区尺寸为128k(区大小默认64K;数据块大小默认8K)
命令:CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k;
段管理方式
MANUAL:手工
AUTO:自动
段管理方式创建表
命令:CREATE TABLESPACE BXJ_DATA
DATAFILE '/ORADATA/BXJ_DATA_001.DBF'
SIZE 100M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO ONLINE;
默认表空间修改
命令:ALTER DATABASE DEFAULT TABLESP TS1
给用户默认表空间
命令:ALTER USER SCOTT DUFAULT TABLESPACE TS2
表空间删除
命令:DROP TABLESPACE TS1
强制删除
命令:DROP TABLESPACE TS1 INCLUDING CONTENTS
强制删除,夹带段也删除
命令:DROP TABLESPACE TS1 INCLUDING CONTENTS AND DATAFILES
VIM的基本用法
Vim File -->按[I]进入insert模式-->书写内容-->按[Esc]退出insert模式-->:Wq退出保存
STARTUP 出错方法
CREATE PFILE、SPFILE
数据碎片(消除)
DELETE FROM EMP; COMMIT; DML语句 需要手工提交 空间不释放 每行数据删除 出现重做日志
TRUNCATE TABLE EMP;(命令慎用) DDL语句 立刻提交 指针移到段头 数据为未删除 数据不可回滚 不产生重做日志
ALTER TABLE 表明 MOVE 移动表位置 重新创建 消除碎片
ALTER TABLE 表明 MOVE TEBLESPACE 表空间名
ALTER INDEX IDX2 REBUILD
ALTER INDEX IDX2 REBUILD TEBLESPACE 表空间名
迁移表 INSERT INTO 表2 SELECT * FROM 表1 或者用MOVE
重做日志文件
重做日志
重做日志文件多元化,每个重做日志组中至少两个重作日志文件,尽量分布在不同存储设备上(防止硬盘损坏)
重做日志文件比数据文件更重要
归档
日志模式
非归档
覆盖
只能对数据库进行冷备份(把数据库关闭之后的备份)
只能备份整个数据库
数据库出现故障,只能把数据库恢复到最后一个备份点,最后一个备份点到故障点之间数据丢失。
归档模式
归档
可以对数据库进行冷备份或者热备份(数据库处于OPEN状态的备份)
可以备份整个数据库或者某个表空间或者每个数据文件
可以把数据库恢复到最后的故障点,保障数据不丢失,也可以恢复到其中一个时间点
可以配置数据库的复制、同步
两者区别,在于数据库的备份恢复。
重做日记文件管理
重做日志有关的动态视图
V$LOG 重做日志组的信息
V$LOGFULE 重做日志文件的信息(状态为空时表示正常)
重做日志组的状态
Current 当前
Unused 从未使用过
Inactive 至少被使用过一次,与重做日志有关的脏缓冲区已经被写入数据文件
Active 至少被使用过一次,与重做日志有关的脏缓冲区还没有被写入数据文件
命令:
Ls /u02
Su root
Mkdir /u02
Chown -R oracle:oinstall /u02
Exit
Cd /u02
Ls
Mkdir orcl
Ls -ld /u02
Ls /u02/orcl
代码:
Alter database add logfile [group 4] (地址1,地址2) size 100M
Select group#, member, status from v$logfile;
增加重做日志组的意义
举例医院:社保系统1分钟被写满,4分钟需要备份
可设定更多的重做日志组和更大的重做日志文件
警告文件:alert_
跟踪文件:orcl_cjq_
强制切换日志
代码:alter system switch logfile
跟踪文件
后台进程跟踪文件:DBWR、LGWR、CKPT 命名orcl_ckpt_.trc,主要跟踪故障
命令:ls *lgwr*.trc(也可以按时间来查询)
Vi 文件名;打开文件
前台进程跟踪文件:服务器进程、server进程等客户端进程,默认不是打开的,打开后所有的SQL执行都会被记录,查看语句执行效率(分析过几次、编写是否合理)
Flashback闪回,恢复数据库或者表
参考:https://www.cnblogs.com/ivictor/p/3975339.html
归档日志文件
命令:archive log list;
Select log_mode from v$database;
Selec archiver from v$instance;
修改日志模式
开启归档日志文件
Shutdown
启动数据库实例到MOUNT状态
命令startup MOUNT
执行命令
命令:alter database (no)archivelog
打开数据库
命令:alter database open
Archive log list; --USE_DB_RECOVER_FILE_DEST
设置归档日志的路径
31个参数设定31个归档路径,对应参数改为defer为失效
命令:
Show parameter log_archive;(查找归档参数)
Alter system set log_archive_dest_1 = 'location=/u01/archive';
Alter system set log_archive_dest_2 = 'location=/u02/archive';
Alter system switch logfile;手动切换归档文件
查询
Ls /u01/archive
归档日志命名
%t:thread编号,实例编号,%T为扩展四位,前面补充0
%s:sequence编号,防止文件名称冲突,%S为扩展十位,前面补充0
%r:随机的数字,同一个文件不变
命令:alter system set log_archive_format=arc_%T_%S_%r' scope=spfile 再重启数据库
设置错误后修改方法:
Create pfile = '/home/oracle/initorcl.ora' from spfile;
Create spfile from pfile = '/home/oracle/initorcl.ora' from spfile;
RMAN对数据库备份与恢复
冷备份、热备份:(见上面)
物理备份:针对文件备份
逻辑备份:表里面的数据导出到文件中
备份集(backupset):对应操作系统一个文件,对应一个文件,一个备份片(piece),超出系统限制,被分割成多个文件,每个是一个备份片。
影像拷贝(image copy):相当于对文件直接拷贝
完全备份:可以针对整个数据库,也可以针对某个表空间、数据文件
增量备份:相对完全备份而言,针对一段时间有变化的数据(如:银行数据库)
增量备份和完全备份通过备份级别来实现
备份级别
Full:完全备份,是独立备份,用于迁移数据(如:数据库迁移)
0:完全备份,增量备份的基础
1-4:以0级备份为基础,增量备份
需要备份的文件
参数文件:没有备份可以拷贝别的数据库文件修改后使用
控制文件:数据库结构、数据名称等,可以设置自动备份
命令:show parameter control_files;
数据文件:重点备份
重做日志文件:不需要备份,通过两种方式保证文件,多元化、归档
口令文件:不需要备份
归档日志文件:可能需要备份
警告文件、跟踪文件:不需要备份
可恢复性的配置
修改文件多元化
修改初始化参数control_files
Alter system set control_files = '文件1' scope = spfile
关闭数据库
在操作系统中拷贝控制文件
启动数据库服务器
改进方法
Spfile改为pfile
编辑peile文件,修改初始化参数
数据库关闭shutdown
Cp 目录1 目录2
Pfile改为spfile
打开数据库startup
控制文件备份代码:
Create pfile='/home/oracle/initorcl.ora' from spfile;
命令:vi /home/oracle/initorcl.ora
I --开始编辑
'/u02/orcl/control03.ctl' –增加
Esc : wq –退出
Cp '/u01/app/oracle/oradata/db01/control01.ctl' '/u02/orcl/control03.ctl'
Create spfile from pfile = '/home/oracle/initorcl.ora';
Show parameter control_files;
重做日志文件多元化
多表空间(不同的表放在不同的表空间)
System:需要备份一次
Sysaux:需要备份一次
临时表空间:不需要备份
Undo表空间:不需要备份
业务表空间:需要重点备份,频分备份
索引表空间:不需要备份
控制文件自动备份
在RMAN中设置自动备份
登录rman target /
命令:show all
CONFIGURE BACKUP OPTIMIZATION OFF; # default 改为ON
OBID 数据库ID号
C-dbid-YYYYMMDD-00
创建文件:Mkdir /u01/backup
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup%F'; # default
Qiit
Select status from v$instance --记录database状态
Alter database mount --修改database状态为mount
设置快速恢复区
代码:
Show parameter recovery
Alter system set db_recovery_file_dest_size = 4G
Alter system set db_recovery_file_dest = /u01/app/flash_recovery_area
MRAN特点
目标数据库:需要备份的数据库
恢复目录(catalog):就是表,记录目标数据库机构
元数据:目标数据库结构(表名等)
目标数据库的备份历史记录
通道:目标数据库到存储设备之间的数据流
Disk硬盘 sbt磁带(tape单台磁带机)
从控制文件中获得元数据
代码:show parameter 初始化参数 -- 默认存7天
Show parameter db_name
Show parameter instance_name
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default –默认通道类型DISK
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default –并行度、类型
切换数据库 Export oracle_SID= testdb
查询用户Echo $oracle_SID
Catalog配置
第一:创建第二个数据库,作为catalog使用
Testdb作为catalog
第二:以sys用户登录catalog数据库,创建表空间
Export ORACLE_SID=testdb
Sqlplus / as sysdba
Startup
Select file_name from dba_data_files;
Create tablespace rman_ts datafile '/u01/app/oracle/oradata/testdb/rman_ts.dbf' size 30M;
第三:以sys用户登录catalog数据库创建用户, 并制定权限
Create user rcowner identified by "1234";
Grant connect,resource,recovery_catalog_owner to rcowner;
Quit;
Echo $ORACLE_SID;--查看一下数据库
第四:以rcowner用户,rman工具,登录catalog数据库
Rman catalog rcowner/1234;
执行命令
Create catalog;
第五:配置数据库的远程连接
两个数据库:监听器
Rman客户端:两个 service naming
客户端直接执行
Netmgr 增加数据库
Lsnrctl stop
Lsnrctl start
测试
Alter user sys identified by "1234";更改sys密码
Sqlplus sys/1234@db01 as sysdba
Sqlplus sys/1234@testdb as sysdba
Show parameter db_name;--显示数据库
Rman同时连接两个数据库,注册数据库
命令:
方法一:Rman target sys/1234@db01 catalog rcowner/1234@testdb
方法二:Rman
Connect target sys/1234@db01;
Connect catalog rcowner/1234@testdb;
注册数据库
命令:register database
查是否成功:report schema
Rman中的命令
Report schema
Report need backup;
List backup;
List backup of spfile;
List backup of controlfile;
List backup of tablespace users;
Resync catalog
自动备份生效时机(针对的是参数问价你和控制文件)
目标数据库的结构与变化时候
当通过backup成功的备份任何一个文件时
参数文件备份
自动备份
Backup命令
Backup spfile;放在快速恢复区
Backup spfile fromat ‘/u01/backup/spfile _%T_%U’ –参数文件被备份两次,手工、自动
List backup --备份查看
List backup of spfile;
参数文件恢复
Restore命令
Restore spfile 恢复到默认的目录下
Restore spfile from autobackup;
Restore spfile tag ‘tag名称’
Restrore spfile from ‘文件名称’
参数文件位置固定:$ORACLE_HOME/dbs
参数文件备份/恢复步骤
备份参数文件
查看备份
模拟故障,先关闭数据库,删除参数文件(出现故障时恢复参数文件)
RMAN 中执行shutdown
Cd $ORACLE_HOME/dbs
Mv 参数文件 新的参数文件
恢复过程
参数文件丢失时候,可以用RMAN启动实例,采用的模板参数文件,不是最终看的实例,作用是恢复参数文件。
Export ORACLE_SID = db01
Rman target /
RMAN 中执行startup nomount
新终端RMAN同时连接两个实例 rman target sys/1234@db01 catalog rcowner/1234@testdb
Restore spfile from autobackup;
参数文件恢复后必须Shutdown
控制文件备份
自动备份
与其他文件一起备份
Backup tablespace users include current controlfile;
单独备份控制文件
Backup current controlfile;--放在快速去
Backup current controlfile format ‘/u01/backup/con_%T_%U’
控制文件恢复
List backup; --列出备份
Restore controlfile;
Restore controlfile from autobackup;
Restore controlfile form tag ‘tag名称’
Restore controlfile form tag ‘文件名称
Show parameter control_file; --查找控制文件在什么地方;
控制文件备份/恢复示例
对控制文件备份
Rman 同时连接两个数据库
Backup current controlfile format ‘u01/backup/con_%T_%U’
查看备份
List backup of controlfile
关闭数据库,模拟故障,模拟破坏控制文件
Shutdown
Cd 进入控制文件路径
Mv 改名
恢复
Startup 观察错误
警告文件所在目录 show paramrter user_dump_dest
.log文件为警告文件
.trc文件为跟踪文件
Restore controlfile from autobackup;
RMAN中Alter database mount --还不能打开,原因是SCN三者不一样
RMAN中重做日志也需要更新 recover database;
Sqlplus中Alter database open resetlogs;把重做日志清空,必须清空。
数据文件备份
Backup database; --对数据库做full备份
Backup tablespace users
Backup datafile ‘XX’
Backup full database;
Backup as backupset database;
Backup database format ‘db_full_%T_%U’ tag ‘XX’
Backup incremental level 0 database format ‘XXX’
%T:YYYYMMDD %U随机的字符串 %p备份片的编号 每个备份片是一个文件 一个备份集可以对用多个备份片 %c备份的拷贝(可以放在多个地方)
Backup incremental level 0 tablespace users fromat ….
。。。。。。。。。。。。。Datafile ‘XXX’ 。。。。。。。
Backup incremental level 1 database format ‘XXX’
Backup incremental level 1 tablespace users fromat ….
。。。。。。。。。。。 1 datafile ‘XXX’ 。。。。。。。
Report schema;
数据文件备份/恢复(针对表空间users)
进行full或者0级备份
Backup full database users fromt ‘’
List backup of tablespace users;
关闭数据库,模拟故障,删除数据库文件
恢复
查看故障视图 show patameter control_file
Desc v$diag_info
Select name,value,from v$diag_info
Trace跟踪 alert警告
Shutdown;
Pwd
Startup 观察错误;普通表空间故障不影响数据库打开
数据文件的恢复状态
MOUNT:SYSTEM 表空间,或者整个数据库
OPEN :恢复普通表空间。
数据文件故障判断
Sqlplus 或者RMAN
使用EM
动态性能视图 v$recover_file 需要sqlplus
Select file#,error from v$recover_file
Desc Dba_data_files
警告文件和跟踪文件
Vi alert_orcl.log
Vi 跟踪文件
文件状态改为OFFLINE
RMAN中 Sql ‘Alter database datafile 4 offline’
RMAN中 Alter database open;
RMAN中 Restore tablespace users;
RMAN中 Recover tablespace users;
RMAN中 Sql ‘alter database datafile 4 online’
恢复原理:
备份恢复restore
重作日志恢复recover
存储设备损坏恢复
进行full或者0级备份
Backup full database users fromt ‘’
List backup of tablespace users;
关闭数据库,模拟故障,删除数据库文件
恢复
Startup 观察错误;普通表空间故障不影响数据库打开
文件状态改为OFFLINE
RMAN中 Sql ‘Alter database datafile 4 offline’
RMAN中 Alter database open;
Run{
Allocate channel ch1 device type disk;
Set newname for datafile 4 to '/u02/orcl/users01.dbf';
Restore datafile 4;
Switch datafile 4;
Recover datafile 4;
Sql 'alter database datafile 4 online';
Release channel ch1;
}
Linux任务调度
At:一次性,时间确定;
Crontab:周期性(用的较多)
Batch:没有具体时间
测试增量备份、恢复(针对表空间users)
进行0级备份
Sys用户 rman连接两个数据库
Run{
allocate channel ch1 device type disk;
backup incremental level 0 tablespace users format '/u01/backup/users_0_%T_%U';
release channel ch1;
}
List backup of tablespace users;--查看备份
以scott用户登录target,在表空间中创建t20,写入数据10/20
Conn scott/tiger
Create table T20(id number) tablespace users;
Insert into T20 values(100);
Insert into T20 values(200);
Commit
进行1级备份
Run{
Allocate channel ch1 device type disk;
Backup incremental level 1 tablespace users format '/u01/backup/users_1_%T_%U';
Release channel ch1;
}
List backup of tablespace users;--查看备份
以scott用户向表t20写入新数据30/40
Insert into T20 values(300);
Insert into T20 values(400);
Commit;
进行2级备份
Run{
Allocate channel ch1 device type disk;
Backup incremental level 2 tablespace users format '/u01/backup/users_2_%T_%U';
Release channel ch1;
}
List backup of tablespace users;--查看备份
以scott用户向表t20写入新数据50/60
Insert into T20 values(500);
Insert into T20 values(600);
Commit
关闭数据库,模拟故障(文件故障、硬盘故障)
Shutdown;
Cd /u02/orcl
Mv users01.dbf users01.dbfz
Rmna 中 startup
report schema; --看数据文件路径
Sql 'alter database datafile 4 offline';
Alter database open;
恢复
run{
Allocate channel ch1 device type disk;
Restore tablespace users;
Recover tablespace users;
Sql 'alter database datafile 4 online';
Release channel ch1;
}
整个数据库备份
针对整个数据库进行0级备份;
Run{
Allocate channel ch1 device type disk;
Backup incremental level 0 database format '/u01/backup/users_0_%T_%U';
Release channel ch1;
}
向数据库写入数据;(不在备份,依靠重作日志备份)
Insert into T20 values(700);
Insert into T20 values(800);
Commit;
模拟故障;
Rm 删除
恢复数据库;
Alter database open;
恢复
run{
Allocate channel ch1 device type disk;
Restore database;
Recover database;
Alter database open;
Release channel ch1;
}
数据库性能调优
相应时间、吞吐量
影响因素
数据库服务器硬件配置
网络(路由器过多)
前台应用程序
数据库的结构
磁盘IO
READ0:条带化 LUX
READ1:镜像
READ5:条带化+校验(2个数据+1个校验)
READ5:条带化+校验(2个数据+2个校验)
可调整性能的地方
前台应用程序
I/O:尽量减少I/O;I/O分散。整理碎片、使用索引(减少查询次数)、使用特殊的数据对象(物化视图、分区表、cluster表、索引组织表)
终端 Emctl start dbconsole;
Emctl status dbconsole;
https://student:1158/em/console/aboutApplication
netmgr
netca
优化器统计数据
优化器用来产生最佳的执行计划;同一条SQL语句有若干条执行计划,优化器来选择。
数据库统计数据
判断数据库性能
吞吐量、尽快返回若干行数据
优化语句
Select /*+ all_rows */ * from emp;
Select /*+ first_rows(10) */ * from emp;
SQL调优
EM监视SQL执行,判断是否合理;
化解大事物为小事物,尽快提交。Autocommit = ture
使用索引(减少I/O)
使用物化视图(替代连接查询)
使用分区表、索引组织表、簇表
索引
注意:全表查询(或大部分)比索引效率更高
Select * emp
Where 。。。 按顺序读、按条件过滤、每次读多个数据块
触发参数DB_FILE_MULTIBLOCK_READ_COUNT
创建索引
Create index inx1 on emp(name)
索引可以创建在多个列上; 对AND连接查询时候起作用。
索引创建需消耗系统资源
索引是否起作用
跟踪SQL的执行
初始化参数 sql_trace
Sys:跟踪所有
Alter system set sql_trace = ture;
User:
跟踪结果进行解析:tkprog
表中主键上有索引、侧键没有视图
查看SQL的执行计划
反向索引(reverse)
单列上数据基本有序,如果创建索引,索引深度与行数基本相同,则无意义,则把数据23变成32,再创建索引
ROW_ID 一行的物理行号
基于函数的索引:索引创建在一个表达式上面 列+条件
UPPER(字符串) LOWER(字符串) 大小写转换
位图索引(BITMAP) 举例:员工性别
物化视图(materialized)
视图的作用是简化查询;没有数据
物化视图就是个表,数据来自select执行结果,数据可能不准,但是可以刷新。
数据库中一个表对应一个段(分区表对应多个段) 一个视图对应一个段
表段
搜索段
临时段
UNDO段
分区表段
Cluster 段
索引组织表段
Lob段:存放大对象,文本、视频;
LONG(2G)一个表中只能定义一个 数据在表中
Long 产品介绍 生平简介
long raw 声音 、图像
LOB(4G) 一个表中能定义多个 数据不在表中 存放在LOB段
clob 大文本
blob 大的二进制对象
表
常规表
Pctfree 在创建表时 保留块空间 减少块之间的migration
Pctused 指定块减少到指定位置 才可以进行插入
migration:一行数据被分配到两个块中(因update造成,数字改为NULL)
chin:一行数据超过块的大小,数据库大小不合理
parallel并行查询度 服务器启动多个进程对表进行查询 ,提高查询效率
cache 用户访问表时将表放到内存
logging 访问表时产生重做日志 关闭后 不产生重做日志 效率高 写入表的时候可以先关闭
消除表中碎片 alter table 表名 move
表创建大了 可以回收
分区表
一个表进行分区(每个分区对应一个段)
Partition by range(month)
范围分区:按日期(1-3月为一个分区)
列表分区:按单列(一个城市一个分区)
Cluster表
两个表放在一个段里 相关数据放在同一个块中 IO次数减少到1
索引组织表(IOT)
索引和表默认是两个段 可以将两者放在一个段 提高IO效率
Organization tablespace index
溢出段
内容总结
以上是互联网集市为您收集整理的ORACLE学习笔记 第四天全部内容,希望文章能够帮你解决ORACLE学习笔记 第四天所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。