集合运算
ORACLE10g增加了集合运算,方便各种操作,见具体实例:[@more@]DECLARETYPE t_tbls IS TABLE OF VARCHAR2(20);t_tbl1 t_tbls;t_tbl2 t_tbls;t_tbl3 t_tbls;t_tbl4 t_tbls;t_tbl5 t_tbls;BEGINt_tbl1 := t_tbls('a', 'b', 'c');t_tbl2 := t_tbls('a', 'b', 'd', 'c');t_tbl3 := t_tbls('a', 'c', 'b');t_tbl5 := t_tbls('a', 'b', 'a', 'c');-- 1、 =的用法IF t_tbl1 = t_tbl3 THENdbms_output.put_line('1、' || q'{t_tbls('a', 'b', 'c')}' || ' = ' ||q'{t_tbls('a', 'c', 'b')}');END IF;-- 2、<>的用法IF t_tbl1 <> t_tbl
函数DETERMINISTIC
确定性函数Oracle引入确定性函数的主要原因是为了提高以及函数的索引的性能,并最小化代价。因此,如果希望使用pl/sql函数使用给予函数的索引的基础,那么需要确保这个函数是确定性函数。确定性函数的性能好处是如果使用相同的输入调用函数两次,Oracle可以记住第一个调用的结果因此避免在第二次执行时再次调用。但是该功能直到10g Release 2才被真正实施[@more@]经典例子如下:CREATE TABLE test02(a NUMBER,b VARCHAR2(100));INSERT INTO test02 VALUES(1,'aa');INSERT INTO test02 VALUES(2,'bb');INSERT INTO test02 VALUES(2,'cc');I
编译指令PRAGMA SERIALLY_REUSABLE
当对包进行第一次实例的时候,将从磁盘读入该包的中间代码并将其放入系统全局工作区SGA的共享缓冲区中。然而,包的运行状态,即打包的变量和游标,将存放在用户全局区(UGA)的会话存储区中。这就保证了每个会话都将有其自己的包运行状态的副本。在包头包括在包体的首部声明的变量与游标的作用域为全局范围,这些变量对于具有EXECUTE 特权的任何PL/SQL块都是可见的。由于包的运行状态时在UGA中存放的,所以他们有与数据库会话相同的生命期。当包被实例时,其运行状态也得到初始化,并且这些状态直到会话结束才被释放。即使包本身由于超时被从
后台进程介绍
Oracle实例包括两部分:SGA和 一组后台进程。后台进程执行保证数据库运行所需的实际维护任务。例如,有一个进程为我们维护块缓冲区缓存,根据需要将块写出到数据文件。另一个进程负责当在线重做日志文件写满时将它复制到一个归档目标。另外还有一个进程负责在异常中止进程后完成清理,等等。每个进程都专注于自己的任务,但是会与所有其他进 程协同工作。例如,负责写日志文件的进程填满一个日志后转向下一个日志时,它会通知负责对填满的日志文件进行归档的进程,告诉它有活干了[@more@]Oracle后台进程1、 PMON:进程监视器
深入分析Oracle字符集(转)
如何选择数据库的字符集是一个有争议的话题,字符集本身涉及的范围很广,它与应用程序、客户的本地环境、操作系统、服务器等关系很密切,因此要做出合适的 选择,需要明白这些因素之间的关系。另外对字符集的基本概念,ORACLE数据库字符集的一些知识也需要了解。随着国内的软件产品逐步走向海外,对于多语言的支持已经成为软件的一个基本要求,采用UNICODE标准也逐渐成为通用的设计方案,此时ORACLE数据库的字符集应该如何选择?很多人都有自己的见解,在网上也可以看到很多关于字符集的文章。这些文章有很多精华值得去学习,但是另一方面
ORA-16014: log 1 sequence# 857 not archived, no available destinations
ORA-16014: log 1 sequence# 857 not archived, no available destinations[@more@]SQL> conn / as sysdbaConnected.SQL> alter database open;alter database open*ERROR at line 1:ORA-16014: log 1 sequence# 857 not archived, no available destinationsORA-00312: online log 1 thread 1: '/u02/oradata/oratest/redo01.log'SQL> alter database clear unarchived logfile group 1;Database altered.SQL> alter database open;上述方法是将未归档的内容清除,但最好的办法应该是如下处理:SQL> alter system set db_
Linux as 5下安装oracle10g简要过程
一、检查系统组件二、创建用户三、创建目录并授权四、修改配置文件五、安装[@more@]一、检查系统组件[root@localhost ~]# rpm -q gcc make binutils openmotif setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-develgcc-4.1.1-52.el5make-3.81-1.1binutils-2.17.50.0.6-2.el5openmotif-2.3.0-0.3.el5setarch-2.0-1.1compat-db-4.2.52-5.1package compat-gcc is not installedpackage compat-gcc-c++ is not installedpackage compat-libstdc++ is not installedpackage compat-libstdc++-devel is not in
Linux增加磁盘
使用Fdisk工具进行分区;格式化;挂载;[@more@]--首先看看有哪些磁盘 [root@localhost ~]# fdisk -l--要处理的是sdj,使用fdisk分区 [root@localhost ~]# fdisk /dev/sdjThe number of cylinders for this disk is set to 13054.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): mCommand
WITH的简单用法
WITH的简单用法[@more@]WITH的简单用法:with a as (select 1 id,'a' name from dual union select 2 id,'b' name from dual union select 3 id,'c' name from dual union select 4 id,'d' name from dual union select 5 id,'e' name from dual ), b AS( SELECT 1 ID,33 cnt FROM dual UNION SELECT 4 ID,34 cnt FROM dual ) SELECT id,a.name,b.cnt FROM a LEFT JOIN b USING(ID) ORDER BY ID; WITH Q1 AS (SELECT 3 + 5 S FROM DUAL), Q2 AS (SELECT 3 * 5 M FROM DUAL), Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2) SELECT * FROM
查看锁信息
汇总了部分查看锁信息的方法,供参考。[@more@]如何快捷的显示当前锁定和被锁定表的用户,sql等信息如果是dba用户那么可以使用一、阻塞和等待的用户及sql语句 select 'blocker('||wb.holding_session||':'||sb.username||')-sql:'||qb.sql_text blockers,sb.machine,sb.terminal, 'waiter ('||wb.waiting_session||':'||sw.username||')-sql:'||qw.sql_text waiters ,sw.machine,sb.terminalfrom dba_waiters wb, v$session sb, v$session sw, v$sqlarea qb, v$sqlarea qwwhere wb.holding_session=sb
RMAN创建恢复目录
一、创建表空间、用户,授权二、创建[@more@]一、创建表空间、用户,授权SQL> create tablespace rman_ts datafile '/home/oracle/oracle/product/10.2.0/oradata/orcl/rmants.dbf' size 20M;Tablespace created.SQL> create user rman identified by rman default tablespace rman_ts quota unlimited on rman_ts;User created.SQL> grant connect,resource,recovery_catalog_owner to rman;Grant succeeded.二、创建[oracle@localhost ~]$ rman catalog rman/rmanRecovery Manager: Release 10.2.0.1.0 - Production on Sat Fe
RMAN学习小结1:不完全恢复
通过海明老师的视频教程学习,针对各种类型文件丢失的恢复进行了简要小结。一、SPFILE丢失二、CONTROLFILE丢失三、Redolog file丢失四、datafile丢失五、tablespace丢失六、非catalog方式完全恢复七、基于时间点的恢复八、基于SCN的恢复九、基于日志序列的恢复[@more@]一、SPFILE丢失RMAN> Startup nomount;RMAN> set dbid nnn;RMAN> restore spfile from autobackup; --可能会失败,找不到autobackup备份集,指定文件即可。RMAN> shutdown immediate;RMAN> set dbid nnn;RMAN> startup;二、CONTROLFILE丢失RMAN> St
Oracle常见等待事件说明
Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。 空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。[@more@] 常见的空闲事件有: • dispatcher timer • lock element cleanup • Null event ̶
Oracle常用dump命令
一.Memory Dumps 二.File Dumps [@more@]一.Memory Dumps 1).Global Area ALTER SESSION SET EVENTS ‘immediate trace name global_area level n'; 1 包含PGA 2 包含SGA 4 包含UGA 8 包含indrect memory 2).Library Cache ALTER SESSION SET EVENTS ‘immediate trace name library_cache level n'; 1 library cache统计信息 2 包含hash table histogram 3 包含object handle 4 包含object结构(Heap 0) 3).Row Cache ALTER SESSION SET EVENTS ‘immediate trace name row_cache level n'; 1 row cache统计信息 2 包含hash table histo
alter system set events相关知识
格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : …….’通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。[@more@]格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : …….’通过:符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。格式说明:eventnumber指触发dump的事件号,事件号可以是Oracl