StoryCode

'Database 관리/Oracle'에 해당되는 글 5건

  1. sql to csv
  2. SQL Developer 설치
  3. IOT (Indexed Organized Table)
  4. NESTED TABLE Column
  5. Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )

sql to csv

Database 관리/Oracle
반응형

참조 : https://stackoverflow.com/questions/30357272/export-from-oracle-sql-to-csv-from-command

참조 : https://community.oracle.com/thread/2357292

 

file.sql:

spool "/home/username/file.csv";
SELECT /*csv*/ '"'||COLUMN_1||'"',
'"'||COLUMN_2||'"',
'"'||DBMS_LOB.substr(COLUMN_3,3000)||'"',
        ...
'"'||COLUMN_N||'"'
FROM TABLE; 
spool off; 

 

file.sh:

export ORACLE_SID=MYSID
sqlplus / as sysdba <conn myUser/myPass 
set heading off
set termout off 
set trimout off
set newpage none
set pages 0
set feedback off
set echo off
set verify off
set trimspool on
set sqlprompt "" 
set colsep ","
set linesize 32767      
@/home/username/file.sql
exit
EOF

 

 

 

반응형

'Database 관리 > Oracle' 카테고리의 다른 글

SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

SQL Developer 설치

Database 관리/Oracle
반응형

1) https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html

 

 

반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

IOT (Indexed Organized Table)

Database 관리/Oracle
반응형
  IOT Table
행구분 PK. ROWID 가 없다. ROWID
FULL SCAN 시 리턴 순서 PK 순에 따라 출력 없다.
Unique Constraint 불가  
Cluster 불가  
저장공간 Table 보다 감소  
Primary Key 필수  
Secondary Index PK + UROWID ( Universal Rowid based pk )  
장점 Auto Ordering  
반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

NESTED TABLE Column

Database 관리/Oracle
반응형

참조) https://m.blog.naver.com/geartec82/220954927715

 

테이블 안에 특정 컬럼 값이 테이블 구조처럼 관리하고 사용되어 지는 방식을 말한다.
자동적으로 group by 형태로 저장하는 방식중에 하나이다.
 

 CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
       NESTED TABLE col1 STORE AS col1_tab;
      
SQL> desc nested_table
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 COL1                                               MY_TAB_T

Insert data into table:

INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
COMMIT;

 



Select from nested table:
 

 SQL> SELECT * FROM nested_table;
        ID COL1
---------- ------------------------
         1 MY_TAB_T('A')
         2 MY_TAB_T('B', 'C')
         3 MY_TAB_T('D', 'E', 'F')

 



Unnesting the subtable:
 

 SQL> SELECT id, COLUMN_VALUE FROM nested_table t1, TABLE(t1.col1) t2;
        ID COLUMN_VALUE
---------- ------------------------
         1 A
         2 B
         2 C
         3 D
         3 E
         3 F
6 rows selected.

 



실예제>

nested table column을 통하여 한명의 고객이 주소값으로 여러개의 컬럼 값을 가질수 있게 관리합니다.
 

 CREATE TYPE address_t AS OBJECT (
   street  VARCHAR2(30),
   city    VARCHAR2(20),
   state   CHAR(2),
   zip     CHAR(5) );
/

CREATE TYPE address_tab IS TABLE OF address_t;
/

CREATE TABLE customers (
   custid  NUMBER,
   address address_tab )
NESTED TABLE address STORE AS customer_addresses;


INSERT INTO customers VALUES (1,
            address_tab(
              address_t('101 First', 'Redwood Shores', 'CA', '94065'),
              address_t('123 Maple', 'Mill Valley',    'CA', '90952')
            )                );

 



데이터 확인
 

 SQL> select c.custid, u.*
  2  from customers c, table (c.address) u
  3  ;

    CUSTID STREET                         CITY                 ST ZIP
---------- ------------------------------ -------------------- -- -----
         1 101 First                      Redwood Shores       CA 94065
         1 123 Maple                      Mill Valley          CA 90952

 


뷰에서 확인하는 방법

