문제) 오라클 10g : export 실행할때나 토드로 접속할때 아래의 에러발생.
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized

조치1) sysdba로 로긴하여 아래 구문 실행

SQL> @ $ORACLE_HOME/javavm/install/rmjvm.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> @ $ORACLE_HOME/rdbms/admin/catalog.sql 
SQL> @ $ORACLE_HOME/rdbms/admin/catproc.sql

==> 문제 해결 안됨.


원인) 아래 쿼리를 날렸을때 데이터 타입이 중복되어서 나옴

쿼리)

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);

결과)

CHARACTERSET  TYPES_USED_IN
----------------- -------------
WE8ISO8859P1      VARCHAR2
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
WE8ISO8859P1       CHAR
AL16UTF16            NCLOB
KO16KSC5601        CLOB
AL16UTF16            NVARCHAR2
KO16KSC5601        NVARCHAR2
WE8ISO8859P1       CLOB
AL16UTF16            NCHAR


조치2) sysdba로 아래 구문들 실행

주의사항)

a) Make sure the parallel_server parameter in INIT.ORA is set to false or it is not set at all.
b) Run the next script in SQLPLUS connected "as sysdba"


SQL> sqlplus /nolog 
SQL> conn /as sysdba 
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> COL VALUE NEW_VALUE CHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
SQL> COL VALUE NEW_VALUE NCHARSET
         SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
-- yes, 2 times startup/shutdown . This is not a typo
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

실행중 오류발생)

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE KO16KSC5601
==> ORA-12714: invalid national character set specified

원인)

NATIONAL CHARACTER SET 은 Oracle9i 이후에는 UTF8과 AL16UTF16 만 제공
확인)  

SELECT VALUE 
FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER in ('NLS_NCHAR_CHARACTERSET','NLS_CHARACTERSET')
결과)

PARAMETER                                  VALUE
---------------------------------- ---------------
NLS_CHARACTERSET                     KO16KSC5601

NLS_NCHAR_CHARACTERSET         KO16KSC5601

조치)

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';


이후 위의 조치2)를 다시실행하면 아래와 같은 결과를 얻을수 있다..


문제해결)

CHARACTERSET   TYPES_USED_IN
----------------- -------------
KO16KSC5601        VARCHAR2
KO16KSC5601        CHAR
KO16KSC5601        CLOB
AL16UTF16            NCLOB
AL16UTF16            NVARCHAR2
AL16UTF16            NCHAR



 

Export 할때 아래문장을 자세히 봤으면 조치하는데 시간이 들 걸릴듯 했건만..

조치전) Export done in KO16KSC5601 character set and KO16KSC5601 NCHAR character set

조치후) Export done in KO16KSC5601 character set and AL16UTF16 NCHAR character set

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 분석함수  (0) 2016.05.04
oracle hr 사용자 unlock  (0) 2016.01.25
오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31

-- 테이블 정보 보기

SELECT * FROM sysobjects WHERE xtype='U';

SELECT * FROM  INFORMATION_SCHEMA.TABLES;

SELECT * FROM ::FN_LISTEXTENDEDPROPERTY(NULL, 'User','dbo','table', null, NULL, NULL) order by objname

SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '[테이블명]', 'column', default)



'프로그래밍 > MS_SQL' 카테고리의 다른 글

mysql procedure  (0) 2022.08.02
MSSQL IDENTITY 값 재 설정  (0) 2015.04.27
MSSQL 자동 증가 시드값 가져오기  (0) 2015.04.27
sqlexpress 백업 및 복원  (0) 2015.04.24
mssql 파일 크기 줄이기  (0) 2015.04.14

httpd를 시작할 때 아래와 같이 뜰때가 있다. 다만, 왜 그런지는 정확히 모른다. (혹시 아는분 댓글로 남겨주세요.)

httpd: apr_sockaddr_info_get() failed for ABC


이럴 때는 다음과 같이 하면 된다. (초기 세팅을 기본으로 합니다.)

vi /etc/hosts

예) 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 가장 뒤에 예) "ABC"를 추가.

:wq

service httpd restart


확인한다.

apache/conf/httpd.conf 파일에 ServerName 주석 풀고 127.0.0.1 써도 됩니다.

행인

httpd: apr_sockaddr_info_get() failed

Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

