取当前时间前一小时的时间段
SELECT TRUNC(LOCALTIMESTAMP-1/24,'hh24') s1,TRUNC(LOCALTIMESTAMP,'hh24') s2 FROM dual
表空间等操作
-- 查看表空间使用率
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;
-- 查询空间文件
SELECT tablespace_name,file_id,file_name,round(bytes/(1024*1024),0) total_space FROM dba_data_files ORDER BY tablespace_name,file_id;
SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE,BYTES/1024/1024/1024 GB FROM dba_data_files ORDER BY 1;
-- 创建表空间
CREATE TABLESPACE EXDB DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB.dbf' SIZE 30G;
ALTER TABLESPACE EXDB DEFAULT COMPRESS;
ALTER TABLESPACE EXDB NOLOGGING;
-- 添加表空间文件(可变大小)
ALTER TABLESPACE EXDB ADD DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB15.dbf' SIZE 10240M AUTOEXTEND ON NEXT 10M MAXSIZE 30G;
-- 添加表空间文件(固定大小)
ALTER TABLESPACE EXDB ADD DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB91.dbf' SIZE 30G;
-- 调整大小
ALTER DATABASE DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB91.dbf' RESIZE 10M;
-- 下线表空间文件
ALTER DATABASE DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB91.dbf' offline;
-- 上线表空间文件
ALTER DATABASE DATAFILE '/data/oracle/app/oracle/oradata/orcl/EXDB91.dbf' online;
-- 表迁移表空间
ALTER TABLE EX_XINXIZHONGXIN_243_XGBDJCXX MOVE TABLESPACE BAKEDATA;
ALTER TABLE EX_ZHENGWU_120_TXJLB MOVE PARTITION SYS_P761 TABLESPACE BAKEDATA;
-- 索引迁移表空间
ALTER INDEX exdb.SYS_C0012883 REBUILD TABLESPACE BAKEDATA;
-- 调整临时表空间大小
ALTER DATABASE TEMPFILE '/datassd/oracle/app/oracle/oradata/orcl/temp01.dbf' RESIZE 30G;
-- 调整undo表空间大小
ALTER DATABASE datafile '/datassd/oracle/app/oracle/oradata/orcl/undotbs01.dbf' resize 10G;
备份文件夹目录
-- 创建备份文件目录
create directory dmp_dir as '/datahdd/oracle/dmp';
-- 目录授权
grant read,write on directory dmp_dir to exdb;
ORACLE 元数据表
/**
数据字典视图分类
DBA_*** 该视图包含数据库整个对象信息,只能由数据库管理员查看
ALL_*** 包含某个用户所能看到的全部数据库信息
USER_*** 包含当前用户访问的数据库对象信息
*/
-- 查询表信息
SELECT TABLE_NAME,TABLESPACE_NAME,PARTITIONED,STATUS,NUM_ROWS,LAST_ANALYZED FROM tabs
WHERE TABLE_NAME = 'EX_XINXIZHONGXIN_243_XGBDJCXX';
-- # 查询表索引
-- user_indexes 表索引
SELECT
T.*,
I.INDEX_TYPE
FROM
USER_IND_COLUMNS T
LEFT JOIN USER_INDEXES I ON T.INDEX_NAME = I.INDEX_NAME
WHERE T.TABLE_NAME = '****'
-- # 查询表结构
-- USER_TAB_COMMENTS 表注释
-- USER_TAB_COLUMNS 表字段
-- USER_COL_COMMENTS 字段注释
SELECT
TC.TABLE_NAME,
TC.COMMENTS TABLE_COMMENT,
TCOL.COLUMN_NAME,
TCOL.DATA_TYPE,
TCOL.DATA_LENGTH,
TCOL.NULLABLE,
CC.COMMENTS COLUMN_COMMENTS
FROM USER_TAB_COMMENTS TC
JOIN USER_TAB_COLUMNS TCOL ON TC.TABLE_NAME=TCOL.TABLE_NAME
LEFT JOIN USER_COL_COMMENTS CC ON TCOL.TABLE_NAME=CC.TABLE_NAME AND TCOL.COLUMN_NAME=CC.COLUMN_NAME
WHERE TC.COMMENTS IS NOT NULL
AND TC.TABLE_NAME =UPPER('')
-- # 查询表主键
-- user_cons_columns 主键
-- user_constraints 主键信息
SELECT
cc.*
FROM
user_cons_columns cc,
user_constraints cs
WHERE
cc.constraint_name = cs.constraint_name
AND cs.constraint_type = 'P'
AND cc.table_name = 'TD_BANKTYPE'
-- # 分区表
-- 查询一个表的所有分区
SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = UPPER('EX_ZHENGWU_120_TXJLB')
-- 查看表的分区字段
SELECT * FROM DBA_PART_KEY_COLUMNS WHERE NAME ='EX_ZHENGWU_120_TXJLB' AND OWNER = 'EXDB';
命令行sqlplus登录
# 需要切换到ORACLE用户
# 用户登录
sqlplus USERNAME/PASSWORD@192.168.XX.XX:1521/orcl
# DBA登录
sqlplus / as sysdba
查看建表语句
dbms_metadata.get_ddl('OBJECT_TYPE','NAME','SCHEMA','VERSION','MODEL')
-- 使用示例
SELECT to_char(dbms_metadata.get_ddl('TABLE','DWS_RY_JCXX')) FROM dual
SELECT to_char(dbms_metadata.get_ddl('TABLE','DWS_RY_JCXX','schema')) FROM dual
ORA-00054:资源正忙
-- 查询锁表任务SID,SERIAL#,SQL
SELECT
sess.sid, sess.serial#, ao.object_name, sq.SQL_TEXT, lo.oracle_username, lo.os_user_name, lo.locked_mode
FROM v$locked_object lo, dba_objects ao, v$session sess, v$sqlarea sq
WHERE ao.object_id = lo.object_id AND lo.session_id = sess.sid AND sess.prev_sql_addr=sq.address
ORDER BY sess.sid,sess.serial#;
-- kill session - SID,SERIAL#
ALTER SYSTEM KILL SESSION '0,62103';
清理归档日志
su - oracle
rman
connect target username/password
--删除x天前的归档日志
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';