关于索引取出数据的时间的测试
Tom说 ”从1000行的索引返回数据所用的时间与从一个100000行的索引结构中返回数据的时间是一样的。” 做一个测试吧……[@more@]SQL> create table test1 as select * from dba_objects; 表已创建。 SQL> insert into test1 select * from test1; 已创建68589行。 SQL> insert into test1 select * from test1; 已创建137178行。 SQL> insert into test1 select * from test1; 已创建274356行。 SQL> commit; 提交完成。 SQL>
关于HWM,delete与truncate
测试一我们建立一个表test1并向表中插入数据使表有一定的大小。SQL> create table test1 as select * from dba_objects;表已创建。SQL> insert into test1 select * from test1;已创建68624行。SQL> insert into test1 select * from test1;已创建137248行。SQL> insert into test1 select * from test1;已创建274496行。[@more@] SQL> commit;提交完成。我们查看下test1这个表占用的空间SQL> col tablename format a10SQL> select owner,segment_name tablename , bytes/1024/1024 from dba_segments where segm
连接≠会话 autotrace的‘秘密’
我们经常使用autotrace功能以查看SQL的执行计划,熟不知当我们开启autotrace功能时也开启了另一个session。 例1 我们以SYS用户登录并查看当前的session信息 [@more@] SQL> col username format a10 SQL> select username,sid,serial#,server,paddr,status from v$session where username='SYS'; USERNAME SID SERIAL# SERVER PADDR STATUS ---------- ---------- ---------- --------- -------- -------- SYS 170 5 DEDICATED 28691750 ACTIVE 我们
关于位图索引(bitmap index)
在传统的索引中采用的是一对一的对应关系,即一个索引条目就指向一行,二对于位图索引,一个索引条目则使用一个位图同时指向多行。位图索引适用于高度重复而且通常制度的数据,例如在一个上百万行的表中,某列的值仅仅只有几个值,比如Manager,Assistant,Engineer,Officer。你要频繁的统计有多少个officer,那么这样的情况就适合建立位图索引。但是在OLTP环境中则不适合建立位图索引。举一个简单的例子: ...[@more@]我们建立一个表tb1,包含2个字段dept和name。 SQL> create table tb1(dept varchar(10), name varchar(10));表已创
让所有用户均可查看<执行计划>
我们都知道 autotrace工具是可以显示所执行查询的解析计划(explain plan)以及所用的资源。我们先说一下autotrace的选项SET AUTOTRACE OFF --------------- 不生成AUTOTRACE 报告,这是缺省模式SET AUTOTRACE ON ---------------- 显示查询结果、执行计划和统计信息[@more@]SET AUTOTRACE ON EXPLAIN ------ 显示查询结果 及 执行计划 SET AUTOTRACE ON STATISTICS ---显示查询结果 及 统计信息 SET AUTOTRACE TRACEONLY -------不显示查询结果,仅显示执行计划及统计信息SET AUTOTRACE TRACE STAT -------不显示查询结果,仅显示统计信息
Sun Oracle Database Machine Server
2010年1月14日 10:30参加的一个Oracle 网络会议,介绍新产品Sun Oracle Database Machine Server下面是一些官方资料及部分PPT截图E Extreme Performance for Data Warehousing and OLTP ProcessingOr Oracle Exadata V2 is the world's fastest machine for both data warehousing and online transaction processing. The results show a quantum leap in performance over Oracle's previous generation Exadata machine including: 20x increase in random I/O 5x speedup in I/O bandwidth with FlashFire Technology
物化视图
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。create materialized view [view_name]refresh [fast|complete|force][on [commit|demand] |start with (start_time) next (next_ti
数据文件?还是快捷方式?
使数据文件在不同目录,将数据文件的快捷方式存放在同一目录。指定数据文件的位置为数据文件快捷方式,这样是否可行呢?需在数据库处于mount状态或表空间offline状态使用语句alter tablesapce tbsp_name rename datafile '原目录' to '目标目录'测试1:UNIX环境SQL>create tablespace test datafile '/home/oracle/test' size 10mTablespace created.[oracle@localhost ~]$ ln -s /home/oracle/test /data/oracle/oradata/orcl/test[oracle@localhost ~]$ ll /data/oracle/oradata/orcl/total 1058244 ...[@more@]-rw-r----- 1 oracle
重定向 2>&1
command>filename 将command的结果重定向输出至filename,覆盖原内容。command>>filename 将将command的结果重定向输出至filename,追加至原内容末尾。我们都知道 command>filename 2>&1是将错误信息也输出到文件中,那么原理是怎样的呢?...[@more@]在shell中,文件描述符通常是:STDIN(输入),STDOUT(输入),STDERR(错误信息),即:0,1,2command>filename 2>&1 即将STDERR输出到STDOUT中再将STDOUT输出到指定文件中 这样也就实现了输出错误信息的效果即stderr -> stdout -> filename[root@localhost
bash&profile
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取....[@more@]~/.bash_logout:当每次退出系
Constraint 主键
建立主键时忘记给主键起名字alter table test add primary key(id)--建立有名称的主键alter table test add constraint pk_id primary key(id)而后想删除主键,alter table test drop constraint PK_name却不知道主键名称。查询表中的主键select * from user_constraints where table_name='test'其中Contraints_type列内容解析如下...[@more@]sDBA_constraints.CONSTRAINT_TYPE/User_Constraints:C: Check ,On TableO: Read Only, On ViewP: Primary Key R: FK(Foreign Key, Referential Integrity)U: Unique KeyV: Check Option,
Orapwd
口令文件一般存放在dbs(unix/linux)或者database(win)目录下,叫做pwdsid.ora口令文件用于记录拥有sysdba/sysoper权限的用户名和密码创建语法:orapwd file=pwdsid.ora password=mima entries=10 (UNIX下没有.ora后缀)察看口令文件内容的方法:select * from v$pwfile_users;show parameter remote_login_passwordfile设定为EXCLUSIVE,则一个实例专用;SHARE则可以多个实例共享(用于OPS/RAC环境);NONE则不启用口令文件,此时任何sysdba/sysoper都无法连接进来。alter system set remote_login_passwordfile=none scope=spfilesqln
EM——备份
环境:windows+oracle10g使用EM备份数据库->维护->调度备份设置备份策略与目标后 输入主机身份证明:用户名,密码出现如下错误....[@more@]错误 - 以用户 liuxin 的身份连接 主机 失败: ERROR: Wrong password for user--===解决方案如下控制面板->管理工具->本地安全策略->作为批处理作业登陆 在这里添加要执行备份操作的用户再次测试备份 通过验证
ORACLE GLOBAL
区别nls_database_parameters与v$nls_parameters实验1:(测试于PL/SQL Develper)先看看v$nls_parameters....[@more@]select * from v$nls_parameters1 NLS_LANGUAGE SIMPLIFIED CHINESE2 NLS_TERRITORY CHINA3 NLS_CURRENCY ¥4 NLS_ISO_CURRENCY CHINA5 NLS_NUMERIC_CHARACTERS .,6 NLS_CALENDAR GREGORIAN7 NLS_DATE_FORMAT DD-MON-RR8 NLS_DATE_LANGUAGE SIMPLIFIED CHINESE9 NLS_CHARACTERSET ZHS16GBK10 NLS_SORT BINARY11 NLS_TIME_FORMAT HH.MI.SSXFF AM12 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM13 NLS_TIME_TZ_FORMAT HH
Questions——无法shutdown
当shutdown immediate是出现如下情况SQL> shutdown immediate_ 无法关闭数据库,等待许久仍然无法关闭可以选择如下办法:另开一个窗口[@more@]C:>sqlplus / as sysdbaSQL*Plus: Release 10.1.0.2.0 - Production on 星期二 9月 8 07:48:18Copyright (c) 1982, 2004, Oracle. All rights reserved.已连接。SQL> shutdown abortORACLE 例程已经关闭。SQL>再返回刚才的窗口 已经变化:SQL> shutdown immediateORA-03113: 通信通道的文件结束--==至此已经关闭数据库 由于shutdown abort数据库 重新开启数据库时会自动进行实例
Questions——无法启动EM
很久不用EM 后来同学在学习ORACLE的时候问我关于在EM中备份数据库的问题 于是想自己试验一下 可发现服务完全无法启动 后来想起来曾经修改过计算机名 可能是这个导致了EM无法启动 --===解决问题:重新配置服务...[@more@]c:>emca EMCA 开始于 Tue Sep 08 07:34:34 CST 2009输入以下有关要配置的数据库的信息监听程序端口号: 1521数据库 SID: orcl服务名: orcl通知的电子邮件地址:通知的电子邮件网关:dbsnmp 口令:sysman 口令:sys 口令:-----------------------------------------------------------------已指定以下设置数据库 ORACLE_
Questions——无法以OS认证方式登录
环境:windows +oracle10g 问题:无法以OS验证方式登录 朋友在学习ORACLE时问我的一个问题,他的操作系统是windows,切换用户后使用语句...[@more@]sqlplus / as sysdba 无法登入数据库 但以sqlplus sys/system as sysdba 却可以正常登入这里第一条sqlplus / as sysdba 使用的是OS验证 默认登入数据库用户SYS 第二条语句已经验证以SYS用户可以登入数据库 所以可以断定是操作系统验证问题 --=== 解决问题 控制面板->管理工具->计算机管理->ORA_DBA 在打开的对话框中加入当前操作系统用户 再次验证可以登录--==== 默认启用OS认证的方
Questions——无法删除SYS用户下表的列
朋友刚开始学习ORACLE 做练习的时候 以SYS用户创建了一个表 并插入了数据 之后想要修改表结构 删除其中一列 结果提示 无法删除属于 SYS 的表中的列...[@more@]这个问题我也做了如下实验---------------------------------------------C:>sqlplus / as sysdbaSQL*Plus: Release 10.1.0.2.0 - ProductiCopyright (c) 1982, 2004, Oracle. All连接到:Oracle Database 10g Enterprise EditionWith the Partitioning, OLAP and Data MiSQL> create table abc (a int,b int);表已创建。SQL> insert into abc values(1,10);已创建 1 行。
基础开始——undo
undo 使用DML语句对数据进行了修改 oracle将修改前的数据保存至undo segment中 ,undo segment保存于undo tablespace中,未使用commit提交事务前 使用rollback可回滚这部分数据 show parameter undoundo参数...[@more@]①undo_management 值为auto时 在空间不足时自动创建undo段②undo_retention 该项值为在事务提交后存放在undo段内的数据仍将保存多少秒③undo_tablespace 当前使用的undo表空间ORA-01555 快照过旧 解决方案:扩大undo表空间1.create undo tablespace undotbs2 datafile ' g:/undotbs2.dbf ' size 10m创建一个undo表空间
基础开始——数据库运行模式 专用&共享
数据库运行模式 专用服务器模式 共享服务器模式...[@more@]专用服务器模式每个session都有一个专用的进程为其服务 多用于只有少数客户端连接服务器 或OLTP(联机事务处理系统)专用服务器使用的游标、用户信息、栈空间都来自于PGA共享服务器模式也叫做多线程服务器模式 多个用户进程使用同一个服务器进程 进入队列处理 多用于多客户连接服务器共享服务器使用的游标、用户信息 内存来自于SGA(内的大池) 栈则在PGA中①select * from v$queue查看队列②select * from v$circuit查看哪些进程在服务③select * from v#shared_server_monitor查