启动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 和一致性关闭、非一致性关闭的更多相关文章

  1. Oracle命令(二):Oracle数据库几种启动和关闭方式

    一.Oracle数据库几种启动方式 1.startup nomount 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进 ...

  2. Oracle常用命令13(数据库的启动、关闭)

    数据库的启动.关闭 数据库的启动:安装启动.非安装启动.共享启动.独占启动.约束启动.强制启动 --不登陆的方式进入 Sqlplus /nolog 安装启动: Startup {pfile=<f ...

  3. vba遗传算法之非一致性突变

    http://www.docin.com/p-959323141-f4.html Sub 非一致性变异() Dim totalGenerate As Integer, currentGenerate ...

  4. 把Oracle由归档模式改为非归档模式

    把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...

  5. (转)Oracle命令

    转自:http://www.cnblogs.com/NaughtyBoy/p/3181052.html Oracle登录命令 1.运行SQLPLUS工具 C:\Users\wd-pc>sqlpl ...

  6. Oracle命令:授权-收回权限-角色

    Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...

  7. 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)

    分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...

  8. 探讨SELECT语句的元数据&amp;动态取样&amp;读一致性导致的一致性读和递归操作

    前几天,论坛上的同行在讨论SELECT语句的元数据,动态取样和读一致性导致的一致性读和递归问题,今天有时间,就试着进行了测试,本人测试环境如下: win7_64+Oracle11.2.0.4_64 那 ...

  9. Oracle命令行中显示:ORA-04076: 无效的 NEW 或 OLD 说明

    Oracle命令行进行操作时可能出现"ORA-04076: 无效的 NEW 或 OLD 说明" 需要在条件语句中JOB前面添加“old.”即可(因为是在when条件里面,所以不用“ ...

  10. CAP原理与最终一致性 强一致性 弱一致性

    CAP原理中,有三个要素: 一致性(Consistency) 可用性(Availability) 分区容忍性(Partition tolerance) CAP原理指的是,这三个要素最多只能同时实现两点 ...

随机推荐

  1. 发布一个Visual Studio 2022 插件,可以自动完成构造函数依赖注入代码

    赖注入(DI)在开发中既是常见的也是必需的技术.它帮助我们优化了代码结构,使得应用更加灵活.易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量.不过,手动注入依赖项也 ...

  2. XMLSpy操作手册

    最新发布的XMLSpy会让XML代码的处理更容易,还会有助于这个产品成为最主要的XML编辑器.xmlspy是符合行业标准的XML开发环境,专门用于设计,编辑和调试企业级的应用程序,包括XML, XML ...

  3. 可视化容器管理工具-portainer.io使用

    续docker日常使用指南 背景 当我们开始使用docker后,我们的机器上镜像和容器会越来越多,或者有时候我们有多台开发机的时候,单纯使用命令行去管理镜像和容器就变得麻烦了,这时,我们就可以选择一些 ...

  4. go select 使用总结

    转载请注明出处: 在Go语言中,select语句用于处理多个通道的并发操作.它类似于switch语句,但是select语句用于通信操作,而不是条件判断.select语句会同时监听多个通道的操作,并选择 ...

  5. Lens Shading成因及相关

    一个监控摄像头光学处理包含以下几个部分:镜头(Lens)(定变焦镜头).红外截止滤波片(IR-cut filter)(红外截止滤光片和蓝玻璃滤光片为主).图像传感器(Image Sensor)和印制电 ...

  6. p2:认识requests库的常用方法与实战

    二.全面认识requests库的常用方法 requests是python第三方库安装命令方法如下: pip install requests python的默认的测试用来规则 1.模块名必须以test ...

  7. 关于 ModelScope 的视频 “AI 换脸” 优化方案

    前言 前面一文,初步完成了一下 "AI 换脸" 视频处理程序.完成了视频拆帧,拆帧图片人脸融合,已经音频提取和最后的人脸融合图片的整合(也就是将图片和音频组成视频).但是在人脸融合 ...

  8. 内网渗透大杀器fscan

    fscan简介 一款内网综合扫描工具,方便一键自动化.全方位漏扫扫描.支持主机存活探测.端口扫描.常见服务的爆破.ms17010.redis批量写公钥.计划任务反弹shell.读取win网卡信息.we ...

  9. Jmeter线程组间传递变量

    做接口测试,上一个线程组(A线程组)提取的变量,需要传递给下一个线程组(B线程组)使用.故需要将A线程组内提取的变量设置为全局变量.实现如下: 1. json提取变量(A线程组) 通过json提取器, ...

  10. SQL 注入学习手册【笔记】

    SQL 注入基础 [若本文有问题请指正] 有回显 回显正常 基本步骤 1. 判断注入类型 数字型 or 字符型 数字型[示例]:?id=1 字符型[示例]:?id=1' 这也是在尝试闭合原来的 sql ...