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原理指的是,这三个要素最多只能同时实现两点 ...
随机推荐
- 如何刷新 DNS 缓存 (macOS, Linux, Windows)
如何刷新 DNS 缓存 (macOS, Linux, Windows) Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, De ...
- ThinkPHP6.0 链式SQL语句
ThinkPHP6.0 链式SQL语句 查询单个数据 $user = Db::query('select * from `user`'); $user=Db::table('user')->wh ...
- 使用部分写时复制提升Lakehouse的 ACID Upserts性能
使用部分写时复制提升Lakehouse的 ACID Upserts性能 译自:Fast Copy-On-Write within Apache Parquet for Data Lakehouse A ...
- 使用SpringBoot+React搭建一个Excel报表平台
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 Excel报表平台是一款功能强大.操作简单的系统平台,可 ...
- 一体化元数据管理平台——OpenMetadata入门宝典
大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人.在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识.今天给大家 ...
- sql相关小知识—
数据库系统达到了数据独立性是因为采用了三级模式结构 人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式.概念模式.内模式,有效地组织.管理数据,提高了数据库的逻 ...
- 【转载】老男孩读PCIe
目录 老男孩读PCIe之一:从PCIe速度说起 老男孩读PCIe之二:PCIe拓扑结构 老男孩读PCIe之三:PCIe分层结构 老男孩读PCIe之四:TLP类型 老男孩读PCIe之五:TLP结构 老男 ...
- (四) MdbCluster分布式内存数据库——业务消息处理
(四) MdbCluster分布式内存数据库--业务消息处理 上篇:(三) MdbCluster分布式内存数据库--节点状态变化及分片调整 离上次更新文章已有快5个月,我还是有点懒.但我们系统 ...
- PostgreSQL 10 文档: PostgreSQL 服务器程序
PostgreSQL 服务器应用 这一部分包含PostgreSQL服务器应用和支持工具的参考信息.这些命令只在数据库服务器所在的主机上运行才有用.其他工具程序在PostgreSQL 客户端应用中列出. ...
- PHP插件