2014年11月27日星期四

grid的listener和oracle的listener

用了asm后,gh(grid_home)和oh(oracle_home)两边都有listener,到底该用谁的呢。我测试了一下,是不能删掉gh那边的listener的(我用的srvctl remove listener -l LISTENER),停止了后,就乱了,也就是说,gh这边的listener一定要让oracle restart去启动,不能删。当然oraclehome那边的是可以不用的。但为了方便,我两边都用,于是我修改了gh的lisener.ora。

名字修改为listenerasm,端口变成了1524,后
srvctl  stop listener
srvctl remove listener -l LISTENER
srvctl add listener -l LISTENERASM -p "TCP:1524" -o $ORACLE_HOME
另外还需要修改asm里面的local_listener参数
 以sysasm进去后,
alter system set local_listener="(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.81)(PORT=1524))"
然后重启后,就可以了。
crsctl stat res -t可以看到有了ora.LISTENERASM.lsn的资源,并且是online的。

到这里,好像是结束了,但是用
srvctl config asm看时,发现listenr是空的
ASM home: /u01/app/grid/product/12.1.0/grid
Password file: +DG_GRID/orapwasm
ASM listener:
Spfile: +DG_GRID/ASM/ASMPARAMETERFILE/registry.253.864659509
ASM diskgroup discovery string: /dev/raw/*

找了google,用下面的法子给填上了
 crsctl modify resource ora.asm -attr START_DEPENDENCIES="hard(ora.cssd) weak(ora.LISTENERASM.lsnr)"

然后再次执行
[grid@orasrv localhost]$ srvctl config asm
ASM home: /u01/app/grid/product/12.1.0/grid
Password file: +DG_GRID/orapwasm
ASM listener: LISTENERASM
Spfile: +DG_GRID/ASM/ASMPARAMETERFILE/registry.253.864659509
ASM diskgroup discovery string: /dev/raw/*

也可以用下面的方法

srvctl remove asm
srvctl add asm -l LISTENERASM -p +DG_GRID/ASM/ASMPARAMETERFILE/registry.253.864659509
srvctl config asm

在12.1.0.2里面这样做了,passwordfile就空了,需要通过asmcmd的pwset去设置

2014年11月26日星期三

asm的静态注册listener居然是区分大小写的

SID_LIST_LISTENER2 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.beikan)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl2.beikan)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = pdborcl.beikan)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = pdborclasm.beikan)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = +ASM)
      (ORACLE_HOME = /u01/app/grid/product/12.1.0/grid)
      (SID_NAME = +ASM)
    )
  )

LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1523))
      (ADDRESS = (PROTOCOL = TCP)(HOST = orasrv.beikan)(PORT = 1523))
    )
  )

我用小写启动listner2后,是连不上的。当然tnsname.ora里不区分大小写。

grid的安装

oinstall   grid, oracle     Oracle Inventory and Software Owner
dba        oralcle           Database Administrator
asmadmin   grid            Oracle Automatic Storage Management Group
asmdba     grid, oracle    ASM Database Administrator Group
asmoper    grid            ASM Operator Group
oper       oracle        Database Operator

 我碰到的问题是如果oracle不是asmdba的用户的话,dbca里面是看不见asm实例里面建立的diskgroup

而/dev/raw下面的权限,给grid:asmdba,让grid和oracle都可以读取。
 [root@orasrv rules.d]# cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N" 
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N" 
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw*", OWNER="grid" GROUP="asmdba", MODE="0660"
  

# start_udev
# raw -qa
# ls -l /dev/raw
 
 
如果需要grid用户的crs能启动database,还需要将grid用户加入到dba组才可以启动,否则
[grid@orasrv ~]$ srvctl start database -d orclem
PRCR-1079 : Failed to start resource ora.orclem.db
ORA-01017: invalid username/password; logon denied
CRS-5017: The resource action "ora.orclem.db start" encountered the following error: 
ORA-01017: invalid username/password; logon denied
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/orasrv/crs/trace/ohasd_oraagent_grid.trc".

CRS-2674: Start of 'ora.orclem.db' on 'orasrv' failed
ORA-01017: invalid username/password; logon denied
 
 

2014年11月23日星期日

oracle的平台间传送

TTS之间的传递需要convert的,应该只是endian不同的情况才需要,不同平台但endian相同,应该是不需要covnert就可以的。

如果是这样,这种情况下,应该也不需要再导出meta后 alter tablespace  read write的了

https://docs.oracle.com/cd/E15817_01/backup.111/e05700/rcmxplat.htm