Archive for 一月, 2009

asm operation

星期三, 一月 21st, 2009
最近有个客户一定要上ASM,没办法之前学习过,不过一直没用,重新温习下,下篇介绍下KFED的使用
 
一、
ASM的相关参数
 
instance_type:有2个,ASM或者RDBMS
DB_UNIQUE_NAME
ASM_POWER_LIMIT:
ASM_DISKGROUPS
ASM_DISKSTRING
 
二、配置一个
ASM实例
 
touch init+ASM.ora
添加一句
instance_type=asm
 
export ORACLE_SID=+ASM
 
sqlplus / as sysdba
 
create spfile from pfile='/tmp/init+ASM.ora';
 
startup nomount;
 
三、启动和关闭
ASM
 
startup force/nomount/mount
shutdown normal/immediate/transactional/abort
 
四、创建磁盘组
 
三种级别
 
normal redundancy
 
high redundancy
 
external redundancy
 
 
 
CREATE DISKGROUP disk_group_1 NORMAL REDUNDANCY
 
FAILGROUP failure_group_1 DISK
    
'/dev/raw/raw1' NAME diska1,
    
'/dev/raw/raw2' NAME diska2,
 
FAILGROUP failure_group_2 DISK
    
'/dev/raw/raw3' NAME diskb1,
    
'/dev/raw/raw4' NAME diskb2
 
 
删除一个磁盘组及其相关磁盘
 
drop diskgroup disk_group including contents
 
添加磁盘
 
alter diskgroup disk_group add disk '/dev/disk*3','/dev/disk*4';
 
删除磁盘
 
 
alter diskgroup disk_group drop disk diska2
 
 
 
调整磁盘组或者磁盘的大小
 
 
 
ALTER DISKGROUP disk_group_1
 
RESIZE DISK diska1 SIZE 100G;
 
ALTER DISKGROUP disk_group_1
 
RESIZE DISKS IN FAILGROUP failure_group_1 SIZE 100G;
 
-- Resize all disks in a disk group.
ALTER DISKGROUP disk_group_1
 
RESIZE ALL SIZE 100G;
 
 
撤销
DROP
 
 
ALTER DISKGROUP disk_group_1 UNDROP DISKS;
 
 
手动平衡数据
 
 
ALTER DISKGROUP disk_group_1 REBALANCE POWER 5;
 
 
手动
MOUNT单个或者磁盘组
 
ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP disk_group_1 DISMOUNT;
ALTER DISKGROUP disk_group_1 MOUNT;
 
 
四、创建目录
 
-- Create a directory.
ALTER DISKGROUP disk_group_1 ADD DIRECTORY '+disk_group_1/my_dir';
 
-- Rename a directory.
ALTER DISKGROUP disk_group_1 RENAME DIRECTORY '+disk_group_1/my_dir' TO '+disk_group_1/my_dir_2';
 
-- Delete a directory and all its contents.
ALTER DISKGROUP disk_group_1 DROP DIRECTORY '+disk_group_1/my_dir_2' FORCE;
 
 
五、别名
 
-- Create an alias using the fully qualified filename.
ALTER DISKGROUP disk_group_1 ADD ALIAS '+disk_group_1/my_dir/my_file.dbf'
 
FOR '+disk_group_1/mydb/datafile/my_ts.342.3';
 
-- Create an alias using the numeric form filename.
ALTER DISKGROUP disk_group_1 ADD ALIAS '+disk_group_1/my_dir/my_file.dbf'
 
FOR '+disk_group_1.342.3';
 
-- Rename an alias.
ALTER DISKGROUP disk_group_1 RENAME ALIAS '+disk_group_1/my_dir/my_file.dbf'
 
TO '+disk_group_1/my_dir/my_file2.dbf';
 
-- Delete an alias.
ALTER DISKGROUP disk_group_1 DELETE ALIAS '+disk_group_1/my_dir/my_file.dbf';
 
 
六、
 
删除文件
 
 
-- Drop file using an alias.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1/my_dir/my_file.dbf';
 
-- Drop file using a numeric form filename.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1.342.3';
 
-- Drop file using a fully qualified filename.
ALTER DISKGROUP disk_group_1 DROP FILE '+disk_group_1/mydb/datafile/my_ts.342.3';
 
 
 
ASM 相关视图
 
 
V$ASM_ALIAS
 
V$ASM_CLIENT
V$ASM_DISK
V$ASM_DISKGROUP
V$ASM_FILE
V$ASM_OPERATION
V$ASM_TEMPLATE
V$ASM_DISKGROUP_STAT
 
 
其中
ASM DISK HEAEDER状态有以下几种
 
SQL> select name,header_status from v$asm_disk;
 
NAME                                               HEADER_STATU
------------------------------------------------
-- ------------
                                                  
