'Oracle/SQL'에 해당되는 글 6건
테이블스페이스 소유자 확인
Oracle/SQL
SQL> SELECT status,enabled, t.name,d.name
     FROM  V$DATAFILE d, V$TABLESPACE t
     WHERE t.ts#=d.ts#;
=> 현재 dbf 파일과 테이블 스페이스명의 위치를 확인

SQL> select name,enabled from v$datafile;
=> dbf 파일들 위치 확인

SQL> select distinct owner from dba_segments where tablespace_name='TS_XEP_D'
=> 테이블 스페이스 명으로 소유자 계정을 확인

drop tablespace TSCAL_T including contents AND DATAFILES;
drop tablespace TSCAL_I including contents AND DATAFILES;
drop tablespace TS_PORTAL_I including contents AND DATAFILES;

drop tablespace HDATA_3_WEB including contents AND DATAFILES;
drop tablespace HDATA_4_WEB including contents AND DATAFILES;
drop tablespace HINDEX_1 including contents AND DATAFILES;
drop tablespace HINDEX_2_WEB including contents AND DATAFILES;
drop tablespace HINDEX_3_WEB including contents AND DATAFILES;

=> TSCAL_T 의 테이블 스페이스 및 실제 물리 dbf 파일도 같이 다 삭제
 
SQL> DROP USER INTRAG7 CASCADE;
=> intrag7 계정을 삭제


 



SQL> drop tablespace 테이블스페이스명 including contents cascade constaints;

이후

실제 dbf 파일을 rm 또는 탐색기에서 삭제한다
tablespace생성과 자동으로 사이즈 늘리기
Oracle/SQL
SQL> create tablespace spider
 2   datafile '/app/oracle/oradata/sprider01.dbf' size 10m autoextend on;
테이블 스페이스를 10m로 생성하고 10m가 가득차면 자동으로 사이즈를 늘린다.

'Oracle > SQL' 카테고리의 다른 글

테이블스페이스 소유자 확인  (2) 2015.01.13
중복된 row 데이터 삭제하는 방법  (0) 2014.11.11
SQL*Loader 실행하기  (0) 2014.11.10
[ORA-12988] cannot drop column owned by sys 에러  (0) 2014.10.31
PL/SQL 결과물 출력하기  (0) 2014.10.31
중복된 row 데이터 삭제하는 방법
Oracle/SQL
ROWID를 이용해서 중복된 데이터를 제거할수있다.
SQL> delete from taran a
  2  where rowid > (select min(rowid) from taran b
  3   where b.no = a.no);

3 rows deleted.
중복 된 데이터값중에 rowid가 큰값 제거
SQL> DELETE FROM emp a
     WHERE ROWID < (SELECT MAX(ROWID) 
                    FROM emp b
                    WHERE a.empno = b.empno);
나중에 들어온 데이터를 살릴경우
SQL*Loader 실행하기
Oracle/SQL

아무옵션 없이 sqlldr 명령어만 실행하면 옵션들이 나옵니다.

[oracle@localhost ~]$ sqlldr

SQL*Loader: Release 11.2.0.2.0 - Production on Thu Mar 28 04:02:10 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Usage: SQLLDR keyword=value [,keyword=value,...]

Valid Keywords:

    userid -- ORACLE username/password
   control -- control file name
       log -- log file name
       bad -- bad file name
      data -- data file name
   discard -- discard file name
