반응형
한번씩 DB가 맛이 가서 작동 안 할때가 있었다.
처음에는 엄청 당황했으나 여러번 이런 일이 생기니 이젠 금방 뚝딱뚝딱 ㅋㅋ


c:\>sqlplus "/as sysdba"

SQL> startup; ORACLE instance started. Total System Global Area 369098752 bytes Fixed Size 2020864 bytes Variable Size 138414592 bytes Database Buffers 226492416 bytes Redo Buffers 2170880 bytes Database mounted. ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], [] SQL> recover database; Media recovery complete. SQL> alter database open; Database altered




반응형
반응형

새로운 유저로 DUMP Import 시킬때 사용자 생성시 지정해준 테이블 스페이스를 이용하기 위해서 지정된 테이블 스페이스 외에 모든 권한을 없애줘야지 기존 Export Export 한 사용자와 같은 TableSpace 에 값이 입력되지 않는다.

 

<테스트용 쿼리>

--덤프 export / import 테스트

--테이블스페이스 생성

 

CREATE TABLESPACE TEST_DATA_IMP

     DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\test_data_imp.dbf' SIZE 10M

     DEFAULT STORAGE

         (INITIAL    10K

          NEXT      10K

          MINEXTENTS 2

          MAXEXTENTS 50

          PCTINCREASE 50);

 

CREATE TEMPORARY TABLESPACE TEST_DATA_IMP_TEMP

     TEMPFILE 'D:\oracle\product\10.2.0\oradata\orcl\test_data_imp_temp.dbf' SIZE 2M;

    

CREATE TABLESPACE TEST_DATA_EXP

     DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\test_data_exp.dbf' SIZE 10M

     DEFAULT STORAGE

         (INITIAL    10K

          NEXT      10K

          MINEXTENTS 2

          MAXEXTENTS 50

          PCTINCREASE 50);

 

CREATE TEMPORARY TABLESPACE TEST_DATA_EXP_TEMP

     TEMPFILE 'D:\oracle\product\10.2.0\oradata\orcl\test_data_exp_temp.dbf' SIZE 2M;    

 

 

--유저생성

create user TEST_EXP identified by aaaa

    default tablespace TEST_DATA_EXP

    temporary tablespace TEST_DATA_EXP_TEMP

    quota unlimited on TEST_DATA_EXP;

 

grant connect, resource to TEST_EXP;

 

create user TEST_IMP identified by aaaa

    default tablespace TEST_DATA_IMP

    temporary tablespace TEST_DATA_IMP_TEMP

    quota unlimited on TEST_DATA_IMP;

 

grant connect, resource to TEST_IMP;

revoke unlimited tablespace from TEST_IMP;          -- 유저에게서 모든 TableSpace 권한 뺏기

 

 

--테이블 생성

create table TEST(

    id  integer

,   str VARCHAR2(10)   

);

 

insert into TEST values(1,'my');

insert into TEST values(2,'urs');

insert into TEST values(3,'them');

 

commit;

 

--테이블 스페이스 확인

select tablespace_name,sum(bytes),max(bytes)

from dba_free_space group by tablespace_name;

 


반응형
반응형
오라클에서 DB 접속시 위와 같은 에러가 뜨는 경우를 볼것이다.

다양한 원인이 있겠으나, 나의 경우에는

TNS(tnsnames.ora)에서 접속 식별자의 띄워쓰기가 잘못되어서 일어나는 현상이었다.

예를 들어

   ORACLR_CONNECTION_DATA = 

  (DESCRIPTION = 

    (ADDRESS_LIST = 

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 

    ) 

    (CONNECT_DATA = 

      (SID = CLRExtProc) 

      (PRESENTATION = RO) 

    ) 

  ) 

 
위와 같이 ORACLR_CONNECTION_DATA(접속식별자) 앞에 공백이 있으면 인식을 하지 못한다.

그래서 저 공백을 업애주고 

  ORACLR_CONNECTION_DATA = 

  (DESCRIPTION = 

    (ADDRESS_LIST = 

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 

    ) 

    (CONNECT_DATA = 

      (SID = CLRExtProc) 

      (PRESENTATION = RO) 

    ) 

  ) 

 
다음과 같이 해주면 문제없이 잘 돌아간다.

 
반응형
반응형
SQL Server 2005 Management Studio Express 를 설치하는 도중 중간에 에러가 나면서 설치가 안되는 경우가 있습니다.

이것은 비스타나 윈도우 7 에서의 보안강화 때문에 관리자권한이 아니라서 생기는 에러로

설치시 탐색기에서 우클릭을 하여 윈도우 탐색기를 [관리자 권한으로 실행]한 상태에서 설치를 진행하면

무사히 설치를 완료할 수 있습니다.

다들 단디 설치 해보세요~~~~
반응형
반응형
11자리로 된 숫자들이 있는 컬럼이 있는데 이 컬럼이 float 형이었다
그런데 이 녀석을 문자열이랑 더하려고 하니깐 계속 문제가 생기는거다

float를 varchar 형으로 컨버팅해서 하니 원하는 값은 나오지 않고
그래서 결국 편법을 사용해서 성공!!!

그냥 float를 numeric 으로 바꾸고 varchar 형으로 바꾸니 아름답게 결과가 나왔다

걍 아래는 예제

select '0'+cast(cast(휴대폰 as numeric(11,0)) as varchar(11)) from 고객목록



반응형
반응형
우편번호 데이터들이 엑셀형식으로 저장되어 있으므로 MS-SQL에서는 간단하게 데이터 가져오기를 사용하여 테이블에 입력을 할 수 있었다.

하지만 MY SQL에서는 약간 이래저래 수정도 해주면서 작업을 해야되었다.
그래서 간단한 작업절차를 써보도록 하겠다