CANDIDATE
TEST_ASM_0001                                      MEMBER
TEST_ASM_0000                                      MEMBER
TEST_ASM_0002                                      MEMBER
TEST_ASM_0003                                      MEMBER
TEST_ASM_0004                                      MEMBER
TEST_ASM_0005                                      MEMBER
TEST_ASM_0006                                      MEMBER
 
 
Former - This state declares that the disk was formerly part of a diskgroup
Candidate - When a disk is in this state, it indicates that it is available to beadded to a diskgroup.
Member - This state indicates that a disk is already part of a diskgroup.
Provisioned - This state is similar to candidate, in that its available to diskgroups.
However, the provisioned state indicates that this disk has been
configured or made available using ASMLIB
 
 
ASM的一些隐含参数
 
select a.ksppinm "Name", b.ksppstvl "Value"
 
from x$ksppi a, x$ksppcv b
 
where a.indx = b.indx
  
and ksppinm like '\_%asm%' escape '\'
order by a.ksppinm;

create catalog

星期二, 一月 20th, 2009
测试RSS输出随便黏贴点
 
 
第一步:在目标数据库中创建恢复表空间:
        
SQL>create tablespace rman_tbs datafile '....' autoextend on size 50M;
第二步:在目标数据库中创建恢复用户,并分配回复表空间(
rman_tbs)的定额:
        
SQL>create user rman identified by rman
                    
temporary tablespace temp
                    
default tablespace rman_tbs
                    
quota unlimited on rman_tbs;
第三步:赋予恢复目录所有者权限:
        
SQL>grant  recovery_catalog_owner to rman;
第四步:以恢复目录所有者身份登录
RMAN恢复目录:
            
RMAN>connect catalog rman/rman;
第五步:在恢复目录中创建恢复表空间(
rman_tbs):
        
RMAN>create catalog tablespace rman_tbs;
第六步:退出
RMAN
第七步:连接目标数据和恢复目录数据库,并注册数据库:
        
RMAN>connect target rman/rman catalog rman/rman;
            
            
RMAN>register database;

bug-5970258

星期一, 一月 19th, 2009
早上有客户系统报告,数据库里600错误,报错如下:
ORA-00600: internal error code, arguments: [kole_t2u], [34], [], [], [], [], [], []
查看
trace文件有如下信息
/
u01/app/oracle/admin/lzrac/bdump/lzrac1_m000_29992.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
ORACLE_HOME = /u01/app/oracle/product/10.2.0/db
System name: Linux
Node name: lzrac1
Release: 2.6.9-42.ELlargesmp
Version: #1 SMP Wed Jul 12 23:46:39 EDT 2006
Machine: x86_64
Instance name: lzrac1
Redo thread mounted by this instance: 1
Oracle process number: 40
Unix process pid: 29992, image: <a href="mailto:oracle@lzrac1">oracle@lzrac1</a> (m000)
***
ACTION NAME:(Remote-Flush Slave Action) 2009-01-17 01:00:27.388
***
MODULE NAME:(MMON_SLAVE) 2009-01-17 01:00:27.388
***
SERVICE NAME:(SYS$BACKGROUND) 2009-01-17 01:00:27.388
***
SESSION ID:(3145.11960) 2009-01-17 01:00:27.388
***
2009-01-17 01:00:27.388
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kole_t2u], [34], [], [], [], [], [], []
Current SQL statement for this session:
INSERT INTO wrh$_sqltext    (sql_id, dbid, sql_text,     command_type, snap_id, ref_count)
SELECT    sqlid_kewrstx, :dbid, sqlfulltext_kewrstx,    cmdtype_kewrstx, :lah_snap_id, 0 ref_count
FROM x$kewrtsqltext
---
-- Call Stack Trace -----
calling              call     entry                argument values in hex   
location             type     point                (? means dubious value) 
------------------
-- -------- -------------------- ----------------------------
ksedst()+31          call     ksedst1()            000000000 ? 000000001 ?
                                                  
7FBFFEF370 ? 7FBFFEF3D0 ?
                                                  
7FBFFEF310 ? 000000000 ?
ksedmp()+610         call     ksedst()             000000000 ? 000000001 ?
。。。。。。。。
KSOLS: Begin dumping all object level stats elements
KSOLS: Done dumping all elements. Exiting.
Dump event group for SESSION
Dump event group for SYSTEM
***
KEWROCISTMTEXEC - encountered error: (ORA-00600: internal error code, arguments: [kole_t2u],
[
34], [], [], [], [], [], []
)
  ***
SQLSTR: total-len=211, dump-len=211,
      
STR={INSERT INTO wrh$_sqltext    (sql_id, dbid, sql_text,     command_type, snap_id, ref_count)
 
SELECT    sqlid_kewrstx, :dbid, sqlfulltext_kewrstx,    cmdtype_kewrstx, :lah_snap_id, 0 ref_count
FROM x$kewrtsqltext}
***
KEWRAFM1: Error=13509 encountered by kewrfteh
经查询
METALINK,确认为BUG 5970258,只有到11G才能修复,目前来看问题不大
相关文档
ID:553528.1

内蒙TAX和火车票

星期二, 一月 13th, 2009