discardmax -- number of discards to allow          (Default all)
      skip -- number of logical records to skip    (Default 0)
      load -- number of logical records to load    (Default all)
    errors -- number of errors to allow            (Default 50)
      rows -- number of rows in conventional path bind array or between direct path data saves
               (Default: Conventional path 64, Direct path all)
  bindsize -- size of conventional path bind array in bytes  (Default 256000)
    silent -- suppress messages during run (header,feedback,errors,discards,partitions)
    direct -- use direct path                      (Default FALSE)
   parfile -- parameter file: name of file that contains parameter specifications
  parallel -- do parallel load                     (Default FALSE)
      file -- file to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions  (Default FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable  (Default FALSE)
commit_discontinued -- commit loaded rows when load is discontinued  (Default FALSE)
  readsize -- size of read buffer                  (Default 1048576)
external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE  (Default NOT_USED)
columnarrayrows -- number of rows for direct path column array  (Default 5000)
streamsize -- size of direct path stream buffer in bytes  (Default 256000)
multithreading -- use multithreading in direct path
 resumable -- enable or disable resumable for current session  (Default FALSE)
resumable_name -- text string to help identify resumable statement
resumable_timeout -- wait time (in seconds) for RESUMABLE  (Default 7200)
date_cache -- size (in entries) of date conversion cache  (Default 1000)
no_index_errors -- abort load on any index errors  (Default FALSE)

PLEASE NOTE: Command-line parameters may be specified either by
position or by keywords.  An example of the former case is 'sqlldr
scott/tiger foo'; an example of the latter is 'sqlldr control=foo
userid=scott/tiger'.  One may specify parameters by position before
but not after parameters specified by keywords.  For example,
'sqlldr scott/tiger control=foo logfile=log' is allowed, but
'sqlldr scott/tiger control=foo log' is not, even though the
position of the parameter 'log' is correct.
[oracle@localhost ~]$
위 값중에 errors 값이 default 50으로 되어있는데 50값보다 많은 에러가 발생하면 작업이 중단되어
더 이상 진행이 되지 않는다는 의미 이므로 옵션을 줄때 아주 충분히 값을 지정해 작업해야 합니다.

1) SQL*Loader 실습 1 - 입력할 데이터가 외부 프로그램 자료일 경우
(아래 그림의 엑셀 데이터를 오라클의 F_Animal 테이블로 입력할 경우)

엑셀을 열어서 위와 같이 데이터를 입력했습니다.

위의 엑셀 데이터를 csv(쉼표로구분) 파일로 저장합니다. 그리고 파일이름은 a1으로 하겠습니다.

저장이 완료 된 파일은 winscp나 xftp를 이용해서 oracle home의 원하는 디렉토리에 옮깁니다.
SQL> !vi /app/oracle/tran_ex/tran.cvs

15,Heracules baboon,21cm,Hysterocrates hercules,사나움,보통,나이지리아,10년이상,버로우
16,King baboon,23cm,Citharischius crawshayi,사나움,빠름,탄자니아 케냐 등,15년,버로우
~
~
vi editor를 이용해 xftp로 옮긴 tran.csv파일을 연다.
필요한것만 빼고 위처럼 만들어준 후에 저장 종료한다.

control file
SQL> !vi /app/oracle/tran_ex/tran.ctl

load data
infile "/app/oracle/tran_ex/tran.csv"
append
into table taran
fields terminated by ','
(no,name,max_size,technical_name,personality,growth,habitat,max_age,type)
~
~
위처럼 control file 만들어준후에 저장종료한다.

이제 데이터를 넣을 테이블을 만들어주면 된다.
SQL> create table taran
  2  (no number,
  3  name varchar2(50),
  4  max_size varchar2(50),
  5  technical_name varchar2(50),
  6  personality varchar2(50),
  7  growth varchar2(50),
  8  habitat varchar2(50),
  9  max_age varchar2(50),
 10  type varchar2(10)) to tablespace spider;

created table
테이블을 생성했으면 이제 데이터를 넣어주면 된다.
[oracle@dbserver ~]$
[oracle@dbserver ~]$ sqlldr scott/tiger control='/app/oracle/tran_ex/tran.ctl'

SQL*Loader: Release 11.2.0.2.0 - Production on Tue Nov 11 09:12:39 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2
[oracle@dbserver ~]$
2개의 데이터가 들어갔다.
확인해보자

SQL> select * from taran
  2  order by 1;

  NO NAME                                MAX_SIZE TECHNICAL_NAME                 PERSONALIT GROWTH     HABITAT                        MAX_AGE         TYPE
