数据备份---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;

在存储过程中执行DDLexecute 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,

    sess.serial#,

    lo.oracle_username,

    lo.os_user_name,

    ao.object_name,

    lo.locked_mode

    from v$locked_object lo,

    dba_objects ao,

    v$session sess

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,記錄下SIDserial# ,將記錄的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   INTO AS SELECT"

 

 

1.       查看Oracle服务器目录空间

select * from dba_directories

2.       建立表空间

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

CREATE TABLESPACE "FM_rollback"    

 NOLOGGING  

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

EXTENT    MANAGEMENT LOCAL

 SEGMENT SPACE MANAGEMENT AUTO

 

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

 

3.       查看当前默认表空间

select username,default_tablespace from user_users;

4.       删除表空间

DROP TABLESPACE FM_rollback

5.       建立备份表

 

6.       建立表分区

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  TS_DEV_PDS';

   

execute immediate command;

 

7.       从分区中查询

Select  * From user_extents WHERE  partition_name='分区名';

select * from ACC_MER_SHADOW_ROLLBACK_RECENT  partition(P2222);

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';

  dbms_output.put_line(command);

  execute immediate command;

10.   删除表分区

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;

12.   查询表分区

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'ACC_MER_SHADOW_BAK';

13.   显示数据中分区

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,

      "APP_ID" VARCHAR2(64) NOT NULL ENABLE,

      "ORG_ID" VARCHAR2(32) NOT NULL ENABLE,

      "BRANCH_ID" VARCHAR2(32),

      "ACC_TYPE" CHAR(1),

      "MONEY_PAY" NUMBER(21,2),

      "MONEY_PREPAY" NUMBER(21,2),

      "PREPAY_FEE" NUMBER(21,2),

      "PREPAY_CORPUS" NUMBER(21,2),

      "PREPAY_ACCRUAL" NUMBER(21,2),

      "PREPAY_IPF" NUMBER(21,2),

      "MONEY_DEFER" NUMBER(21,2),

      "MONEY_FROZEN" NUMBER(21,2),

      "MONEY_TRANS" NUMBER(21,2),

      "UPDATE_TIME" VARCHAR2(8),

      "STATE" CHAR(1),

      "MARK" CHAR(1),

      "SHOP_ID" VARCHAR2(32),

      "SHOP_NO" VARCHAR2(15),

      CONSTRAINT "PK_ACC_MER_SHADOW_ROLLBACK" PRIMARY KEY ("SEQUENCE", "WORKDATE", "APP_ID", "ORG_ID")

    )

    PARTITION  BY  LIST(SEQUENCE)

           

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

    )';

   

   

    dbms_output.put_line(command);

 

14.   导出表数据的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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值