目前用户使用默认表空间: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;