---- ----------------------------------- -------- ------------------------------ ---------- ---------- ------------------------------ --------------- ----------
   0 Mexican Golden Redrump              15cm     Brachypelma ruhnaui            온순함     느림       멕시코                         20년이상        배회성
   1 Mexican_Redknee                     13cm     Brachypelma_smithi             온순함     느림       멕시코                         15년 이상       배회성
   2 Mexican_redleg                      15cm     Brachypelma_emilia             온순함     느림       멕시코                         15년 이상       배회성
   3 Antilles Pinktoe                    14cm     Avicularia versicolor          예민함     보통       마티니크섬                     14년            나무위성
   4 Giant Mustard stripe                18cm     Grammastola aureostriatum      온순함     보통       프랑스챠코                     20년 이상       배회성
   5 Mexican Pink                        15cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   6 Mexican flame knee                  15cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   7 Mexico Fireleg                      14cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   8 Costa Rican Zebra                   12cm     Aphonopelma seemani            온순함     보통       파나마 과태말라 열대우림       20년 이상       배회성
   9 Brazillian giant white knee         22cm     Acanthoscurria geniculata      보통       빠름       브라질 아마존                  15년            배회성
  10 Mexican true red leg                13cm     Brachypelma emillia            온순함     보통       멕시코                         15년 이상       배회성
  11 Goliath birdeater                   30cm     theraphosa blondi              사나움     빠름       베네수엘라 등                  25년            배회성
  12 Peruvian Blonde                     15cm     Lasiodoredes polycuspulatus    온순함     보통       페루                           null            null
  13 Brazillian salmon pink              15cm     Lasiodoredes parahybana        공격적     빠름       브라질                         20년            배회성
  14 Amazon Spaier Pinktoe               12cm     Avicularia fasciculata         온순함     보통       브라질                         10년이상        나무위성
  15 Heracules baboon                    21cm     Hysterocrates hercules         사나움     보통       나이지리아                     10년이상        버로우
  16 Usambara Orange Baboon              15cm     Pterinochilus Murinus          엄청사나움 엄청빠름   탄자니아 케냐 등               12년            3성
  17 King baboon                         23cm     Citharischius crawshayi        사나움     빠름       탄자니아 케냐 등               15년            버로우

18 rows selected.

SQL>
데이터가 정상적으로 들어가져 있다.
(*추가적으로 실습하면서 같이 썼던 쿼리들*)
SQL> insert into taran(clumns.....) /데이터 여 넣기
  2  values(key....)
-------------------------------------------
SQL> alter table taran  /type 바꾸기
  2  modify(clumns type);
-------------------------------------------
SQL> alter table taran /컬럼추가
  2  add (clumns type)
-------------------------------------------
update taran  /업데이트. where절 조심
  2  set 변경할 컬럼 = 변경된 값
  3  where 조건
-------------------------------------------
[ORA-12988] cannot drop column owned by sys 에러
Oracle/SQL





/as sysdba 계정


'SYS'계정으로 만든 TABLE은 컬럼추가나 변경은

가능하지만 각 컬럼들은 삭제가 불가능하다.


ORA-12988: cannot drop column from table owned by SYS

Cause: An attempt was made to drop a column from a system table. Action: This action is not allowed


결론은 컬럼 삭제만 막아놓았다.(오라클에서)



PL/SQL 결과물 출력하기
Oracle/SQL

PL/SQL은 기본적으로 처리된 PL/SQL 문장의 결과를 화면에 출력하지 않습니다.

그래서 결과를 화면에 출력할려면 아래와 같이 출력물을 ON,OFF로 사전작업이 필요합니다.


 

SQL> SET SERVEROUTPUT ON;
SQL> SET SERVEROUTPUT OFF;
 

그리고 PL/SQL은 작성시 오류가 있을 경우 오류에 대한 상세 내용을 별도로 보여주지 않기에

별도로 쿼리를 입력해서 아래와 같이 조회해야 오류결과 출력물을 얻을 수 있습니다.


 

SQL> SHOW ERRORS;