oracle-复合数据类型
Oracle学习笔记--复合数据类型洛基 - BY - 2007-4-6 14:54:001、PL/SQL记录 适用于处理单行多列数据 eg: type emp_record_type is record( name emp.ename%type, salary emp.salary%type, dno emp.detno%type ); emp_record emp_record_type; 2、PL/SQL集合 适用于处理单列多行的数据 2.1 索引表 eg1: type ename_table_type is table of emp.ename%type index by binary_integer; --(还可以是pls_integer) ename_table ename_table_typ
限制特定IP访问数据库
限制特定IP访问数据库以前有文档说增加或修改protocol.ora文件, 在9i中真正起作用的是sqlnet.ora文件,我们修改sqlnet.ora其实是最好最快的方法。 在sqlnet.ora中增加如下部分 ----------------------------- #### 来自 protocol.ora 的属性 #### tcp.validnode_checking=yes #允许访问的IP tcp.invited_nodes=(ip1,ip2……) #禁止访问的IP tcp.excluded_nodes=(ip1,ip2……) 之后重新启动监听器即可 需要注意的地方: 1、tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主 2、一定要许可或不要禁止服务器本机的IP地
使用dbv和RMAN检查数据文件中的坏块
1.使用dbv检查D:oradataeygle>dbv file=EYGLE.DBF blocksize=8192 DBVERIFY: Release 10.1.0.4.0 - Production on 星期六 6月 11 17:36:37 2005 Copyright (c) 1982, 2004, Oracle. All rights reserved. DBVERIFY - 开始验证: FILE = EYGLE.DBF 页 219 标记为损坏 Corrupt block relative dba: 0x010000db (file 4, block 219) Bad check value found during dbv: Data in bad block: type: 6 format: 2 rdba: 0x010000db last change scn: 0x0000.0005ee6d seq: 0x2 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3:
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
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]',表示任