Oracle数据库
(1)查询数据库表空间
第一步:dbf数据文件查询
SQL语句示例:
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;
第二步:登录数据库服务器
Linux命令:
1.su - oracle
2.sqlplus / as sysdata
3.alter tablespace "表空间名称" add datafile 'DBF数据文件' size 30G autoextend on next 1G maxsize 30G
第三步:查询表空间
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;
(2)获取随机数
SQL示例:
SELECT ROUND(DBMS_RANDOM.VALUE(1,99)) FROM DUAL;
上述SQL语句为:随机获取1至99之间的整数。
(3)基本数据类型
1)字符串类型
1.1 CHAR类型
CHAR表示定长字符串。
1.2 NCHAR类型
NCHAR表示包含UNICODE格式的定长字符串。
1.3 VARCHAR类型
不要使用VARCHAR数据类型。
使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。
1.4 VARCHAR2类型
VARCHAR2表示变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。
1.5 NVARCHAR2类型
这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。
2)数字类型
2.1 NUMBER类型
实际值 | 数据类型 | 存储值 |
---|---|---|
1234567.89 | Number | 1234567.89 |
1234567.89 | Number(8) | 1234567 |
1234567.89 | Number(6) | 出错 |
1234567.89 | Number(9,1) | 1234567.9 |
1234567.89 | Number(9,3) | 出错 |
1234567.89 | Number(7,2) | 出错 |
1234567.89 | Number(5,-2) | 1234600 |
1234512.89 | Number(5,-2) | 1234500 |
1234567.89 | Number(*,1) | 1234567.9 |
0.012 | Number(2,3) | 0.012 |
0.23 | Number(2,3) | 出错 |
2.2 INTEGER类型
2.3 浮点数类型
2.4 FLOAT类型
3)日期类型
4)LOB类型
(4)在使用left join中on和where的问题
1)on和where的区别
在SQL语句中,使用left join时,经常会用到on和where进行关联或者过滤,两者的区别如下:
1.on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2.where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
假如有如下两张表:
tab1:
id | size |
---|---|
1 | 10 |
2 | 20 |
3 | 20 |
4 | 30 |
tab2:
size | name |
---|---|
1 | 10 |
2 | 20 |
3 | 20 |
4 | 30 |
(5)归档日志查询和清理方法
手动删除归档日志
su - oracle
rman target /
crosscheck archivelog all;
delete archivelog all completed before 'sysdate-1';
查询归档日志占用率
su - oracle
sqlplus as / sysdba
select * from v$flash_recovery_area_usage; --查看空间占用率
select * from v$recovery_file_dist; --查看归档日志存放地址