1. 하단에 명시된 페이지로 이동하여 원하는 DB 정보를 다운받는다.




2. 다운받은 엑셀파일을 csv 형식으로 변형시킨다.
 다른이름으로 저장 -> 다른형식 -> csv 형식선택

저장을 하면 각 필드들은 쉼표(,) 로 구분이 된다.


3. 해당 주소체계에 맞는 형식의 테이블을 생성한다


4. my sql 입력 커맨드창에서 다음의 명령어를 실행한다

load data infile [해당 csv 파일명] into table [db명].[테이블명] fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

예) load data infile 'c:\\download\\zipcode.csv' into table db1.tb_zipcode fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

* 해당명령어에 대한 자세한 설명은 다음 링크 참고
http://radiocom.kunsan.ac.kr/lecture/mysql/prototype/prototype_load_data_infile.html

5. 아름답게 저장된 주소DB들을 보며 흐뭇해한다.

반응형
반응형
-- Create products table.
CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
GO
-- Inserting values into products table.
INSERT INTO products (product) VALUES ('screwdriver')
INSERT INTO products (product) VALUES ('hammer')
INSERT INTO products (product) VALUES ('saw')
INSERT INTO products (product) VALUES ('shovel')
GO

-- Create a gap in the identity values.
DELETE products
WHERE product = 'saw'
GO

SELECT *
FROM products
GO

-- Attempt to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO products (id, product) VALUES(3, 'garden shovel')
GO
-- SET IDENTITY_INSERT to ON.                    <--  이녀석이 on 이 되어야지만 실행이된다. 안그러면 에러가뜸
SET IDENTITY_INSERT products ON
GO

-- Attempt to insert an explicit ID value of 3
INSERT INTO products (id, product) VALUES(3, 'garden shovel')
GO

SELECT *
FROM products
GO
-- Drop products table.
DROP TABLE products
GO


반응형
반응형
[MS-SQL]
select * from fn_dump_dblog(default,default,default,default,'d:\test.trn',

            default,default,default,default,default,default,default,default,default,default,
            default,default,default,default,default,default,default,default,default,default,
            default,default,default,default,default,default,default,default,default,default,
            default,default,default,default,default,default,default,default,default,default,
            default,default,default,default,default,default,default,default,default,default,
            default,default,default,default,default,default,default,default,default,default,
            default,default,default)


이렇게 하면 트랜젝션 로그 관련 내용이 나오는데............

제길, 당췌 뭐가 뭔지는 하나도 모르겠다-_-;
반응형
반응형
다른 테이블에 있는 값들을 원테이블로 옮길 경우 Update 시 Join 을 사용해야된다
그런데 이거 할때마다 기억이 안나서 메모남김

<Join 사용 Update 문>
    update [테이블] set [테이블].[원컬럼명]=A.[새컬럼명]
    from [테이블]
    join [복사할테이블] A on [테이블].[조인할컬럼명]=A.[조인할컬럼명]

반응형
반응형
순서 결정에 있어서 아래의 순서데로 우선순위를 매겨가며 첫번째 컬럼을 결정하도록 하자!!!


1. 항상 사용되는가?

  결합인덱스의 첫번째 컬럼을 조건에서 사용하지 앟으면 그 인덱스는 사용되지 않는다. 그러므로 항상 사용되는 컬럼을 결합인덱스의 첫번째에 넣도록 한다.

2. 항상 '=' 로 사용되는가?
  앞에 있는 컬럼이 '=' 조건으로 사용되지 않았다면 뒤에서 '='을 사용하더라고 처리범위가 줄어들지 않는다. 그러므로 첫번째 컬럼은 '=' 을 사용하여 처리범위를 줄여서 처리속도를 높일 수 있도록 하여야 한다.

3. 분포도가 좋은 컬럼인가?
  분포도가 좋은(좁은) 컬럼은 처리범위를 보다 빠르게 줄일 수 있으며 향후 예상치 않게 'LIKE, BETWEEN, <, >' 등의 조건 검색식이 사용된 경우 처리범위가 넓어지는 상황에 대비할 수도 있다.

4, 자주 사용되는 정렬 컬럼인가?
  쿼리시 어떤 컬럼들로 정렬이 발생하는가를 확인해보고 가능한 빈번하게 정렬되는 순서를 감안하여 우선순위의 컬럼으로 설정하는 것이 좋다. 왜냐하면 인덱스는 결합된 컬럼의 순서로 정렬되어 저장되기 때문이다.
반응형
반응형
DB에서 많은 자료가 올라오다보면 옵티마이저가 분포도 계산을 잘못하여서
Index 를 타지 않고 그냥 전체스캔을 해서 결과값을 찾기때문에 느려지는 경우가 있다.

이럴때 새로 Index 를 걸어주거나 인덱스 힌트를 사용하지 않고
분포도와 관련된 통계를 업데이트 시켜주면 쿼리속도가 비약적으로 상승하게 된다

MS-SQL 사용예
update statistics 테이블명

반응형
반응형

시드값 확인
dbcc checkident('테이블 이름', noreseed)

시드값 변경

dbcc checkident('테이블 이름', reseed, 변경값)

* 변경값은 현재시드값을 그 쪽으로 이동시켜주는 것이 됩니다. 예를 들어 증가값이 1로 identity가 설정되어있고 변경값에 40을 입력하여준 뒤 데이터를 추가시키면 컬럼값은 41이 되어서 데이터가 입력이 되게 됩니다(그리고 이 상태에서 계속 순차적으로 값이 올라갑니다)

반응형
반응형
MS SQL
EXEC sp_rename '원래테이블이름', '새테이블이름'


MY SQL
Rename 테이블이름 To 새테이블이름 [, 테이블이름2 To 새테이블이름2] ......


반응형

+ Recent posts