一、SqlPlus常用命令 @ save a where… c/t1/t2 l Spool off(生成Log) 自动批处理生成 Select ‘analyze table ‘ … Shift-Del 晴空屏幕 @c:\temp\xx.sql 二、SQl 常规使用 select owner,count(*) from t1 group by owner select owner,count(*) from t1 group by rollup(owner) select owner,count(*) from t1 group by cube(owner) select … from dba_SEGMENTS (段) select tabelspace_name,count(*) from dba_segments where tablespace_name=’user’ group by tablespace_name select tabelspace_name,segment_type ,count(*) from dba_segments group by tablespace_name select username,account_status,default_tablespace def_ts,temporary_tablespace temp_ts,to_char from dba_users 不建议应用System表空间 alter user dbsnmp account lock; 锁住某一账号,暂时不让其用。 Select .. from .. where .. group by .. order by .. having Select * from t1,t2 where (如果Where中没有出现两表相关联的条件,则会产生笛卡尔积数量的结果) 用处:可以产生测试数据,进行压力测试! Distinct 与Group By 三、SQl的一些注意事项 (DBA 督促程序员需要的注意事项。以及发现程序中的Sql问题) 1、 避免全表扫描 rowid/索引/直接访问表 避免以下几种: select * from t1 where owner =123; SQl 中,数字会隐性转换为字符串,其中索引就会永不到了。因此要避免这种隐性转换。 Select * from t1 where lower(owner)=’test’;//需要建立函数索引 Select * from t1 where owner=’’; 前导索引/后导索引 select .. from a, b where b=..; (where a=… and b=.. ;where a=..;这两种都会用到索引) 500万条记录,因维护,需要删除400万条记录。 Delete 与 truncate的区别:Delete 要写回滚,写到回滚站,写很多Log,开销很大 Delete 没有回收水位线(曾经用过的最高线)。会影响将来的全表扫描的效率 做法:1、重新创建临时表,Insert 100万条数据,然后Drop原来的表 2、采用Alter table move / exp . imp (当前表的回收水位线) degree 并行度 也会造成全表扫描 在Sql级来指定,而不再对象级来指定,可控性会很高 select * from dba_tables create table可以指定Degree ,Alter Table 来指定Degree 默认Dgree为1 不推荐修改 四、系统架构 (一)、文件 物理架构 dbfile controlfile redo … os block (temporary segment,undo segment ,index seg,data seg) 逻辑架构 database tablespace segment extent block -=================================================== 数据库与实例的概念区别。 Show parameter block 默认值是8K 块大,全表扫描的效率会很高,而每次访问数据库,如果很少数据,就需要读取整个快的数据,对内存是个浪费。需要根据系统权衡利弊,选择合适的块大小。一般为
4K的整数倍。是为避免额外的操作系统IO开销,是操作系统快的整数倍。 Dbfile:存储数据的物理文件,操作系统看到的文件。 分为几种: 1、临时段:进行一次数据排序的时候,在PGA中如果能完成,则在内存中完成,如果不够,则要在临时段中申请,临时段可重复利用。 创建方法:create temporary tablespace temp tempfile ‘….’ Size 1024M extent management local uniform size 1m; 不推荐将临时段切换到永久表空间。 2、 Undo段 Show parameter undo 在9i中一般为自动管理:Auto 3、 索引段 4、 数据段 文件系统和裸设备的选择? 逻辑架构: 扩展 select * from dba_tables initial_extent next_extent 、Max_extent Oracle 级的Block (二)进程::dbwr pmon smon checkpoint lgwr PS –EF | GREP pmon 1、 数据库写进程:dbwr,将脏数据写入到Dbfile 2、 pmon: 3、 smon :会滚,空间回访,控制 4、 checkpoint: 5、 日志写进程:LogBuffer 中的脏数据写入到日志 (三)内存 SGA,PGA,UGA 1、SGA 并行备份,并发操作,共享池,大池是对共享池的保护,保留池是对小表的全表扫描时保留到保留池中 回收池:确定使用一次 循环池 把握住何种应用存放在哪一种池中! 2、PGA主要功能是排序 Show parameter sort Sort_area_size 一般是5M即可,如果需要排序效率很大可以配置很高的值 3、UGA (四)实例 实例运行过程中几大元素之间的作用 数据库的启动: 1、nomount:读取Intial文件中的参数,Dbbuffer,SGA中的参数,Block等配置 show parameter control指定了contral file 的位置 先从init.ora 中找Control File位置然 2、mount 从Contral File中找redo log, Dbfile以及其他scn等信息 3、open 都找到并确认Ok 才Open 五、数据库服务器 Oracle服务器可以通过以下的方式运行在不同的计算机上 客户端: 连接需要经历的过程: net8-> 本地配置文件: $oracle_home/network/admin/ tnsnames.ora->Host Ip,Port,Listener,服务名-〉到服务器段端口:$oracle_home/network/admin/ Listener.ora,将服务请求告诉其他进程,Oracle Home 下的$oracle_home/bin/Oracle并运行,生成一个隐身进程,和客户端进程建立连接。 Oracle 9i 中的Spfile的作用 Create spfile from pfile=’…’ 只有在数据库完全ShutDown的时候才能够执行。Spfile为二进制文件,可以转换为文本文件修改后再转换回来。 重做日志缓冲:
|
|