目前用户使用默认表空间: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
我们可以采用以下两种方法,对数据库的表和索引及簇表定期分析生成统计信息,保证应用的正常性能
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,
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:
grant
授予用户询所有表的权限
grant
再次授取用户select任何字典的权限
我也用了也得到权限:
SQL>
授权成功。
SQL>
授权成功。
GRANT
对于,归档模式下合非归档模式下好像不一样。
非归档:insert into A
select * from B;
归档:
不知道对否?
"CREATE TABLE AS SELECT"的优化:"CREATE TABLE AS SELECT"
"INSERT INTO AS SELECT"的优化:"INSERT
1.
select * from dba_directories
2.
建立分区时候可以指定所属表空间
CREATE
EXTENT
CREATE
NOLOGGING
DATAFILE
SIZE
AUTOEXTEND
NEXT
EXTENT
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
execute immediate command;
7.
Select
select * from
ACC_MER_SHADOW_ROLLBACK_RECENT
8.
select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录
锁定整个表
lock table tbl_t1 in row share mode
nowait;
lock table tbl_t1 in share update mode nowait;
lock table tbl_t1 in row exclusive mode nowait;
lock table tbl_t1 in share mode nowait;
lock table tbl_t1 in share row exclusive mode
nowait;
lock table tbl_t1 in exclusive mode nowait;
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';
10.
ALTER TABLE SALES DROP PARTITION P3;
删除整个分区表:drop table
11.
ALTER TABLE SALES TRUNCATE PARTITION P2;
删除整个分区表:drop table
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
14.
select 'INSERT INTO TBL_BATCH_CONFIG (ORG_ID,BATCH_ID,BATCH_NAME,
TYPE,EXE_ORD,FAIL_EXIT,IS_OPEN,STEP_METHOD,THREAD_NUM,REMARK)
|| '''' || BATCH_ID || '''' || ','
|| '''' || BATCH_NAME || '''' || ','
|| '''' || TYPE || '''' || ','
|| '''' || EXE_ORD || '''' || ','
|| '''' || FAIL_EXIT || '''' || ','
|| '''' || IS_OPEN || '''' || ','
|| '''' || STEP_METHOD || '''' || ','
|| '''' || THREAD_NUM || '''' || ','
|| '''' || REMARK || '''' || ');'
其它相关数据字典解释
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;