Oracle Wallet
Oracle Wallet是用来加密解密的,前两天做的项目中用到了这个技术,现把一些用到的东西总结一下。原文如下:Our application does a web service call (from db to app server) to generate reports. Since SSL is used in prod, I think Oracle wallet needs to be setup in the db server for the web service calls to get through. Here's a sample code that we can use to test: SQL> set define offSQL> set serverout onSQL> declare vHttpReq utl_http.req;begin vHttpReq := utl_http.begin_request ('https://10.37
另外一个rman备份脚本
---核心1 rman全库压缩备份(14:51开始)export ORACLE_SID=ODCORE1rmanconnect catalog rman/rman@rmanconnect target system/system4dbabackup as compressed backupset full databaseformat='/bakdata1/odcore1_backup/rman_backup/20110428/full%u_%p_%c';---核心2 rman全库压缩备份(6分钟,735M)--不压缩方式(2分钟,9.6G)--压缩文件名full03matn2f_1_1--压缩文件名full04matndt_1_1export ORACLE_SID=ODCORE2rmanconnect catalog rman/rman@rmanconnect target system/system4dbabackup as compressed backupset full databasefor
rman备份脚本
ODPLAT /bakdata1/SCRIPTS> cat oramdm_level0_backup_rman.sh#set ORACLE HOME PATHexport ORACLE_HOME=/opt/oramdm/product/10.2.0/db_1 #set rman HOME pathrman_path="/opt/oramdm/product/10.2.0/db_1/bin/"echo ${rman_path} #set target database ORACLE_SIDORACLE_SID=oramdmexport ORACLE_SID #set catalog database ORACLE_SID or TNSNAMErman_sid="rman"echo ${rman_sid} #set control backup file pathbak_controlfile_path="/bakdata2/rman_oramdm/rmanbak_controlfile_level0"echo ${bak_
oracle一些核心参数的调整
参数平台核心节点1核心节点2核心节点3sga_max_size4G4G2G1Gsga_target3584M3584M1536M800Mdb_cache_sizeAutoAutoAutoAutodb_keep_cache_sizeAutoAutoAutoAutoshared_pool_sizeAutoAutoAutoAutojava_pool_sizeAutoAutoAutoAutolog_buffer3050700830507008152688642875392pga_aggregate_target2000M2000M800M300Mpre_page_sgaTRUETRUETRUEFALSElock_sgaFALSEFALSEFALSEFALSEdb_file_multiblock_read_count16161616db_files150015001500200processes500500500150db_writer_processes4441session_cached_cursors20020020020Job_queue_process3
oracle rac crs的关闭
今天关闭一个rac,需要给其中的磁盘增加空间。这个磁盘是ocfs的。用crsctl stop -all这样就全停了。需要各个节点都运行。[@more@]
oracle11g中一个新的分区方式
interval分区,和范围分区类似,不过是自动按照范围分配。oracle中原有的几个分区:hash分区、范围分区、列表分区和混合分区。今天碰到一个问题:Hi Ming, As discussed with you over chat we're testing an Oracle 11g feature called Interval Partitioning. The table partitions are fine and seems to be working as expected, the issue is in the local index when new data is added after the index is created. I've provided some scripts to demonstrate: -- create sample table on daily interval-h
关于oracle并行的一些用法(zt)
hintalter sessiontable/index degreeQueryselect /*+parallel(a,8)*/ count(1) from table_name a;alter session force query parallel 8;select count(1) from table_name a;alter table table_name parallel 8;select (1) from table_name a;DML默认情况下,parallel dml是禁用的,需要先alter session启用:alter session enable parallel dml;update /*+parallel(a,8)*/ table_name a set col1=1;alter session force parallel dml parallel 8;update table_name a set col1=1;alter session enable parallel dml;alter table table_
ORA-00600 [13013]错误
今天碰到这么个错误:Errors in file /opt/oraodm/admin/ODPLAT/bdump/odplat_j001_17178.trc:ORA-00600: 鍐呴儴閿欒?浠g爜, 鍙傛暟: [13013], [5001], [279086], [578959904], [23], [483351996], [17], []经过查询资料发现下面的内容,这应该是oracle的一个bug,update的时候找不到相应行,重建一下索引就行。ERROR: ORA-600 [13013] [a] [c] [d] [e] [f]VERSIONS: versions 6.0 to 10.1DESCRIPTION: During the execution of an UPDATE statement, after several attempts (Arg [a] passcount) we are unable to get a stable s
dbms_datapump的一点研究(一)(zt)
听人说dbms_datapump包可以实现从job调用shell,特搜索文章如下:命令行下传输两个数据库的数据:impdp dump_user/dump_user directory=dump_dir logfile=log.log schemas=tests network_link=dump_link sqlfile=dump_dir:expfull.sql table_exists_action=REPLACEloc directory 目录loc logfile 本地生成的日志schemas 要转入的用户,必须和network_link内的用户名一致network_link 将要转入的远端数据库的db linksqlfile 若是没有该文件则生成,若有则使用table_exists_action 如果要导入的对象已经存在的替换PL/SQL API调用:简单的:d
动态性能视图(zt)
看到一个文档,总结动态性能视图的,总结如下:1 v$sysstat 22 v$sesstat 73 v$sql 94 V$SQL_PLAN 115 V$SQLTEXT 136 V$SQLAREA 147 V$SESSION 158 V$SESSION_WAIT 179 V$SESSION_EVENT 2010 V$PROCESS 2011 V$LOCK 2312 V$LOCKED_OBJECT 2713 V$FILESTAT 2814 V$SESSION_LONGOPS 2915 V$LATCH 3016 V$LATCH_CHILDREN 3317 V$DB_OBJECT_CACHE 3418 V$OPEN_CURSOR 3419 V$PARAMETER&V$SYSTEM_PARAMETER 3619 V$ROLLSTAT 3720 V$ROWCACHE 4021 V$SEGSTAT 4122 V$SEGMENT_STATISTICS 4223 V$SYSTEM_EVENT 4324 V$UNDOSTAT 43[@more@]学习
OPTIMIZER_INDEX_COST_ADJ与成本计算(zt)
今天一个朋友问到关于OPTIMIZER_INDEX_COST_ADJ参数的问题,开始不太明白,百度之后发现下面的文章,特此摘录如下:OPTIMIZER_INDEX_COST_ADJ这个初始化参数代表一个百分比,取值范围在1到10000之间.该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。这些参数对于CBO的执行具有重大影响,其缺省值对于数据库来说通常需要调整。一般来说对于OPTIMIZER_INDEX_CACHING可以设置为90左右对于大多数OLTP系统,OPTIMIZER_INDEX_COST_ADJ可以设置在10到50之间。对于数据仓库和DSS系统,可能不能简单的把
Index Rebuild Online 过程(9i)完整版(zt)
昨天晚上洗澡时新想到一个可以有效测试index rebuild online的方式, 也就是同时使用10046与10704 的trace event再配合lock阻塞的机制来测试index rebuild online的过程. 测试的过程如下.01 --1. 构造一个500w条记录的表. 并创建需要rebuild online的索引. 02 --表的数量设置到这么大,,主要是为了给后续的操作留出手工运行的时间. 03 create table james_t as 04 select rownum id,dbms_random.string('l',20) user_name 05 from dual 06 connect by level <= 5e6; 07 08 create index james_t_pk on james_t (id); 09 10 --2. 在Sessio
index rebuild online失败后无法再次重建问题
今天使用index rebuild online方法重建一个索引,但是重建到一半出错了。当我再次重建的时候,发现报错,不能重建,等了一阵之后才能重建,对于这个问题,当时没在意,后来想了一想,觉得不太对劲,于是上网搜索了一下,才发现已经有人早就想到这种问题了,最后原来是SMON干活了,摘录如下:对于永久表空间上的temporary segment,SMON会三分钟清理一次(前提是接到post),如果SMON过于繁忙那么可能temporary segment长期不被清理。temporary segment长期不被清理可能造成一个典型的问题是:在rebuild index online失败后,后续执行的rebuil
用iconv对linux下文件编码进行转换(zt)我自己没试,不知道是否行,改天试试
iconv 转换,iconv的命令格式如下:iconv -f encoding -t encoding inputfile比如将一个UTF-8 编码的文件转换成GBK编码iconv -f GBK -t UTF-8 file1 -o file2[@more@]
oracle的临时表
oracle中可以建立临时表临时表有两种建立方式:1.create global TEMPORARY table test_temp_bbb (a varchar2(10))ON COMMIT DELETE ROWS;当commit之后,数据就消失了,但表结构还在。2.create global TEMPORARY table test_temp_ccc (a varchar2(10))ON COMMIT preserve ROWS;当commit之后,数据不消失,session退出后,表结构还在,但数据消失。下面是别人写的: 在临时表上的操作比在一般的表上的操作要快。因为:1创建临时表不需要往编目表中插入条目,临时表的使用也不需要访问编目表,因此也没有对编目表的争用。2仅有创建临时表的ap
不让程序对表进行insert操作
不让程序对表进行insert操作今天碰到这么一个问题,应用在向一个表插入数据,每天插入很多数据,但是这个表一点用处都没有,又不能停掉应用,所以就想了个方法阻塞insert操作。我使用的是oracle的trigger进行操作的,trigger具有一个instead of方法,但这个方法只能对view使用,所以我将原来的表rename,然后建立一个同名的view,再在这个view上建立一个trigger,实现了该操作。具体方法如下:实施操作:alter table FS_PCS_BSSADD rename to FS_PCS_BSSADD_1;create view FS_PCS_BSSADD as select MSISDN, IMSI, DEVICE_ID,
dbms_job的使用
好久没用dbms_job包了,怕忘了,特地把用法记录一下:begin sys.dbms_job.submit(job => :job, what => 'myProc;myProcs;myProcss(''测试'');',//用分号将多个存储过程分开,有参数的话直接写就可以了 next_date => to_date('07-04-2011 22:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'sysdate+1'); commit;end;[@more@]
正则表达式应用一例
今天网友介绍,可以用正则表达式将字符串拆分,挺好用的,记录如下:select regexp_substr('1324,1341,43143,43143,14314','[^,]+',1,rownum) from dualconnect by rownum<=5结果如下13241341431434314314314[@more@]
TKPROF的使用(ZT)
tkprof 的目的是将sql trace 生成的跟踪文件转换成用户可以理解的格式 格式 tkprof inputfile outputfile [optional | parameters ] 参数和选项: explain=user/password 执行explain命令将结果放在SQL trace的输出文件中 table=schema.table 指定tkprof处理sql trace文件时临时表的模式名和表名 insert=scriptfile 创建一个文件名为scriptfile的文件,包含了tkprof存放的输出sql语句 sys=[yes/no] 确定系统是否列出由sys用户产生或重调的sql语句 print=number 将仅生成排序后的第一条sql语句的输出结果
对index rebuild online的一个错误认识
这两天频繁使用index rebuild online。原来我一直以为index rebuild会阻塞查询,后来做了一个实验,发现在rebuild的同时还能够使用索引查询。打碎了我以前想当然的一些想法,特记录一下,做事还是要严谨,不能想当然,多做实验才是正解!!![@more@]