0
点赞
收藏
分享

微信扫一扫

数据备份---pds


目前用户使用默认表空间:TS_DEV_PDS,就采用这个

注意:oracle的对象名称(表名,索引名,视图名)都不能超过30个字符

查看数据库系统限制:desc user_tables;

对数据库表分析:

analyze table TBL_BATCH_WORK compute statistics for all indexes;


查看Oracle版本:select * from v$version;

查看执行错误:select name, text from user_errors;

在存储过程中执行DDL:execute immediate'truncate table t';

查询一张表DDL:

select dbms_metadata.get_ddl('TABLE','ACC_MER_SHADOW') from dual;


本用户读取其他用户对象的权限:
select * from user_tab_privs;
本用户所拥有的系统权限:
select * from user_sys_privs;


统计信息的生成可以有完全计算法和抽样估算法。SQL例句如下:

完全计算法: analyze table TBL_BATCH_WORK compute statistics;
抽样估算法(抽样20%): analyze table  TBL_BATCH_WORK estimate statistics sample 20 percent;

我们可以采用以下两种方法,对数据库的表和索引及簇表定期分析生成统计信息,保证应用的正常性能


exist 可以用表连接替换效率更高


ANALYZE TABLE table_name COMPUTE STATISTICS;

ANALYZE INDEX index_name ESTIMATE STATISTICS;


dbms_stats的作用主要是替代analyze的收集统计信息这一块的功能,且在这一方面做了相当大程度上的增强。以你的analyze table abc compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select * from user_tables where table_name='ABC';观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。收集统计信息的目的是为了使基于CBO的执行计划更加准确


查看锁表进程SQL语句:

selectsess.sid,

  

  

  

  

  

   from v$locked_object lo,

  

  

where ao.object_id = lo.object_id and lo.session_id = sess.sid;


查看锁表进程SQL语句

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;


杀掉锁表进程:
如有記錄則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,1429,即可解除LOCK
alter system kill session '477,87' immediately ;


查看被锁住的表

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;


ORA-01031: 权限不足”的问题,有一个老师说要用conn system/manager登录,用

grant select any table to scott; 

授予用户询所有表的权限 

grant select any dictionary to scott; 

再次授取用户select任何字典的权限

我也用了也得到权限:

SQL> grant select any table to scott;

授权成功。

SQL> grant select any dictionary to scott;

授权成功。


GRANT CREATE ANY TABLE TO COG;


对于,归档模式下合非归档模式下好像不一样。
非归档:insert into A select * from B;
归档: insert into A  nologging select * from B;
不知道对否?


"CREATE TABLE AS SELECT"的优化:"CREATE TABLE AS SELECT"

"INSERT INTO AS SELECT"的优化:"INSERT  



      查看Oracle服务器目录空间

select * from dba_directories

      建立表空间

建立分区时候可以指定所属表空间

TABLESPACE "FM_rollback"    

NOLOGGING  

 DATAFILE '/opt/oracle/admin/nbcsora/dpdump/LUNTAN.DBF'  SIZE 5M 

   MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO


TABLESPACE FM_rollback
NOLOGGING
DATAFILE '/opt/oracle/admin/nbcsora/dpdump/LUNTAN.DBF ' 
SIZE 1024M 
AUTOEXTEND ON 
NEXT 32M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;


      查看当前默认表空间

select username,default_tablespace from user_users;

      删除表空间

DROP TABLESPACE FM_rollback

      建立备份表


      建立表分区

ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));

command := 'ALTER  TABLE  ACC_MER_SHADOW_ROLLBACK_RECENT 

   ADD PARTITION ||psequence||' VALUES('''||psequence||''')  TABLESPACE ;

  

execute immediate command;


      从分区中查询

Select  * From user_extentsWHERE  partition_name='分区名';

select * from ACC_MER_SHADOW_ROLLBACK_RECENT 

8.   锁表及解锁

select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录

锁定整个表

lock table tbl_t1 in row share mode nowait;                --2
lock table tbl_t1 in share update mode nowait;                --2
lock table tbl_t1 in row exclusive mode nowait;                --3
lock table tbl_t1 in share mode nowait;                        --4
lock table tbl_t1 in share row exclusive mode nowait;                       --5
lock table tbl_t1 in exclusive mode nowait;                --6
   0:none
   1:null      空                
   2:Row-S     行共享(RS):共享表锁  
   3:Row-X     行专用(RX):用于行的修改
   4:Share     共享锁(S):阻止其他DML操作
   5:S/Row-X   共享行专用(SRX):阻止其他事务操作
   6:exclusive 专用(X):独立访问使用

Oracle 中实现加锁机制上主要有两种方式:自动加锁和人工加锁。
自动加锁是指用户在insert ,update,delete,DCL语句和DDL语句时由Oracle 系统自动加锁。
除了由Oracle提供的自动加锁之外,还提供了人工加锁它的命令是:lock table 表名 in 锁类型 mode 【nowait】
而所谓的解锁也就是等该事物提交(commit)或回滚(rollback)后,系统释放资源,其他用户才可以使用该资源。

9.   插入数据

command := 'insert into ACC_MER_SHADOW_ROLLBACK_RECENT select '''||psequence||''' as SEQUENCE, '''||pworkdate||''' as WORKDATE, t.* from ACC_MER_SHADOW t';

execute immediate command;

  删除表分区

ALTER TABLE SALES DROP PARTITION P3;

删除整个分区表:drop table  ACC_MER_SHADOW_BAK purge;

11. 删除分区数据

ALTER TABLE SALES TRUNCATE PARTITION P2;

删除整个分区表:drop table  ACC_MER_SHADOW_BAK purge;

  查询表分区

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'ACC_MER_SHADOW_BAK';

  显示数据中分区

select * from DBA_PART_TABLES where table_name=upper('dinya_test')

表分区有以下优点:

1、数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高。

2、数据修剪:保存历史数据非常的理想。

3、备份:将大表的数据分成多个文件,方便备份和恢复。

4、并行性:可以同时向表中进行DML操作,并行性性能提高。


command := 'create table ACC_MER_SHADOW_ROLLBACK_RECENT

  

     "SEQUENCE" VARCHAR2(16) NOT NULL ENABLE,

     "WORKDATE" VARCHAR2(8) NOT NULL ENABLE,

    

    

  

   PARTITION  BY 

   (         

      PARTITION ||psequence||' VALUES('''||psequence||''')  TABLESPACE 

  ;

  

  

  


  导出表数据的Insert语句

select 'INSERT INTO TBL_BATCH_CONFIG (ORG_ID,BATCH_ID,BATCH_NAME,

TYPE,EXE_ORD,FAIL_EXIT,IS_OPEN,STEP_METHOD,THREAD_NUM,REMARK)

VALUES(' || '''' || ORG_ID ||'''' || ','

|| '''' || BATCH_ID || '''' || ','

|| '''' || BATCH_NAME || '''' || ','

|| '''' || TYPE || '''' || ','

|| '''' || EXE_ORD || '''' || ','

|| '''' || FAIL_EXIT || '''' || ','

|| '''' || IS_OPEN || '''' || ','

|| '''' || STEP_METHOD || '''' || ','

|| '''' || THREAD_NUM || '''' || ','

|| '''' || REMARK || '''' || ');'

From TBL_BATCH_CONFIG;


其它相关数据字典解释
user_tables        表
user_tab_columns   表的列
user_constraints   约束
user_cons_columns  约束与列的关系
user_indexes       索引


查看系统Job

查看创建的job
查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息。
select * from dba_jobs;

举报

相关推荐

0 条评论