rac oracle single nodes

rac oracle single nodes


用lvm做oracleasmdisk时候必须把以下注释掉,因为没划分一个lvm就会生成一个dm卷,而oracle 就是通过dm这种找到lvm的。有点晕。
[root@julia01 rules.d]# more 90-dm.rules
#KERNEL=="dm-[0-9]*", ACTION=="add", OPTIONS+="ignore_device"


at esx end

[root@esx4-lnx03 volumes]# cd ESX4-lnx03-LocalDisk1
[root@esx4-lnx03 ESX4-lnx03-LocalDisk1]# ls
01_FusionR1C_Server                              JuliaZ1       LNX-rhel48_2               rhel-rescue_x864_v1.0.iso
02_ProxyOS_Server                                JuliaZ11      LNX-SLES10_1               rhel-server-4.8-DVD.iso
ClusterDisk                                      JuliaZ2       rhel5-t1                   SUSE_Linux_Enterprise_Server_10
COE_W2008                                        JuliaZ3       rhel5x_1                   VirtualCenter
esxconsole-4caddac7-d06b-c664-07c8-e41f137ab634  LNX-rhel48_1  rhel-rescue_i686_v1.0.iso  XP-Kaibin
[root@esx4-lnx03 ESX4-lnx03-LocalDisk1]# cd ClusterDisk
[root@esx4-lnx03 ClusterDisk]# ls
ShareDisk1-flat.vmdk  ShareDisk1.vmdk
[root@esx4-lnx03 ClusterDisk]# ls -rtl
total 31457344
-rw------- 1 root root 32212254720 Jun 16 01:16 ShareDisk1-flat.vmdk
-rw------- 1 root root         471 Jun 16 01:22 ShareDisk1.vmdk
[root@esx4-lnx03 ClusterDisk]#
[root@esx4-lnx03 ClusterDisk]#  vmkfstools -c 4720m -a lsilogic -d eagerzeroedthick ShareDisk4.vmdk
Creating disk 'ShareDisk2.vmdk' and zeroing it out...
Create: 100% done.
[root@esx4-lnx03 ClusterDisk]# ls -rtl
total 52674688
-rw------- 1 root root 32212254720 Jun 16 01:16 ShareDisk1-flat.vmdk
-rw------- 1 root root         471 Jun 16 01:22 ShareDisk1.vmdk
-rw------- 1 root root 21726494720 Nov 16 03:46 ShareDisk2-flat.vmdk
-rw------- 1 root root         471 Nov 16 03:49 ShareDisk2.vmdk
[root@esx4-lnx03 ClusterDisk]# ls -rtl
total 52674688
-rw------- 1 root root 32212254720 Jun 16 01:16 ShareDisk1-flat.vmdk
-rw------- 1 root root         471 Jun 16 01:22 ShareDisk1.vmdk
-rw------- 1 root root 21726494720 Nov 16 03:46 ShareDisk2-flat.vmdk
-rw------- 1 root root         471 Nov 16 03:49 ShareDisk2.vmdk
[root@esx4-lnx03 ClusterDisk]# pwd
/vmfs/volumes/ESX4-lnx03-LocalDisk1/ClusterDisk


at server end

1157  cd /sys/class/scsi_host/
 1158  ls
 1159  cd host0/
 1160  ls -rtl
 1161  echo "- - -" > scan


fdisk /dev/sdh

let the partition become a asm disk .

[root@julia01 host0]# oracleasm createdisk DISK3 /dev/sdh1
Writing disk header: done
Instantiating disk: done
[root@julia01 host0]# oracleasm listdisks
DISK3
[root@julia01 host0]#



1001  cd /oracle/app/grid/product/11.2.0/grid/crs/install
 1002   perl rootcrs.pl -deconfig -force

lvdisplay 通过查看  Block device           253:1
就可以知道/dev/oracleasm/disks/下的盘对应的是那一个LVM了。


删除数据库:
需要删除一下内容:

rm /etc/ora*
rm /u01/app/grid/*
rm /u01/app/grid/dbhome
rm /usr/local/bin/oraenv
rm /usr/local/bin/coraenv
rm /u01/app/oraInventory






#################################
# Load of the ACFS kernel module
#################################
/sbin/modprobe hangcheck-timer
/u01/app/oracle/11.2.0/grid/bin/acfsload start -s
 
# BANCS project - requested by Erlie Flynn 12 Nov 2012
su - grid -c "/opt/oracle/app/grid/11.2.0.2/grid/bin/asmcmd volenable -G acfs_bancs acfs_bancs" &
sleep 60 &&/bin/mount -t acfs /dev/asm/acfs_bancs-404 /acfs_bancs &




===========================

 sudo rpm -Uvh oracleasm-support-1.0.0-1.i386.rpm \
           oracleasm-2.4.9-e-enterprise-1.0.0-1.i686.rpm \
           oracleasmlib-1.0.0-1.i386.rpm

# /etc/init.d/oracleasm configure

fdisk -l



 /etc/init.d/oracleasm createdisk DISK1 /dev/sdb1


将某用户添加到指定组中:

#usermod -g dba wdx


sqlplus userid/pass@//ip:port/sid



===================闪回数据库====================
   c.设置闪回保留目标生存期

        SQL> show parameter db_flashback      --缺省为分钟,即小时

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        db_flashback_retention_target        integer     1440

                   

        SQL> alter system set db_flashback_retention_target=30; --设定保留时间为半小时


  --下面查看闪回区分配的大小为大约M,闪回分钟以内的数据则需要M左右的空间

        --注意列oldest_flashback_time说明了允许返回的最早的时间点

        SQL> select oldest_flashback_scn old_flhbck_scn,oldest_flashback_time old_flhbck_tim,

          2  retention_target rete_trgt,flashback_size/1024/1024 flhbck_siz,

          3  estimated_flashback_size/1024/1024 est_flhbck_size

          4  from v$flashback_database_log;

 

        OLD_FLHBCK_SCN OLD_FLHBC  RETE_TRGT FLHBCK_SIZ EST_FLHBCK_SIZE

        -------------- --------- ---------- ---------- ---------------

                915137 24-OCT-10         30     7.8125      11.2519531

四、使用flashback database闪回数据库

    步骤(前提归档日志可用)

        关闭数据库

        启动数据库到mount状态(exclusive模式)

        闪回至某个时间点,SCN或log sequence number

        使用resetlogs打开数据库

    1.使用sqlplus实现闪回

        可以接受一个时间标记或一个系统改变号实参

        sqlplus几种常用的闪回数据库方法

            FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] SCN <system_change_number>   --基于SCN闪回

            FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] TIMESTMP <system_timestamp_value>--基于时间戳闪回

            FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] RESTORE POINT <restore_point_name>--基于时点闪回

        如下面的示例:

            SQL> flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss');

            SQL> flashback database to scn 918987;

            SQL> flashback database ro restore point b1_load;

 如下面的示例:

            SQL> flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss');

            SQL> flashback database to scn 918987;

            SQL> flashback database ro restore point b1_load;


==============获取系统最新的scn===================
SQL> SELECT current_SCN SCN,DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER SCN2 FROM v$database;

=============scn更新详解========================
在一个事务提交后commit(上述第四个步骤),会在redo log中存在一条redo记录,同时,系统为其提供一个最新的SCN
(通过函数dbms_flashback.get_system_change_number可以知道当前的最新SCN),记录在该条记录中。
如果该条记录是在redo log被清空(日志满做切换时或发生checkpoint时,所有变化日志已经被写入数据文件中),则其SCN被记录为redo log的low SCN。
以后在日志再次被清空前写入的redo记录中SCN则成为Next SCN。
当日志切换或发生checkpoint(上述第五个步骤)时,从Low SCN到Next SCN之间的所有redo记录的数据就被DBWn进程写入数据文件中,
而CKPT进程则将所有数据文件(无论redo log中的数据是否影响到该数据文件)的文件头上记录的Start SCN(通过视图v$datafile_header的字段checkpoint_change#可以查询)更新为Next SCN,
同时将控制文件中的System Checkpoint SCN(通过视图v$database的字段checkpoint_change#可以查询)、
每个数据文件对应的Datafile Checkpoint(通过视图v$datafile的字段checkpoint_change#可以查询)也更新为Next SCN。
但是,如果该数据文件所在的表空间被设置为read-only时,数据文件的Start SCN和控制文件中Datafile Checkpoint SCN都不会被更新。

 
system checkpoint scn ------------->v$database的字段checkpoint_change#
Datafile Checkpoint ----------------->v$datafile的字段checkpoint_change#
Start SCN                 ---------------->v$datafile_header 的字段checkpoint_change#



================================checkpoint==============================
====overview:
1.是一个数据结构代表checkpoint position,也就是一个scn在redo条目里,代表instance recovery的开始位置。
The checkpoint position is determined by the oldest dirty buffer in the database buffer cache. The checkpoint position acts as a pointer to the redo stream and is stored in the control file and in each data file header..

checkpoint是database buffer cache里最旧的dirty buffer存放的位置。存储在control file 和每个数据文件头。
2.把databuffer里的脏数据写到磁盘上的操作。



====checkpoint的目的:
1.减少实例或介质恢复的时间。
2.保证data buffer里的脏数据 定期写到disk
3.保证所有已经提交的数据写到磁盘,during a consistent shutdown。

====checkpoint发生时间======
1.数据库一致性shutdown。
2.alter system checkpoint
3.online redo log switch
4.alter database begin backup

====增量checkpoint:
为了避免大量写操作 在日志切换的时候。DBWR写脏数据的时候,他会更新checkpoint position,cause CKPT进程更新控制文件里checkpoint 位置。


======checkpoint process (CKPT)
checkpoint process更新控制文件和数据文件头with checkpoint information .
checkpoint information include the checkpoint position,scn ,location in online relog log to begin recovery.and so on .


==========System change number (scns)
 是一个被oracle database 使用的内部时间戳。



2、SCN概述

SCN是当Oracle数据库更新后,由DBMS去自动维护累积递增的一个数字。通常看文章的时候能看到各种类型的SCN,但是严格来说SCN是没有分类的,之所以会有不同类型的SCN并不是说这些SCN的概念不一样,而是说不同分类的SCN代表的意义不一样,不管什么时候SCN所指代的都是数据库的某个一致性的状态。就像我们给一天中的某个时间点定义上班时间、另外的某个时间点定义成下班时间一样,数据库Checkpoint发生点的SCN被称为Checkpoint SCN,仅此而已。Oracle数据库中一共有4种SCN分别为:

•系统检查点SCN (System Checkpoint SCN)

•文件检查点SCN (Datafile Checkpoint SCN)

•结束SCN (Stop SCN)

•数据文件头SCN (Start SCN)

其中前面3中SCN存在于控制文件中,最后一种则存在于数据文件的文件头中,在Oracle中用来标识数据库的每一次改动,及其先后顺序,SCN的最大值是0xffff.ffffffff。在控制文件中,SystemCheckpoint SCN是针对整个数据库全局的,因而只存在一个,而Datafile Checkpoint SCN和Stop SCN是针对每个数据文件的,因而一个数据文件就对应在控制文件中存在一份Datafile Checkpoint SCN和Stop SCN。在数据库正常运行期间,Stop SCN(通过视图v$datafile的字段last_change#可以查询)是一个无穷大的数字或者NULL。

1、系统检查点SCN

系统检查点SCN位于控制文件中,当检查点进程启动时(ckpt),Oracle就把系统检查点的SCN存储到控制文件中。该SCN是全局范围的,当发生文件级别的SCN时,例如将表空间置于只读状态,则不会更新系统检查点SCN。查询系统检查点SCN的命令如下:

sys@ORCL>select CHECKPOINT_CHANGE# from v$database;

CHECKPOINT_CHANGE#

------------------

        21655892

2、文件SCN

当ckpt进程启动时,包括全局范围的(比如日志切换)以及文件级别的检查点(将表空间置为只读、begin backup或将某个数据文件设置为offline等),这时会在控制文件中记录的SCN。查询数据文件SCN的命令如下:

sys@ORCL> altertablespace users read only;

Tablespace altered.

sys@ORCL>select file#,checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#

---------- ------------------

       1        21655892

       2        21655892

       3        21655892

       4        21657577

       5        21657577

       6        21655892


6 rows selected.

sys@ORCL>select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

        21655892

可以看到4、5号文件也就是users表空间所属的文件SCN值和其他文件不一致,且比系统检查点的SCN要大(因为这两个数据文件最后被操作,其他数据文件没有变动)。

3、结束SCN

每个数据文件都有一个结束SCN,在数据库的正常运行中,只要数据文件在线且是可读写的,结束SCN为NULL。否则则存在具体的SCN值。结束SCN也记录在控制文件中。

sys@ORCL>select TABLESPACE_NAME,STATUS from dba_tablespaces;

TABLESPACE_NAME              STATUS

----------------------------------------------

SYSTEM                         ONLINE

SYSAUX                         ONLINE

UNDOTBS1                    ONLINE

TEMP                        ONLINE

USERS                           READ ONLY

sys@ORCL>select file#,LAST_CHANGE# from v$datafile;         

     FILE# LAST_CHANGE#

---------- ------------

       1

       2

       3

       4     21657577

       5     21657577

       6


6 rows selected.

可以看到除了users表空间的结束SCN不为空,其他数据文件的结束SCN为空。将数据库至于mount状态,由于该状态下所有的数据文件都不可写,故mount状态下所有的数据文件都具有结束SCN。

sys@ORCL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

sys@ORCL>startup mount

ORACLE instance started.


Total System Global Area  263049216 bytes

Fixed Size              2212448 bytes

Variable Size              230690208 bytes

Database Buffers        25165824 bytes

Redo Buffers               4980736 bytes

Database mounted.

sys@ORCL>select file#,last_change# from v$datafile;


     FILE# LAST_CHANGE#

---------- ------------

       1    21657939

       2    21657939

       3    21657939

       4    21657577

       5    21657577

       6    21657939


6 rows selected.

4、数据文件头SCN

不同于上述的SCN数据文件开始SCN记录在每个数据文件中。当发生系统及文件级别的检查点后,不仅将这时的SCN号记录在控制文件中,同样也记录在数据文件中。查询数据文件头SCN的命令如下:

sys@ORCL>select file#,CHECKPOINT_CHANGE# from v$datafile_header;


FILE# CHECKPOINT_CHANGE#

---------- ------------------

       1        21657939

       2        21657939

       3        21657939

       4        21657577

       5        21657577

       6        21657939


6 rows selected.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值