VirtualHost overlap on port 80, the first has precedence

 

'프로그래밍 > 리눅스' 카테고리의 다른 글

apache server 버전 확인  (0) 2015.09.14
리눅스 언어 설정  (0) 2015.07.24
리눅스 링크 거는 법  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30

ln -s 기존파일 대상파일

이게 ln 옵션

뒤의 인수는 디렉토리도 됩니다.

 

 

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 언어 설정  (0) 2015.07.24
httpd: apr_sockaddr_info_get() failed  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30
리눅스 심볼릭 링크 걸기  (0) 2013.09.30
조회 : 5,137   추천 : 0   비추천 : 0  

/usr/local/apache/bin/apachectl start 했을때 

아래와 같은 오류 발생시

httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

오류의 원인 정상적으로 /usr/local/apache/bin/apachectl stop 하지 않았을경우 발생된다.


]# netstat -anp | grep 80 
tcp        0      0 :::80                       :::*                        LISTEN      2404/httpd

]# kill -9 2404


]# netstat -anp | grep 80 
tcp        0      0 :::80                       :::*                        LISTEN      2405/httpd

]# kill -9 2405


이런식으로 반복해서
netstat -anp | grep 80
 ->
 tcp        0      0 :::80                       :::*                        LISTEN      2405/httpd
이 나타나지 않을때까지 계속  kill -9 프로세서번호 를 사용해서 죽인다.

더이상 나타나지 않으면
]# /usr/local/apache/bin/apachectl start로 실행하면 정상적으로 나온다.

 

'프로그래밍 > 리눅스' 카테고리의 다른 글

httpd: apr_sockaddr_info_get() failed  (0) 2015.04.27
리눅스 링크 거는 법  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30
리눅스 심볼릭 링크 걸기  (0) 2013.09.30
톰켓설치  (0) 2013.09.30

identity 값 확인

> SELECT @@IDENTITY

 

identity 값 자동 설정, 끄기

> SET IDENTITY_INSERT 테이블 ON

> SET IDENTITY_INSERT 테이블 OFF

 

identity 값 재설정

> DBCC CHECKIDENT(테이블 , reseed, 번호)

 

identity 값을 현재 값 중 최대 컬럼값으로 설정

> DBCC CHECKIDENT(테이블 , reseed )

 

'프로그래밍 > MS_SQL' 카테고리의 다른 글

mysql procedure  (0) 2022.08.02
MSSQL 테이블 COMMENT 보기  (0) 2015.04.29
MSSQL 자동 증가 시드값 가져오기  (0) 2015.04.27
sqlexpress 백업 및 복원  (0) 2015.04.24
mssql 파일 크기 줄이기  (0) 2015.04.14

MS SQL 자동 증가 시드값 가져오는 방법

 

1. IDENT_CURRENT('특정테이블명')

- 특정 테이블에 한정할 수 있음

- 특정 세션과 범위에 있는 테이블에 대한 마지막 ID 값을 반환함

  1. SELECT IDENT_CURRENT('테이블명')  

 

 

 

2. @@IDENTITY

- 전체 범위에 대한 현제 세션에 있는 테이블에 대해 생성된 마지막 ID 값을 반환함

  1. SELECT @@IDENTITY()  

 

 

3. SCOPE_IDENTITY()

- 현제 세션, 범위에 있는 테이블에 대해 생성된 마지막 ID 값을 반환함

  1. SELECT SCOPE_IDENTITY()  

 

 

 

 

4. 각 함수 및 전역변수 차이점

- IDENT_CURRENT 는 세션과 상관없이 특정 테이블 시드값을 가져옴

- @@IDENTITY,SCOPE_IDENTITY() 은 해당 세션만 유효

- @@IDENTITY 연쇄적으로 발생해도 최종 시드값을 가져옴