今天第二次来呼和浩特,刚下飞机就遇见郁闷的事,来的时候也听同事说了,就是这出租车,明明从机场到市区打表跑也就20多块,非和我要35,以为我不知道距离,我说30吧,他说不行,我说打表也就20多,他说不行,后来想就35吧,结果呢?司机还不走,还说在等几个,NND这还是出租车吗?我也就在温州的时候遇见过拼车的事,后来想算了,我就做大巴吧,反正时间不急,5块钱做到市区,就是等了半个小时,这边航班少,不过还可以,到市区又打了个车到住的地方和司机说这事,司机说要是我要50,他说在机场等一个小时就是为了赚这份钱,在市区里随便转一个小时也有50块了,丢,不说了。所以下次到呼和浩特的兄弟们,注意下,时间不紧的话做大巴吧,还有阿,这内蒙虽说零下10几度,但是屋里热的狠。没有想象中那么冷、。

在说说这闹心的火车票,在北京的时候,有2年没回家过年,这次到杭州了,想着怎么也的回家了,有好几个朋友帮排队买票,结果到23号的票都没了,汽车23号的也没了,就剩下飞机了,这回趟家还真难,老妈说了,就算走也的回来,知道她想我回去了,看来还的继续为票的事努力下,不是我不想回,是这票也忒难买了,有认识黄牛的人可以留言给我。

oracle 10.2.0.1 update 10.2.0.4 for aix 5.3

星期六, 一月 10th, 2009
目前正在升级AIX 下的数据库,从10.2.0.1升级到10.2.0.4。大体步骤如下
 
一、准备回退的工作
 
备份如下:
 
1 操作系统 2 DB SOFT 3 数据 4 备份OCR VOTEDISK
 
二、升级前的一些
OS补丁
 
xlc.rte.aix50.aug2005.ptf.tar.Z
uncompress xlc.rte.aix50.aug2005.ptf.tar.Z
tar -xvf xlc.rte.aix50.aug2005.ptf.tar
 
smit update_by_fix
xlc.rte.aix50.feb2007.ptf.tar.Z
uncompress xlc.rte.aix50.feb2007.ptf.tar.Z
tar -xvf xlc.rte.aix50.feb2007.ptf.tar
inutoc 跟上刚才解压的目录
smit update_all
 
三、系统修改一些参数
 
在集群软件运行的时候执行如下操作
 
chmod -R +w CRS_ORA_HOME/inventory/Templates/*
 
/usr/sbin/slibclean
/usr/bin/chuser capabilities=CAP_NUMA_ATTACH ,CAP_BYPASS_RAC_VMM ,CAP_PROPAGAT oracle
 
用/usr/sbin/lsuser -a capabilities oracle 确认下
 
四、升级CRS
 
srvctl stop database -d db_name
 
srvctl stop nodeapps -n node_name
 
crsctl stop crs
 
 
 
./runInstaller
 
一路点下去
 
执行两个脚本
 
/u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs
/u01/app/oracle/product/10.2.0/crs/install/root102.sh
 
目前工作到这,遇到几个问题
 
WARNING: directory '/oracle' is not owned by root
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
exec(): 0509-036 Cannot load program crsctl.bin because of the following errors:
0509-130 Symbol resolution failed for crsctl.bin because:
0509-136 Symbol __ct__Q2_3std8_LocinfoFPCci (number 176) is not exported from
dependent module /usr/lib/libC.a[ansi_64.o].
0509-192 Examine .loader section symbols with the
'dump -Tv' command.
 
 
 
解决方法:
 
Install IY73570: IBM C++ Runtime Environment Components for AIX PTF
If the compiler was installed:
Install XL C/C++ compiler 8.0.0.8
and then try to start Oracle Clusterware
 
2 个错误
 
运行脚本时,无法执行下去,
 
# /oraapp/oracle/crs/install/root102.sh
WARNING: directory '/oraapp/oracle' is not owned by root
WARNING: directory '/oraapp' is not owned by root
Preparing to recopy patched init and RC scripts.
Recopying init and RC scripts.
Startup will be queued to init within 30 seconds.
Starting up the CRS daemons.
Adding daemons to inittab
Waiting for the patched CRS daemons to start.
This may take a while on some systems.
 
 
 
看cssdout.log
 
priority string (4)
Warning : Current stack limit (4294967296) &gt; (2097152). Resizing..
Info : RLIMIT_STACK set to : 2097152
mlockall: unable to lock pages (-1/1)
 
解决方法:
 
 真不想说,不过没办法
 
必须把OS升级到5305或者以上,ORACLE也真行,README里有没,关键有问题了,给的字那么小,第一次安装的时候出了问题,曾经看到了没细看,结果重高一次还这样,恢复吧。哎,命苦的娃阿,一个晚上就这样折腾去了
 
priority string (4)
 
Warning : Current stack limit is set to UNLIMITED. Resizing..
 
Info : RLIMIT_STACK set to : 2097152
 
mlockall: unable to lock pages (-1/1)
 
.
 
The last error message is a 100% match with <a href="http://www.oralife.cn/wp-admin/ml2_documents.showDocument?p_id=739371.1&amp;p_database_id=NOT">note:739371.1</a>
 
Solution:
 
  You need to install AIX 5.3 TL5 (5300-05) or above.
 
<strong>*** 12/29/08 04:33 am *** (CHG: Sta-&gt;45)</strong>
 
<strong>*** 12/29/08 04:33 am ***</strong>