반응형

라이브러리 내 특정 오브젝트(테이블)를 PC에 저장 및 서버로 다시 복구 하는 방법 

--- 백업 ----

백업 방법
  1. AS400 콘솔
  2. CRTSAVF FILE(AAALIB/AAASAVF)  - 오브젝트가 저장될 빈 SAVF 파일을 만든다  
  3. SAVOBJ OBJ(테이블네임) LIB(라이브러리네임) DEV(*SAVF) SAVF(AAALIB/AAASAVF) - 빈 SAVF 파일 내에 오브젝트들 삽입(압축개념)

PC FTP로 백업파일 다운받는 방법
  1. 도스모드
  2. FTP XXX.XXX.XXX.XXX
  3. 아이디 암호 입력
  4. CD AAALIB  - 백업파일이 저장된 라이브러리 경로
  5. LCD C:\SAVF - 백업파일이 저장될 로컬 경로
  6. BIN - 바이너리 모드로 전환
  7. GET AAASAVF - 백업파일을 내려받는다
  8. CLOSE
  9. QUIT

--- 복원 ---
복원 방법
  1. AS400 콘솔
  2. CRTSAVF FILE(MRLIB/AAASAVF) - 오브젝트가 저장될 빈 SAVF 파일을 만든다

PC FTP로 백업파일 업로드하는 방법
  1. FTP XXX.XXX.XXX.XXX
  2. 아이디 암호 입력
  3. CD MRLIB - 백업파일이 저장될 라이브러리 경로
  4. LCD C:\SAVF -백업파일이 저장된 경로
  5. BIN -바이너리 모드 활성화
  6. PUT AAASAVF
  7. CLOSE
  8. QUIT


업로드 한 파일 복구 방법
   
  1. AS400 콘솔
  2. RSTOBJ OBJ(테이블네임) SAVLIB(라이브러리네임) DEV(*SAVF) SAVF(AAALIB/AAASAVF) - 처음 백업된 위치로 동일하게 복구하여야 파일이 풀림

