`
chengyue2007
  • 浏览: 1468074 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

DBA

 
阅读更多

DBA

一、DBA. 2
1.11捕捉运行很久的SQL. 2
1.12查看还没提交的事务... 2
1.13查找object为哪些进程所用... 2
1.14回滚段查看... 3
1.15查看等待(wait)情况... 3
1.16查看sga情况... 3
1.17查看catched object3
1.18 发现无效的对象... 4
1.19重新编译所有的存储过程,函数和程序包... 4
1.20在v$sqlarea中找出最占资源的查询... 4
1.21在v$sql中找出最占资源的查询... 4
二、表空间管理... 5
(1)新建表空间... 5
(2)增加额外的数据文件到表空间中... 5
(3)修改表空间当前的数据文件... 5
(4)删除表空间及其包含的所有数据对象... 5
(5)该数据物理文件名... 5
(6)回滚字段管理... 6
(7)表空间与用户捆绑用例... 6
(8)查看表空间空闲数据块总和sum(bytes)与最大空闲数据块max(bytes)6
三、数据导入导出的实例... 6
3.1 数据导出:... 6
3.2数据的导入... 7
四、查看数据库的SQL. 7
1、查看表空间的名称及大小... 7
2、查看表空间物理文件的名称及大小... 8
3、查看回滚段名称及大小... 8
4、查看控制文件... 8
5、查看日志文件... 8
6、查看表空间的使用情况... 8
7、查看数据库库对象... 8
8、查看数据库的版本... 9
9、查看数据库的创建日期和归档方式... 9
五、恢复应用服务器的OWA包 (同名设置)9
六、MATERIALIZED VIEW.. 10
6.1实体化视图概述... 10
6.2创建实体化视图主要选项说明... 11
6.3创建实体化视图日志主要选项说明... 12
6.4实体化视图... 13
6.5 视图的刷新... 14
6.6 mv的数目与属性查询... 14
6.7 mv的log查询:MLOG$. 15
七、Oracle几点精髓... 15
7.1、用户... 15
7.2、表... 15
7.3、索引... 17
7.4. 异常处理... 17
 
一、DBA
1.11捕捉运行很久的SQL
column username format a12 
column opname format a16 
column progress format a8 
select username,sid,opname, 
round(sofar*100 / totalwork,0) || '%' as progress, 
time_remaining,sql_text 
from v$session_longops , v$sql 
where time_remaining <> 0 
and sql_address = address 
and sql_hash_value = hash_value 
1.12查看还没提交的事务
select * from v$locked_object;
select * from v$transaction
1.13查找object为哪些进程所用
select 
p.spid,
s.sid,
s.serial# serial_num,
s.username user_name,
a.type object_type,
s.osuser os_user_name,
a.owner,
a.object object_name,
decode(sign(48 - command),
1,
to_char(command), 'Action Code #' || to_char(command) ) action,
p.program oracle_process,
s.terminal terminal,
s.program program,
s.status session_status 
from v$session s, v$access a, v$process p 
where s.paddr = p.addr and
s.type = 'USER' and 
a.sid = s.sid and
a.object='SUBSCRIBER_ATTR'
order by s.username, s.osuser
1.14回滚段查看
select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents 
Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs, 
v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes, 
sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs, 
v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and 
v$rollstat.usn (+) = v$rollname.usn order by rownum
15。耗资源的进程(top session)
select s.schemaname schema_name, decode(sign(48 - command), 1, 
to_char(command), 'Action Code #' || to_char(command) ) action, status 
session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num, 
nvl(s.username, '[Oracle process]') user_name, s.terminal terminal, 
s.program program, st.value criteria_value from v$sesstat st, v$session s , v$process p 
where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL' 
or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc
1.15查看等待(wait)情况
SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_value 
FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('db block gets', 
'consistent gets') group by v$waitstat.class, v$waitstat.count
1.16查看sga情况
SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC
1.17查看catched object
SELECT owner, name, db_link, namespace, 
type, sharable_mem, loads, executions, 
locks, pins, kept FROM v$db_object_cache
1.18 发现无效的对象
col "owner" format a12
col "object" format a20
col "otype" format a12
col "change date" format a20
select substr(owner,1,12) "owner",
 substr(object_name,1,20) "object" ,
 object_type "otype",
 to_char(last_ddl_time,’dd-mon-yyyy hh24:mm:ss’) "change date"
 from dba_objects
 where status<>’valid’
 order by 1,2
 1.19重新编译所有的存储过程,函数和程序包
 begin
 dbms_utility.compile_schema(‘gw’);
 end;
1.20在v$sqlarea中找出最占资源的查询
select b.username username,a.disk_reads reads,
a.executions exec, 
a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio, 
a.sql_text statement
from v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads>100000
order by a.disk_reads desc
1.21在v$sql中找出最占资源的查询
select * from (
 select sql_text,rank() over(order by buffer_gets desc) as rank_bufgets,
 to_char(100*ratio_to_report(buffer_gets) over(), 999.99) pct_bufgets
 from v$sql)
 where rank_bufgets<11
二、表空间管理
  (1)新建表空间
create tablespace USER_DATA1 datafile 
  'd:/oradata/user1_1.ora' size 512M, 
  'd:/oradata/user1_2.ora' size 512M, 
  'd:/oradata/user1_3.ora' size 512M, 
  'd:/oradata/user1_4.ora' size 512M, 
  'd:/oradata/user1_5.ora' size 512M, 
  'd:/oradata/user1_6.ora' size 512M 
  AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
  default storage (initial 128K next 2M pctincrease 0);
   --initial为空表的最小占用的磁盘空间
   create tablespace ROLLBACK_DATA1 datafile 
  'd:/oradata/roll1_1.ora' size 512M,
  'd:/oradata/roll1_2.ora' size 512M 
  AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
  default storage (initial 40M next 5M pctincrease 0);
(2)增加额外的数据文件到表空间中
 ALTER TABLESPACE "XYAPP" ADD DATAFILE 'E:/ORACLE/ORADATA/TEST/test.ora'  SIZE  5M
(3)修改表空间当前的数据文件 
ALTER DATABASE   DATAFILE 'E:/ORACLE/ORADATA/TEST/XYDATA.ORA' RESIZE  52M;
(4)删除表空间及其包含的所有数据对象
   drop tablespace data including contents;
 (5)该数据物理文件名
   alter tablespace tbsdata rename datafile 'path/data_01.dbf' to 'path2/data01.dbf';
  alter database open;
 (6)回滚字段管理
     (1.)回滚段查询
       SELECT SEGMENT_NAME,OWNER,
           TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS 
           FROM DBA_ROLLBACK_SEGS
     (2.)回滚段删除
          alter rollback segment 回滚段名 offline;
          drop rollback segment 回滚段名;
     (3.)回滚段建立
         create public rollback segment rb01 tablespace rollback_data1;
         --建立新的回滚段,每个都一样大,不同大小的回滚段没有什么意义,系统是随机选择的。
     --建多少个,根据并发访问用户的多少,
     --如果你们公司每天有50-100个人员使用Oracle系统开发的管理软件,应该20个以上
     (4.)使回滚字段有效  
 alter rollback segment rb01 online;
 (7)表空间与用户捆绑用例
/** 为避免用户在S Y S T E M表空间中创建对象, S Y S T E M上的任何定额(定额允许在系统中生成对象)都
        必须被取消。**/
 alter user xyapp quota 0 on SYSTEM;
 CREATE USER ZBGL IDENTIFIED BY ZBGL default tablespace 表空间名; 
 GRANT DBA TO ZBGL; 
 ALTER USER ZBGL DEFAULT TABLESPACE WXGL_DATA1 TEMPORARY TABLESPACE TEMPORARY_DATA;
 alter table acl_query move tablespace xyapp;
(8)查看表空间空闲数据块总和sum(bytes)与最大空闲数据块max(bytes)
  select tablespace_name,sum(bytes),max(bytes) from dba_free_space group by tablespace_name;
三、数据导入导出的实例
3.1 数据导出:
1.       将数据库TEST完全导出,用户名system 密码manager 导出到D:/daochu.dmp中
exp file=d:/daochu.dmp full=y
2.       将数据库中system用户与sys用户的表导出
exp file=d:/daochu.dmp owner=(system,sys)
3.       将数据库中的表inner_notify、notify_staff_relat导出
exp file= d:/data/newsmgnt.dmp tables=(inner_notify,notify_staff_relat) 
4.       将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp file=d:/daochu.dmp tables=(table1) query=/" where filed1 like '00%'/"
上面是常用的导出,对于压缩,既用WinZip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。
3.2数据的导入
1 将D:/daochu.dmp 中的数据导入 TEST数据库中。
   imp file=d:/daochu.dmp
   imp full=y file=file= d:/data/newsmgnt.dmp ignore=y 
 
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
 
2 将d:/daochu.dmp中的表table1 导入
 imp file=d:/daochu.dmp tables=(table1) 
 
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
 
注重:
 操作者要有足够的权限,权限不够它会提示。
 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
四、查看数据库的SQL
4.11、查看表空间的名称及大小

 SQL> select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;


4.12、查看表空间物理文件的名称及大小

 SQL> select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;


4.13、查看回滚段名称及大小

 SQL> select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
From dba_rollback_segs r, v$rollstat v
Where r.segment_id = v.usn(+)
order by segment_name ;
 


4.14、查看控制文件

 SQL> select name from v$controlfile;


4.15、查看日志文件

 SQL> select member from v$logfile;


4.16、查看表空间的使用情况

SQL>select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
 
SQL>SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;


4.17、查看数据库库对象

SQL>select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;


4.18、查看数据对象(object)内容

SQL> select dbms_metadata.getdll(‘type’,’name’[,’owner’]) from dual;


4.19、查看当前用户连接信息
SQL> select instance_name from v$instance; 
用系统管理员,查看当前数据库有几个用户连接:
SQL> select username,sid,serial# from v$session;
如果要停某个连接用
SQL> alter system kill session 'sid,serial#';
如果这命令不行,找它UNIX的进程数
SQL> select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr;


说明:21是某个连接的sid数
然后用 kill 命令杀此进程号。
 
8、查看数据库的版本

SQL>Select version FROM Product_component_version
Where SUBSTR(PRODUCT,1,6)='Oracle';


9、查看数据库的创建日期和归档方式

SQL>Select Created, Log_Mode, Log_Mode From V$Database;


五、恢复应用服务器的OWA包 (同名设置)
当你安装新的mod_plsql OWA包时,它们被放在SYS数据库用户模式下,这会为应用服务器(Oracle Application Server)使用OAS PL/SQL cartridge组件带来问题,如果你遇到这些问题并且想继续使用OAS的PL/SQL cartridge组件,就必须重新建立一些同义词,使得这些同义词参照到OWA包。在源数据库上建立同义词的步骤如下:  
1.SYS帐户在SQL*Plus中连接到数据库 
2.在SQL*Plus中运行下列命令,这将删除所有在Oracle HTTP Server安装进程中建立的OWA公共同义词。 
  drop public synonym OWA_CUSTOM; 
  drop public synonym OWA_GLOBAL; 
  drop public synonym OWA; 
  drop public synonym HTF; 
  drop public synonym HTP; 
  drop public synonym OWA_COOKIE; 
  drop public synonym OWA_IMAGE; 
  drop public synonym OWA_OPT_LOCK; 
  drop public synonym OWA_PATTERN; 
  drop public synonym OWA_SEC; 
  drop public synonym OWA_TEXT; 
  drop public synonym OWA_UTIL; 
  drop public synonym OWA_INIT; 
  drop public synonym OWA_CACHE; 
  drop public synonym WPG_DOCLOAD; 
  
3.连接到OWA包的安装模式oas_public,确保该用户具有CREATE PUBLIC SYNONYM权限,如果没有,则须手动为此用户授此权限。  
  
4.运行下列命令。这将重新建立OWA公共同义词使其参照到Oracle Application Server 的OWA包。  
  create public synonym OWA_CUSTOM for OWA_CUSTOM; 
  create public synonym OWA_GLOBAL for OWA_CUSTOM; 
  create public synonym OWA for OWA; 
  create public synonym HTF for HTF; 
  create public synonym HTP for HTP; 
  create public synonym OWA_COOKIE for OWA_COOKIE; 
  create public synonym OWA_IMAGE for OWA_IMAGE; 
  create public synonym OWA_OPT_LOCK for OWA_OPT_LOCK; 
  create public synonym OWA_PATTERN for OWA_PATTERN; 
  create public synonym OWA_SEC for OWA_SEC; 
  create public synonym OWA_TEXT for OWA_TEXT; 
  create public synonym OWA_UTIL for OWA_UTIL; 
  create public synonym OWA_INIT for OWA_CUSTOM; 
  create public synonym OWA_CACHE for OWA_CACHE; 
  create public synonym WPG_DOCLOAD for WPG_DOCLOAD;
查看同义词的名称
SQL>select * from user_synonyms;
六、MATERIALIZED VIEW
6.1实体化视图概述
Oracle的实体化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,实体化视图的作用也不相同。数据仓库中的实体化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的实体化视图进行查询,完全对应用透明。实体化视图和表一样可以直接进行查询。实体化视图可以基于分区表,实体化视图本身也可以分区。除了在数据仓库中使用,实体化视图还用于复制、移动计算等方面。实体化视图有很多方面和索引很相似:使用实体化视图的目的是为了提高查询性能;实体化视图对应用透明,增加和删除实体化视图不会影响应用程序中SQL语句的正确性和有效性;实体化视图需要占用存储空间;当基表发生变化时,实体化视图也应当刷新。
6.2创建实体化视图主要选项说明
创建实体化视图时可以指定多种选项,下面对几种主要的选项进行简单说明:

名称 ON PREBUILD TABLE 
描述 将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。


 

名称 Build Clause 创建方式 
描述 包括BUILD IMMEDIATE和BUILD DEFERRED两种 
取值 BUILD IMMEDIATE 在创建实体化视图的时候就生成数据 
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据 
默认 BUILD IMMEDIATE


 

名称 Refresh 刷新子句 
描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步 
语法 [refresh [fast | complete | force]
         [on demand | commit]
         [start with date]
         [next date]
         [with {primary key | rowid}]

取值 FAST 采用增量刷新,只刷新自上次刷新以后进行的修改 
COMPLETE 对整个实体化视图进行完全的刷新 
FORCE(默认) Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项 
  
ON DEMAND(默认) 实体化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新 
ON COMMIT 实体化视图在对基表的DML操作提交的同时进行刷新 
  
START WITH 第一次刷新时间 
  
NEXT 刷新时间间隔 
  
WITH PRIMARY KEY(默认) 生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性 
WITH ROWID 只有一个单一的主表,不能包括下面任何一项:
●Distinct
●聚合函数
●Group by
●子查询
●连接
●SET操作 
   


 

名称 Query Rewrite 查询重写 
描述 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据 
取值 ENABLE QUERY REWRITE 支持查询重写 
DISABLE QUERY REWRITE 不支持查询重写 
默认 DISABLE QUERY REWRITE


6.3创建实体化视图日志主要选项说明
如果需要进行快速刷新,则需要建立实体化视图日志。实体化视图日志根据不同实体化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

名称 WITH Clause 
描述   
取值 OBJECT ID 如果是对象实体化视图(object materialized view),则只能采用该方式 
PRIMARY KEY   
ROWID   
SEQUENCE   
默认  


6.4实体化视图
创建实体化视图时应先创建存储的日志空间
1.create materialized view log on table1    
2.  tablespace ts_data --日志保存在特定的表空间
3.  with rowid;   
然后创建实体化视图
1.create materialized view mv_table1         
2.      on prebuild table --将实体化视图建立在一个已经存在的表上   
3.      tablespace ts_data --保存表空间
4.      build deferred --延迟刷新不立即刷新 
5.       refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新 
6.      on demand --按照指定方式刷新   
7.      as select * from table1;   
删除实体化视图日志
1.drop materialized view log on table1;    
删除实体化视图
1.drop materialized view mv_table1;    
手工强行解除注册。

SQL>exec DBMS_SNAPSHOT.PURGE_SNAPSHOT_FROM_LOG (snapshot_id);


 
查询物化视图刷新时间

SELECT MM.mview_name,MM.last_refresh_date FROM DBA_MVIEWS MM


 
不能删除物化视图?
ALTER MATERIALIZED VIEW user_order_mavi
   DISABLE QUERY REWRITE 
   REFRESH ON DEMAND; Error! No table of contents entries found.相关的信息可以看: 

 EXECUTE DBMS_MVIEW.EXPLAIN_MVIEW ('v_test);
select CAPABILITY_NAME, POSSIBLE,MSGTXT from MV_CAPABILITIES_TABLE;


举例2
1)实体化视图所依据的所有表必须注册。如:

create materialized view log on department
                with primary key ,
                rowid (dept_name)
                including new values ;
 create materialized view log on newhire
                with primary key ,
                rowid(dept_id, salary)
                including new values ;


2)创建实体化视图本身。如:

create materialized view dept_salary_mvw
                refresh fast on commit
                enable query rewrite
                as select d.dept_name , sum(n.salary) as num_salary
                          from department d , newhire n
                          where d.dept_id = n.dept_id
                          group by d.dept_name ;


6.5 视图的刷新

SQL>exec dbms_mview.refresh('mv_gswx');
 
SQL>select v.MVIEW_NAME,v.REFRESH_METHOD, v.LAST_REFRESH_TYPE from user_mviews v;


6.6 mv的数目与属性查询

SQL>select t.log_owner,t.master,t.log_table,t.current_snapshots, 
    r.owner,r.name,r.snapshot_site 
    from dba_snapshot_logs t,dba_registered_snapshots r 
       where t.snapshot_id= r.snapshot_id(+);


6.7 mv的log查询:MLOG$

 Select count(1) from log_table;


七、Oracle几点精髓
7.1、用户
查看当前用户的缺省表空间

 SQL>select username,default_tablespace from user_users;


查看当前用户的角色

 SQL>select * from user_role_privs;


查看当前用户的系统权限和表级权限

SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;


 
SHP81:
SQL> select * from dba_role_privs  where grantee in ('PCOTBG1','OPS$PCOTRPR1') order by grantee
 
SHPU89:
SQL> select * from dba_role_privs where grantee in ('RCOTRPR1','RCOTBG1') order by GRANTEE;
 
 
 
7.2、表
w 删除表中一个字段:
alter table bill_monthfee_zero set unused column date_type;
 
w 添加一个字段:
alter table bill_monthfee_zero add date_type number(1);
 
w 查看用户下所有的表
 

 SQL>select * from user_tables; //显示用户表
    select * from user_views;//显示用户视图
    select * from tab;显示表和视图


 
w 查看表的结构
 

 SQL>describe tablename;


 
w 查看名称包含log字符的表
 

 SQL>select object_name,object_id from user_objects
    where instr(object_name,'LOG')>0;


 
w 查看某表的创建时间
 

 SQL>select object_name,created from user_objects where object_name=upper('&table_name');


 
w 查看某表的大小
 

 SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
    where segment_name=upper('&table_name');


 
w 查看放在ORACLE的内存区里的表
 

 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;


 
w SELECT FOR UPDATE
select for update语句用于锁定行,阻止其他用户在该行上修改数据。当该行被锁定后其他用户可以用SELECT语句查询该行的数据,但不能修改或锁定该行。
w 表字段的信息查询sql
 

 SQL>select i.index_name, i.uniqueness, c.column_name, c.COLUMN_POSITION
     from dba_indexes i, dba_ind_columns c
     where i.index_name = c.index_name
     and i.table_name = 'COTS_TAB_ACCT_MVMT'


 
w 查看某表的约束条件
 

 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
       from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name
       from user_constraints c,user_cons_columns cc
       where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
       and c.owner = cc.owner and c.constraint_name = cc.constraint_name
       order by cc.position;


 
w 锁定表
LOCK语句常常用于锁定整个表。当表被锁定后,大多数DML语言不能在该表上使用。LOCK语法如下:
LOCK schema table IN lock_mode
其中lock_mode有两个选项:
    share 共享方式; exclusive 唯一方式
例:
LOCK TABLE intentory IN EXCLUSIVE MODE
7.3、索引
(1)95/5规则
     如果查询的结果返回的行数少于表中所有行的5%,索引是检索数据的最快方法。
(2)位图索引
     如果数据集中不同的行之间只有很小的差异,适合使用位图索引。如:
     create bitmap index bi_pet_sex_flag_mf on pets(pet_sex_flag_mf);
w 查看索引个数和类别
SQL>select index_name,index_type,table_name from user_indexes order by table_name;


w 查看索引被索引的字段
SQL>select * from user_ind_columns where index_name=upper('&index_name');


w 查看索引的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
       where segment_name=upper('&index_name');
7.4. 异常处理
    (1)exception中可以使用的全局变量
         sysdate : 系统时间
         rownum : 行号
         sqlcode : Oracle错误序号
         sqlerrm :Oracle错误消息
    (2)异常处理形式:
         ...
         Begin
         ...
         Exception
           When 异常名1 then ...
           When 异常名2 then ...
           When others then ...
         End;
4. 游标
    (1)申明
         在declare区域中申明。如:
         declare
           cursor get_student_data is
                  select name , age from student ;
         begin
           ... 
         end ;
   (2)使用
         两种方式。
         a) 单行方式(只能使用一行,而且麻烦)。如:
         open get_student_data ;
         fetch get_student_data into v_name , v_age ;
         ...
         close get_student_data ;
         b) 循环方式(可处理多行,简单)。如:
         for c1_rec in get_student_data
             loop
               ...使用c1_rec.name、c1_rec.age(c1_rc不用事先定义)...
             end loop ;
5. minus和intersect
    和union一样,他们作用于两个结果集之间。
    minus : 集合的差。
    intersect : 集合的交。
    必须:两个结果集的类型一样。
6. truncate、delete与drop
    (1)语法
         truncate table tableName ;
         delete from tableName [ where ... ] ;
         drop table tableName ;
    (2)区别
         truncate和delete是删除表数据,drop是删除整个表(包括结构和数据)。
         delete是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。
         truncate、drop是ddl,操作立即生效,原数据不放到rollback segment中,不能回滚;操作不触发trigger。
        truncate不能授予任何人清空他人的表的权限,不能清空父表

分享到:
评论

相关推荐

    DBA职业生涯2-如何成为DBA

    许多年来,我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈,现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是...

    怎样成为明星DBA(揭开DBA的神秘面纱,传授职业成功之道

    本书汇集了作者有关数据库管理的真知灼见,讲述了DBA 的方方面面,有技术的,还有生活的。作者本人不仅专业技术过硬,还当过篮球教练,对人生,尤其是DBA 的生存之道有很独到的领悟... 本书汇集了作者有关数据库管理...

    Oracle11gR2DBA操作指南

    资源名称:Oracle 11g R2 DBA操作指南内容简介:Oracle数据库是一款优秀且应用广泛的关系数据库管理系统。本书全面、详细地讲解了Oracle llgR2数据库管理技术,是学习0racle数据库管理的实用教材和参考书。 本书共...

    数据库管理员DBA必读

    书据库管理员,英文是Database Administrator,简称DBA。这个职位对不同的人意味着不同的意义。一个小的软件开发工作室和一个分工高度明细的大公司相比,DBA的职责来得更加宽泛一些。一个公司,不管它是自己开发应用...

    DBA级SQLServer数据库从入门到精通 完整版PDF

    本教程会包含多个阶段来学习,从零基础到高级进阶,再到DBA的全套教程,主要内容包括Sql语言基础、数据库设计原则、高级查询技巧、存储过程编写、性能优化调整等。同时,可以以实例进行讲解,帮助读者更好地理解Sql...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    ├─新版MySQL DBA 课件ppt │ 第一课数据库介绍篇.pdf │ 第七课MySQL数据库设计.pdf │ 第三十一课percona-toolkits 的实战及自动化.pdf │ 第三课MySQL授权认证.pdf │ 第九课MySQL字符集.pdf │ 第二十一课MySQL...

    OracleDBA高可用、备份恢复与性能优化

    资源名称:Oracle DBA高可用、备份恢复与性能优化资源目录:第 1章 RAC真应用集群 11.1 单实例数据库并发控制原理 ..... 11.1.1 并发访问的数据不一致问题 .... 11.1.2 事务以及隔离级别 .. 21.1.3 支持并发的 lock...

    Oracle DBA突击帮你赢得一份DBA职位(完全高清版)1

    第1章至第4章是基础篇,包括数据库建模、Oracle体系结构、网络结构、备份恢复和使用OEM,这些对于刚刚从事DBA或者试图转做DBA的朋友都是必备知识。第5章至第9章是中级篇,专门讨论性能调整,包括性能优化原理、...

    10年资深DBA老郭(门下已出多位DBA学生)老男孩MySQL DBA标杆班实战视频教程

    这是一次关于MySQL DBA实战学习的精华提升教程,讲师是有超过10年资深DBA经验的老郭讲师带领同学们深入实战。课程内容需要同学们具备一些MySQL技术的基础知识,非常适合有一定经验,想要提升自己MySQL技术的同学。...

    【No0230】姜承尧MYSQL DBA 44天视频课程

    【No0230】姜承尧MYSQL DBA 44天视频课程【No0230】姜承尧MYSQL DBA 44天视频课程【No0230】姜承尧MYSQL DBA 44天视频课程【No0230】姜承尧MYSQL DBA 44天视频课程【No0230】姜承尧MYSQL DBA 44天视频课程【No0230】...

    DBA 攻坚 左手Oracle右手MySQL

    DBA 攻坚 左手Oracle右手MySQL oneNote格式

    DBA面试题 oracle

    DBA面试题 oracle 1:列举几种表连接方式 2:不借助第三方工具,怎样查看sql的执行计划....

    DBA的成长历程(oracle)

    许多年来,我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈,现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是...

    [Oracle.DBA手记_数据库诊断案例与性能优化实践].《Oracle.DBA手记》编委会.扫描版

    本书由多位工作在数据库维护一线...作者不仅强调案例的实用性和可操作性,更着重再现解决问题的过程和思路并总结经验教训,希望将多年积累的工作方法,以及对dba的职业发展的感悟展现出来,供广大oracle dba借鉴参考。

    mysql dba 常用脚本

    mysql dba 常用脚本 运行脚本可以方便管理MYSQL运行脚本可以方便管理MYSQL运行脚本可以方便管理MYSQL

    ORACLE_DBA教程

    ORACLE_DBA教程 参考书籍 《ORACLE数据库系统基础》俞盘祥 《数据库管理及应用开发》沈佩娟 汤荷美 电子工业出版社 《ORACLE数据库管理员教程》 孙宏昌 金 毳 数据库管理员是一个或一组全面负责管理和控制数据库...

    新浪首席DBA主讲 Mysql高级DBA实战

    新浪首席DBA ,在大规模高并发、海量访问特别是大规模数据库运维方面有丰富的管理和维护经验。热衷于数据库设计、性能优化、分布式部署方案和高可用性方面的研究。曾就职于康盛创想,从事大访问量网站的部署以及优化...

    Oracle数据库DBA面试题50道及答案.pdf

    Oracle数据库DBA面试题50道及答案; 想面试oracle岗位的可以下载看下

    DBA MySQL数据库工程师(2021版)视频教程

    DBA MySQL数据库工程师(2021版)视频教程 课程大纲: 第1章 MySQL简介及安装 第2章 MySQL基础管理 第3章 SQL语句基础应用 第4章 索引的基本管理 第5章 存储引擎 第6章 日志管理 第7章 备份恢复 第8章 主从复制基础 ...

Global site tag (gtag.js) - Google Analytics