NESTED TABLE column 을 생성하면 USER_NESTED_TABLES and USER_NESTED_TABLE_COLS 두개의 뷰에서 확인할 수 있습니다.

뷰에서 NESTED TABLE,NESTED TABLE column 확인하는 방법
 

 SQL> select TABLE_NAME from USER_NESTED_TABLES;

TABLE_NAME
------------------------------
COL1_TAB

SQL> select TABLE_NAME,COLUMN_NAME from USER_NESTED_TABLE_COLS;

TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------
COL1_TAB                       NESTED_TABLE_ID
COL1_TAB                       COLUMN_VALUE

반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

Oracle.Client.SQLPlus.Ubuntu21 설치 ( window, linux 방식 동일 )

Database 관리/Oracle
반응형

[ ZIP 방식 ]

1. https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

 

 

 

2. 먼저 Instant Client Package - Basic 을 다운로드한다.

 

3. Instanct Client Package - SQL*Plus (Instant Client Package - Basic 와 같은 버전) 를 다운로드한다.

 

# 참조 : http://egloos.zum.com/xxwony/v/74280

4. 다운로드한 2개의 zip 파일을 하나의 디렉토리에 압축 해제한다. 예를 들어, D:\oracle_instantclient_11_2에 압축해제 한다.

6. 몇가지 환경변수를 추가한다.
ORACLE_HOME=d:\oracle_instantclient_11_2
TNS_ADMIN=d:\oracle_instantclient_11_2\network\admin --> tnsnames.ora 파일이 위치할 디렉토리
PATH=d:\oracle_instantclient_11_2
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

LD_LIBRARY_PATH=d:\oracle_instantclient_11_2

 

export ORACLE_HOME TNS_ADMIN NLS_LANG LD_LIBRARY_PATH

 

* 리눅스의 경우 /etc/profile 에 추가후 재 접속



7. d:\oracle_instantclient_11_2\network\admin 디렉토리를 생성한다. tnsnames.ora는 ORACLE_HOME에 두어도 상관없지만 통상 oracle 설치될 때 ORACLE_HOME\network\admin에 존재하므로 비슷하게 만들었다.

8. TNS_ADMIN 디렉토리에 tnsnames.ora 파일을 생성하고 아래와 같은 형식으로 입력한다.
ORCL =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521))
        (CONNECT_DATA = (SID = ORCL))
    )

 

혹은

ORCL = 

    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521))
        (CONNECT_DATA =

            (SERVER = DEDICATED)

            (SERVICE_NAME = ORCL.domain.com) # RAC 인 경우에는 SID 대신 SERVICE_NAME 을 쓰자.

        )
    )

 

9.tnsping 이 있으면 접속 테스트 해볼 수 있다. 단, 설치는 Oracle Universal 이 있어야 가능한듯하다. 직접설치하는 방법은 못 찾았다.


10. sqlplus 접속방법

방법 1) 접속 테스트를 위해 명령 프롬프트를 실행한 후, sqlplus id/pwd@tnsnames.ora의 서버_이름

방법 2) ./sqlplus id/pwd@211.123.234.456:1521/SID

방법 3) ./sqlplus id/pwd@(DESCRIPTION=(ADDRESS=(PROTOCOL....# tnsname.ora 내용을 직접 입력

 

[ rpm 방식 ]

1) sudo apt-get update

2) sudo apt-get install alien

3) sudo apt search libaio1

4) rpm 3종 instantclient-basic, instantclient-devel, instantclient-sqlplus download

5.Sample) sudo alien -i 로 설치

sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

6) /etc/profile에 환경변수 설정은 할 것

ORACLE_HOME=d:\oracle_instantclient_11_2
TNS_ADMIN=d:\oracle_instantclient_11_2\network\admin --> tnsnames.ora 파일이 위치할 디렉토리
PATH=d:\oracle_instantclient_11_2
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

LD_LIBRARY_PATH=d:\oracle_instantclient_11_2

7) cd /usr/lib/oracle/버전/bin

8) sqlplus 실행

반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11