数据库

Oracle

序列

新建

create sequence '序列名称';
-- 创建序列名称
CREATE SEQUENCE 'sequence_name'
-- 递增`n`的序列(默认:`1`)
-- 如果`n`是正数就递增
-- 如果`n`是负数就递减
[INCREMENT BY 'n']
-- 开始值(递增默认是`minvalue`,递减默认是`maxvalue`)
[START WITH 'n'] 
-- 最大值
[{MAXVALUE 'n' | NOMAXVALUE}]
-- 最小值
[{MINVALUE 'n' | NOMINVALUE}]
-- 循环 | 不循环(默认:`NOCYCLE`)
[{CYCLE | 'NOCYCLE'}] 
-- 分配并存入到内存中(默认:`CACHE`)
[{'CACHE' 'n' | NOCACHE}]; 

查询

NEXTVAL返回序列的下一个值

CURRVAL返回序列的当前值(新建序列,无法提取当前值,只有先提取下一个值后才能再次提取当前值)

-- 提取下一个值
select '序列名称'.nextval from dual;
-- 提取当前值
select '序列名称'.currval from dual;
-- 提取多个序列
SELECT '序列名称'.nextval FROM ( SELECT LEVEL FROM dual CONNECT BY LEVEL <= '数量' );

修改

ALTER SEQUENCE 语句修改序列。不能修改序列的 START WITH 参数。

-- 修改序列最大值为`10000`
ALTER SEQUENCE '序列名称' MAXVALUE 10000 CYCLE;
-- 当前序列基础+10
alter sequence '序列名称' increment by 10;    
-- 当前序列基础-10
alter sequence '序列名称' increment by -10;  

-- 修改序列当前值
SELECT SEQ_NAME.NEXTVAL FROM dual; -- 查询当前值
alter sequence SEQ_NAME increment BY X; -- 修改步长,X为正数负数都可以
SELECT SEQ_NAME.NEXTVAL FROM dual; -- 查询序列下一个值,查看是否修改成功
alter sequence SEQ_NAME increment BY 1; -- 重新将序列的值的增长值设为1

删除

DROP SEQUENCE '序列名称';

常用操作

备份恢复

-- 创建一个备份表并存储原始数据
CREATE TABLE 备份表 as SELECT * FROM 旧表;
-- 恢复原始数据
INSERT INTO 旧表 SELECT * FROM 备份表;

查看执行计划

EXPLAIN PLAN FOR SQL语句;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

重启

1、 以oracle身份登录数据库,命令:su - oracle
2、 进入Sqlplus控制台,命令:sqlplus /nolog
3、 以系统管理员登录,命令:connect / as sysdba
  可以合并为:sqlplus sys/密码 as sysdba
4、 启动数据库,命令:startup
5、 如果是关闭数据库,命令:shutdown immediate(shutdown abort)
6、 退出sqlplus控制台,命令:exit
7、 进入监听器控制台,命令:lsnrctl
8、 停掉监听器       命令:stop 
9、 启动监听器       命令:start
10、退出监听器控制台,命令:exit
11、重启数据库结束
12、查看数据库监听的状态   命令:lsnrctl status

清理归档日志

# oracle归档日志清理
(--管理登录 sqlplus as / sysdba)
--管理登录
sqlplus /nolog
connect / as sysdba
--强制关闭数据库
shutdown abort;
--启动实例,不启动数据库
startup mount;
--退出
quit
--登录日志管理
rman target sys/Oracle
--检查日志文件
corsscheck archivelog all;
--删除过期日志文件
delete expired archivelog all;
--删除归档日志到前一天,释放日志文件磁盘空间
delete archivelog until time 'sysdate-1';
--退出
quit;
(--管理登录 sqlplus as / sysdba)
--管理登录
sqlplus /nolog
connect / as sysdba 
--开启数据库
alter database open;
--退出
quit

表空间

-- Oracle 报错,ORA-01653: 表 XX.XX_XX_XX 无法通过 128 (在表空间 XX 中) 扩展
-- https://blog.csdn.net/weixin_43360051/article/details/114576936
-- 查看所有的表空间
select tablespace_name from dba_tablespaces;
-- 查询表空间的位置
select * from dba_data_files;
-- 为表空间增加一个数据文件
-- 这条语句的意思是 为表空间“BEMS_SIT” 在指定路径添加一个“.DBF”数据文件,文件可自动扩展,默认每次增加50M。
ALTER TABLESPACE "BEMS_SIT" ADD DATAFILE '/u02/QRSIT/bems_sit02.dbf' SIZE 1G AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;  

-- 其它命令
-- 查询所有表空间使用情况
SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC;
-- 为表空间增加自动扩展能力
alter database datafile '/u02/QRSIT/bems_sit02.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
-- 查看表空间是否有自动扩展能力
SELECT T.TABLESPACE_NAME, D.FILE_NAME, D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS FROM DBA_TABLESPACES T,DBA_DATA_FILES D WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME ORDER BY TABLESPACE_NAME,FILE_NAME;

达梦

-- 达梦blob无法使用to_char()函数问题
-- 字段类型 BLOB / 存储内容 字符串
-- 查询
select to_char(tt) from ttl; -- ORACLE
select utl_raw.cast_to_varchar2(dbms_lob.substr(tt)) from ttl; -- DM
-- 插入
INSERT INTO ttl VALUES (utl_raw.cast_to_raw('blob')); -- DM

-- 达梦set字段''问题
-- 字段类型 VARCHAR2
-- DM
UPDATE ttl SET remark = '' WHERE id = 1; -- remake改为''
UPDATE ttl SET remark = NULL WHERE id = 1; -- remake改为[NULL]
-- ORACLE
UPDATE ttl SET remark = '' WHERE id = 1; -- remake改为[NULL]
UPDATE ttl SET remark = NULL WHERE id = 1; -- remake改为[NULL]
-- 从oracle迁移dm可能会碰到这么一个问题: oracle空串和null是等价的达梦里面默认参数是不等价的,is null 不能把空串查询出来,要实现这一点就需要打开oracle兼容的参数。修改dm.ini 文件 COMPATIBLE MODE = 2,重启服务即可

-- 达梦不兼容DATE_ADD,请使用add_days(‘2020-07-12 12:20:30’,2)函数进行替换

常用操作

重启

# 达梦重启
1、su - dm
2、cd /home/dm/dmdbms/bin/ # 达梦安装目录
3、启动:./DmServiceDMUTF8SERVER start
4、停止:./DmServiceDMUTF8SERVER stop 

查看执行计划

EXPLAIN FOR SQL语句;

MySQL

常用操作

查看执行计划

explain SQL语句;

本文作者:Zzzy君不见

本文链接:https://www.cnblogs.com/Zzzyyw/p/17915817.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Zzzy君不见  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起