윈도우 7에 VMWARE를 설치하고 리눅스를 INSTALL하였다. 문제는 인터넷이 안된다는 것이 없다.
현재 나의 상황은 아래와 같다.
1. 상황 분석
1) LG+ 티비와 인터넷을 함께 사용하고 있다.
2) 위와 같이 공유 설정이 되어 있다. (DHCP)
3) VMWARE를 설치하고 리눅스를 설치하였다. IP 설정작업은 아래와 같이 진행하였다.
2. 리눅스 상황을 아래와 같이 맞추어 주었다.
1) Telnet과 FTP를 사용할 수 있도록 아래와 같이 파일의 내용을 수정하고, xinetd을 재시작한다.
[root@ora10gr2 ~]# su - root [root@ora10gr2 ~]# vi /etc/xinetd.d/telnet : disable = no로 수정
[root@ora10gr2 xinetd.d]# vi /etc/xinetd.d/krb5-telnet : disable = no로 수정 : 혹시 telnet이 없다면 이렇게 하세요. [root@ora10gr2 xinetd.d]# vi /etc/xinetd.d/gssftp : disable = no로 수정 server_args = -l -a 부분의 -a를 제거
[root@ora10gr2 xinetd.d]# cd /etc/rc.d/init.d [root@ora10gr2 init.d]# ./xinetd restart (혹은 [root@ora10gr2 init.d]# service xinetd restart) [root@ora10gr2 ~]# cd
2) 호스트명 확인 및 설정
(가) /etc/hosts 파일과 /etc/sysconfig/network 파일의 내용을 다음과 같이 설정한다.
----------------------------------------------------------------- select * from v$resource where type in ('TM', 'TX'); select * from v$lock where type in ('TM', 'TX'); -----------------------------------------------------------------
update t1 set sal = sal+1000 where rownum = 1;
----------------------------------------------------------------- select * from v$resource where type in ('TM', 'TX'); select * from v$lock where type in ('TM', 'TX'); -----------------------------------------------------------------
update t1 set sal = 2000 where empno=7788;
----------------------------------------------------------------- select * from v$resource where type in ('TM', 'TX'); select * from v$lock where type in ('TM', 'TX'); -----------------------------------------------------------------
update t1 set sal = sal+1000 where rownum = 1;
----------------------------------------------------------------- select * from v$resource where type in ('TM', 'TX'); select * from v$lock where type in ('TM', 'TX'); -----------------------------------------------------------------
alter table t1 drop(sal);
----------------------------------------------------------------- select * from v$resource where type in ('TM', 'TX'); select * from v$lock where type in ('TM', 'TX'); -----------------------------------------------------------------
SQL> drop user sysman cascade; SQL> drop role MGMT_USER; SQL> drop user MGMT_VIEW cascade; SQL> drop public synonym MGMT_TARGET_BLACKOUTS; SQL> drop public synonym SETEMVIEWUSERCONTEXT;
Note: The port number that is used by iSQL*Plus is usually 5560
unless Oracle Universal Installer(OUI) detects that something is already using that port. Check $ORACLE_HOME/install/portlist.ini to find the port used by iSQL*Plus
col name format a50 col value format a20 col description format a50
select ksppinm name, ksppstvl value, decode(bitand(ksppiflg/256,1),1,'true','false') ses_modifiable, decode(bitand(ksppiflg/65536,3),1,'immediate',2,'deferred',3,'immediate','false') sys_modifiable, ksppdesc description from sys.x$ksppi i, sys.x$ksppcv v where i.indx = v.indx;
1. AVG(N) - N의 평균을 구하여 반환한다. 단, NULL인 값은 제외하고 계산한다.
SQL> SELECT EMPNO, SAL, COMM FROM EMP;
SQL> SELECT AVG(COMM) AS AVG1, -- 커미션이 있는 사원들의 평균 커미션 AVG(NVL(COMM, 0)) AS AVG2 -- 사원 1인당 평균 커미션 FROM EMP;
Analytic Example
SQL> SELECT manager_id, last_name, hire_date, salary, AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg FROM employees;
SQL> SELECT employee_id, job_id, TO_CHAR((SYSDATE - hire_date) YEAR TO MONTH ) "Yrs-Mns", salary, CORR(SYSDATE-hire_date, salary) OVER(PARTITION BY job_id) AS "Correlation" FROM employees WHERE department_id in (50, 80) ORDER BY job_id, employee_id;
4. COUNT(N) - N의 총 개수를 계산한다. 단, NULL은 제외한다.
SQL> drop table t1 purge;
SQL> create table t1 (col1 number); SQL> insert into t1 values (1000);SQL> SQL> insert into t1 values (1000); SQL> insert into t1 values (2000); SQL> insert into t1 values (2000); SQL> insert into t1 values (null); SQL> insert into t1 values (null);
SQL> commit;
SQL> select col1, col1, col1 from t1;
SQL> select count(*), count(col1), count(distinct col1) from t1;
5. COVAR_POP(P1, P2) - COVAR_POP returns the population covariance of a set of number pairs. You can use it as an aggregate or analytic function.
SQL> SELECT job_id, COVAR_POP(SYSDATE-hire_date, salary) AS covar_pop, COVAR_SAMP(SYSDATE-hire_date, salary) AS covar_samp FROM employees WHERE department_id in (50, 80) GROUP BY job_id;
COVAR_SAMP returns the sample covariance of a set of number pairs. You can use it as an aggregate or analytic function.
7. CUME_DEST - CUME_DIST calculates the cumulative distribution of a value in a group of values. The range of values returned by CUME_DIST is >0 to <=1. Tie values always evaluate to the same cumulative distribution value.
SQL> SELECT CUME_DIST(15500, .05) WITHIN GROUP (ORDER BY salary, commission_pct) "Cume-Dist of 15500" FROM employees;
8. DENSE_RANK(M, N) - DENSE_RANK computes the rank of a row in an ordered group of rows and returns the rank as a NUMBER. The ranks are consecutive integers beginning with 1. The largest rank value is the number of unique values returned by the query. Rank values are not skipped in the event of ties. Rows with equal values for the ranking criteria receive the same rank. This function is useful for top-N and bottom-N reporting.
This function accepts as arguments any numeric datatype and returns NUMBER.
1) RANK() VS DENSE_RANK()
SQL> SELECT EMPNO, SAL, RANK() OVER(ORDER BY SAL DESC) RANK_T, DENSE_RANK() OVER(ORDER BY SAL DESC) DENSE_RANK_T FROM EMP;
-- RANK() 함수는 2등이 2명이면 다음 등수는 4등이 됩니다.
-- DENSE_RANK() 함수는 2등이 2명이면 다음 등수는 3등이 됩니다.
-- RANK() 함수는 중간에 빠지는 등수가 있지만 DENSE_RANK() 함수는 중간에 빠지는 등수가 없습니다.
2) 상위 5명 추출
SQL> SELECT * FROM (SELECT EMPNO, ENAME, SAL, RANK() OVER(ORDER BY SAL DESC) RANK FROM EMP) WHERE RANK < 6;
SQL> SELECT * FROM (SELECT EMPNO, ENAME, SAL, RANK() OVER(ORDER BY SAL DESC) RANK FROM EMP) WHERE ROWNUM < 6;
3)
SQL> SELECT DENSE_RANK(15500, .05) WITHIN GROUP (ORDER BY salary DESC, commission_pct) "Dense Rank" FROM employees;
9. FIRST & LAST - FIRST와 LAST 함수는 SORTING된 집합에서 첫번째 혹은 마지막 결과를 얻는데 사용된다.
SQL> SELECT department_id, MAX(salary) KEEP (DENSE_RANK LAST ORDER BY SALARY) "최대값", MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY SALARY) "최소값" FROM employees GROUP BY department_id;
SQL> SELECT DEPARTMENT_ID, MAX(EMPLOYEE_ID||' '||LAST_NAME) KEEP (DENSE_RANK FIRST ORDER BY SALARY DESC) 최대급여, MAX(SALARY) 최대값, MIN(EMPLOYEE_ID||' ' ||LAST_NAME) KEEP (DENSE_RANK LAST ORDER BY SALARY DESC) 최소급여, MIN(SALARY) 최소값 FROM EMPLOYEES GROUP BY DEPARTMENT_ID;
10. GROUP_ID - GROUP_ID 함수는 지정된 GROUP BY 결과로 부터 중복된 그룹을 구별한다. 질의 결과에서 중복된 GROUPING을 필터링 하는 것에 유용하다. 유일한 중복 그룹을 식별하기 위해 ORACLE NUMBER를 반환한다. GROUP_ID는 GROUP BY clause를 포함한 SELECT statement에 적용 가능하다. 만약 N이 특정 GROUPING에서 중복이 존재하면, GROUP_ID는 0~(N-1) 범위의 값을 반환한다.
SQL> SELECT DEPTNO, JOB, SUM(SAL), GROUPING(DEPTNO) AS DEPT_G, GROUPING(JOB) AS JOB_G FROM EMP GROUP BY ROLLUP(DEPTNO, JOB) ;
SQL> SELECT DECODE(GROUPING(department_name), 1, 'All Departments', department_name) AS department, DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job, COUNT(*) "Total Empl", AVG(salary) * 12 "Average Sal" FROM employees e, departments d WHERE d.department_id = e.department_id GROUP BY ROLLUP (department_name, job_id);
12. GROUPING_ID(Expr) - Expr의 GROUPING 비트 벡터에 대응하는 수치를 반환한다. GROUPING_ID는 ROLLUP, CUBE, GROUPING 함수와 같은 GROUP BY 확장 기능을 포함한 SELECT 문장에서 적용할 수 있다. 많은 GROUP BY 표현을 가지는 쿼리에서, 많은 GROUPING 함수를 필요로 하는 특정한 행의 GROUP BY 레벨을 지정하기 위해서는 복잡한 쿼리가 요구된다. GROUPING_ID는 이러한 경우 유용한다.
GROUPING_ID 함수는 다수의 GROUPING 함수의 결과와 비트 벡터(0과 1의 문자열)를 연결하는 것과 동일핟. GROUPING_ID를 이용하여서 다수의 GROUPING 함수를 사용하지 않고서, 표한하기 위한 행의 필터 조건이 간단해 진다. 행 필터링은 원하는 행잉 GROUPING_ID=N의 단일 조건으로 정의 될 수 있어서 더 쉬워진다. 단일 테이블에서 다수의 집계의 레벨을 저장할 때 유용하다.
SQL> SELECT DEPTNO, DECODE(GROUPING_ID(DEPTNO,JOB),3,'총합계',1,'부서합계',JOB) AS JOB, DECODE(GROUPING_ID(DEPTNO,JOB,EMPNO),1,'직급소계',EMPNO) AS EMPNO, DECODE(GROUPING_ID(DEPTNO,JOB,EMPNO),0,ENAME,COUNT(*)||'명') AS ENAME, MGR, SUM(SAL) AS SAL, SUM(COMM) AS COMM FROM EMP GROUP BY ROLLUP (DEPTNO,JOB,(EMPNO,ENAME,MGR))
SQL> SELECT MIN(hire_date) AS "Earliest" FROM employees;
SQL> SELECT manager_id, last_name, hire_date, salary, MIN(salary) OVER(PARTITION BY manager_id ORDER BY hire_date RANGE UNBOUNDED PRECEDING) AS p_cmin FROM employees;
16. SUM(N)- N의 합계을 반환한다.
1) Aggregate Example SQL> SELECT SUM(salary) "Total" FROM employees;
2) Analytic Example
SQL> SELECT manager_id, last_name, salary, SUM(salary) OVER (PARTITION BY manager_id ORDER BY salary RANGE UNBOUNDED PRECEDING) l_csum FROM employees;
17. MEDIAN(Expr) - Expr의 중앙값을 반환한다. 데이터를 크기 순서로 나열할 때 가장 중앙에 위치하게 되는 데이터 값. 자료의 개수 n이 홀수이면 (n+1)/2번째 값이 중앙값이고, 짝수이면 n/2번째 값과 (n/2)+1번째 값의 평균값이 중앙값이 된다.(네이버 IT용어사진)
1) Aggregate Example SQL> SELECT RANK(15500, 0.5) WITHIN GROUP (ORDER BY SALARY, COMMISSION_PCT) "Rank" FROM EMPLOYEES
SQL> SELECT RANK(15500) WITHIN GROUP (ORDER BY SALARY DESC) "Rank of 155500" FROM EMPLOYEES
2) Analytic Example
SQL> SELECT department_id, last_name, salary, commission_pct, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC, commission_pct) "Rank" FROM employees WHERE department_id = 90;
19. PERCNET_RANK(Expr) - PERCENT_RANK 함수는 CUME_DIST(cumulative distribution) 함수와 비슷하다. PERCENT_RANK의 반환값은 0과 1사이다. 첫번째 집합의 PERCENT_RANK의 값은 0이다.
1) Aggregate Example SQL> SELECT PERCENT_RANK(15000, .05) WITHIN GROUP (ORDER BY salary, commission_pct) "Percent-Rank" FROM employees;
2) Analytic Example
SQL> SELECT department_id, last_name, salary, PERCENT_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS pr FROM employees ORDER BY pr, salary;
20. STDDEV(Expr) - Exprt의 표본표준편차(the sample standard deviation)을 반환한다. STTDEV는 1건의 데이타를 갖고 있으면 0을 반환하고 STDDEV_SAMP은 NULL을 반환한다.
1) CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
2) COALESCE(expr1, expr2, ..., exprn), for n >= 3
3) CASE WHEN expr1 IS NOT NULL THEN exp1
SQL> SELECT coalesce('','', 'Expr1', 'Expr2') FROM DUAL;
SQL> SELECT ename, comm, sal, coalesce(comm, sal, 0) AS COAL_TEST FROM emp;
SQL> SELECT last_name, manager_id, commission_pct, COALESCE(manager_id,commission_pct, -1) comm FROM employees ORDER BY commission_pct;
2. LNNVL(Expr) - It provides a concise way to evaluate a condition when one or both operands of the condition may be null. The function can be used only in the WHERE clause of a query. It takes as an argument a condition and returns TRUE if the condition is FALSE or NUKNOWN and FALSE if the condition is TRUE. Oracle Database sometimes uses the LNNVL function internally in this way to rewrite NOT IN conditions as NOT EXISTS conditions.
SQL> SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID" FROM employees e, job_history j WHERE e.employee_id = j.employee_id ORDER BY last_name;
2. SYS_GUID - SYS_GUID generates and returns a globally unique identifier (RAW value) made up of 16 bytes. On most platforms, the generated identifier consists of a host identifier, a process or thread identifier of the process or thread invoking the function, and a nonrepeating value (sequence of bytes) for that process or thread.