'오류 21002 SQL-DMO]'ncash' 사용자가 이미 있습니다.'
해결책 :
기존 Database에 있었던 사용자 계정을 만들 때 발생하는 오류이다.
sa로 로긴한 후 아래 문장을 해당 데이터베이스에서 실행한다.
SP_CHANGE_USERS_LOGIN 'UPDATE_ONE', 'aaa', 'aaa'
'오류 21002 SQL-DMO]'ncash' 사용자가 이미 있습니다.'
해결책 :
기존 Database에 있었던 사용자 계정을 만들 때 발생하는 오류이다.
sa로 로긴한 후 아래 문장을 해당 데이터베이스에서 실행한다.
SP_CHANGE_USERS_LOGIN 'UPDATE_ONE', 'aaa', 'aaa'
ORACLE VARCHAR2 --> CLOB 로 바꾸는 방법....
-- 옮기기위한 테이블과 옮길 테이블 그리고 중간 단계를 거칠 테이블을 생성한다.
테이블 정보
TEST_TBL : ( 옮기기 위한 테이블) 원본
USERID VARCHAR2(20) ,
CONTENT VARCHAR2(40000)
TEST_TBL_LONG : (CLOB로 바꾸기 위하여 중간에 거치는 테이블)
USERID VARCHAR(20),
CONTENT LONG
TEST_TML_CLOB : (마지막으로 바꿀 테이블)
USERID VARCHAR(20),
CONTENT CLOB
예를 들어 위와 같은 테이블을 만들어 테스트를 해볼수 있다.
일반 VARCHAR2 에서 CLOB로 바로 옮길수는 없다. LONG 형에서 CLOB로 옮길수는 있다.
바로TO_LOB를 쓰면 LONG 에서 CLOB로 바꿀수 있다.
단 , 여기서 바꾸거나, 바뀌는 모든 테이블이 모두 같은 수의 컬럼과 순서를 가지고 있다.
1. 바꾸고 싶은 원본 테이블을 LONG 으로 바꾸어 주어야 한다.
INSERT INTO TEST_TBL_LONG
SELECT USERID , CONTENT FROM TEST_TBL
2. LONG으로 바꾼 테이블을 CLOB로 바꾼다. 이때 TO_LOB를 사용한다.
INSERT INTO TEST_TBL_LONG
SELECT USERID ,TO_LOB(CONTENT) FROM TEST_TBL_LONG
이렇게 하면 비교적 손쉽게 VARCHAR2 를 CLOB로 바꿀수 있다.
사용자 암호변경 : ALTER USER scott IDENTIFIED BY lion;
[백업/복구]
* 사용자 모드
백업
exp userid=system/암호owner=DEP_DB file='C:\scottuser.dmp'
복구
imp userid=system/암호 file='C:\scott.dmp' fromuser=백업시 사용자 touser=복구시 사용자
show tables; 테이블 출력
show databases; 데이터베이스 출력
set password for root=password('비번'); 암호 변경
데몬 적용
flush privileges
정보보기
status
백업
mysqldump -u [user_name] -p [db_name] > [파일명]
mysql 5.0 이상일 경우 procedure 포함 명령어 다음
--routines
복구
mysql -u [user_name] -p [db_name] < 파일명
소유자 변경
sp_changeobjectowner '소유자.테이블명', '소유자아이디'
데이타베이스 이름 변경
sp_renamedb '이전이름', '새로운 이름'
DECLARE @TABLE_NAME VARCHAR (50) DECLARE @TABLE_OWNER VARCHAR (50) DECLARE TCURSOR CURSOR FOR SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties' FOR READ ONLY OPEN TCURSOR FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('SP_CHANGEOBJECTOWNER ''[' + @TABLE_OWNER + '].[' + @TABLE_NAME + ']'', ''well''') FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER END CLOSE TCURSOR DEALLOCATE TCURSOR
백업 하기
BACKUP DATABASE mydb TO DISK='d:\sql_back\back_SQL11' WITH INIT
MDF,LDF 복구
EXEC sp_attach_db @dbname = N'데이터베이스 이름',
@filename1 = N'파일 경로.mdf',
@filename2 = N'파일 경로.ldf'
백업 파일 복구
-- 다른 데이터베이스에서 실행
restore database mydb from disk = 'C:\a.bak'
WITH REPLACE --: 덮어 씌우기
백업파일 유효성 검사
restore verifyonly from disk= ''
다른곳에서 생성된소유자로 백업된 데이터베이스 다른곳에서 복원했을때 소유자 수정
exec SP_CHANGE_USERS_LOGIN 'UPDATE_ONE', 'mrlandnet', 'mrlandnet'