用rman在线恢复表空间
前提是已经用rman备份好了数据!!1.alter tablespace dzy offline immediate; 使表空间offline2.rman target /进入rman3.restore dzy;4.recover dzy;5.alter tablespace dzy online;再测试数据查询恢复的数据!!这个用于某个表空间坏了或什么的!!http://www.cublog.cn/u/20140/showart.php?id=126027(这个是误删除标空间)SQL> alter tablespace dzy offline immediate;Tablespace altered.SQL> drop tablespace dzy including contents;Tablespace dropped.[@more@]
oracle的md5加密
create or replace function md5(input_string VARCHAR2) return varchar2ISraw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);decrypted_raw RAW(2048);error_in_input_buffer_length EXCEPTION;BEGINsys.dbms_obfuscation_toolkit.MD5(input => raw_input, checksum => decrypted_raw);return lower(rawtohex(decrypted_raw));END;[@more@]
获取某张表的表结构
今天看来yangtingkun的获取表结构,发现在10g里不能dbms_output.put_line不能把表结构全部显示出来(就是设置dbms_output.enable(10000都不能显示完)),觉得不很方便,我稍微改进了一下,可以获取表结构,并可以直接执行该sql文件,建立该表!$cat gettabledefine.sh#!/bin/bashsqlplus $1/$2<<EOFset serveroutput on size 10000spool tabledefine.tmpexecute P_TEST('$3');spool offexitEOFaparm="CREATE TABLE $1."echo $aparmawk 'NF>0' /home/oracle/dmp/tabledefine.tmp|grep -v "SQL>"|grep -v "PL/S
yangtingkun发现的bug
http://yangtingkun.itpub.net/category/468/7627[@more@]
UTL_FILE包的简单例子
看了yangtingkun的这个帖子,我做了一下改进,加入了域分隔符和行结尾符GRANT READ[,WRITE] ON DIRECTORY directory TO username;)SQL> CREATE DIRECTORY D_OUTPUT AS 'E:';目录已创建。CREATE OR REPLACE PROCEDURE P_WRITE_FILE(P_TABLE_NAME IN VARCHAR2,P_COLUMN_LIST IN VARCHAR2 DEFAULT NULL,P_WHERE_STR IN VARCHAR2 DEFAULT NULL,P_SEP IN VARCHAR2, --域分隔符P_END IN VARCHAR2 --行结尾符) ASV_FILE UTL_FILE.FILE_TYPE;V_BUFFER VARCHAR2(32767);V_RESULT VARCHAR2(32767);C_RESULT SYS_REFCURSOR;--c_a char(1);BEGINV_FIL
通过触发器复制包含LONG类型的表
上个月有人问我这个long的表是建立触发器的问题,结果在这里找到了:前两天论坛上有人问如何才能通过触发器来实现对包含LONG或LONG RAW类型字段的表的复制。给他做了个最简单的例子,在这里记录一下。由于在触发器中不能对LONG或LONG RAW类型的字段进行引用,所以原本最简单的方式直接将:NEW.COL插入到新表的方法无法奏效,必须采用其他方法解决。SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, COMMENTS LONG RAW);表已创建。SQL> CREATE TABLE T1 (ID NUMBER PRIMARY KEY, COMMENTS BLOB);表已创建。SQL> CREATE OR REPLACE TRIGG
oracle10g支持正则表达式
Oracle 8 和Oracle 9i中缺乏灵活性的SQL 正则表达式最终在Oracle 10g中得到了解决。Oracle 数据库目前内建了符合POSIX 标准的正则表达式。 四个新的函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 REGEXP_REPLACE。它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。 POSIX 正则表达式由标准的元字符(metacharacters)所构成:'^' 表示字符串的开始 '$' 表示字符串的结束 '.' 表示任何字符 字符的范围,比如说'[a-z]',表示任
使用SQL*PLUS,构建完美excel或html输出
今天看了eygle的一个"使用SQL*PLUS,构建完美excel或html输出",用来把表结构输出到excel或者html里,发现很有用:set linesize 200 set term off verify off feedback off pagesize 999 set markup html on entmap ON spool on preformat offspool table.xlsselect A.Table_Name,A.column_name 字段名,A.data_type||'('||A.data_length||')' 数据类型和长度,A.data_precision 整数位,A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备注 from user_tab_columns A,user_col_comments Bwhere A.Table_Na
yangtingkun的blog索引
http://www.itpub.net/showthread.php?s=&threadid=699527[@more@]
dbms_stats
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_stats2.htm#1003995SQL> exec dbms_stats.GATHER_SCHEMA_STATS(ownname=>'sxitismg',method_opt=>'for all indexed columns',options=>'GATHER',cascade=>TRUE);SQL>execute dbms_stats.gather_schema_stats(ownname => ‘scott’,estimate_percent => 20,method_opt=>‘for all indexed columns size 10’, cascade=>true);exec dbms_stats.GATHER_SCHEMA_STATS(ownname=>'scott',method_opt=>'for all indexed columns',op