目录
约束:........................................................................................................................ 1
视图:........................................................................................................................ 2
索引:........................................................................................................................ 2
表空间及数据文件:............................................................................................... 2
重做日志:............................................................................................................... 3
归档:........................................................................................................................ 3
内、外连接:........................................................................................................... 4
账户及权限:........................................................................................................... 5
常用函数:............................................................................................................... 7
备份:........................................................................................................................ 7
其他:........................................................................................................................ 8
约束:alter table test modify aaa not null; 为test表aaa字段创建非空约束。注意:如果表已经有数据,并且该列有 NULL 值,非空的约束我们是无法添加的。
alter table test modify aaa null;删除非空约束
alter table test modify aaa default ‘贵阳’; 修改表test列aaa的默认值为贵阳
alter table test alter aaa drop default; 删掉默认设置
alter table test add constraint qwe unique (aaa);为test表aaa字段创建唯一约束qwe。
alter table test add constraint qwe primary key (aaa);
alter table test add constraint qwe primary key (aaa,bbb); 同时添加2个主键,一个一个添加的时候会报错。
alter table test add constraint qwe check(aaa>3);
alter table test add constraint qwe foreign key (aaa) references test2(eee); 外键约束,一个表可以有多个外键,外键是另外一张表的主键,同时外键列的内容必须包含在另外一张表主键列的内容中。我们也可以在创建表时指定。
alter table test disable constraint qwe; 禁用约束qwe
alter table test enable constraint qwe; 启用约束qwe
select * from dba_constraints;
alter table test drop constraint qwe;
当drop或delete某张表失败提示锁超时时,select * from v$lock 查看被锁事务的TRX_ID,再select * from v$sessions,根据TRX_ID查找该事务对应的SESS_ID,最后 sp_colse_session(找到的SESS_ID)关闭对应的会话。
视图:create view test as select……创建视图
create or replace view test as ……修改视图
索引:create unique index qwe on test(aaa);创建唯一索引
create bitmap index qwe on test(aaa);创建位图索引
create cluster indx qwe on test(aaa);创建聚集索引
位图索引与聚集索引不能在一张表上
select * from dba_indexes where table_name like ‘TEST’;查询表test的索引,注意是index后面加es,而不是加s
drop index qwe;
表空间及数据文件:在 DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
create tablespace test datafile '/home/dmdba/dmdbms/data/DAMENG/test.dbf' size 1024? autoextend on next 4 maxsize? unlimited;
alter tablespace test resize datafile '/home/dmdba/dmdbms/data/DAMENG/test.dbf' to 1025;
alter tablespace test add datafile '/home/dmdba/dmdbms/data/DAMENG/test.dbf' size 1024;
alter tablespace test datafile '/home/dmdba/dmdbms/data/DAMENG/test.dbf' autoextend off;
select * from dba_tablespaces;
select * from user_tablespaces;
select tablespace_name,bytes/1024/1024 as "free_space" from dba_free_space where tablespace_name='TEST' 查看表空间可用空间
select tablespace_name,user_bytes from dba_data_files where tablespace_name='TEST'.查看表空间可用空间
alter tablespace ETST offline;
alter tablespace TEST online;
select tablespace_name,status from dba_tablesapces where tablespace_name =’TESE’;查看表空间状态
alter tablespace TEST rename to test;
drop tablespace test;
重做日志:select * from dba_objects;
select * from sysobjects;
select * from v$rlog 查看系统重做日志状态
select * from v$rlogfile 查找重做日志文件
alter database resize logfile ‘/hosm/dmdba/dm/dmdbma/data/DAMENG/test.log’ to 1024;
修改日志大小
alter database add logfile ‘/hosm/dmdba/dm/dmdbma/data/DAMENG/bbb.log’ size 1024;
增加日志
alter database rename logfile ‘/hosm/dmdba/dm/dmdbma/bbb.log’ to ‘/users/ems/rsyslog1.log’;
迁移日志
归档: 开启/关闭归档:第一步:alter database mount;
第二步:alter database archivelog; 开启归档
或 alter datebase noarchivelog; 关闭归档
2、创建归档文件(默认文件大小1024M)
第一步:alter database mount;
第二步:alter database archivelog;
第三步:alter database add archivelog ‘DEST=/home/dmdba/dm7/dmdbms/data/DAMENG/trace,TYPE=LOCAL,FILE_SIZE=64,SPACE_LIMIT=0’;
其中DEST:归档路径
TYPE:归档类型
FILE_SIZE:文件大小
SPACE_LIMIT:空间限制大小
3、修改、删除归档文件(需要先关闭归档)
第一步:alter database mount;
第二步:alter database noarchivelog;
第三步:alter database modify archivelog ‘DEST=/home/dmdba/dm7/dmdbms/data/DAMENG/trace,TYPE=LOCAL,FILE_SIZE=128,SPACE_LIMIT=0’;
或者:alter database delete archivelog ‘DEST=/home/dmdba/dm7/dmdbms/data/DAMENG/trace’;
4、查看归档模式(需要数据库OPEN状态)
?? select arch_mode from v$database;
5、查询归档日志文件信息
?? select * from v$archived_log;
6、查询归档状态(非归档状态显示未选定行)
?? select * from v$arch_status;
7、其他归档信息数据字典
???v$arch_file? ??v$arch_queue??? v$arch_send_info?? ???v$backupset_arch
?? v$backupset_search_dirs
8、查看归档类型type、归档路径dest、文件大小file_size、空间限制大小space_limit等;
select * from v$dm_arch_ini
内、外连接:set linesize 999 pagesize 999 设置1行及1页显示字节数
select a.*,b.* from test a join test2 b on a.”aaa”=b.”eee”;内连接
select a.*,b.* from test a left/right/full join test2 b on a.”aaa”=b.”eee”; 左/右/全外连接
select a.*,b.* from test a cross join test2 b; 交叉内连接
select a.*,b.* from test a naturaljoin test2 b;自然内连接
select a.*,b.* from test a join test2 b using (“aaa”); using内连接,两个表必须都要有using后面的(aaa)指定列。列出两表aaa值相等的数据行。类似于select a.*,b.* from test a join test2 b on a.“aaa”=b. .“aaa”.
但using输出结果没aaa字段,on语句输出结果包含aaa字段。
账户及权限:alter user test identified by “sssssss”; 密码要用双引号引起来
isql ‘test/“test-123456”’@his1;使用带有特殊字符的密码登录时,要用双引号把密码引起来,再用单引号把用户名及密码都引起来。
或者使用这种方式:先输入isql,回车,再输入用户名,回车,再输入密码,回车。
alter user test account lock; 锁定账户
alter uers test account unlock; 解锁账户
alter user test read only; 用户只读
alter user test not read only; 解除用户只读
alter user test default tablespace ssssss;
用户可对应多权限或角色
系统权限:对数据库对象的,比如create table/role/view等
对象权限:对对象中数据的,比如update,select,insert,delete等
sp_set_role
dba_sys_privs 用户/角色拥有的系统权限信息
dba_tab_privs 表权限信息
dba_role_privs 角色权限
grant create table,create view,create role,create index to test;
grant drop any table,drop any index to test;
grant select,insert,update(aaa,bbb,ccc) on his.test to test 将his表空间test表的aaa,bbb,ccc三列的查询、插入、更新权限赋予用户test。回收列权限的时候,用下面这个语句,不能用revoke select,insert,update(aaa,bbb,ccc) on his.test from test,revoke不针对列权限回收。
revoke select,insert,update on his.test from test;
select * from dba_col_prives where grantee=test;
select * from dba_sys_privs where grantee ='test';
grant update,insert,delete,select on his.test to test;
select * from dba_tab_privs where grantee ='TEST';
grant public to test ;
select * from dba_roles;
grant create table to role_name;
grant dba to role_name;
grant update on table test to role_name;
select * from dba_role_privs where grantee='TEST';
call sp_set_role (‘test2’,0);禁用角色,注意此处为单引号,不要call也行
call sp_set_role (‘test2’,1);启用角色,注意此处为单引号,不要call也行
drop role test2;删除角色
alter user test limit failed_login_attemps 3,password_life_time 60;修改test用户登录失败次数和密码有效期
密码复杂度修改:
修改dm.ini的PWD_POLICY值,重启服务生效,其中:
0 无策略
1 禁止与用户名相同
2 口令长度不小于9
4 至少包含一个大写字母
8 至少包含一个数字
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
上面的修改方式,只针对新增加的用户。
如果是已存在的用户,若要需要其密码复杂度,则执行以下语句:
alter user test password_policy 0;
或者执行以下SQL语句:
sp_set_para_value(1,’pwd_policy’,2)??? 2为密码复杂度代码
其中括号内第一个数值:
1:内存和ini文件都修改,一般修改动态配置参数
2:只在ini文件修改,可用于动态和静态参数修改。需要重启生效
select password_policy from sysusers where ID=(selsect user_id from dba_users where username =’test’);查询test用户的密码复杂度等级
sysusers里面主要存放用户资源限制类信息
dba_users里面主要存放用户基本信息和状态。
IP控制:
分两类,允许IP和禁止IP,其中禁止IP优先
alter user test allow_ip “192.168.100.111”,”192.168.101.111” 允许此两IP通过,注意IP要用双引号引起来
alter user test allow_ip “192.168.100.*”,”192.168.101.*”? 允许此两网段通过
alter user test not_allow_ip??? 禁止IP
取消IP限制:
alter user test allow_ip null
alter user test not_allow_ip null
IP被限制后,isql提示无效的IP
IP被限制后,alarm -log 0检索正常但会提示err_buf:无效的IP,经测试不影响告警入历史库
常用函数:select round(“aaa”,2) from test;从表test中查询aaa列,并四舍五入保留2位小数
select nvl(“aaa”,0) from test; 从表test中查询aaa列,并判断是否为空,若为空用0代替
select to_char(acting_time,’YYYY-MM-DD’) from test; 查询表test中acting_time列,并将其日期型或数值型转化为字符型
select “aaa”,case “ccc” when 数值1 then 2*“bbb” when 数值2 then 3*”bbb” else “ddd” end case from test;从表test中查询aaa和ccc,其中当ccc等于数值1,ccc返回2倍的bbb,当ccc等于数值2,ccc返回3倍的bbb,否则ccc返回ddd。
insert into test values (1,now); 插入一行数据:1和当前时间,精确到毫秒
insert into test values (1,sysdate); 插入一行数据:1和系统时间,精确到秒
备份:逻辑备份:exp、imp
物理备份:脱机备份(数据库关闭状态),联机备份(归档模式,数据库运行状态)
dimp his/Gzdw12345@his1 tables=t1.tmp show=y remap_schema=HIS:TEST 参数show表示打印出需要导入的表的原始信息,包含模式、表名称等,但不执行导入语句。模式名最好为大写。
alter database open或mount或suspend;
select * from v$instance;
select name,status$ from v$instance;
dimp SYSDBA/SYSDBA@his1 IGNORE=Y ROWS=Y FULL=Y file=xxx;( IGNORE=Y,忽略报错;ROWS=Y,数据行;FULL,整表或库)
./dexp help 或./dimp help 可以查看
Dexp SYSDBA/SYSDBA@his1 file=/users/ems/dd.dmp tables=alarm_alleventlog2021% fuzzy_match=y query=”where fac_name = ‘test’”
物理备份:
备份到his服务器,而不是本地工作站定义的备份目录,数据库dmdba用户必须具备写入权限数据库必须处于open状态全库或表空间备份需要归档模式,且必须有归档日志表级:
backup table test backupset ‘/home/dmdba/dm/dmdbms/test_bak’ 物理备份表test
restore table test from backupset ?‘/home/dmdba/dm/dmdbms/test_bak’ 物理还原表数据,不能新建表,这是与逻辑备份不一样的地方。
如果表已删除,要先还原表结构,再还原表数据:
restore table test struct from backupset ……
如果还原表数据时,报错“违反引用约束”:
restore table test without constraint from backupset ……
数据库级:
backup database full backupset ……
数据库必须处于open状态
达梦bin目录下./dmrman工具:
show backupset ‘/home/dmdba/….’
其他:create schema ddddd; 创建模式dddd
create schema ddddd authorization test; 给test用户创建ddddd模式
select * from dba_objects;
select owner,object_name,object_type,status from dba_objeces; 此语句里的owner对应的就是模式名
objece 对象
select * from test order by aaa desc,bbb sec; 前面的排序条件,优先级高于后面的排序条件
select aaa,count(bbb) from test group by xxx having count(bbb)>100;
select aaa,bbb from test where bbb>all(select bbb from test where ccc=108); 等同于 select aaa,bbb from test where bbb> (select max(bbb) from test where ccc=108); 大于所有;
同理:<all等同于<min
select aaa,bbb from test where bbb>any(select bbb from test where ccc=108); 等同于 select aaa,bbb from test where bbb> (select min(bbb) from test where ccc=108); 大于其中任意一个;同理:<any 等同于<max
in? 等于列表中的任意一个
SQL语句环境下输入host加操作系统命令,可以执行操作系统命令,比如:host top,相当于在操作系统执行top命令,host pwd相当于操作系统pwd命令,host whoami……
Select c.aaa,b.bbb from test a left join test2 b on a.ccc=b.ccc;
select * from dba_constraints where table_name ='TEST';
select * from V$CONNECT; 查看连接
set schema HIS;切换同一用户多个模式
CREATE SCHEMA "his2" AUTHORIZATION "HIS";为his用户创建模式his2
dimp his/Gzdw12345@his1:5236 file='/users/ems/test.dmp'? remap_schema=HIS:TEST? 将his模式导出的表导入到test模式下
remap_schema
union all或distinct
select aaa from test union distinct select bbb from test2;
select distinct aaa from test;
undo,存在roll表空间
redo,重做日志
归档日志
select * from V$rlogfile; 查看重做日志
select * from dba_tables where table_name like '%LOG%'
select * from sysusers; 查看用户最近登录时间及IP,允许/禁止登录IP,允许/禁止登录时间段等
update test set alarm_content=replace(alarm_content,’test1’,’test2’); 将test表中alarm_content字段中test1替换为test2,其中被替换和替换对象(如果是汉字)需用单引号引起来。
alter table test modify “aaa” fault ‘test’; 修改test表aaa字段默认值:test
select * from dba_tab_columns where column_name like ‘%IP%’;
select top 10 * from (select? distinct aaa from test);
select count(distinct aaa) from test;
dba_sys_privs??????? 以系统为单位的授权信息,grant
dba_role_privs????? 以角色为单位的授权信息,grant
dba_tab_privs?????? 以表为单位的授权信息,grant
dba_col_privs??????? 以列为单位的授权信息,grant
dba_cons_columns??????? 带约束的列
dba_tab_columns 所有表的所有列
insert into test (select top 10 aaa,bbb,ccc,ddd from test2 order by bbb)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
#! /bash/bash
disql 'edb/"tset1234@"'svr1 <<EOF
backup database full backupset ‘dmbak’;
EOF??????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????crontab ?-e? ???? 0? 0? 20 ?1,4,7,10 ?* ?sh ?/users/ems/bf.sh
Select * from dba_tab_privs where dba_tab_privs.row like ‘%TEST%’;
Drop user test cascade; 级联删除用户test
Select * from dba_tab_privs where grantee like ‘%TEST%’;
Create table test (a int ,b int , c as (a+b));
连接数据库另一种方法:
disql? /nolog
conn HIS
输入密码
如果执行某语句,敲完回车后没反应,可以试着输入/再回车
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #达梦数据库个人学习笔记分享 #目录约束 #1视图 #2