Oracle SQL性能优化
(转改学) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以
rac install
安装的主要命令和要点!!!1,创建用户与组 groupadd oinstall groupadd dba mkdir -p /export/home/oracle /ocfs useradd -d /export/home/oracle -g oinstall -G dba -s /bin/ksh oracle chown oracle:dba /export/home/oracle /u01 passwd oracle2, 创建 oracle 用户环境文件。 /export/home/oracle/.profile export PS1="`/bin/hostname -s`-> " export EDITOR=vi export ORACLE_SID=devdb1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product
oracle asm ora-15031
ora-15031 DBCA找不到ASM磁盘组 使用DBCA创建数据库,使用ASM存储。ASM实例已经创建,但是在创建磁盘组窗口,无法找到已经创建的ASM磁盘组。ORACLEASM显示正常。 [yangwenchao@yangwenchao ~]$ /etc/init.d/oracleasm status Checking if ASM is loaded: [ OK ] Checking if /dev/oracleasm is mounted: [ OK ] [yangwenchao@yangwenchao ~]$ /etc/init.d/oracleasm listdisks VOL1 VOL2 VOL3 VOL4 VOL5 [yangwenchao@yangwenchao ~]
xmanger远程登录Linux
第一步,在Linux系统下,修改/etc/X11/xdm/Xaccess文件,找到下面的语句:# * #any host can get a login window,去掉这一行最前面的#号,成为:* #any host can get a login window 第二步,修改/etc/X11/xdm/xdm-config的最后一行,在DisplayManager.requestPort:0前面加上一个!号,结果如下 !DisplayManager.requestPort:0 第三步,修改/etc/gdm/custom.conf文件。如果你的系统没有custom.conf这个文件,请查找这个文件/etc/X11/gdm/gdm.conf 。找到下面的语句:[xdmcp],在这句下面加上以下两行:Enable=truePort=177 第四
oracle data guard!!
用了两天的时间终于完成拉data guard的培植!primary database inin.oraoradb.__db_cache_size=100663296oradb.__java_pool_size=4194304oradb.__large_pool_size=4194304oradb.__shared_pool_size=54525952oradb.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/oradb/adump'*.background_dump_dest='/u01/app/oracle/admin/oradb/bdump'*.compatible='10.2.0.1.0'*.control_files='/u01/app/oracle/oradata/oradb/control01.ctl','/u01/app/oracle/oradata/oradb/control02.ctl','/u01/app/oracle/oradata/oradb/contro
死锁分析
一个死锁的分析!先看报错的信息!*** 2008-05-05 10:24:51.933*** SESSION ID:(9.14897) 2008-05-05 10:24:51.924DEADLOCK DETECTEDCurrent SQL statement for this session:DELETE FROM ZZRK121R WHERE (ZZRK121R.出租屋编号 IS NOT NULL) AND (ZZRK121R.F00 = '37070500020110')The following deadlock is not an ORACLE error. It is adeadlock due to user error in the design of an applicationor from issuing incorrect ad-hoc SQL. The followinginformation may aid in determining the deadlock:Deadlock graph:---------Bloc
数据移植文档
数据移植文档------imlihj2008-------20080407------365422393方案一: EXP快速实现前 提: 提供一个存储大约400G的设备,可以是移动硬盘,可以是电脑!数据结构一致(没有的话用方案二)数据的移植关键是大表的数据移植(rk_czrk)其他的小表直接就可以导过来! 步 骤: 1,创建数据库结构a.创建表空间JCZHXTTS_ZHXT_DATA TS_ZHXT_INDX TS_ZHXT_MISD TS_ZHXT_TOOL TS_ZHXT_PHOTO INDX根据具体的应用设计对应参数!b.创建用户'MISDORACLE','YWPZ','BZZDK','ZHYW','XTRZK','YSSJ','SJJH','ZHSJJK','JCZHXXGLSJBGK''JCZHXXGL'Create_zaxxgl.
≮≮≮ shell 编程总结(临时文件存储参数与变量) ≯≯≯≯
1 Shell的程序编写要仅可能的向面向对象的思想靠拢! 首先要定义变量!定义变量是很简单的!! 变量名称=变量数值var="50"2 要熟练的应用流程语句!如WHILE3 要对变量进行适当的存储与文件内容检索4 我的思想是使用临时文件存储变量 这样比在文件中定义变量更加的灵活!如:在做ORACLE 安装的时候需要进行安装包的检查与安装!这一步我门可以自己写一些脚本!!首先判断所需要的安装包!然后比对 应该安装的补丁包!最后可以确定要安装的软件补丁包!后执行就可以拉!!!这中间需要创建一个参数文件!对应系统与ORACEL 所需要的
ORACLE概念的理解!
一:块清除当事务提交 commit时,oracle会去更改 row head与itl信息 的标志,指出这些被修改的行已经作了提交,以便后面的查询不需再作一致性读操作了.这被称为快速块清除.然而,块清除有 data_buffer *10% 的了限制,即仅有10%*buffers的块能享有这种操作.这样做是为了提高commit的速度.而其余的受影响的块则会由下次操作时访问到此块时再作延迟块清除.如果块上没有活动的事务,会根据xid信息去回滚段中找如果不能确认scn的大小则会报 ora-1555的错误,否则则进行延迟的块清除.1)﹑在commit时只有 buffer数目的10%才会进行fast block cleanout﹐
删除或者更新重复的记录
删除或者更新重复的记录create or replace procedure sp_tran_delete_manyone_data/********************************************功能:删除接口表port_rk_czrk内的重复数据没有使用,但是可以应用20071129 BY LIHJ********************************************/as--定义type_err t_tran_sys_errors%rowtype;type_log t_tran_sys_log%rowtype;type_process t_tran_sys_process%rowtype;LN_LXZ NUMBER:=0;begin--初始化值type_process.ins_rows:=0;type_process.upd_rows:=0;type_process.err_rows:=0;type_log.total_rows:=0;type_log.er
数据库表格转换成XML格式方法!
数据库表格转换成XML格式方法! 资源中心有软件可下载1,确定必要的视图或者是表格2,创建存储过程create or replace procedure SP_create_xml(obj_name varchar2) isls_object_name user_tab_columns.TABLE_NAME%type;ln_object_hava number:=0;type ty_obj_cols is table of user_tab_columns.COLUMN_NAME%type index by binary_integer;ty_obj_col ty_obj_cols;ln_col_no number:=1;ls_creaet_sql varchar2(5000);begindbms_output.enable(200000);--------------------获得表的名称并验证-------------------------------------------
Oracle 10g数据安全策略
Oracle 10g数据安全策略1,安装过后要冷备数据库要在归档的模式下确保数据库在任何时候都可以恢复到一个确定的状态1,要备份数据的参数文件!这个文件数据库启动的必要基础!!1>直接拷贝2>Alter datebase back up controlfile to trace/filename2,要备份控制文件,控制文件中有数据库里的SCN信息,数据文件信息,控制文件是数据库恢复数据的必要基础!!控制文件里的SCN信息是恢复数据库最近时间尺度基础!!1>直接拷贝3,备份数据文件这个是肯定要备份的!4,备份在线日志文件没有在线日志文件,数据库是很难启动的!!5,备份
$$自动创建触发器$$
1,这个存储过程可以创建特定的instead of 触发器2,用于特定的视图,他必须包含所有的表列(这个并不影响使用)create or replace procedure Sp_create_tr(view_names varchar2 ,list_tabs varchar2) is/* 使用与比较规则的视图!!!!!! 动态创建触发器:目的,方便在视图层进行数据库的操作 传入的表名称必须是字母来表示!!!!!!!!! 从插入开始练习!!! 输入的表名称必须是这样的格式! tabe3name*table*tabel ---LIHJ*/ LS_create_sql varchar2(5000); ln_triggs_nos number:=0; ls_trigger_name varc
±±oracle trigger±±
在ORACLE 内部创建触发器的时候,不能在创建的的基表内引用其他数据,而在创建触发器的往往需要引用基表的数据,这时候我感觉最好的办法上:创建视图!!!!!!!-- Create tablecreate table AJCJ_ZAAJDJB( BH VARCHAR2(30) not null, YEAR VARCHAR2(4), YEAR_NO VARCHAR2(20), MONTH_NO VARCHAR2(22), AB VARCHAR2(30), FA_TIME DATE, FADD VARCHAR2(30), BASJ DATE, DSR1_XM VARCHAR2(30), DSR1_XB VARCHAR2(30), DS
♀♀数据库升级♀♀
我的数据库升级后,数据库没有启动!!!!C:Documents and SettingsAdministrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 5 09:34:17 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> conn / as sysdba已连接。SQL> startupORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它SQL> shutdown immediateORA-01109: 数据库未打开已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Global Area 322961408 bytesFixed Size 1248792 b
∵∵∵open log for mysql∵∵∵
1.首先确认你日志是否启用了mysql>show variables like 'log_bin';2.如果启用了,即ON那日志文件就在mysql的安装目录的data目录下3.怎样知道当前的日志mysql> show master status; 4.看二进制日志文件用mysqlbinlogshell>mysqlbinlog mail-bin.000001shell>mysqlbinlog mail-bin.000001 | tail mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin 在mysql的安装目录下,打开my.ini,在后
★★External Tables★★
1.创建sqlldr驱动的External Tables默认情况下,oracle会采用sqlldr驱动的external tableSQL> CREATE TABLE test_ext2 (employee_id NUMBER(4),3 first_name VARCHAR2(20),4 last_name VARCHAR2(25),5 job_id VARCHAR2(10),6 manager_id NUMBER(4),7 hire_date DATE,8 salary NUMBER(8,2),9 commission_pct NUMBER(2,2),10 department_id NUMBER(4),11 email VARCHAR2(25)12 )13 ORGANIZATION EXTERNAL14 (15 TYPE ORACLE_LOADER16 DEFAULT DIRECTORY dir_test17 ACCESS PARAMETERS18 (19 records delimited by newline20 badfile admi
¤¤¤exp/imp¤¤¤
记住:要看帮助!!$exp scott/tiger tables=emp query="where job='salesman' and sal<1600" file=/directory/scott2.dmp$exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmpfilesize=2000M log=/directory2/username_exp.log参数文件username.par内容userid=username/userpasswordbuffer=8192000compress=ngrants=y表模式 ######################仅仅会备份表里的数据!!!备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。 若备份到本地文件,使用如下命令: e
performance of the database
create or replace procedure performance_exec is/*自动执行响应的函数与存储过程*/var number:=0;begin --缓存区的情况! dbms_output.put_line(' the performance of the database!!!!'); for i in 101..102 loop dbms_output.put_line(' -----------------------------------------------------'); dbms_output.put_line(' '||fun_sga(i)); end loop; --dbms_output.put_line(' '||fun_sga(102)); --dbms_output.put_line(' the performance of the database^^^^'); /*for i in 101..111 loop dbms_output.put_lin
print the result sql
create or replace procedure Print_sql(sqltest varchar2) is/*作者:李红杰说明:为了进行性能的管理,对一些性能管理的语句做一些必要的结果的输出!!*/begindbms_output.enable(2000000);--验证输入的SQL语句是否有问题!!--利用DBMS__SQL包进行数据正确性的判断!!----------------------------------------------------------------------declarecur_sql_int number:=0;cur_sqltest varchar2(500):=0;begincur_sqltest:=sqltest; cur_sql_int:=dbms_sql.open_cursor;dbms_sql.parse(cur_sql_int,cur_sqltest,dbms_sql.v7);--dbms