-- 创建临时表空间//ORA-02195:尝试创建的PERMANENT对象在TEMPORARY表空间中,导入数据到临时表空间报以上错误
create tablespace tablespace_name tempfile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' size 500m autoextend on;
-- 创建表空间
create tablespace tablespace_name datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' size 100m reuse autoextend on next 100m maxsize 500m;
create tablespace tablespace_name datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' SIZE 100m reuse autoextend ON next 100m maxsize unlimited;-- 查看表空间大小//ORA-01658:无法为表空间XXX中的段创建INITIAL区错误,导入数据时文件中的数据量超过了表空间的初始化大小值
select file_name as 数据文件,tablespace_name as 表空间名称,autoextensible as 自动扩展,status as 状态,maxbytes as 可扩展最大值,user_bytes as 已使用大小,increment_by as 自动扩展增量 from dba_data_files where tablespace_name = 'TABLESPACE_NAME';
-- 查看表空间的名称及大小
select t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;
SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(G)", free / (1024 * 1024 * 1024) "表空间剩余大小(G)", (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", round((total - free) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
-- 查看表空间物理文件的名称及大小
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;
-- 查看回滚段名称及大小
SELECT segment_name, tablespace_name, r.status, (initial_extent / 1024) initialextent, (next_extent / 1024) nextextent, max_extents, v.curext curextent FROM dba_rollback_segs r, v$rollstat v WHERE r.segment_id = v.usn(+) ORDER BY segment_name;
-- 查看表空间的使用情况
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name;
SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free, (b.bytes * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c WHERE a.tablespace_name = b.tablespace_name AND a.tablespace_name = c.tablespace_name;
-- 查看控制文件
SELECT NAME FROM v$controlfile;
-- 查看日志文件
SELECT MEMBER FROM v$logfile;
-- 查看数据库库对象
SELECT owner, object_type, status, COUNT(*) count# FROM all_objects GROUP BY owner, object_type, status;
-- 查看数据库的版本
SELECT version FROM product_component_version WHERE substr(product, 1, 6) = 'Oracle';
-- 查看数据库的创建日期和归档方式
SELECT created, log_mode, log_mode FROM v$database; -- 数据块损坏 ORA-01578: ORACLE 数据块损坏 (文件号 22, 块号 223232),查询有坏块的表,清空数据或删表
select tablespace_name, segment_type, owner, segment_name from dba_extents where file_id = 22 and 223232 between block_id and block_id + blocks - 1;-- 扩展表空间//ORA-01652无法通过128(在表空间xxx中)扩展,导入数据时表空间文件大小有限制,最好把表空间删了重建
alter database datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' autoextend on next 100M maxsize unlimited;
alter database datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' resize 5000m;
-- 自动增长,表空间不足时增加100MB,最大扩展5000MB
alter database datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' autoextend on next 100m maxsize 5000m;
-- 扩展无限大空间
alter database datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name.dbf' autoextend on maxsize unlimited; -- 增加数据文件
alter tablespace tablespace_name add datafile 'C:\oracle\product\11.2.0\dbhome_1\database\tablespace_name2.dbf' size 1024m; -- 查看数据文件的存储路径:
select name from v$datafile;-- 修改表空间为offline:
alter tablespace users offline;
-- 修改表空间存储路径
alter tablespace users rename datafile '..\database\tablespace_name.dbf' to '..\database2\tablespace_name.dbf';
-- 修改表空间为online
alter tablespace users online;-- 查看表当前所属表空间
select table_name,tablespace_name from user_tables
-- 修改表的空间
alter table table_name move tablespace tablespace_name;
SELECT 'alter table '||TABLE_NAME||' move tablespace TABLESPACE_NAME;' FROM USER_TABLES WHERE TABLESPACE_NAME = 'TABLESPACE_NAME1'-- 修改表的索引的空间
alter index INDEX_NAME rebuild tablespace TABLESPACENAME
select'alter index '|| index_name ||' rebuild TABLESPACENAME;' from user_indexes;-- 修改用户表空间
alter user user_name default tablespace tablespace_name;-- 查询当前用户下的默认表空间
select username, default_tablespace from user_users;-- 查看当前用户
show user;
-- 查看当前数据库实例
show parameter instance_name;-- 查看用户所属的表空间,用户名大写
select default_tablespace from dba_users where username='USER_NAME';-- 查看表空间下有多少用户,tablespace_name表空间名字大写
select distinct s.owner from dba_segments s where s.tablespace_name ='TABLESPACE_NAME'; -- 查询用户space权限
select * from dba_sys_privs where grantee = 'USER_NAME';--查询表空间路径
select * from dba_data_files; -- 设置oracle的实例名
set ORACLE_SID=orcl;
-- 登录不区分大小写
alter system set sec_case_sensitive_logon=false
-- 解锁用户
ALTER USER user_name ACCOUNT UNLOCK;--删除空的表空间,不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;-- 删除含物理文件的非空表空间报错,清空所有回收站下的对象,再删除表空间/*第 1 行出现错误:ORA-00604: 递归 SQL 级别 1 出现错误ORA-38301: 无法对回收站中的对象执行 DDL/DML*/
purge dba_recyclebin-- 创建用户
create user user_name identified by user_password;
create user user_name identified by user_password default tablespace tablespace_name; -- 修改用户密码
alter user user_name identified by user_password;
--删除用户
drop user user_name cascade;
-- 给用户赋dba权限
grant connect,resource,dba to user_name;
-- 给用户赋space权限
grant unlimited tablespace to user_name;
-- 将所有的角色都设置成用户的默认角色
alter user user_name default role all;-- 数据导出[dmp20201003.dmp]
exp user_name/user_password@192.168.1.1:1521/orcl file="C:/dmp%date:~0,4%%date:~5,2%%date:~8,2%.dmp" full = y;
-- 数据导入
imp user_name/user_password@orcl file='C:\*.dmp' full=y;