반응형
반응형
  1. ---- 날자 계산하기 ---------------------------------------------------------------------------------------------------------  
  2.   
  3. -- 오늘날자 (현재날자 0시 0분 0초 ...)  
  4. SELECT to_char(trunc(sysdate,'dd')    ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;                   
  5.   
  6. -- 내일날자 (다음날자 0시 0분 0초 ...)  
  7. SELECT to_char(trunc(sysdate,'dd') + 1,'yyyy/mm/dd hh24:mi:ss'FROM dual ;                   
  8.    
  9. -- 내일날자 (다음날자 현재시 현재분 현재초 ...)  
  10. SELECT to_char(sysdate + 1 ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;  
  11.   
  12.   
  13. ---- 달 계산하기 -----------------------------------------------------------------------------------------------------------  
  14.   
  15. -- 이번달 시작날자(현재달 1일 0시 0분 0초 ...)  
  16. SELECT to_char(trunc(sysdate,'mm') ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;                      
  17.   
  18. -- 이번달 시작날자(현재달 1일 현재시 현재분 현재초 ...)      
  19. SELECT to_char(sysdate - TO_CHAR(SYSDATE, 'dd') + 1 ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;     
  20.   
  21. -- 다음달 시작날자(다음달 1일 0시 0분 0초 ...)  
  22. SELECT to_char(trunc(add_months(sysdate, + 1),'mm') ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;     
  23.   
  24. -- 다음달 시작날자(다음달 1일 현재시 현재분 현재초 ...)  
  25. SELECT to_char(add_months(sysdate, 1) - to_char(add_months(sysdate, 1), 'dd') + 1,'yyyy/mm/dd hh24:mi:ss'FROM dual ;  
  26.   
  27. -- 다음달 오늘 날자(다음달 현재일 현재시 현재분 현재초 ...)  
  28. SELECT to_char(add_months(sysdate, 1) ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;  
  29.   
  30.   
  31. ---- 년 계산하기 -----------------------------------------------------------------------------------------------------------  
  32.   
  33. -- 올해 시작날자(올해 1월 1일 0시 0분 0초 ...)  
  34. SELECT to_char(trunc(sysdate, 'yyyy') ,'yyyy/mm/dd hh24:mi:ss'FROM dual ;       
  35.   
  36. -- 1년전 현재일자(전년 현재달 현재일 0시 0분 0초 ...)  
  37. SELECT to_char(trunc(add_months(sysdate, -12), 'dd'),'yyyy/mm/dd hh24:mi:ss'FROM dual ;      
  38.   
  39. -- 1년전 현재일자(전년 현재달 현재일 현재시 현재분 현재초 ...)  
  40. SELECT to_char(add_months(sysdate, -12),'yyyy/mm/dd hh24:mi:ss'FROM dual ;   
  41.   
  42.   
  43. ---- 참고사항 --------------------------------------------------------------------------------------------------------------  
  44.   
  45. -- TO_CHAR      : 숫자나 날짜를 문자열로 변환   
  46. -- TO_NUMBER    : 문자를 숫자로 변환   
  47. -- TO_DATE      : 문자를 날짜로 변환   
  48.   
  49. SELECT sysdate() -1 FROM dual;   -- 현재시간 - 1일  
  50. SELECT sysdate() -1/24 FROM dual;  -- 현재시간 - 1시간   
  51. SELECT sysdate() -1/24/60 FROM dual;  -- 현재시간 - 1분  
  52. SELECT sysdate() -1/24/60/60 FROM dual;  -- 현재시간 - 1초  
  53.   
  54. -- YYYY     : 4자리 연도로 표시   
  55. -- YY       : 끝의 2자리 연도로 표시  
  56. -- YEAR     : 연도를 알파벳으로 표시  
  57. -- MM       : 달을 숫자로 표시  
  58. -- MON      : 달을 알파벳 약어 로표시  
  59. -- MONTH    : 달을 알파벳으로 표시  
  60. -- DD       : 일자를 숫자로 표시  
  61. -- DAY      : 일에 해당하는 요일   
  62. -- DY       : 일에 해당하는 요일의 약어   
  63. -- HH       : 12시간으로 표시(1-12)  
  64. -- HH24     : 24시간으로 표시(0-23)  
  65. -- MI       : 분을 표시   
  66. -- SS       : 초를 표시   
  67. -- AM, PM   : 오전인지 오후인지를 표시  
  68.   
  69.   
  70. ---- 기초 날자구하기 -------------------------------------------------------------------------------------------------------  
  71.   
  72. -- SYSDATE          : 현재 시스템의 날짜 및 시간을 구함   
  73. SELECT sysdate FROM dual;  
  74.   
  75. -- LAST_DAY         : 지정한 날짜의 해당 월의 마지막 날짜를 구함  
  76. SELECT last_day(sysdate) FROM dual;  
  77.   
  78. -------------------------------------------------------------------------------  
  79. -- 두 날자 사이의 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)  
  80. -- 날자를 구할때 날자이후 데이터 까지 있다면 계산이 시간단위까지 계산하는듯하다  
  81. -- 그래서 날자까지만 변환해서 잘라줘야 한다.  
  82.   
  83. SELECT to_date(to_char(to_date('20120220042517','yyyymmddhh24miss'), 'yyyymmdd'), 'yyyymmdd') - to_date(to_char(sysdate, 'yyyymmdd'), 'yyyymmdd'FROM dual;  
  84. -------------------------------------------------------------------------------  
  85.   
  86. -- MONTHS_BETWEEN   : 두달 사이의 개월 차이 (1번째 인자가 2번째인자보다 작으면 음수, 크면 양수)  
  87. SELECT MONTHS_BETWEEN(to_date('20120219','yyyymmdd'), sysdate) FROM dual;  
  88.   
  89. -- ADD_MONTHS       : 현재달로부터 지정한 달의 날자를 구함 (즉 1달뒤 2달뒤 등의 날자를 구함)  
  90. SELECT add_months(sysdate, -3) FROM dual;  
  91.   
  92. -- ROUND            : 날짜에 대한 반올림 (12시이후(12:00 00초포함)면 1일을 더함)  
  93. SELECT round(sysdate) FROM dual;  
  94. SELECT round(to_date('20110221120000''yyyymmddhh24miss')) FROM dual;  
  95.   
  96. -- TRUNC : 날짜에 대한 버림   
  97. SELECT trunc(sysdate) FROM dual;  
  98.   
  99.   
  100. ---- TO_CHAR 의 변환 형식들 ------------------------------------------------------------------------------------------------  
  101.   
  102. -- 9    : 일반적인 숫자를 나타냄   
  103. SELECT to_char('123''999999'FROM dual;  
  104.   
  105. -- 0    : 앞의 빈자리를 0으로 채움   
  106. SELECT to_char('123''000000'FROM dual;  
  107.   
  108. -- $    : dollar를 표시함   
  109. SELECT to_char('123''$999999'FROM dual;  
  110.   
  111. -- L    : 지역 통화 단위(ex \)   
  112. SELECT to_char('123''L999999'FROM dual;  
  113.   
  114. -- . : 소숫점을 표시함   
  115. SELECT to_char('123''999.999'FROM dual;  
  116. SELECT to_char('12.3''999.999'FROM dual;  
  117.   
  118. -- , : 천단위를 표시함   
  119. SELECT to_char('12345''999,999,999'FROM dual; 


반응형
반응형

개인 컨텐츠로 제작 중인 프로그램


DB서버 = MSSQL 2012

유저수 : 300명

수집 내용 : 주소,이름,날짜

클라이언트 프로그램  목적 : 파일 검색기

클라이언트 프로그램 개발 툴 : 델파이 xe3

클라이언트 프로그램과 DB 연결 방법 : ADO 연결 2 tier(델파이 xe2 db express와 mssql 2012간의 호환성 문제가 있어서 연결이 안됨)

원격 DB클라이언트 툴: SQuirreL SQL Client


사용자의 PC하드디스크의 파일들을 검색하여 MD5정보와 파일명,사이즈등을 프로그램 grid에 담는다.(MD5 HASH 기법)

MD5는 파일 사이즈가 1gb가 이상일 경우 평균 파일 하나당 일반 SATA3 7200RPM 하드의 경우 몇초씩 소요되서 검색이 느리다.

그렇기 때문에 파일의 앞 10000 kbyte 중간 100000 kbytte 끝 100000 kbyte로 파일 부분적으로 스트림을 통해 끊어 합친 후에 md5처리를 할 경우 현저히 속도가 빨라진다.

유명 파일 중복 검사 툴등이 빠른 검색 서비스로 사용하는 방법이기도 하다.


파일명으로 검색하는 것은 파일명이 조금이라도 틀리거나 특수기호 및 여러 문제 때문에 100% 신뢰성이 없다., 이름 검색을 통해서 중복된 데이터는 사용자가 직접

컨텐츠를 찾아 선택하게 되면 해다 MD5의 컨텐츠가 DB 테이블 상에 등록된다.


문제점으로는 사용자가 잘못 컨텐츠를 선택 시에도 반영이 되기 때문에 데이터의 신뢰성을 잃게 된다.

해결 방안을 찾는 중.




반응형
반응형

merge 문은 구조가 같은 두 개의 테이블을 비교하여 하나의 테이블로 합치기 위한 데이터 조작이다.
예를 들어, 하루에 수만건씩 발생하는 데이터를 하나의 테이블에 관리할 경우 대량의 데이터로 인해 질의문의 성능이 저하된다.
이런 경우, 지점별로 별도의 테이블에서 관리하다가 년말에 종합 분석을 위해 하나의 테이블로 합칠 때 merge 문을 사용하면 편리하다.

merge하고자 하는 소스 테이블의 행을 읽어 타킷 테이블에 매치되는 행이 존재하면 새로운 값으로 UPDATE를 수행하고, 만일 매치되는 행이 없을 경우 새로운 행을 타킷 테이블에서 INSERT를 수행한다.

Merge는 여러 데이터 소스로부터 다양한 데이터를 수집해서 작업을 수행하는 dataware housing등에 적용하면 유용하다.

merge 문에서 where 절은 사용할 수 없으며 대신 on이 사용된다. 또한 when matched then 절과 when not matched then 절에는 테이블명 대신 alias를 사용한다.

【형식】
    MERGE [hint] INTO [schema.] {table ¦ view} [t_alias]
      USING {{[schema.] {table ¦ view}} ¦
            subquery} [t_alias]
      ON (condition) [merge_update_clause] [merge_insert_clause] [error_logging_clause];

【merge_update_clause 형식】
   WHEN MATCHED THEN UPDATE SET {column = {expr ¦ DEFAULT},...}
     [where_clause] [DELETE where_clause]

【merge_insert_clause 형식】
   WHEN MATCHED THEN INSERT [(column,...)]
    VALUES ({expr,... ¦ DEFAULT}) [where_clause]
   
【where_clause 형식】
   WHERE condition

【error_logging_clause 형식】
   LOG ERROR [INTO [schema.] table] [(simple_expression)]
     [REJECT LIMIT {integer ¦ UNLIMITED}]

【예제】
SQL> create table emp(
  2  id number primary key, 
  3  name varchar2(10) not null,
  4  salary  number,
  5  bonus number default 100);

Table created.

SQL> desc emp;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                      NOT NULL VARCHAR2(10)
 SALARY                                             NUMBER
 BONUS                                              NUMBER

SQL> insert into emp(id,name,salary) values(1001,'jijoe',150);
SQL> insert into emp(id,name,salary) values(1002,'cho',130);
SQL> insert into emp(id,name,salary) values(1003,'kim',140);
SQL> select * from emp;

        ID NAME           SALARY      BONUS
---------- ---------- ---------- ----------
      1001 jijoe             150        100
      1002 cho               130        100
      1003 kim               140        100

SQL> create table bonus(id number, bonus number default 100);

Table created.

SQL> insert into bonus(id)
  2    (select e.id from emp e);

3 rows created.

SQL> select * from bonus;

        ID      BONUS
---------- ----------
      1001        100
      1002        100
      1003        100

SQL> merge into bonus D
  2    using (select id,salary from emp) S
  3    on (D.id = S.id)
  4  when matched then update set
  5    D.bonus=D.bonus + S.salary*0.01
  6  when not matched then insert(D.id, D.bonus)
  7    values(S.id,S.salary*0.01);

3 rows merged.

SQL> select * from bonus;

        ID      BONUS
---------- ----------
      1001      101.5
      1002      101.3
      1003      101.4

SQL>
 
【예제】
SQL> delete from bonus where id=1003;

1 row deleted.

SQL> merge into bonus D
  2    using (select id,salary from emp) S
  3    on (D.id = S.id) 
  4  when matched then update set
  5    D.bonus=D.bonus + S.salary*0.02
  6  when not matched then insert(D.id, D.bonus)
  7    values(S.id, S.salary*0.01);

3 rows merged.

SQL> select * from bonus;

        ID      BONUS
---------- ----------
      1001      104.5
      1002      103.9
      1003        1.4

SQL>

【예제】 SQL> show user USER is "OE" SQL> CREATE TABLE bonuses (employee_id NUMBER, bonus NUMBER DEFAULT 100); Table created. SQL> INSERT INTO bonuses (employee_id) 2 (SELECT e.employee_id FROM employees e, orders o 3 WHERE e.employee_id = o.sales_rep_id 4 GROUP BY e.employee_id); 7 rows created. SQL> SELECT * FROM bonuses ORDER BY employee_id; EMPLOYEE_ID BONUS ----------- ---------- 153 100 154 100 156 100 158 100 159 100 160 100 161 100 7 rows selected. SQL> MERGE INTO bonuses D 2 USING (SELECT employee_id, salary, department_id FROM employees 3 WHERE department_id = 80) S 4 ON (D.employee_id = S.employee_id) 5 WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary * .01 6 DELETE WHERE (S.salary > 8000) 7 WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) 8 VALUES (S.employee_id, S.salary*0.1) 9 WHERE (S.salary <= 8000); 7 rows merged. SQL> SELECT * FROM bonuses ORDER BY employee_id; EMPLOYEE_ID BONUS ----------- ---------- 153 180 154 175 159 180 160 175 161 170 SQL>

반응형
반응형

첨부파일 참조

 

toad 9.2 manual.ppt

반응형
반응형

기본적으로

system 계정으로 접속 후

SELECT * FROM v$session
을 보면 현재 연결되어있는 모든 세션을 볼 수 있다..


현재 active상태인 것과 inactive상태인것을 확인하려면ㅇ

SELECT status,COUNT(*) FROM v$session
WHERE username=?
GROUP BY status


애플리케이션에서 설정되어있는 최대 connection 갯수가


저 위 두개의 합보다 적을 경우에


문제가 발생 할 수 있다..


inactive상태의 세션을 일정 시간이 지난 후 제거할 수 있도록 설정 할 수 있는데


ALTER SYSTEM SET RESOURCE_LIMIT =TRUE;

CREATE PROFILE [Profile name] LIMIT
       IDLE_TIME [M분];

ALTER USER [ORG_USERNAME]
PROFILE [NEW_PROFILE_NAME];



으로 설정 후

아래와 같이 확인해보자

SELECT * FROM DBA_PROFILES
WHERE PROFILE = [NEW_PROFILE_NAME];


SELECT USERNAME,PROFILE FROM DBA_USERS;


conn user/pw

 SELECT * FROM USER_RESOURCE_LIMITS;



참고로

ALTER SYSTEM SET RESOURCE_LIMIT =TRUE;


이부분은 오라클이 재구동되면 없어지는 설정이므로

영구하게 설정을 하고 싶을때에는


init<SID>.ora파일에 설정을 해놓아야하며


위의 설정대로 작업을 할 경우 오라클 재구동은 필요없다.



원래상태 복구

drop profile 아까 준 그 이름(NEW_PROFILE) 옵션(CASCADE)



출처:http://devyongsik.tistory.com/89

반응형
반응형

[ phpMyAdmin의 외부접속 설정 및 확인 ]

phpMyAdmin을 실행 하는데 http://localhost/myadmin/이 아닌 http://jobdahan.dnip.net/myadmin/처럼
도메인이 들어간 URL로 접속하는 방법에 대해서 알아 볼 것입니다.

지금 실험적으로 웹 브라우저의 주소 창에 http://jobdahan.dnip.net/myadmin/을 입력하고 엔터 키를 쳐
보십시오. phpMyAdmin 초기화면이 보입니까? 아마 찾을 수 없다는 메시지가 보일 것입니다.

 

 

네~? 외부접속 설정을 하지 않았는데도 phpMyAdmin 초기화면이 보인다구요?
그렇담 빨리 댓글 달아 소개해 주시기 바랍니다.^^;


이 설정은 간단한 것이니 웹 브라우저에 phpMyAdmin 초기화면이 보이지 않은 분들은 아래 설명된 순서에
따라 설정하고 동작을 확인해 보시기 바랍니다. 쉽게 하실 수 있을 것입니다.


1. 외부접속 환경으로 설정하기

 1) C:\APM_Setup\Server\Apache\conf\extra\ 폴더에 있는 httpd-alias.conf 파일을 메모장이나
     에디터로 불러 들입니다.

 2) 아래의 설명을 참조하여 수정하고 저장합니다.

<IfModule alias_module>

    Alias /myadmin/ "C:/APM_Setup/Server/phpMyAdmin/"
    <Directory "C:/APM_Setup/Server/phpMyAdmin">
        Options MultiViews
        AllowOverride None
        Order deny,allow       =>  Order allow,deny 로 수정
        deny from all             => Allow from all 로 수정
        Allow from 127.0.0.1   => 삭제
    </Directory>

</IfModule>

 

[ 수정 후 httpd-alias.conf 내용 ]

 

2. 아파치(Apache) 서버 재시작

아파치 서버를 재시작하기 위해서 탐색기를 열고 C:\APM_Setup\Command\ 폴더로 이동해서
restart_apache.cmd를 더블클릭하여 실행시킵니다.

명령 프롬프트 창이 열리면서 Apache 서버를 멈춘 다음, 다시 시작하는 메시지가 보여지며
처리가 끝나면 자동으로 창이 닫힐 것입니다.

 

 

3. phpMyAdmin 외부접속 확인

 1) 웹 브라우저의 주소 창에 http://도메인/myadmin/을 입력하고 [Enter] 키를 칩니다.
     예) http://jobdahan.dnip.net/myadmin/

 2) 에러 메시가 없는 phpMyAdmin 초기화면이 나오면 성공입니다.
    (엥? 그 대로 했는데 나오지 않는다구요? 혹시 myadmin 뒤에 '/'를 빼먹진 않으셨나요?)

    사용자명을 root로 입력한 다음 암호입력하여 로그인이 되는지 확인합니다.

 3) 로그인 되는 것을 확인하였으면 로그아웃을 눌러 빠져나옵니다.

자신의 컴퓨터가 아닌 다른 컴퓨터에서도 확인해 보시기 바랍니다.
인터넷이 연결된 곳이면 어디서나 phpMyAdmin 실행이 가능하므로 자신의 데이터베이스 서버인
MySQL에 접속할 수 있을 것입니다.

 

--------------------------------------------------


반응형
반응형