oracle命令2 和一致性关闭、非一致性关闭
启动SQL*Plus语法
sqlplus [username/password][@server] [as sysdba|sysoper] ,其中username/password如果不输人,SQL*Plus会在后续提示输入
[oracle@localhost ~]$ sqlplus "as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 15 18:11:47 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter user-name: sys
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
更换用户的语法是
SQL>CONN[ECT] [username/password][@server] [as sysdba|sysoper]
SQL> conn sys/oracle as sysdba
Connected.
SQL> show user # 查看当前用户
USER is "SYS"
SQL>
设置显示参数:
SQL> show pagesize
pagesize 14 # 从顶部标题只页结束之间的行数
SQL> set pagesize 18
SQL> show newpage
newpage 1 # 设置一页的空行的数量
SQL> set newpage 2
SQL> show line # 设置一行中个,所显示的最多的字符总数
linesize 80
SQL> set linesize 100
SQL>
SQL> col file_name for a50 #指定列的输出格式: 50个固定字符长度,如果字段的实际长度超过50个字符,那么会换下一行显示
查看SCN:
查看当前SCN:
SQL> select current_scn from V$database; # 查看当前SCN
CURRENT_SCN
-----------
1005440
日志中SCN信息:
SQL> select * from V$log; # 查看日志中SCN信息,
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------ -------------------------------- ------------- ------------ ------------ ------------
1 1 4 52428800 512 1 NO CURRENT 994343 15-NOV-17 2.8147E+14
2 1 2 52428800 512 1 NO INACTIVE 977891 15-NOV-17 981630 15-NOV-17
3 1 3 52428800 512 1 NO INACTIVE 981630 15-NOV-17 994343 15-NOV-17
SQL>
SQL> select group#,SEQUENCE#,FIRST_CHANGE# FIRST_TIME,NEXT_CHANGE# NEXT_TIME from V$log order by 2; # 查看日志中SCN,只查看主要部分。
GROUP# SEQUENCE# FIRST_TIME NEXT_TIME
---------- ---------- ---------- ----------
2 2 977891 981630
3 3 981630 994343
1 4 994343 2.8147E+14
SQL>
GROUP#, 日志组编号
SEQUENCE# ,重做日志的序列号,不能重复,永远向前。
FIRST_TIME,该日志组,记录的第一条重做日志SCN
NEXT_TIME,该日志组,记录的最后一条重装日志信息的SCN。2.8147E+14表示还在写入过程,现在不确定终点在哪。
STATUS , 当前日志状态,CURRENT表示正在写。
控制文件中的SCN:
这个SCN是执行检查点的SCN,夜间检查点SCN。代表这个SCN的时刻,内存和硬盘数据是同步的。
SQL> select a.file#,b.file_name,a.checkpoint_change#
from V$datafile a ,dba_data_files b
where a.file#=b.file_id
order by 1; # 查看控制文件中的SCN
FILE# FILE_NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
1 /data/oracle/oradata/orcl/system01.dbf 1007735
2 /data/oracle/oradata/orcl/sysaux01.dbf 1007735
3 /data/oracle/oradata/orcl/undotbs01.dbf 1007735
4 /data/oracle/oradata/orcl/users01.dbf 1007735
5 /data/oracle/oradata/orcl/example01.dbf 1007735
SQL>
查看checkpoint:
SQL> select checkpoint_change# from v$datafile where rownum=1;
CHECKPOINT_CHANGE#
------------------
1007735
SQL>
SQL> alter system checkpoint; # 手动执行检查点
System altered.
在查看控制控制文件中SCN,发现已变化,(与内存中SCN同步)。
DBW进程只有在checkpoint进程调用时,才会执行,commint命令,不会同步内存与硬盘中的数据。
3s写操作或写满1/3日志,是写日志缓冲区数据的日志写进程操作, 所以只用commint了(写到了redo log file),用户数据就一定不会丢失。
数据文件SCN:
数据文件很大,文件头部就记录了SCN,不用查找整个数据文件。
SQL> select a.file#,b.file_name,a.checkpoint_change#
from V$datafile_header a ,dba_data_files b
where a.file#=b.file_id
order by 1;
FILE# FILE_NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------- ------------------
1 /data/oracle/oradata/orcl/system01.dbf 1007018
2 /data/oracle/oradata/orcl/sysaux01.dbf 1007018
3 /data/oracle/oradata/orcl/undotbs01.dbf 1007018
4 /data/oracle/oradata/orcl/users01.dbf 1007018
5 /data/oracle/oradata/orcl/example01.dbf 1007018
SQL>
查看数据文件SCN,简单点:
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1007735
1007735
1007735
1007735
1007735
SQL>
一致性关闭: 关闭时执行了检查点,内存和硬盘数据同步,下一次开启,不需要使用联机重做日志文件对数据库进行恢复。
非一致性关闭: 无论什么原因,关闭时,内存中脏块没有写入数据文件,内存和硬盘数据不一致,下一次开启数据库,需要通过联机重做日志文件对数据进行恢复。
判断是否一致,就是通过上述三个SCN,日志SCN,数据文件SCN,控制文件SCN。
模拟非一致性关闭:
1、shutdown abort
2、kill 进程
3、直接关电源
当前SCN:1008098
checkpoint SCN:1007735 , 说明存在脏块,
SQL> shutdown abort; # 模拟非一致性关闭:
ORACLE instance shut down.
SQL> startup mount; # 启动到mount:
ORACLE instance started.
Total System Global Area 764121088 bytes
Fixed Size 2217264 bytes
Variable Size 478153424 bytes
Database Buffers 281018368 bytes
Redo Buffers 2732032 bytes
Database mounted.
SQL>
SQL> select checkpoint_change# from v$datafile where rownum=1; #查看控制文件中SCN
CHECKPOINT_CHANGE#
------------------
1007735
SQL> select checkpoint_change# from v$datafile_header; # 查看数据文件中SCN
CHECKPOINT_CHANGE#
------------------
1007735
1007735
1007735
1007735
1007735
SQL>
SQL> select group#,SEQUENCE#,FIRST_CHANGE# FIRST_TIME,NEXT_CHANGE# NEXT_TIME from V$log order by 2; # 查看日志文件中SCN
GROUP# SEQUENCE# FIRST_TIME NEXT_TIME
---------- ---------- ---------- ----------
2 2 977891 981630
3 3 981630 994343
1 4 994343 2.8147E+14
SQL>
日志SCN中看不到最后具体SCN,关闭前当前SCN为1008098,远大与994343,说明还是存在脏块,当然这个判断比较牵强,还有一个判断机制:
SQL> select file#,checkpoint_change#,last_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
1 1007735
2 1007735
3 1007735
4 1007735
5 1007735
SQL>
若一直性关闭,会在控制文件中,会在LAST_CHANGE# 记录下关闭SCN的信息; 若非一致性关闭,会在LAST_CHANGE#记录为空。
说明此时数据库为非一致性关闭:
打开数据库,查看日志:
SQL> select * from v$diag_info; # 查看alert log位置
[oracle@localhost ~]$ tail -f /data/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
然后再开启数据库:
SQL> alter database open;
Database altered.
SQL>
[oracle@localhost ~]$ tail -f /data/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
Beginning crash recovery of 1 threads # 需要执行恢复
Started redo scan # 扫描日志
Completed redo scan
。。。。
Thread 1: logseq 4, block 30986, scn 1028106 # 最后一条日志记录SCN为1028106,而检查点是1007735,所以就都redo log进行恢复。
一致性关闭:
SQL> select current_scn from V$database; #当前SCN
CURRENT_SCN
-----------
1028689
SQL>
SQL> select checkpoint_change# from v$datafile_header; # 数据文件SCN
CHECKPOINT_CHANGE#
------------------
1028109
1028109
1028109
1028109
1028109
SQL> select checkpoint_change# from v$datafile where rownum=1; #控制文件SCN
CHECKPOINT_CHANGE#
------------------
1028109
SQL>
说明存在脏块;
SQL> shutdown immediate # 一致性关闭数据库,会自动执行检查点
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup mount
SQL> select file#,checkpoint_change#,last_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
1 1029044 1029044
2 1029044 1029044
3 1029044 1029044
4 1029044 1029044
5 1029044 1029044
LAST_CHANGE#,有SCN显示,表示为一致性关闭,且记录下了关闭的时间点SCN。
SQL> select checkpoint_change# from v$datafile where rownum=1; #数据文件SCN
CHECKPOINT_CHANGE#
------------------
1029044
SQL> alter database open;
Database altered.
SQL>
日志显示:
[oracle@localhost ~]$ tail -f /data/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
Thread 1 opened at log sequence 5
Current log# 2 seq# 5 mem# 0: /data/oracle/oradata/orcl/redo02.log
Successful open of redo thread 1
没有恢复操作;
恢复:
restore ,是转储,把复制的文件存储会原来的位置
recover ,是恢复,恢复redo日志里的记录,把丢失的操作再redo一遍。通过内存和硬盘的SCN比较,来判断数据之间是否同步。
SCN变化:
1、时间变化,SCN就变化
2、变化,数据库的任何一个数据变化,SCN就会变化,往上增长。
SCN只会往前,不会往后,只会越来越大。
每执行CKPT那一刻,内存和硬盘数据同步,这一刻一定有一个时钟对应的SCN。这个时间点,数据库是一致的。 所以,当内存和硬盘上的文件比较时,就是比较SCN,内存中SCN比较新,就认为内存和硬盘的数据不一致。
oracle命令2 和一致性关闭、非一致性关闭的更多相关文章
- Oracle命令(二):Oracle数据库几种启动和关闭方式
一.Oracle数据库几种启动方式 1.startup nomount 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进 ...
- Oracle常用命令13(数据库的启动、关闭)
数据库的启动.关闭 数据库的启动:安装启动.非安装启动.共享启动.独占启动.约束启动.强制启动 --不登陆的方式进入 Sqlplus /nolog 安装启动: Startup {pfile=<f ...
- vba遗传算法之非一致性突变
http://www.docin.com/p-959323141-f4.html Sub 非一致性变异() Dim totalGenerate As Integer, currentGenerate ...
- 把Oracle由归档模式改为非归档模式
把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...
- (转)Oracle命令
转自:http://www.cnblogs.com/NaughtyBoy/p/3181052.html Oracle登录命令 1.运行SQLPLUS工具 C:\Users\wd-pc>sqlpl ...
- Oracle命令:授权-收回权限-角色
Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- 探讨SELECT语句的元数据&动态取样&读一致性导致的一致性读和递归操作
前几天,论坛上的同行在讨论SELECT语句的元数据,动态取样和读一致性导致的一致性读和递归问题,今天有时间,就试着进行了测试,本人测试环境如下: win7_64+Oracle11.2.0.4_64 那 ...
- Oracle命令行中显示:ORA-04076: 无效的 NEW 或 OLD 说明
Oracle命令行进行操作时可能出现"ORA-04076: 无效的 NEW 或 OLD 说明" 需要在条件语句中JOB前面添加“old.”即可(因为是在when条件里面,所以不用“ ...
- CAP原理与最终一致性 强一致性 弱一致性
CAP原理中,有三个要素: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理指的是,这三个要素最多只能同时实现两点 ...
随机推荐
- 深入浅出synchronized的原理与源码
深入浅出synchronized的原理与源码 1.java对象头关于锁的标识 1.对象头 // 32 bits: // -------- // hash:25 ------------>| ag ...
- 一文了解 io.LimitedReader类型
1. 引言 io.LimitedReader 提供了一个有限的读取功能,能够手动设置最多从数据源最多读取的字节数.本文我们将从 io.LimitedReader 的基本定义出发,讲述其基本使用和实现原 ...
- 简单解决jsp中文乱码问题
简单解决jsp中文乱码问题 初学jsp制作一个简单的响应页面 具体代码如下: <form action="test.jsp"> username : <input ...
- sshpass快速登录远程主机:s2
#!/bin/bash passwd= if [ $# -ne 1 ] then echo "$0 [31|37|61]" fi if command -v sshpass the ...
- 【AltWalker】模型驱动:轻松实现自动化测试用例的自动生成和组织执行
模型驱动的自动化测试 模型驱动的自动化测试(Model-Based Testing, 后文中我们将简称为MBT)是一种软件测试方法,它将系统的行为表示为一个或多个模型,然后从模型中自动生成和执行测试用 ...
- Java 生态需要新鲜的血液、需要狂飙的刺激。Solon v2.4.1 发布
Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...
- python教程 入门学习笔记 第1天 初识python python语言环境安装 python编写器
初识python 一.python语言简介: 1.起源:1989年由荷兰的前谷歌程序员吉多.范罗苏姆(龟叔)创造,python的命名来源于英国电视喜剧Monty Python's Flying Cir ...
- 记一次 .NET某培训学校系统 内存碎片化分析
一:背景 1. 讲故事 前些天有位朋友微信上找到我,说他们学校的Web系统内存一直下不去,让我看下到底是怎么回事,老规矩让朋友生成一个dump文件丢给我,看一下便知. 二:WinDbg 分析 1. 托 ...
- 一行命令即可启动 Walrus丨入门教程
应用管理平台 Walrus 已正式开源,本文将介绍如何上手安装 Walrus 以及如何借助 Walrus 进行应用部署. 开源地址:https://github.com/seal-io/walrus ...
- 【io_uring】内核源码分析(更新中)
文章目录 `io_uring` 系统调用 `io_uring_setup` `io_uring_setup` `io_uring_create` `io_sq_offload_start` 系统调用 ...