常见Oracle HINT的用法
1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; [@more@]3. /*+CHOOSE*/表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化
ORA-01658 无法为表空间TTS_EX2中的段创建 INITIAL 区
在今天的练习中遇到这个问题,可能有2个原因:1. 用户默认表空间已满,并且该表空间不支持自动扩展;2. 用户默认表空间使用有问题;现把操作步骤帖出来:sqlplus /nologSQL> conn tts_user/tts_user已连接。SQL> select * from scott.emp where rownum < 2;在列 DEPTNO 前截断 (按要求)EMPNO ENAME JOB MGR HIREDATE SAL COMM---------- ---------- --------- ---------- ---------- ---------- ----------7369 SMITH CLERK 7902 17-12月-80 800[@more@]SQL> create table emp as select * from scott.emp;create table emp a
练习:数据库恢复案例
在网上找了些备份与恢复练习,自己动手操作了遍,现把具体步骤与操作过程中遇到的问题记录如下:目录No.1 非归档模式下的备份与恢复No.2 归档模式下丢失或损坏一个数据文件 --OS备份方案 --RMAN备份方案No.3 丢失多个数据文件,实现整个数据库的恢复 --OS备份方案 --RMAN备份方案[@more@]No.4 不完全恢复案例 --OS备份下的基于时间的恢复 --RMAN备份下的基于改变的恢复--------------------------------------No.1非归档模式下的备份与恢复1. 改为非归档模式SQL> conn sys/sys as sysdbaSQL> shutdown imme
Oracle9i重建和切换临时表空间
先创建个临时表空间,然后把它置为默认临时表空间,然后删除之前的。具体步骤如下:1. SQL> select username,temporary_tablespace from dba_users;2. SQL> select * from v$tempfile;3. SQL> CREATE TEMPORARY TABLESPACE temp1 TEMPFILE 'F:ORACLEORADATAMYDBTEMP02.DBF' SIZE 100M AUTOEXTEND ON;[@more@]SQL> ALTER TABLESPACE TEMP1 ADD TEMPFILE 'F:ORACLEORADATAMYDBTEMP01.DBF' SIZE 100M4. SQL> alter database default temporary tablespace temp1;SQL> select username,temporary_tablespace from dba_users
ORA-16068: 重做日志文件的激活标识符匹配出错
[错误信息]ERROR 位于第 1 行:ORA-16068: 重做日志文件的激活标识符匹配出错ORA-00312: 联机日志 2 线程 1: 'F:oracleoradatamydbREDO01.LOG'------------------------------------------------------------在今天的练习中遇到了这个问题,在操作中,损坏了redolog file,导致数据库无法启动。经查阅资料,找到以下2种解决办法:1. SQL> shutdown immediateSQL> startup mount[@more@]SQL> select * from v$logfile; --查看redolog file存放的位置SQL> shutdown immediate然后在操作系统将这一整个目录做个备份。以便日后恢复
SUN小型机信息查看命令集
/**说明:这篇笔记是转载别个的(不知道出处,sorry),放在这儿方便查询**/下面是查看SUN小型机的信息的命令集:1、查看机型:SUn的小型机的机型都在面板上写着有,如NETRA T 1125,还有比如utra 5,utra 10等等。2、查看cpu个数 (错误,不正确,因为sun中的top命令不能完全看到所有的cpu情况,与HP用法也不一样)#topCPU states: 99.3% idle, 0.1% user, 0.6% kernel, 0.0% iowait, 0.0% swap表示只有一个cpu[@more@]正确方法:用dmesg |grep cpu便可以看到正确的 cpu个数了。3、查看内存#dmesg |grep memmem = 2097152K (0x80000000)avai
sqlplus登陆信息提示
在sqlplus登陆时使用conn sys@sid,然后再输入密码的方式,可以避免密码以明文显示如:SQL> conn sys@mydb as sysdba请输入口令:已连接。SQL>[@more@]
(定时任务)crontab 的用法
[转载 七月小猪的blog]crontab task 格式 * * * * * task分 时 日 月 周 task第1列 分钟1~5 9 (0表示0分)第2列 小时1~2 3(0表示子夜)第3列 日1~3 1 第4列 月1~1 2 第5列 星期0~6(0表示星期天)第6列 要运行的命令[@more@]一些例子:30 21* * * /apps/bin/cleanup.sh上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h。45 4 1,10,22 * * /apps/bin/backup.sh上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。10 1 * * 6,0 /bin/find -name "core"
双机备份和集群的原理与比较
[转载:http://hi.baidu.com/oracle_10g/blog/item/1f931317e0927c034a90a7e7.html]一、 双机备份和集群的原理与比较 什么是双机热备? 所谓双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(Primary Server),另一台主机为备份机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。 [@more@
sqlcode
在现网跑过程时,出现了问题不用去进行现网调试,因为这样做很容易造成其他关联对象失效,从而影响系统交易。可以在过程中把sqlcode给记下来,然后在错误手册里把该错误查一下,对于大多数问题,都能通过这种方法得到解决。具体方法如下:[@more@]1. 建错误信息表CREATE TABLE TAB_MOVE_ERRLOG(MOVE_DATE VARCHAR2(19),SQLCOADE VARCHAR2(30))这个表中的字段可以根据具体情况而定,比如可以把造成问题的批次或卡号记录在里面,以便更好跟踪问题;2. 在过程中定义l_result integer;然后在异常处理中进行错误捕捉l_result := sqlcode;insert
PL/SQL Tutorials - HANDLING ERRORS AND EXCEPTIONS
PLSQL handles the errors caused at the server level and publishes them using the following functions:EXCEPTION This datatype is declared in DECLARE section of the PLSQL code enables to call those as and when they are required.[@more@]An internal exception is raised implicitly whenever your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit. Every Oracle error has a number, but exceptions must be handled by name. So, PL/SQL predefines some common Oracle errors as exception
Oracle常用维护语句总结
--不断更新中1. 查看表空间使用情况:SELECT a.tablespace_name "表空间名",total 表空间大小,free 表空间剩余大小,(total-free) 表空间使用大小,ROUND((total-free)/total,4)*100 "使用率 %"FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACEGROUP BY tablespace_name ) a,(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILESGROUP BY tablespace_name) bWHERE a.tablespace_name=b.tablespace_name/--根据自己需要,可以对使用率进行order by下[@more@]2. 查看锁的情况select /*+ RULE
关于Oralce Trigger中before、after的区别
今天工作中需要用到一个触发器,建好试了几次,发觉都没有成功。后来才发觉,是自己定义的varchar2大小太小所至。看来自己还是太粗心了,下次注意~顺便试了下before、after选项,发现before:(insert,update)可以对:new进行修改;after:不能对:new进行修改。两者都不能修改:old数据,只读。我想Oracle之所以这么设计,是避免嵌套触发吧。[@more@]
ORACLE锁的管理
2003-03 余枫ORACLE里锁有以下几种模式:0:none1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改4:Share 共享锁(S):阻止其他DML操作5:S/Row-X 共享行专用(SRX):阻止其他事务操作6:exclusive 专用(X):独立访问使用数字越大锁级别越高, 影响的操作越多。一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。select ... from ... for update; 是2的锁。 [@more@]当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查
ORA-04098错误解决方法
[转载:www.chinaitlab.com]错误代码:ERROR 位于第 1 行:ORA-04098: 触发器 'DDL_DENY' 无效且未通过重新验证解决方案:[@more@]数据库版本:8.1.5 平台:SOLARIS 5.7背景:用户建立了一个TRIGGER:create or replace trigger ddl_denybefore create or alter or drop on databasedeclarebegininsert into ddl_logs values(ora_dict_obj_owner,ora_dict_obj_name,sysdate);exceptionwhen no_data_found thennull;end;目的大概就是记录下所有的DDL操作,但TRIGGER建立有错误,发现:11:30:08 alter">system@ORA250>alter trigger
DBLink小结
今天和营帐测试有价卡接口,用到了DBLink,现把当时遇到的一些问题总结如下:环境三台机器:ORACLE服务端1(简称S1),ORACLE服务器端2(简称S2),客户端1(简称C1)。C1通过客户端连上S1,然后建立个连接S2的DBLink,以便执行S2下的几个存储过程[@more@]1、需要在S1机器下建立S2的tns,而不能在机器C1下建S2的tns;2、创建语句S2:create user yzusr identified by yzusr;grant connect,resource to yzusr;grant execute on ynjfk.online_cardactive to yzusr; --C1需要访问的存储过程C1:create database link dblink_mydb connect to
unique index与primary key的区别
pk is a constraint not a index;主键所在的字段不能为空;unique index可以为null[@more@]
什么叫裸设备
[转载:ChinaUnix.net]裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。[@more@] 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。 2.如何辨别裸设备? 在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件。 字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块
FOR UPDATE的使用
select ... for update [nowait] 行锁,直到该语句的事务被commit语句或rollback语句结束为止;select ... for update nowait语句将要更改的数据试探性地加锁,就可以通过立即返回的错误提示而明白其中的原因。 查询ORACLE锁了哪张卡:SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (
ORACLE回滚段的概念,用法和规划及问题的解决
[转载 www.souzz.net]回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和规划及问题的解决。[@more@]回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段的作用 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前