本次試驗的内容是:
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
[email protected] dbs]$ export ORACLE_SID=+ASM
[[email protected] dbs]$ ls -l init+ASM.ora
ls: init+ASM.ora: No such file or directory
[email protected] 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
[[email protected] 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'
下面開始啟動一下:
[[email protected] ~]$ export ORACLE_SID=+TEST
[[email protected] ~]$ 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> !
[[email protected] ~]$ id
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)
[[email protected] ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/bdump
[[email protected] ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/udump
[[email protected] ~]$ mkdir -p /u01/pp/oracle/admin/+TEST/cdump
[[email protected] ~]$ exit
exit
SQL> startup;
ORA-15150: instance lock mode 'EXCLUSIVE' conflicts with other ASM instance(s)
SQL>
看一下alert 日志:
[email protected] 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 的執行個體:
[[email protected] ~]$ ps -ef | grep smon | grep -v grep
oracle 5044 1 0 09:24 ? 00:00:00 asm_smon_+SHENG
我原來是裝過+SHENG 的ASM 執行個體。
[[email protected] ~]$ ps -ef | grep smon | grep -v grep
oracle 5044 1 0 09:24 ? 00:00:00 asm_smon_+SHENG
[[email protected] ~]$ kill -9 5044
[[email protected] ~]$ ps -ef | grep smon | grep -v grep
[[email protected] ~]$ env | grep ORA
ORACLE_SID=+TEST
ORACLE_BASE=/u01/pp/oracle
ORACLE_HOME=/u01/pp/oracle/product/10.2/db_1
[[email protected] ~]$ 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 看看:
[[email protected] ~]$ ps -ef | grep smon | grep -v grep
oracle 6161 1 0 09:51 ? 00:00:00 asm_smon_+TEST
[[email protected] ~]$ kill -9 6161
[[email protected] ~]$ export ORACLE_SID=+SHENG
[[email protected] ~]$ 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:
[[email protected] 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
[[email protected] dev]# pwd
/dev
[[email protected] dev]# cd raw
[[email protected] raw]# ls
raw1 raw2 raw3 raw4
[[email protected] 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 上來,
具體的操作下一個章節研究,敬請期待。