数据迁移 (filesystem to ASM) (第一部分)

本次试验的内容是: 

Filesystem 向 asm 迁移:

第一部分:
Author:  Sheng Huiping
Date Jun 07 2012


先说一下和asm 有关的dict:

select * from v$asm_operation;
select * from v$asm_disk;
select * from v$asm_diskgroup;

先看一下环境:

 我们先看一下:cd $ORACLE_HOME/dbs 下没有init+ASM.ora

oracle@aoracle dbs]$ export ORACLE_SID=+ASM

[oracle@aoracle dbs]$ ls -l init+ASM.ora
ls: init+ASM.ora: No such file or directory

oracle@aoracle dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 7 09:33:47 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/pp/oracle/product/10.2/db_1/dbs/init+ASM.ora'
SQL>

符合我们的预期,

好,下面我们建个init+TEST.ora

[oracle@aoracle dbs]$ vi init+TEST.ora
asm_diskstring=''
background_dump_dest=/u01/pp/oracle/admin/+TEST/bdump
user_dump_dest=/u01/pp/oracle/admin/+TEST/udump
core_dump_dest=/u01/pp/oracle/admin/+TEST/cdump
instance_type='asm'

下面开始启动一下:

[oracle@aoracle ~]$ export ORACLE_SID=+TEST
[oracle@aoracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 7 09:37:46 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORA-07446: sdnfy: bad value '/u01/pp/oracle/admin/+TEST/udump' for parameter user_dump_dest.
SQL> !
[oracle@aoracle ~]$ id
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)
[oracle@aoracle ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/bdump
[oracle@aoracle ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/udump
[oracle@aoracle ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/cdump
[oracle@aoracle ~]$ exit
exit

SQL> startup;
ORA-15150: instance lock mode 'EXCLUSIVE' conflicts with other ASM instance(s)
SQL>

看一下alert 日志:

oracle@aoracle bdump]$ more alert_+TEST.log
Sat Jan  7 09:39:09 2012
Starting ORACLE instance (normal)
Cannot determine all dependent dynamic libraries for /proc/self/exe
Unable to find dynamic library libocr10.so in search paths
RPATH = /ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/ade/aime1_build2101/oracle/h
as/lib/:
LD_LIBRARY_PATH is not set!
The default library directories are /lib and /usr/lib
Unable to find dynamic library libocrb10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Shared memory segment for instance monitoring created
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as /u01/pp/oracle/product/10.2/db_1/dbs/arch
Autotune of undo retention is turned off.
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:
  instance_type            = asm
  background_dump_dest     = /u01/pp/oracle/admin/+TEST/bdump
  user_dump_dest           = /u01/pp/oracle/admin/+TEST/udump
  core_dump_dest           = /u01/pp/oracle/admin/+TEST/cdump
  asm_diskstring           =
PMON started with pid=2, OS id=5721
PSP0 started with pid=3, OS id=5723
MMAN started with pid=4, OS id=5725
DBW0 started with pid=5, OS id=5727
LGWR started with pid=6, OS id=5729
CKPT started with pid=7, OS id=5731
SMON started with pid=8, OS id=5733
RBAL started with pid=9, OS id=5735
Sat Jan  7 09:39:11 2012
sculkget: failed to lock /u01/pp/oracle/product/10.2/db_1/dbs/lk+ASM exclusive
sculkget: lock held by PID: 5038
Sat Jan  7 09:39:11 2012
USER: terminating instance due to error 15150
Instance terminated by USER, pid = 5719

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

分析下来,是因为,启动了其他的ASM 的实例:
[oracle@aoracle ~]$ ps -ef | grep smon | grep -v grep
oracle    5044     1  0 09:24 ?        00:00:00 asm_smon_+SHENG

我原来是装过+SHENG 的ASM 实例。

[oracle@aoracle ~]$ ps -ef | grep smon | grep -v grep
oracle    5044     1  0 09:24 ?        00:00:00 asm_smon_+SHENG

[oracle@aoracle ~]$ kill -9 5044

[oracle@aoracle ~]$ ps -ef | grep smon | grep -v grep
[oracle@aoracle ~]$ env | grep ORA
ORACLE_SID=+TEST
ORACLE_BASE=/u01/pp/oracle
ORACLE_HOME=/u01/pp/oracle/product/10.2/db_1
[oracle@aoracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 7 09:51:01 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ASM instance started

Total System Global Area   79691776 bytes
Fixed Size                  1217812 bytes
Variable Size              53308140 bytes
ASM Cache                  25165824 bytes
ORA-15110: no diskgroups mounted

----------------------
好以上的测试符合我们的预期,想ASM封装 的instance 只能有一个。

如果想见很多个instance, 可以在:“ASM封装 的instance” 下面建不同的 database intance.

下面还是在原来的 +SHENG 下建不同的isntance 看看:

[oracle@aoracle ~]$ ps -ef | grep smon | grep -v grep
oracle    6161     1  0 09:51 ?        00:00:00 asm_smon_+TEST
[oracle@aoracle ~]$ kill -9 6161
[oracle@aoracle ~]$ export ORACLE_SID=+SHENG
[oracle@aoracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 7 09:55:37 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ASM instance started

Total System Global Area   79691776 bytes
Fixed Size                  1217812 bytes
Variable Size              53308140 bytes
ASM Cache                  25165824 bytes
ORA-15110: no diskgroups mounted

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

看看+SHENG 下面有哪些diskgroup:

SQL> select name,state ,total_mb,usable_file_mb from v$asm_diskgroup;

NAME                           STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ ----------- ---------- --------------
SHENGASM                       DISMOUNTED           0              0

下面再增加两块盘,从新建个diskgroup:

下面先测试在原来的disk group 下加disk:

 

[root@aoracle dev]# raw -qa
/dev/raw/raw1:  bound to major 8, minor 49
/dev/raw/raw2:  bound to major 8, minor 65
/dev/raw/raw3:  bound to major 8, minor 81
/dev/raw/raw4:  bound to major 8, minor 97

[root@aoracle dev]# pwd
/dev
[root@aoracle dev]# cd raw
[root@aoracle raw]# ls
raw1  raw2  raw3  raw4
[root@aoracle raw]# ls -l
total 0
crw-rw---- 1 oracle oinstall 162, 1 Jan  7 10:45 raw1
crw-rw---- 1 oracle oinstall 162, 2 Jan  7 10:31 raw2
crw------- 1 root   root     162, 3 Jan  7 10:24 raw3
crw------- 1 root   root     162, 4 Jan  7 10:24 raw4

原因找到,是因为owner 是root,下面重新 vi etc/udev/rules.d/60-raw.rules
start-udev

ok,

SQL> alter diskgroup shengasm add disk '/dev/raw/raw3';

Diskgroup altered.

现在可以看到,total_mb 比原来增加了:

SQL> select name,state ,total_mb,usable_file_mb from v$asm_diskgroup;

NAME                           STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ ----------- ---------- --------------
SHENGASM                       MOUNTED          14322          13181

原来是:

SQL> select name,state ,total_mb,usable_file_mb from v$asm_diskgroup;

NAME                           STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ ----------- ---------- --------------
SHENGASM                       MOUNTED          10228           9089

 

下面提醒一下,和asm 有关的dict:
select * from v$asm_operation;
select * from v$asm_disk;
select * from v$asm_diskgroup;

看一disk:
SQL> select name, path from v$asm_disk;

NAME                           PATH
------------------------------ -------------------------------------------------
                               /dev/raw/raw4
                               /dev/raw/raw5
SHENGASM_0000                  /dev/raw/raw1
SHENGASM_0002                  /dev/raw/raw3
SHENGASM_0001                  /dev/raw/raw2
------------------------------------
说明一下,diskgroup 和instance 没有啥关系,看一下目录就知道了:
+SHENGASM/shengasm/online_log/redo1_1.rdo

前面的+SHENGASM 是diskgroup, 后面的shengasm 就是database instance了:

SQL> create diskgroup data external redundancy disk '/dev/raw/raw4';

Diskgroup created.

SQL> alter diskgroup data add disk '/dev/raw/raw5';

Diskgroup altered.

SQL> select name, path from v$asm_disk;
NAME                           PATH
------------------------------ -------------------------------------------------
DATA_0000                      /dev/raw/raw4
DATA_0001                      /dev/raw/raw5
SHENGASM_0000                  /dev/raw/raw1
SHENGASM_0002                  /dev/raw/raw3
SHENGASM_0001                  /dev/raw/raw2

SQL> select name,state from v$asm_diskgroup;

NAME                           STATE
------------------------------ -----------
SHENGASM                       MOUNTED
DATA                           MOUNTED

目标是把 ezhou 的filesystem 移到diskgroup : data 上来,
具体的操作下一个章节研究,敬请期待。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenghuiping2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值