`
chengyue2007
  • 浏览: 1489958 次
  • 性别: 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职责(岗位说明书)

    DBA职责(岗位说明书) 数据库管理员(Database Administrator,简称 DBA)是负责管理和维护数据库服务器的关键人物,主要职责包括确保服务器工作状态正常、检查硬盘空间、查看日志和跟踪文件、检查备份的有效性、...

    DBA面试题 oracle

    DBA面试题 Oracle 本文总结了 Oracle 数据库管理员(DBA)面试中的一些重要知识点,从表连接方式、执行计划、CBO 和 RBO、SQL 调整、索引、绑定变量、执行计划、排序等方面进行了详细的解释。 一、表连接方式 在 ...

    Oracle创建系统角色DBA

    在Oracle数据库中,系统角色是预定义的一组权限集合,它们为数据库管理员(DBA)提供了方便的方式来管理和分配权限。DBA角色是最具权限的角色之一,通常赋予那些负责数据库全面管理的用户。当误删除了这个关键角色时...

    DBA 职责及日常工作职责

    DBA 职责及日常工作职责 DBA 职责是数据库管理员的职责,负责数据库系统的日常维护、监控和管理。DBA 的日常工作职责包括安装和升级数据库服务器、创建数据库存储结构、管理数据库用户、控制和监控用户对数据库的...

    mysql dba 常用脚本

    MySQL DBA(数据库管理员)在日常工作中经常需要执行各种脚本来进行数据库的管理和维护工作。这些脚本涵盖了从数据备份、恢复、性能优化到错误排查等多个方面。以下是一些MySQL DBA常用的知识点,结合“mysql_mgr_...

    OracleDBA入门、进阶学习路线图参考.pdf

    Oracle DBA 入门、进阶学习路线图参考 Oracle DBA 入门、进阶学习路线图参考是一个详细的学习路线图,旨在帮助新手 DBA 学习 Oracle 数据库管理系统。该路线图由经验丰富的 DBA eygle 根据自己的学习经历和经验总结...

    DBA 职责及日常工作分析

    数据库管理员(DBA)在IT领域中扮演着至关重要的角色,他们的主要职责是确保数据库的稳定、高效和安全运行。以下是对DBA职责和日常工作的详细解析: 1. **安装和升级**:DBA负责安装和升级数据库服务器,以及相关的...

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

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

    Oracle_DBA工作手记.pdf

    Oracle DBA工作手记中提到的DBA2.0是Oracle数据库管理员领域的一次重要概念革新,这一概念在2008至2009年间伴随着Oracle Database 10g的成熟和11g版本的推行而正式提出。DBA2.0不只是一个简单的概念,而是在长期实践...

    ORACLE DBA工作笔记 运维数据迁移与性能调优

    标题中提到的“ORACLE DBA工作笔记 运维数据迁移与性能调优”揭示了这本书籍主要围绕着Oracle数据库管理员(DBA)在日常工作中经常需要进行的两项关键任务:数据迁移和性能调优。作为一名Oracle DBA,不仅要负责...

    超经典MySQL DBA培训笔记

    MySQL DBA,全称MySQL Database Administrator,是专门负责MySQL数据库管理、优化、监控与故障排除的专业角色。这份“超经典MySQL DBA培训笔记”显然涵盖了MySQL数据库管理的各个方面,是DBA或者对MySQL有兴趣的学习...

    oracle_DBA常用命令

    ### Oracle DBA 常用命令详解 在Oracle数据库管理工作中,熟练掌握一系列核心命令对于高效维护数据库系统至关重要。本文将详细介绍《oracle_DBA常用命令》文档中提及的关键知识点及其应用场景,帮助读者深入理解并...

    成就DBA职业生涯_Grow That DBA Career

    【DBA职业生涯】是IT行业中一个独特且重要的领域,涵盖了数据库的管理、优化、安全以及故障排除等多个方面。本文由资深DBA Brian Peasland撰写,他分享了自己的职业发展历程,从计算机操作人员到DBA的成长经历,为...

    Oracle Database12c DBA官方手册 .rar

    DBA(Database Administrator)在Oracle数据库环境中扮演着至关重要的角色,他们负责数据库的设计、安装、配置、性能优化、备份恢复以及安全维护等工作。 本手册作为Oracle Database 12c DBA的官方指南,由清华大学...

    对数据库进行对比 DBA使用

    在数据库管理领域,DBA(Database Administrator,数据库管理员)经常需要执行各种任务,其中包括数据库的对比。数据库对比是一项关键操作,用于确保不同数据库之间的一致性、找出差异或同步更新。下面将详细介绍这...

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

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

    姜承尧MYSQL DBA视频课程(44天全)高清视频教程下载

    根据提供的文件信息,我们可以推断出这是一套关于MySQL数据库管理(DBA)的视频教程,由讲师姜承尧教授。下面将从标题、描述、标签以及部分内容中提取相关知识点,并进行详细的阐述。 ### MySQL DBA 视频课程概述 ...

    DBA日记--署名

    《DBA日记--署名》是一本记录了数据库管理员(DBA)日常工作与学习历程的书籍,作者以“白鳝”的身份分享了他的经验与感悟。这本书以其生动的叙述和丰富的技术内容,吸引了对Oracle数据库管理有兴趣的读者。通过日记的...

    大神写的MySQL DBA学习笔记

    MySQL DBA,全称Database Administrator(数据库管理员),是专门负责管理和维护MySQL数据库系统的专业人士。这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己...

    DBA常用命令集锦

    DBA 常用命令集锦 DBA(Database Administrator)是数据库管理员的简称,负责数据库的日常管理、维护和优化。DBA 需要掌握大量的命令和技术来完成日常工作。下面是 DBA 常用的命令集锦,包括连接数据库、查看用户...

Global site tag (gtag.js) - Google Analytics