DM7经常使用的命令汇总
由于DM7、DM8兼容oracle ,所以当你不知道某个命令时,大抵就是可以参照oracle的命令及语法,当然有极少的情况会不一样。常用命令如下:
1.连接登录
disql SYSDBA/SYSDBA@223.254.7.185:5236
或者默认登录
disql 连续回车即可。
2 表空间相关
select tablespace_name from dba_tablespaces; --查看所有表空间 select * from V$TABLESPACE; --2.2 查看表空间详细信息 create tablespace tbs4 datafile '/dm7/data/DAMENG/tbs4.dbf' size 100 autoextend on next 1 maxsize 2048;
--创建表空间,初始100M,最大2G,下次自动扩展为1M
3.用户
select username from dba_users;
create user test identified by "dameng123" default tablespace test; -- 密码dameng123 create user test identified by dameng123 default tablespace test; --密码—DAMENG123 select user; --查看当前登录的用户 alter user test identified by 123456789; --改密码 alter user test account lock; --锁定用户: alter user test account unlock; --解锁用户 drop user test; --删除用户 drop user test cascade;--级联删除
4.权限
select grantee,granted_role from dba_role_privs; 确定用户的角色,得到test 拥有public的角色 select grantee,privilege from dba_sys_privs where grantee='PUBLIC';查看角色的权限: 查看public的权限 grant resource to test; 分配权限
5.模式
CREATE SCHEMA "DMSCH" ;
6.表
select table_name from user_tables; 查看所有表 create table test2 (c1 int not null primary key, c2 varchar(20)); --创建普通表test2 create table test1 as select * from test2 where 1=0; 创建test1表与test2一致,不要数据 drop table test2 cascade; --删除表,级联方式 alter table test1 add constraint fk_11 foreign key(c1) references test2; --添加外键 alter table test1 add c3 varchar(20) default sysdate; --添加字段,默认为系统时间 alter table test1 drop column c3; --删除字段 insert into test1 values(1, 'aaa'); --单行插入 insert into test1 values(2, 'aaa'),(3,'bbb'); --多行插入 insert into test1 select * from test2 where c1=1; --查询其他表插入本表 update test1 set c2='bbb' where c1=1; --普通的修改语句 delete from test1 where c1=1; --普通的删除语句
7.常用的查询语句
select top 10 * from test; --普通的查询语句,仅查询10行 select * from v$version; --查询数据库版本信息 select * from sysobjects where name=‘test’; --查询表test 的表id等信息 select * from sysobjects where name=‘sysdba’; --查询模式sysdba 等相关信息 select TAB.name, SCH.name, TAB.id, sch.id
from sysobjects TAB, sysobjects SCH where TAB.name='test' and TAB.subtype$='UTAB' and TAB.schid=SCH.id; --查表对应的id和模式id select 'create table hs'||c1||' (c1 int);' from test_seq;
--建立hs1至hs100 的表或用户的思路,创建个test_seq 表插入c1位1-100,然后生成语句就可以了。 select id,count(*) from sysdba.test group by id having count(*) >1; ---分组查询id重复数据行。 select distinct * from sysdba.test; -- 查询所有字段完全不同的数据行,排除重复行
8.在其他用户执行SQL的存储过程,在C中:
create or replace procedure "%s".FF_DDL_EXEC_SQL_PROC(sqlstr clob) as begin execute immediate(sqlstr); commit; end;
9.分区表操作示例
--创建一个分区表:
create table sysdba.t_partition ( id int not null, name varchar(20), cluster primary key (id)) partition by range(id) ( partion "t_partition_p1" values less than(10) storage(on "main", cluster), partion "t_partition_p2" values less than(20) storage(on "main", cluster), partion "t_partition_p3" values less than(30) storage(on "main", cluster), partion "t_partition_pmax" values less than(MAXVALUE) storage(on "main", cluster) ) storage (on "main", cluster);
--增加分区
alter table sysdba.t_partition split partition "t_partition_pmax" at(50) into (partion "t_partition_p4", partion "t_partition_p5");
--删除分区
alter table sysdba.t_partition drop subpartition 【t_partition_p3---子表名】
9.1 查询子表分区
select * from sysdba.t_partition partition (t_partition_p1);
9.2 DM锁定子表语法:
lock table sysdba.t_partition_t_partition_p1 in share mode nowait;
(--oracle语法:lock table sysdba.t_partition partition (t_partition_p1) in share mode nowait;)
10.层次查询
select *,connect_by_isleaf isleaf, case when level =1 then 1 else 2 end part_type from sys.SYSHPARTTABLEINFO t
connect by prior part_table_id = base_table_id start with base_table_id =1533;