DBMS/MS-SQL2006. 10. 16. 11:33

SQL 서버 관리자가 알아야 할 11가지 유용한 팁

1. 데이터베이스의 모든 테이블 행을 가장 빨리 세는 방법

SQL 서버 데이터베이스 내에 존재하는 시스템 테이블 'sysindexes'에는 'rows'란 컬럼이 존재한다. 이 컬럼은 테이블에 반영된 행들의 수를 갖고 있다. 다음 SQL문을 실행시키면 원하는 결과를 효과적으로 얻을 수 있을 것이다.

select o.name, rows from sysobjects o inner join sysindexes i on o.id = i.id where i.indid < 2 order by o.name

where 절의 "indid<2" 부분은 클러스터드 인덱스(clustered index) 또는 힙(heap) 정보를 찾지 않기 위함이다. 이 결과는 실제로 트랜잭션(transaction)이 일어난 행만 카운트한다.



2. 스토어드 프로시져에 대한 파라미터로 테이블 이름을 사용하는 방법



이것을 위해서는 동적인 SQL을 사용해야 한다. 다음 스크립트를 참조하기 바란다.

Create proc dbcc_table @tabname varchar(30) as BEGIN Exec ("dbcc checktable (" + @tabname + ")") END go /*** 스토어드 프로시져를 테스트하려면 ***/ dbcc_table syslogs

3. 모든 테이블을 BCP 하기 위한 스크립트 작성 방법

Select "bcp " + db_name() + ".." + name + " out c:\temp" + name + ".txt /c -t\t -SserverName -UuserID -Ppassword /b1000" from sysobjects where type = "U" order by name

위의 예는 모든 데이터베이스 객체가 데이터베이스 오우너(owner) 또는 DBO에 의해 소유되었다는 가정 아래 작성되었다. 위의 예는 윈도 커맨드 파일 또는 배치 파일로 저장하여 실행할 수 있는 스크립트를 만들 것이다. 결과물은 탭 구분자로 분리된 텍스트가 될 것이다.



BCP(Bulk Copy Program)에 대한 파라미터에 대해 좀 더 알기 원하면 Books Online에서 BCP를 찾아 보거나, 커맨드 윈도우에서 BCP /?를 실행시켜 보기 바란다.



원한다면 ISQL에서 xp_cmdshell과 함께 실행시킬 수도 있다. 파일 경로에서 나타난 드라이브 문자는 서버에 있는 것이지 클라이언트 PC에 있는 것이 아님을 기억하기 바란다.



위의 스크립트에서 /b 옵션을 준 것을 기억하라. 만일 이 옵션을 사용하지 않으면 대량의 파일을 데이터베이스로 복사할 때 하나의 작업으로 처리하게 된다. 하지만 "/b 1000" 옵션을 사용함으로써 1000라인의 트랜잭션 단위로 작업을 나누어 하게 된다.



4. 어떤 파일이 디스크 상에 존재하는지 조사하는 방법



서버 상에서 파일 정보를 얻으려면 다음과 같이 xp_getfiledetails란 확장 스토어드 프로시져를 사용하면 된다.

Master..xp_getfiledetails "c:\mssql\binn\sqlservr.exe"

5. 남은 디스크 공간을 알아내는 방법



서버에 남아있는 디스크 공간을 알아내려면 다음과 같이 xp_fixeddrives란 확장 스토어드 프로시져를 사용하면 된다. 만일 SQL 서버 6.5에서 실행한다면 Bytes free 컬럼의 실제 단위는 Bytes가 아니라 Megabytes free임을 조심해야 한다.

Master..xp_fixeddrives

6. 리모트 상에서 서버 셧다운(shut down) 시키는 방법



윈도 NT 리소스 킷(Resource Kit)을 보면 shutdown과 shutgui란 두 개의 유틸리티가 있는게 이 유틸리티들을 활용하면 된다. 조심해야할 것은 서버를 바로 재부팅하는 것이 디폴트 옵션이 아니라는 것이다. 만일 이 옵션을 잘못 설정했다면 결국 서버를 작동시키기 위해 서버가 있는 기계쪽으로 가야만 할 것이다.



7. SQL 서버의 자세한 버전 정보를 보는 방법



다음과 같이 xp_msver 스토어드 프로시져를 사용하면 된다.

Master..xp_msver

이 스토어드 프로시져에 대한 MSDN 자료를 보고 싶다면 아래 링크를 클릭하기 바란다.



Master..xp_msver 자세히 보기 - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_xp_aa-sz_0o4y.asp



8. SQL 서버 이벤트 로그 순환시키는 방법



