启动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. 如何刷新 DNS 缓存 (macOS, Linux, Windows)

    如何刷新 DNS 缓存 (macOS, Linux, Windows) Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, De ...

  2. ThinkPHP6.0 链式SQL语句

    ThinkPHP6.0 链式SQL语句 查询单个数据 $user = Db::query('select * from `user`'); $user=Db::table('user')->wh ...

  3. 使用部分写时复制提升Lakehouse的 ACID Upserts性能

    使用部分写时复制提升Lakehouse的 ACID Upserts性能 译自:Fast Copy-On-Write within Apache Parquet for Data Lakehouse A ...

  4. 使用SpringBoot+React搭建一个Excel报表平台

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 Excel报表平台是一款功能强大.操作简单的系统平台,可 ...

  5. 一体化元数据管理平台——OpenMetadata入门宝典

    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人.在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识.今天给大家 ...

  6. sql相关小知识—

    数据库系统达到了数据独立性是因为采用了三级模式结构 人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式.概念模式.内模式,有效地组织.管理数据,提高了数据库的逻 ...

  7. 【转载】老男孩读PCIe

    目录 老男孩读PCIe之一:从PCIe速度说起 老男孩读PCIe之二:PCIe拓扑结构 老男孩读PCIe之三:PCIe分层结构 老男孩读PCIe之四:TLP类型 老男孩读PCIe之五:TLP结构 老男 ...

  8. (四) MdbCluster分布式内存数据库——业务消息处理

    (四) MdbCluster分布式内存数据库--业务消息处理   上篇:(三) MdbCluster分布式内存数据库--节点状态变化及分片调整   离上次更新文章已有快5个月,我还是有点懒.但我们系统 ...

  9. PostgreSQL 10 文档: PostgreSQL 服务器程序

    PostgreSQL 服务器应用 这一部分包含PostgreSQL服务器应用和支持工具的参考信息.这些命令只在数据库服务器所在的主机上运行才有用.其他工具程序在PostgreSQL 客户端应用中列出. ...

  10. PHP插件