>php教程 >PHP开发 >Oracle 테이블스페이스 쿼리 및 작업 방법

Oracle 테이블스페이스 쿼리 및 작업 방법

高洛峰
高洛峰원래의
2017-01-06 13:28:341502검색

1. 쿼리
1. oracle 테이블스페이스 사용량 쿼리
select b.file_id 파일 ID,
b.tablespace_name 테이블스페이스,
b.file_name 실제 파일 이름,
b.bytes 총 개수 바이트 수,
(b.bytes-sum(nvl(a.bytes,0))) 사용됨,
sum(nvl(a.bytes,0)) 남음,
sum(nvl( a. bytes,0))/(b.bytes)*100 dba_free_space a,dba_data_files b
에서 남은 백분율
여기서 a.file_id=b.file_id
b.tablespace_name,b.file_name으로 그룹화, b. file_id,b.bytes
b.tablespace_name순
2. Oracle 시스템 사용자의 기본 테이블스페이스 및 임시 테이블스페이스를 쿼리합니다.
dba_users에서 default_tablespace,temporary_tablespace를 선택합니다.
3. >select Segment_name,bytes from dba_segments 여기서 Segment_name = 'RE_STDEVT_FACT_DAY' 및 소유자 = USER
RE_STDEVT_FACT_DAY는 쿼리하려는 테이블의 이름입니다.
4 모든 사용자 테이블의 상위 30개 사용량을 쿼리합니다.
select * from(dba_segments에서 세그먼트_이름,바이트 선택, 소유자 = USER 바이트 순서 desc) 여기서 rownum <= 30
5. 현재 사용자의 기본 테이블스페이스 사용량을 쿼리합니다.
select tablespacename,sum(totalContent ), sum(usecontent),sum(sparecontent),avg(sparepercent)
from
(
SELECT b.file_id를 id로, b.tablespace_name을 tablespacename으로, b.bytes를 totalContent로,(b.bytes -sum (nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as Sparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100 as Sparepercent
FROM dba_free_space a,dba_data_files b
a.file_id=b.file_id 및 b.tablespace_name = (사용자 이름 = user인 dba_users에서 default_tablespace 선택)
b.tablespace_name,b.file_name,b .file_id로 그룹화 ,b.bytes
)
GROUP BY tablespacename
6. 사용자 테이블스페이스의 테이블 쿼리
user_tables에서 * 선택
============= = ================================================= = ==================
1. 테이블스페이스 생성
CREATE TABLESPACE 테스트
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M
UNIFORM SIZE 1M; # 지정하지 않은 경우 영역 크기는 128k입니다.
또는
CREATE TABLESPACE 테스트
DATAFILE 'c:/oracle/oradata/db / test01.dbf' SIZE 50M
MINIMUM EXTENT 50K EXTENT MANAGEMENT LOCAL
DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0)
dba_tablespaces에서 새로 생성된 테이블스페이스의 정보를 볼 수 있습니다
II , UNDO 테이블스페이스 생성
CREATE UNDO TABLESPACE test_undo
DATAFILE 'c:/oracle/oradata/db/test_undo.dbf' SIZE 50M
UNDO 테이블스페이스의 범위는 로컬에서 관리되며, 생성 시 SQL 문에서는 DATAFILE 및 EXTENT MANAGEMENT 절만 사용할 수 있습니다.
ORACLE에서는 언제든지 하나의 복원 테이블스페이스만 데이터베이스에 할당할 수 있다고 규정합니다. 즉, 인스턴스에는 여러 개의 복원 테이블스페이스가 존재할 수 있지만 하나만 활성화될 수 있습니다. ALTER SYSTEM 명령을 사용하여 복원된 테이블스페이스로 전환할 수 있습니다.
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = test_undo;
3. 임시 테이블 공간 생성
CREATE TEMPORARY TABLESPACE test_temp
TEMPFILE '/oracle/oradata/db/test_temp.dbf' SIZE 50M
시스템의 현재 기본 임시 테이블스페이스
select * from dba_properties where property_name like 'DEFAULT%'
시스템의 기본 임시 테이블스페이스 변경
alter 데이터베이스 기본 임시 테이블스페이스 test_temp
4.
1. 테이블 공간을 오프라인으로 전환
ALTER TABLESPACE 테스트 OFFLINE
데이터 파일이 실수로 삭제된 경우 RECOVER 옵션
ALTER TABLESPACE 게임 테스트 FOR RECOVER가 있어야 합니다. 온라인으로 테이블 공간 사용
ALTER TABLESPACE ONLINE;
3. 데이터 파일을 오프라인으로 전환
ALTER DATABASE DATAFILE 3 OFFLINE
4. ALTER DATABASE DATAFILE 3 ONLINE;
5. 테이블 공간을 읽기 전용으로 만듭니다.
6. 테이블 공간을 읽기 및 쓰기 가능으로 만듭니다.
ALTER TABLESPACE 테스트
5. space
DROP TABLESPACE 테스트 INCL ING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE 테이블스페이스 이름 [INCL ING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]
1 INCL ING CONTENTS 절은 세그먼트를 삭제하는 데 사용됩니다.
2. AND DATAFILES 절은 데이터 파일을 삭제하는 데 사용됩니다.
3. CASCADE CONSTRAINTS 절은 모든 참조 무결성 제약 조건을 삭제하는 데 사용됩니다.

먼저 이름을 확인하세요. 테이블스페이스 및 해당 테이블이 속한 파일
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name; >1. 데이터 파일 추가
ALTER TABLESPACE 테스트
ADD DATAFILE '/oracle/oradata/db/test02.dbf' SIZE 1000M
2. 수동으로 데이터 파일 크기 늘리기
ALTER DATABASE DATA 'c: /oracle/oradata/db/test01.dbf'
RESIZE 100M;
3. 데이터 파일을 자동으로 확장하도록 설정합니다.
ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01.dbf' 🎜 >AUTOEXTEND ON NEXT 100M
MAXSIZE 200M;
설정 후 dba_tablespace에서 테이블스페이스 정보를 볼 수 있고 v$datafile에서 해당 데이터 파일 정보를 볼 수 있습니다.
========= ================================================= =======================
테이블스페이스 scgl 생성
데이터 파일 'E:ORACLEPROD T10.1.0ORADATAORCLscgl2.dbf'
크기 50m

다음 50m 최대 크기 20480m
자동 확장,
다음 50m 최대 크기 20480m
확장 관리 로컬
qwer1234로 식별되는 사용자 scgl 생성
기본 테이블스페이스 scgl >임시 테이블스페이스 scgl_temp;
tempfile 'E:ORACLEPROD T10.1.0ORADATAORCLuser_ temp .dbf'
임시 테이블스페이스 scgl_temp
tempfile 'E:ORACLEPROD T10.1.0ORADATAORCLscgl_temp.dbf'
크기 50m
autoextend on
다음 50m maxsize 20480m
extent Management local;
grant connect,resource, dba to scgl;
oracle이 테이블 공간을 생성하고 SYS 사용자가 CMD에서 DBA로 로그인합니다.
sqlplus를 입력합니다. CMD에 /nolog
그런 다음
conn / as sysdba
//임시 테이블스페이스 생성
임시 테이블스페이스 user_temp
tempfile 'D:oracleoradataOracle9iuser_temp.dbf'
크기 50m

다음 50m 최대 크기 20480m
확장 관리 로컬 ;
//데이터 테이블스페이스 생성
테이블스페이스 생성 test_data
로깅
데이터 파일 'D:oracleoradataOracle9iuser_data.dbf'
크기 50m
자동 확장
다음 50m 최대 크기 20480m
확장 관리 로컬;
//사용자 생성 및 테이블 공간 지정
비밀번호로 식별되는 사용자 사용자 이름 생성
기본 테이블 공간 user_data
임시 테이블 공간 user_temp;
테이블스페이스 사용량 쿼리
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 1
테이블 공간 여유 공간 쿼리
select tablespace_name,
count(*) as 확장,
round(sum(bytes) / 1024 / 1024, 2) as MB,
sum (블록)
from dba_free_space
group by tablespace_name
--테이블 공간의 총 용량 쿼리
select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
tablespace_name으로 그룹화;
쿼리 테이블 공간 사용량
total.tablespace_name,
round(total.MB, 2)를 Total_MB로 선택,
round(total.MB - free.MB, 2) ) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, 합계(바이트) / 1024 / 1024 MB
from dba_free_space
group by tablespace_name ) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name ) total
여기서는 free입니다. tablespace_name = total.tablespace_name
-- -------------------------- ----------- -------------------------- ----------- ----------
1. 테이블스페이스 생성: 테이블스페이스 테스트 데이터 파일 '/u01/ 생성 test.dbf' 크기 10M 균일 크기 128k
#지정된 영역 크기는 128k이고 블록 크기는 기본적으로 8K입니다.
#큰 파일 테이블스페이스 create bigfile tablespace big_tbs datafile '/u01/big_tbs.dbf' 크기 100G
2.建不标准表show 매개변수 db alter system set db_2k_cache_size=10M create tablespace test datafile '/u01/test.dbf' size 10M blocksize 2K 균일 크기 128k 
#常见错误 
SQL> 시스템 세트 db_2k_cache_size=2M 변경; alter system set db_2k_cache_size=2M 라인 1의 오류: ORA-02097: 지정된 값이 유효하지 않기 때문에 매개변수를 수정할 수 없습니다. ORA-00384: 캐시를 늘릴 메모리가 부족합니다.
#解决 
SQL> 시스템 설정 변경 sga_max_size=400M 범위=spfile; SQL> 즉시 종료; SQL> 시작 SQL> 시스템 세트 db_2k_cache_size=10M 변경; 시스템이 변경되었습니다. 
3.查看区大小与块大小#区大小 conn y / 123 테이블 생성 t(i number) 테이블스페이스 테스트; t 값(10)에 삽입하고 user_segments에서 bytes/1024를 선택합니다. 여기서 세그먼트_이름=upper('t');  v$datafile에서 이름, 블록 크기, 상태를 선택합니다. SQL> 파일#=14인 v$datafile에서 block_size를 선택합니다. 
4.删除表空间콘텐츠 및 데이터 파일을 포함한 테이블스페이스 삭제 테스트
5.查表空间:#查数据文件 select * from v$dbfile; #所有表空间 v$tablespace에서 *를 선택합니다. 
#表空间的数据文件 dba_data_files에서 file_name,tablespace_name을 선택합니다. 
6.建立undo表空间실행 취소 테이블스페이스 생성 undotbs01 데이터 파일 '/u01/undotbs01.dbf' 크기 5M; 
#切换到新建的undo表空间 alter system set undo_tablespace=undotbs01; 
7.建立临时表空间임시 테이블스페이스 생성 temp_data 임시 파일 '/u01/temp.db' 크기 5M; bigfile 임시 테이블스페이스 생성 bigtem tempfile '/u01/bigtemp.db' 크기 5M; #数据文件状态 v$datafile에서 이름, 블록 크기, 상태를 선택하세요. 
(1.)表空间脱机alter tablespace 테스트 오프라인 
#如果意외删除了数据文件 alter tablespace 테스트 오프라인 복구를 위해 
(2.)表空间联机alter 테이블스페이스 테스트 온라인
(3 .) v$dbfile에서 *를 선택하세요. 데이터베이스 데이터 파일 3을 오프라인으로 변경 
(4.)数据文件联机recover datafile 3; 데이터베이스 데이터파일 3을 온라인으로 변경합니다. 
(5.)使表空间只读alter 테이블스페이스 테스트 읽기 전용 
(6.)使表空间可读写alter 테이블스페이스 테스트 읽기 쓰기; 
9. 전시 공간 # 공간의 이름과 이름을 선택하고 tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space를 dba_data_files에서 tablespace_name순으로 선택합니다. #三种扩 확장 방법 
1.alter 테이블스페이스 테스트 추가 데이터 파일 '/u01/test02.dbf' 크기 10M(自动加一个datafile) 
2.alter 데이터베이스 데이터 파일 '/u01/test.dbf' 크기 조정 20M; 
3.alter 데이터베이스 데이터 파일 '/u01/test.dbf'는 다음 10M 최대 크기 1G에서 자동 확장됩니다. 
#设定后查看表空间信息 
a.tablespace_name,a.bytes 총,b.bytes 사용,c.bytes 여유,(b.bytes*100)/a.bytes "% 사용", (c.bytes*100)/a.bytes sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c의 "% free" 여기서 a.tablespace_name=b.tablespace_name 및 a.tablespace_name=c .테이블스페이스_이름; #open状态 
SQL>alter 테이블스페이스 오프라인 테스트; SQL>호스트 이동 /u01/test.dbf /u01/oracle/test.dbf; SQL> 테이블스페이스 변경 테스트 데이터 파일 '/u01/test.dbf'의 이름을 '/u01/oracle/test.dbf'로 변경합니다. SQL> 테이블스페이스 변경 오프라인 테스트; 
#mount状态 SQL>즉시 종료; SQL> 시작 마운트 SQL> 호스트 이동 /u01/test.dbf /u01/oracle/test.dbf; SQL> 데이터베이스 변경 파일 '/u01/test.dbf'를 '/u01/oracle/test.dbf'로 변경합니다. 
11.表空间와 数据文件常용 数据字典与动态性能视图v$dbfile v$datafile dba_segments user_segments dba_data_files v$tablespace dba_tablespaces user_tablespaces 
--查询表空间使用情况 
상위 선택(F. TABLESPACE_NAME) "表空间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 
어디에서 D .TABLESPACE_NAME = F.TABLESPACE_NAME 
ORDER BY 1 
--查询表空间의 여유 공간 
tablespace_name 선택, 
count(*)를 확장으로,
round(sum(bytes) / 1024 / 1024, 2) MB로,
합산(블록)을 블록으로
dba_free_space에서
group by tablespace_name; 
--查询表공간량 
tablespace_name, 합계(바이트) / 1024/1024를 MB로 선택
dba_data_files에서
tablespace_name별로 그룹화; 
--查询表空间使用率 
total.tablespace_name을 선택하고, 
round(total.MB, 2)를 Total_MB로, 
round(total.MB - free.MB, 2)를 Used_MB로,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct 
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_free_space 
group by tablespace_name) free, 
(select tablespace_name, sum(bytes) / 1024 / 1024 MB
dba_data_files에서
tablespace_name별로 그룹화) total
여기서 free.tablespace_name = total.tablespace_name; 
//给用户授予权限 
사용자 이름에 연결, 리소스를 부여합니다. 
//以后以该用户登录,创建的任何数据库对象属于user_temp 와user_data表空间, 
指定表空间了 
撤权: 
权限...를 用户name에서 취소하다; 
删除用户命令 
사용자 user_name 계단식 삭제; 
删除表空间 
컨텐츠와 데이터 파일을 포함하는 TABLESPACE data01을 삭제합니다.  2、建立UNDO表间 
CREATE UNDO TABLESPACE UNDOTBS02 
DATA FILE '/oracle/oradata/db/UNDOTBS02. DBF' 크기 50M
#주의사항: OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表间:
ALTER SYSTEM SET undo_tablespace =UNDOTBS02; ALTER TABLESPACE 게임 오프라인; 
如果是意外删除了数据文件,则必须带有RECOVER选项 
복구를 위해 테이블스페이스 게임을 오프라인으로 변경하세요. 
2.使表空间联机 
ALTER TABLESPACE 게임 온라인; 
3.使数据文件脱机 
데이터베이스 데이터파일 3을 오프라인으로 변경합니다. 
4.使数据文件联机 
온라인으로 데이터베이스 데이터 파일 3 변경; 
5.使表空间只读 
ALTER TABLESPACE 게임 읽기 전용; 
6.使表空间可读写 
ALTER TABLESPACE 게임 읽기 쓰기; 
五、删除表空间 
컨텐츠와 데이터 파일을 포함하는 테이블스페이스 데이터01을 삭제합니다. dba_data_files에서
tablespace_name별로 정렬; 
1.增加数据文件 
ALTER TABLESPACE 게임 
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M; 
2.手动增加数据文件尺寸 
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' 
크기를 4000M로 조정합니다. FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C 
어디에서 A. TABLESPACE_NAME=B.TABLESPACE_NAME 및 A.TABLESPACE_NAME=C.TABLESPACE

더 많은 Oracle 表空间查询与操작법상关文章请关注PHP中文网!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.