SQL 서버를 관리하다 보면 이벤트 로그 사이즈가 겉잡을 수 없이 커지게되는 것을 볼 수 있다. 많은 사람들은 이 문제를 햐결하기 위해 SQL 서버를 멈췄다가 다시 시작하곤 한다. 하지만 다음과 같이 dbcc errorlog를 이용하면 이 문제를 쉽게 해결할 수가 있다.



dbcc errorlog



이 명령어는 문서화되어 있지 않은 명령어이다. 그렇기 때문에 이 명령어를 사용할 경우 책임은 전적으로 사용자에게 있게 됨을 주의하도록 하자.



9. 서버 레지스트리 값을 읽는 방법



확장 스토어드 프로시져인 XP_REGREAD를 이용하면 서버의 레지스트리 값을 읽어낼 수가 있다. 다음 예는 NT 4 서비스 팩 버전 정보를 레지스트리로부터 읽어 표시하는 예이다.

master..xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Microsoft\Windows NT\CurrentVersion', @value_name = 'CSDVersion'

10. 스토어드 프로시져를 자동으로 실행하게 하는 방법



SQL 서버가 기동될 때마다 자동으로 하나 이상의 스토어드 프로시져를 작동시키고 싶은 경우들이 있다. 예상치 않게 서버가 재부팅됐다거나 SQL 서버가 시작될 때 특정 프로세스를 실행해야할 경우 유용하게 사용할 수가 있을 것이다.



SQL 서버 6.5에서는 master 데이터베이스에 해당 스토어드 프로시져를 저장한 후 다음과 같은 명령을 실행시키면 된다:

sp_makestartup "procedure_name"

SQL 서버 7 또는 2000에서는 대신 sp_procoption 스토어드 프로시져를 사용하면 된다. 이에 대한 자세한 사항은 다음 msdn 자료를 참조하기 바란다.



sp_procoption 설명 보기 : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_pa-pz_95m6.asp



11. 백업하지 않은 데이터베이스 복구시키는 방법



물론 정기적으로 데이터베이스 백업을 점검하고 테스트하는 관리자라면 이 팁은 무시해도 된다.



하지만 어떤 경우 백업을 하지 않아 데이터를 복원할 때 난감해하는 사람이 있을지도 모르겠다. 이럴 경우 .LDF(로그 파일)와 .MDF 파일을 스토어드 프로시져를 이용하여 SQL 서버에 다시 어태치(attach)시킴으로써 데이터를 종종 복원시킬 수도 있다. 항상 가능한 것은 아니지만 안해보는 것보단 나을 것이다.



이와 관련된 스토어드 프로시져는 sp_attach_db이다. 이 스토어드 프로시져에 대한 자세한 설명은 다음 msdn 자료를 참조하기 바란다.



sp_attach_db 설명 보기 : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sp_ae-az_52oy.asp



출처 : database.sarang.net

Posted by Blue*
DBMS/Oracle2006. 6. 7. 13:16

SQL -> ORACLE DATA 조회는 여러번 언급되어 왔기에

ORACLE -> SQL DATA 조회하는 방법을 소개한다.

은폐 게이트웨이 설치 및 설정

은폐 게이트웨이(Transparent Gateway)는 오라클 DBMS에 기본으로 설치되는 부분은 아니므로 은폐 게이트웨이가 설치되지 않았다면 Oracle Universal Installer에서 지정해 설치하도록 한다(Oracle Universal Installer에서 ‘Oracle9i Database 9.2.0.1.0 > Oracle Transparent Gateway 9.2.0.1.0’을 설치하면 된다). 설치시 <화면 5>와 같이 SQL 서버 및 데이터베이스를 입력하라고 나오는데, 본 예제에서는 SQL 서버에는 127.0.0.1, 데이터베이스는 Northwind로 설정했다(여기서는 SQL 서버가 은폐 게이트웨이와 같은 서버에 있다고 가정한다). 여기서 지정하는 데이터베이스가 은폐 게이트웨이로 접속했을 때, 사용할 수 있는 데이터베이스가 된다.

<화면 5> 은폐 게이트웨이 설치 화면

이렇게 은폐 게이트웨이의 설치를 마치면 『오라클 설치 폴더 | ora92 | tg4msql | admin』에 은폐 게이트웨이 설정 파일 및 수정에 필요한 샘플 파일이 생성된다.

