반응형
현재의 RDBMS 운영환경에서는 Multi-user환경으로 시스템이 구성되므로 별도의 시스템 관리자를 두어 관리해야 하며, 선정된 관리자는 RDBMS인 SQL Server의 효율적인 운용을 위해 다음과 같은 항목을 빈번히 Check 및 관리해야 합니다.
- SQL Server Errorlog 내용 확인
- 주기적인 Database Consistency Check 작업 (Dbcc)
- 계획적인 Database Full Backup 및 Transaction Backup
- Master DB 및 주요 System Table backup
- 정기적인 Bulk-copy로 SAM File 확보
- 모든 DB, Objects에 대한 Scripts 유지, 관리
- DB free space 확인
추가 정보
SQL Server Errorlog 내용 확인- 매일 errorlog file의 내용을 확인하여, 문제를 조기에 발견하고 조치를 취해야 합니다....
-
SQL Server Errorlog 내용 확인
- 매일 errorlog file의 내용을 확인하여, 문제를 조기에 발견하고 조치를 취해야 합니다.
- Errorlog file 위치 : Microsoft SQL Server 가 설치되어 있는 위치가 C:\MSSQL 이라고 가정하면 C:\MSSQL\LOG 의 ERRORLOG 라는 이름의 파일이 존재하게 됩니다.
ERRORLOG file 은 마지막으로 SQL Server가 start된 이후부터 지금까지의 errorlog내용을 가지고 있으며, 이외에 ERRORLOG.1, ERRORLOG.2, ... 등의 파일이 존재하는데, 이 파일들은 그 이전의 errorlog file들을 history관리를 위해 backup해 두는 파일입니다.
문제 발생시에 문제발생시점 및 원인을 정확하게 판단하는데 있어서, 이전의 errorlog file이 필요한 경우도 있으므로 errorlog.* 파일들도 가능한 한 삭제하지 말고 유지하시기 바랍니다.
Errorlog file에는 심각한 error, SQL Server관리와 관련되는 작업에 대한 내용 등이 기록되므로, 가능한 한 자주 Monitoring해야 하며 일반적인 Database 문제 발생시에도 일차적으로 errorlog 를 확인하는 것이 도움이 됩니다.
ERRORLOG file에는 Error에 대한 Error Number, Severity Level, Error Message 등이 기록됩니다. -
주기적인 DB check (dbcc)
- DBCC (Database Consistency Checker)를 사용하여, Database와 Object의 integrity를 monitoring 하여 오류를 점검합니다. DBCC를 수행하지 않고 DB backup을 받게 되면, 문제가 발생한 (예: table corrupt, …) 데이터를 그대로 backup 받을 수 있는 위험성을 내포하고 있고, 제대로 backup이 되지 않아서 문제 발생시에 복구가 불가능해 질 수 있습니다.
- DB 단위 check1) dbcc checkdb (<DB명>)
- 위의 command는 데이터베이스에 장해가 있는지를 점검합니다.
- RDBMS의 architecture는 서로 page간의 linkage로 형성되어 있는데, 이 Linkage를 기준으로 index page 와 data page를 점검합니다.
- 또한 각 object들의 Allocation 정보를 갖고 있는 MAP의 일관성도 점검합니다.
2) dbcc newalloc (<DB명>)
- Allocation error 를 점검합니다.
- 모든 page들의 allocation을 점검합니다.
- Allocation page의 Information 을 점검합니다.
3) dbcc checkcatalog (<DB명>)
- System table 및 system table 간의 consistency 를 점검합니다.
- Dbcc 수행시에는 db status 를 'read only' 로 변경 후 작업하시는 것이 가장 정확하고 좋은 방법입니다.
- 만약, 위의 세가지 check 를 다 수행할 여건이 못 되는 경우에는 dbcc newalloc 을 수행하는 것이 최선입니다.
- 이 작업은 DB 일관성을 위해 DB Dump 작업하기 전에 항상 작업해 주시기 바랍니다.
- 예> master DB에 대하여 DBCC를 수행하는 경우dbcc traceon (3604) go dbcc checkcatalog (master) go dbcc newalloc (master) go dbcc checkdb (master) go dbcc traceoff (3604) go
- Dbcc 결과 error가 발생한 경우에는, manual (Books online)을 참조하거나, 기술지원을 받아 복구작업을 수행하고, 복구가 완료되면 backup을 다시 받습니다. - 계획적인 Database Full Backup 및 Transaction Backup
- DB 에 문제가 발생하는 경우에 복구가 가능하도록, backup을 받아야 합니다.
- 주기적으로 아래의 데이터베이스들을 backup해야 합니다.Master database
Msdb database
모든 user database들
Distribution database
Database backup 전략을 수립하여, scripts를 작성하고, Windows NT의 "at" command를 사용하거나 SQL Server 6.5 에서 제공되는 "Scheduled Tasks" 기능을 이용하여 주기적으로 수행되도록 작업할 수 있습니다.
- Backup 방법은 아래 두가지로 나누어 집니다.1) Database 전체를 backup 하는 작업 (Full Backup)
- Data 와 Transaction log를 모두 backup 받습니다.
- 이 방법은 Transaction log를 삭제하지는 않기 때문에, 추가적으로 Database backup 하기 전에 Transaction log를 삭제하는 작업을 수행시켜 주는 것이 필요합니다.2) Transaction log 만 backup 하는 작업 (Transaction Log Backup)
- Transaction log를 backup받고 삭제해 줍니다.
- 항상 데이타베이스를 backup하기 전(또는 작업 후)에, DBCC Utility를 사용하여 Database Consistency를 check하는 것이 좋습니다.
- 데이터베이스를 사용자들이 사용하는 동안에도 backup이 가능합니다.
- Backup을 수행하면 SQL Server가 다소 느려질 수 있으므로, SQL Server를 많이 사용하지 않을 때 작업하시는 것이 좋습니다.
- Backup 에 대한 책임은 기본적으로 SA 와 Database Owner 에게 부여되며, Database Owner가 다른 사용자(user)에게 권한을 부여할 수도 있다.
- (주의) 다른 Character set과 Sort order를 사용하는 SQL Server에서 backup(dump database) 받은 데이터베이스는 Restore (Load Database)할 수 없습니다.
- 작업방법
- 정기적으로 데이터베이스전체를 backup 받습니다.dump database <DB명> to <DUMP_DEVICE> go
- Transaction Log full이 발생하지 않도록 짧은 기간 단위로 Log를 backup 받습니다. (매우 중요합니다. 소홀히 하면 Log가 가득 차게 되어 그 데이터베이스에 대해서는 데이터에 대한변경작업을 할 수가 없게 됩니다.)dump transaction <DB명> to <DUMP_DEVICE> go
- DB 의 Log 가 full 된 경우에는, 다음과 같이 Log 를 비워 줍니다.dump transaction <DB명> with truncate_only go
dump transaction <DB명> with no_log go
-
Master DB 및 주요 System Table backup
- master database 도 주기적으로 backup (dump database)을 받아야 하며, 특히, master database 에 변경이 발생하는 작업 (create database, sp_addlogin, disk init, sp_addserver, ...)을 수행한 후에는 즉시 Backup을 받아야 합니다. <예gt;dump database master to disk='C:\MSSQL\BACKUP\master_0820.dmp' go
Bcp master..<Table명> out <Output_File> -Usa -P<sa_password> -S<Sqlserver명> -c <예>- 이 작업을 batch file (*.bat) 로 작성해서 필요할 때 그 batch file을 수행하면 편리합니다.C:\MSSQL\BACKUP> mkdir bcpout C:\MSSQL\BACKUP> cd bcpout C:\MSSQL\BACKUP\bcpout> bcp master..sysdatabases out sysdatabases.csv -Usa -P -c C:\MSSQL\BACKUP\bcpout> bcp master..sysusages out sysusages.csv -Usa -P -c C:\MSSQL\BACKUP\bcpout> bcp master..sysdevices out sysdevices.csv -Usa -P -c
-
정기적인 Bulk-copy로 SAM File 확보
- 주요 데이터를 저장하고 있는 Table인 경우에는, bcp 를 사용하여 주기적으로 backup 을 받아 두는 것이 좋습니다. -
모든 DB, Objects에 대한 Scripts 유지, 관리
- 모든 데이터베이스구축과정에서 작성한 모든 Scripts들에 대하여 최신Version을 관리합니다.
- 주기적으로 DB관리자는 SQL Enterprise Manager 를 사용하여 Scripts 들을 파일로 받아서 관리합니다.
- SQL Enterprise Manager 에서 SQL Server 를 선택하고 Databases에서 데이터베이스를 선택한 다음 Object 메뉴를 선택하고 Generate SQL Scripts 를 선택하면 Scripts를 파일로 받을 수 있습니다. -
DB free space check
- 주기적으로 데이터베이스별로 free space를 확인해서 여유공간이 부족한 경우에는, 미리 영역을 확보해줍니다.
- 데이터영역에 free space가 없는 경우 : 데이터베이스의 Data영역을 확장하거나 불필요한 데이터를 삭제하는 작업을 통해 free space를 확보합니다. (SQL Enterprise Manager 또는 ALTER DATABASE command를 사용함.)Alter database <DB명> on <DEVICE명>=<Size>
- Log영역에 free space가 없는 경우 : Transaction Log 정보를 backup 받거나 Transaction Log 를 삭제합니다.dump tran <DB명> to <DUMP_DEVICE> go 또는 dump tran <DB명> with truncate_only 또는 dump tran <DB명> with no_log go
반응형