- SCOPE_IDENTITY() 연쇄적으로 발생해도 최초 시드값을 가져옴 

  1. -- 1부터 시작하는 IDENTITY 값을 가지고 있는 TEMP1 테이블  
  2. CREATE  TABLE   TEMP1 ( Seq INT IDENTITY(1,1) )       
  3. GO  
  4. -- 1000부터 시작하는 IDENTITY 값을 가지고 있는 TEMP2 테이블  
  5. CREATE  TABLE   TEMP2 ( Seq INT IDENTITY(1000,1) )  
  6. GO  
  7.   
  8. -- 트리거 만들기  
  9. -- #TEMP1 에 값이 들어가면 TEMP2 에도 값을 넣어주는 트리거만들기  
  10. CREATE  TRIGGER TEMP1_I ON TEMP1 FOR INSERT  
  11. AS   
  12. BEGIN  
  13.     INSERT INTO TEMP2 DEFAULT VALUES   
  14. END  
  15.   
  16. ----------------------------------------------------------------------------  
  17. --  
  18. -- 테스트 상황 1  
  19. -- 같은 세션인 경우  
  20. -- TEMP1에 값을 넣었을때 IDENT_CURRENT('특정테이블명'), @@IDENTITY, SCOPE_IDENTITY()   
  21. -- 각각 어떤 값을 가져오느냐 테스트  
  22. --   
  23. ----------------------------------------------------------------------------  
  24.   
  25. -- 1. INSERT   
  26. INSERT INTO TEMP1 DEFAULT VALUES  
  27.   
  28. -- 2. @@IDENTITY  
  29. SELECT  @@IDENTITY   --> 결과값: 1000, TEMP2의 마지막 Identity값 가져옴  
  30.   
  31. -- 3. SCOPE_IDENTITY()     
  32. SELECT  SCOPE_IDENTITY()  --> 결과값: 1, TEMP1의 마지막 Identity값 가져옴  
  33.   
  34. -- 4. IDENT_CURRENT('특정테이블명')   
  35. SELECT  IDENT_CURRENT('TEMP1')  --> 결과값: 1, TEMP1의 마지막 Identity값 가져옴  
  36. SELECT  IDENT_CURRENT('TEMP2')  --> 결과값: 1000, TEMP2의 마지막 Identity값 가져옴  
  37.   
  38.   
  39. ----------------------------------------------------------------------------  
  40. --  
  41. -- 테스트 상황 2  
  42. -- 다른 세션인 경우  
  43. -- 다른 세션에서 값을 넣었을때 IDENT_CURRENT('특정테이블명'), @@IDENTITY, SCOPE_IDENTITY()   
  44. -- 각각 어떤 값을 가져오느냐 테스트  
  45. --   
  46. ----------------------------------------------------------------------------  
  47.   
  48. -- 1. @@IDENTITY  
  49. SELECT  @@IDENTITY   --> 결과값: NULL  
  50.   
  51. -- 2. SCOPE_IDENTITY()     
  52. SELECT  SCOPE_IDENTITY()  --> 결과값: NULL  
  53.   
  54. -- 3. IDENT_CURRENT('특정테이블명')   
  55. SELECT  IDENT_CURRENT('TEMP1')  --> 결과값: 1, TEMP1의 마지막 Identity값 가져옴  
  56. SELECT  IDENT_CURRENT('TEMP2')  --> 결과값: 1000, TEMP2의 마지막 Identity값 가져옴

 

출처 : http://rocabilly.tistory.com/26  

'프로그래밍 > MS_SQL' 카테고리의 다른 글

MSSQL 테이블 COMMENT 보기  (0) 2015.04.29
MSSQL IDENTITY 값 재 설정  (0) 2015.04.27
sqlexpress 백업 및 복원  (0) 2015.04.24
mssql 파일 크기 줄이기  (0) 2015.04.14
MSSQL COMMENTS 생성  (0) 2015.04.13

Express 버전의 경우 서버 에이젼트가 설치되지 않아 작업스케쥴링을 설정하는것이 불가능합니다..


그래서 배치파일("sqlcmd")과 프로시져를 이용한 백업 스크립트를 작성하고  윈도우 스케쥴링을 통해 자동 백업을 실행 할 수 있습니다.


상세한 내용은 MS Support Url을 참조해주세요. ( http://support.microsoft.com/kb/2019698/en-usViewer )


1. 백업을 위한 프로시져 생성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Copyright © Microsoft Corporation.  All Rights Reserved.
// This code released under the terms of the
// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
USE [master]
GO
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabases] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
  