◆ 은폐 게이트웨이 SID 선정 : SID는 서버 내에서 각 오라클 인스턴스 및 은폐 게이트웨이를 구별하는 구분자 역할을 하는데, 은폐 게이트웨이의 경우 디폴트로 tg4msql로 설정되어 있다. 따라서 은폐 게이트웨이 설정 파일명도 inittg4msql.ora로 되어 있다(설정 파일명은 init 은폐 게이트웨이 SID.ora 형식으로 되어 있다). SID를 변경하고자 한다면, inittg4msql.ora에서 init 변경된 SID.ora로 파일명을 변경해야 한다. 여기서는 디폴트 SID를 사용하도록 한다.

◆ 은폐 게이트웨이로 요청을 분배하기 위한 TNS Listener 설정 : 기본적으로 TNS 리스너는 오라클 클라이언트로부터 오라클 서버의 접속 요청을 받아 접속 요청 내에 포함된 SID를 확인한 뒤, 해당 SID를 가진 오라클 인스턴스에게 요청을 넘겨주는 역할을 한다. 이제 은폐 게이트웨이도 설치됐으므로 TNS Listener로 하여금 은폐 게이트웨이에 대한 접속 요청을 받아서 접속 요청 내에 포함된 SID를 확인한 뒤, 해당 SID를 가진 은폐 게이트웨이에 요청을 넘겨주도록 설정해야 한다. listener.ora와 tnsnames.ora를 <리스트 4>와 같이 수정하도록 한다. 수정 후에는 반드시 TNS 리스너를 재시작해 변경사항이 적용되도록 한다.



이제 오라클에서 SQL 서버를 사용하기 위한 은폐 게이트웨이에 필요한 설정은 모두 끝이 났다. 이제 오라클에 system 계정으로 로그인해 SQL 서버에 연결할 수 있도록 데이터베이스 링크를 만들어 주도록 하자(scott 계정에서 데이터베이스 링크를 만드는 것도 가능하지만 다른 데이터베이스를 접속하도록 인가하는 것은 DBA가 하는 것이 바람직하다).



CREATE PUBLIC DATABASE LINK ms CONNECT TO sa IDENTIFIED BY password USING 'hsagent';



그리고 scott 계정으로 접속해 데이터베이스 링크를 이용해 SQL 서버의 Northwind 데이터베이스를 오라클처럼 사용해 보도록 하자.

◆ SQL 서버 테이블 접근

SELECT * FROM Customers@ms WHERE rownum <= 3;

SELECT sum("col4") FROM test@ms

SELECT * FROM test@ms m, TEST ora WHERE m."col1" = ora.col1;





출처 : http://www.dbguide.net/dbqa/dbqa120001.jsp?mode=view&pg=1&idx=797

Posted by Blue*
DBMS/MySQL2006. 5. 10. 10:25
데이터 타입설명 및 범위
tinyint부호 있는 정수 -128 ∼ 127

부호 없는 정수 0 ∼ 255

1 Byte
smallint부호 있는 정수 -32768 ∼ 32767

부호 없는 정수 0 ∼ 65535

2 Byte
mediumint부호 있는 정수 -8388608 ∼ 8388607

부호 없는 정수 0 ∼ 16777215

3 Byte
int OR integer부호 있는 정수 -2147483648 ∼ 2147483647

부호 없는 정수 0 ∼ 4294967295

4 Byte
bigint부호 있는 정수 -9223372036854775808 ∼ -9223372036854775807

부호 없는 정수 0 ∼ 18446744073709551615

8 Byte
float단일 정밀도를 가진 부동 소수점

-3.402823466E+38 ∼ 3.402823466E+38
double2 배 정밀도를 가진 부동 소수점

-1.79769313486231517E+308 ∼ 1.79769313486231517E+308
date날짜를 표현하는 유형

1000-01-01 ∼ 9999-12-31
datetime날짜와 시간을 표현하는 유형

1000-01-01 00:00:00 ∼ 9999-12-31 23:59:59
timestamp1970-01-01 00:00:00부터 2037년 까지 표현

4 Byte
time시간을 표현하는 유형

-839:59:59 ∼ 833:59:59
year년도를 표현하는 유형

1901년 ∼ 2155년
char(m)고정길이 문자열을 표현하는 유형

M = 1 ∼ 255
varchar(m)가변길이 문자열을 표현하는 유형

M = 1 ∼ 255
TINYBLOB OR TINYTRXT255개의 문자를 저장

Binary Large Object의 약자
BLOB OR TEXT63535개의 문자를 저장
MEDIUMBLOB OR MEDIUMTEXT16777215개의 문자를 저장
LONGBLOB OR LONGTEXT4294967295(4Giga)개의 문자를 저장




출처 : http://blog.naver.com/enanim?Redirect=Log&logNo=80017418798

'DBMS > MySQL' 카테고리의 다른 글

MySQL 4.1 한글 문제 해결법  (0) 2006.04.11
Posted by Blue*
DBMS/MySQL2006. 4. 11. 23:55

