SELECT O.OBJECT_NAME,  O.OBJECT_ID,O.OBJECT_TYPE, O.STATUS
     , A.ARGUMENT_NAME, A.POSITION, A.SEQUENCE, A.DATA_LEVEL, A.DATA_TYPE, A.IN_OUT, A.DATA_LENGTH
  FROM USER_OBJECTS O, USER_ARGUMENTS A
 WHERE O.OBJECT_TYPE = 'FUNCTION'
   AND O.OBJECT_ID = A.OBJECT_ID
   AND A.ARGUMENT_NAME IS NOT NULL
   -- AND A.POSITION = 0
 ORDER BY O.OBJECT_NAME, A.POSITION

 

 

이렇게 고마울수가 ㅠㅠ

눈물이 다 난다..

 

DB 담당자 라면 이쯤은 알아야 하지 않을까??

 

 

이 외에 오브젝트 타입 별로

INDEX
PROCEDURE
TABLE
VIEW
FUNCTION
DATABASE LINK
SYNONYM
LOB
SEQUENCE

이런 것들이 조회 가능하다

멋지지 않나? ㅠㅠ

  select * from v$controlfile
  select * from v$database
  select * from v$datafile
  select * from v$instance
  select * from v$parameter
  select * from v$session
  select * from v$sga
  select * from v$spparameter
  select * from v$tablespace
  select * from v$thread
  select * from v$version

 

테이블 명 보면 뭔지 대강 감이 온다..

하지만 컬럼명 보면 @_@;; 어지럽다..

 

한번 해 보세용~!!

 table per rows query

콩글리쉬 임니다..

궂이 테클은 사양합니다.

 

맞는 표현은 무엇인가요??

 

여튼 쿼리 투척 함니다!!

SELECT table_name, num_rows
  FROM user_tables

 

데이터 이관 후 각각 테이블 비교 해 볼 만 합니다.

적절한, 혹은 무식한 쿼리입니다.

 

 

Mysql 에서는 Timestamp 데이터 타입이 존재하는데 다음과 같이 기본값을 설정하지 않으면 업데이트시나 새로 데이터가 추가될 때 현재시간으로 갱신되지 않는다. Timestamp 필드를 사용할 때 주의하자.

 

CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

 

 

Oracle 에서 Delete시 Join이 필요한 경우가 있다. 보통은 IN 을 이용해서 삭제하는데 이게 데이터가 많을 경우 속도가 느린 경우가 있다. IN 대신 다음 방법을 이용하자.

 

DELETE FROM TABLE_1 A

WHERE EXISTS (

  SELECT 1 FROM TABLE_2 B

  WHERE B.ID=A.ID

);

간략하게 

쿼리문 부터 적어본다면


-- 해당 테이블의 콘스트레인트 명 조회

select constraint_name from user_constraints where table_name = '테이블명';


-- 해당 콘스트레인트 명 으로 콘스트레인트 해당 테이블의 콘스트레인트를 drop

alter table 테이블명 drop constraint 콘스트레인트명;


토드를 사용한다면 쿼리창에서 테이블 명을 적고 드레그해서 선택한 후 F4를 눌러서

테이블 정보창에서 Constraints 텝을 눌러서 확인 하는 방법도 있다.

 

mysql에서 현재 실행되고 있는 쿼리 목룩을 확인하는 방법은 다음과 같다.

# mysqladmin -uroot -p processlist

 

이 서버는 테스트서버라서 아직 사용되지 아무 쿼리가 없어서 실행되는 내용이 없다.

 

Time 필드에 실행 시간도 나오니 혹시 데드락(deadlock)이 발생했는지 의심되는 경우 조회해 볼 수 있겠다.

 

mysql에서 다음과 같은 방법으로 디비명을 변경할 수 있다. 다음은 old_database를 new_database로 변경하는 예제이다.

 

# create database new_database;

새로운 디비를 생성한다.

 

# rename table old_database.table to new_database.table;

테이블들을 옮겨준다. 테이블이 여러개면 여러번 해주면 된다.

 

# drop database old_database;

기존 디비를 지운다. (옵션사항)

 

추가로 procedure도 옮기고 싶을 경우는 다음과 같이 mysql.proc 테이블을 업데이트 해주면 된다.

# update mysql.proc set db = 'old_database' where db = 'new_database';

 

 

아니면 다른 방법으로 스크립트를 이용하거나 mysqldump를 이용해서 export, import해도된다.

http://stackoverflow.com/questions/12190000/rename-mysql-database 참고

 

 

mysql -e "CREATE DATABASE \`new_database\`;"

for table in `mysql -B -N -e "SHOW TABLES;" old_database`

do

mysql -e "RENAME TABLE \`old_database\`.\`$table\` to \`new_database\`.\`$table\`"

done

mysql -e "DROP DATABASE \`old_database\`;"

 

 

더 편한 방법은 mysql 5.1.7 이상에서는 RENAME DATABASE 구문으로도 지원하다.

http://dev.mysql.com/doc/refman/5.1/en/rename-database.html

 

http://blog.mongodb.org/post/137788967/32-bit-limitations

 

MongoDB는 32bit OS에서 data파일이 2GB 로 제한된다. MSSQL이 이 문제를 해결하기 위해 다른 처리가 있었던 것과 대조되지만.. 64bit OS 를 설치하면 된다. 참고하자. 아래는 원문내용이다.

 

 