-- =============================================
-- Author: Microsoft
-- Create date: 2010-02-06
-- Description: Backup Databases for SQLExpress
-- Parameter1: databaseName
-- Parameter2: backupType F=full, D=differential, L=log
-- Parameter3: backup file location
-- =============================================
  
CREATE PROCEDURE [dbo].[sp_BackupDatabases] 
            @databaseName sysname = null,
            @backupType CHAR(1),
            @backupLocation nvarchar(200)
AS
  
       SET NOCOUNT ON;
            
            DECLARE @DBs TABLE
            (
                  ID int IDENTITY PRIMARY KEY,
                  DBNAME nvarchar(500)
            )
            
             -- Pick out only databases which are online in case ALL databases are chosen to be backed up
             -- If specific database is chosen to be backed up only pick that out from @DBs
            INSERT INTO @DBs (DBNAME)
            SELECT Name FROM master.sys.databases
            where state=0
            AND name=@DatabaseName
            OR @DatabaseName IS NULL
            ORDER BY Name
            
            -- Filter out databases which do not need to backed up
            IF @backupType='F'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','AdventureWorks')
                  END
            ELSE IF @backupType='D'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE IF @backupType='L'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE
                  BEGIN
                  RETURN
                  END
            
            -- Declare variables
            DECLARE @BackupName varchar(100)
            DECLARE @BackupFile varchar(100)
            DECLARE @DBNAME varchar(300)
            DECLARE @sqlCommand NVARCHAR(1000)
        DECLARE @dateTime NVARCHAR(20)
            DECLARE @Loop int                 
                        
            -- Loop through the databases one by one
            SELECT @Loop = min(ID) FROM @DBs
  
      WHILE @Loop IS NOT NULL
      BEGIN
  
-- Database Names have to be in [dbname] format since some have - or _ in their name
      SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'
  
-- Set the current date and time n yyyyhhmmss format
      SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),'/','') + '_' REPLACE(CONVERT(VARCHAR, GETDATE(),108),':',''
  
-- Create backup filename in path\filename.extension format for full,diff and log backups
      IF @backupType = 'F'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'D'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'L'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN'
  
-- Provide the backup a name for storing in the media
      IF @backupType = 'F'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
      IF @backupType = 'D'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
      IF @backupType = 'L'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
  
-- Generate the dynamic SQL command to be executed
  
       IF @backupType = 'F'
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                  END
       IF @backupType = 'D'
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'       
                  END
       IF @backupType = 'L'
                  BEGIN
               SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'       
                  END
  
-- Execute the generated SQL command
       EXEC(@sqlCommand)
  
-- Goto the next database
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
  
END



2. 백업 프로시져 호출을 위한 bat 파일을 생성합니다.

( 아래 스크립트는 MS 사이트에서 가져온 내용이고.. 위의 프로시져를 보시는편이 더 쉽게 이해하실수 있을 것 같습니다....)

1
2
3
4
5
6
7
8
9
10
11
-- 전체 백업 , 윈도우 인증을 통한 SQL EXPRESS의 모든 대상 백업.
sqlcmd -S .\EXPRESS –E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"
 
-- 차등 백업 ,  Login 인증을 통한 SQL EXPRESS의 모든 대상 백업.
sqlcmd -U SQLLogin -P password -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType=’D’"
 
-- 로그 전체 백업 , 윈도우 인증을  SQL EXPRESS의 모든 대상 백업.
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"
 
-- 전체 백업 , 지정된 DB 를 윈도우 인증을 통해 백업
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"


 실제사용한 백업 배치파일 스크립트

1
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='E:\uhoon_DB_BACKUP\', @databaseName='db_name', @backupType='F'"




3. 위의 스크립트를 통해 생성한 배치파일을 실행하는것으로 백업이 가능하며

윈도우 스케쥴링에 등록하여 자동 백업이 가능하게 됩니다.


출처 - http://www.uhoon.co.kr/mssql/1301


'프로그래밍 > MS_SQL' 카테고리의 다른 글

MSSQL IDENTITY 값 재 설정  (0) 2015.04.27
MSSQL 자동 증가 시드값 가져오기  (0) 2015.04.27
mssql 파일 크기 줄이기  (0) 2015.04.14
MSSQL COMMENTS 생성  (0) 2015.04.13
mssql 테이블 용량 및 row 갯수  (0) 2015.03.24

+ Recent posts