개인적으로 뭐좀 테스트 해 볼 것이 있어서

MySQL 최신버전인 4.1을 다운로드 받아서 설치 하였다.



그런데 테스트를 해보니 한글이 모두 ??? 로 깨져버리는 것이었다.

우리나라 개발 커뮤니티를 모두 뒤졌으나 거기에 제시된 해결책은 모두 제대로 반영되지 않았고

모 외국 사이트에서 뜻하지 않게 해결책을 발견하였다.

환경이 서로 틀려서 그런지도 모르지만 제대로 테스트 안해보고 올린 솔루션들은 가끔 다른 사람들을 짜증나게 하는 것같다.   물론 나 자신도 막연하게 그런 적이 간혹 있는 것같지만...



일단 4.1에서는 서브쿼리도 지원되고 많은 부분이 향상된 듯 하다.

MySQL이 아직 상용데이터베이스에 많은 부분이 못미친다고 생각하지만

여기 네이버를 비롯해서 현재 많은 곳에서 쓰이고 있고 또 실제 써본 경험으로도

편한 부분도 좀 있고 그런대로 쓸만한 것 같다.





음... 자꾸 얘기가 딴데로 새는데... 다시 돌아와서...



MySQL 윈도우용 설치시 캐릭터 셋 지정옵션이 있는데 이 때 캐릭터 셋을 euckr로 선택하고 로그인 하고 캐릭터 지정옵션을 조회하면 다음과 같다.

(4.1부터 캐릭터셋이 euc-kr에서 euckr로 변경되었다)



mysql> show variables like 'c%';

+--------------------------+---------------------------------+

| Variable_name            | Value                           |

+--------------------------+---------------------------------+

| character_set_client     | latin1                          |

| character_set_connection | latin1                          |

| character_set_database   | euckr                           |

| character_set_results    | latin1                          |

| character_set_server     | euckr                           |

| character_set_system     | utf8                            |

| character_sets_dir       | C:\DEV\MySQL4.1\share\charsets/ |

| collation_connection     | latin1_swedish_ci               |

| collation_database       | euckr_korean_ci                 |

| collation_server         | euckr_korean_ci                 |

| concurrent_insert        | ON                              |

| connect_timeout          | 5                               |

+--------------------------+---------------------------------+

12 rows in set (0.00 sec)







설정이 제대로 안 된 것인데 해결책은 의외로 정말 간단했다.



MySQL 이놈이 MySQL 설치 디렉토리에 위치해 있는 설정파일인 my.ini 를 제대로 인식하지 못하기 때문에 발생한 오류였다.

너무나 허무하게도 my.ini를 C:\ 밑이나 C:\windows 밑으로 카피해 놓으면 모든 설정이 제대로 적용이 된다.





mysql 콘솔에서 밑의 명령어를 쳐서 다음과 같이 나오면 설정이 완료된 것이다.



mysql> show variables like 'c%';

+--------------------------+---------------------------------+

| Variable_name            | Value                           |

+--------------------------+---------------------------------+

| character_set_client     | euckr                           |

| character_set_connection | euckr                           |

| character_set_database   | euckr                           |

| character_set_results    | euckr                           |

| character_set_server     | euckr                           |

| character_set_system     | utf8                            |

| character_sets_dir       | C:\DEV\MySQL4.1\share\charsets/ |

| collation_connection     | euckr_korean_ci                 |

| collation_database       | euckr_korean_ci                 |

| collation_server         | euckr_korean_ci                 |

| concurrent_insert        | ON                              |

| connect_timeout          | 5                               |

+--------------------------+---------------------------------+

12 rows in set (0.02 sec)









만약에 설치시 옵션 설정을 안했다면 my.ini의 [client] 와 [mysqld]  섹션에 각각

다음과 같이 캐릭터 셋을 지정해주면 된다.



default-character-set=euckr





이런식으로 가끔씩 한글이 문제가 되는 경우가 있지만,

난 우리 글 한글이 너무 좋다.

음... 좀 쌩뚱맞나??? ㅋㅋㅋㅋ







출처 : http://blog.naver.com/riosung/20017516106

'DBMS > MySQL' 카테고리의 다른 글

MySql 데이터 타입  (0) 2006.05.10
Posted by Blue*
DBMS2006. 3. 29. 09:54


http://www.en-core.com/bin/main/module/solution/list.asp?board_id=solution&flash_menu=c1



DB와 관련해서 읽어봐두면 좋은 글이 무지무지 많아요~

단, 로그인 해야지만 내용을 볼 수 있습니다..;;



Posted by Blue*