32-bit MongoDB processes are limited to about 2 gb of data. This has come as a surprise to a lot of people who are used to not having to worry about that. The reason for this is that the MongoDB storage engine uses memory-mapped files for performance.

 

By not supporting more than 2gb on 32-bit, we've been able to keep our code much simpler and cleaner. This greatly reduces the number of bugs, and reduces the time that we need to release a 1.0 product. The world is moving toward all 64-bit very quickly. Right now there aren't too many people for whom 64-bit is a problem, and in the long term, we think this will be a non-issue.

 

 

먼저 권한을 주고

GRANT execute ON DBMS_LOCK TO <schema_name>;

 

다음과 같이 사용하면 된다.

dbms_lock.sleep(1);

 

 

http://en.wikipedia.org/wiki/Sleep

 

아래와 같은 쿼리를 통해서 확인할 수 있다. 또는 스키마 내역을 확인할 수도 있다.

 

select *

from information_schema.table_constraints

where table_schema = 'db'

and table_name = 'table'

and constraint_type='FOREIGN KEY';

 

 

 

INFORMATION_SCHEMA 이란?

 

INFORMATION_SCHEMA는 데이터베이스의 메타데이터이다. 이 테이블에서는 MySQL에서 관리하는 모든 데이터베이스의 정보가 포함되어있다. INFORMATION_SCHEMA는 많은 읽기전용 테이블을 포함하고 있다. 이 테이블들은 실제적으로는 뷰(view)이다. 그래서 이와 관련된 파일은 실제로 존재하지는 않는다. 뷰 이기 때문에 트리거(trigger) 등은 생성할 수 없다.

 

 

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

MDF, NDF, LDF 각 파일은 물리 데이터베이스 파일과 파일그룹을 의미한다. 데이터 파일과 로그파일은 서로 같은 파일로 섞이지 않고 데이터베이스에 의해서 개별적으로 보관된다. MSSQL에서 관리되는 파일은 다음과 같이 3가지 타입이 있다.


Primary data files

Prmary data file은 데이터베이스의 시작점이고 데이터베이스의 다른 파일을 가리키고 있다. 모든 데이터베이스는 primary data file을 가지고 있다. 보통 .mdf 확장자를 갖는다


Secondary data files

Secondary data files은 primary data file 이외의 데이터 파일로 구성된다. Secondary data file이 아애 없는 데이터베이스도 있을 수 있다. 또는 여러개 secondary data file을 가질 수도 있다. 보통 .ndf 확장자를 갖는다.


Log files

Log files은 데이터베이스를 복구하는데 사용되는 로그 정보가 포함되어있다. 데이터베이스에는 적어도 하나 이상의 로그 데이터베이스가 있어야 한다. 보통 .ldf 확장자를 갖는다.


각 파일의 의미에서 알 수 있듯이 실제 데이터는 MDF파일만 가지고도 복구할 수 있지만 실수로 인해 복구가 필요해 그동안의 트랜잭션 히스토리가 필요한 경우에는 LDF파일의 존재가 필수적이다.




http://www.adp-gmbh.ch/ora/sql/greatest_least.html

   

min, max가 검색조건에 맞는 값 중에 가장 작은 것과 가장 큰 것을 뽑는 함수였다면 greatest와 least는 inline 형태로 사용하여 가장 큰 값과 제일 작은 값을 뽑기 위한 함수이다.

select least(44, 22, 49, 8, 102) from dual;

> 8

select greatest(44, 22, 49, 8, 102) from dual;

> 102

   

greatest (expr-1)

greatest (expr-1, expr_2)

greatest (expr-1, expr_2, ..., expr-n)

   

least (expr-1)

least (expr-1, expr_2)

least (expr-1, expr_2, ..., expr-n)

 

추가로 null이 포함된 경우에는 greatest, least모두 null을 반환하는 점을 참고하자.

 

GREATEST(-1,0,1,2,NULL)

———————–

NULL

 

 

LEAST(-1,0,1,2,NULL)

———————–

NULL

 

뿐만 아니라 숫자 이외의 데이터 타입이 포함된 경우 다음과 같은 에러가 발생한다.

 

select least(-1,0,1,2,'a') from dual

———————–

 

ERROR at line 1:

ORA-01722: invalid number

대량 Insert시에는 LOAD DATA 를 이용하자.

http://dev.mysql.com/doc/refman/5.5/en/load-data.html

 

예제는 다음과 같다. 추가로 local 키워드를 사용하면 원격지의 로컬파일에서 바로 등록할 수도 있다.

 

LOAD DATA INFILE 'c:\myFile.txt'

INTO TABLE `tbl_myTable`

(@var1, @var2)

SET

obj_id = @var1,

obj_geo = GeomFromText(@var2);

 

http://martinfowler.com/articles/nosql-intro.pdf

 

NoSQL의 정의

http://martinfowler.com/bliki/NosqlDefinition.html

mysql에서는 사용자, 디비, 접속ip별로 권한이 따로 관리되므로 설정 작업이 필요하다. 매번 할때마다 까먹어서 적어둔다. ㅎㅎ

   

CREATE USER `USER`@`HOST` IDENTIFIED BY PASSWORD;

GRANT ALL PRIVILEGES on `DBNAME`.* to `USER`@`HOST` identified by PASSWORD;

GRANT EXECUTE ON PROCEDURE `DBNAME` TO `USER`@`HOST`;

+ Recent posts