큐브리드 쓰는 사람은 죄다 리눅스 기반에서 사용하는것도 아니고 

해당 홈페이지이 작성된 댓글도 해결책이 안되다 .. 결국 


어느 누군가의 댓글에서 방법을 찾았다.. ㅠㅠ



아래의 기준은 Windows 7 환경에서 테스트 되었습니다. 


1. JDBC 설정


jdbc:cubrid:10.100.11.185:30000:akpeis:::?charset=UTF-8



2. Server 방화벽 설정


1523, 33000-33040, 8001,8002, 30000-30040 의 포트를 모두 열어야한다.




** 인덱스 찾기 **

SP_HELPINDEX <TableName>

투명한 DIV가 필요한경우            background-colorrgba(255,255,255,0.4);


RGBA다.. RGB가 아니고.. 알파값을 주는 방법이다.


투명하게 설정하는 방법이 여러가지가 있는데 이경우는 해당 레이어만 반투명이 적용 되는 케이스이다. 


레이어가 자식으로 가지고 있는 객체는 투명해지지 않는다.

'Web > CSS' 카테고리의 다른 글

DIV 가로/세로 중앙에 위치하기  (0) 2018.02.21

가변적인 브라우저의 크기의 경우 특정 DIV를 정중앙에 위치시킬 때 관련 블로그에 내용이 상당히 많이 나와 있긴하다.

예를 들면 iniline-block로 해서 문자로 인식하게 해서 text-align Center를 준다던가...(이러면 안에 모든 텍스트가 중앙정렬된다 ㅠㅠ)


이것 저것 고민하다가 아래와 같은 css 코드로 해결하였다.



  1. positionabsolute;
  2. top50%;
  3. left50%;
  4. transformtranslate(-50%,-50%);
  5. -ms-transformtranslate(-50%,-50%);


'Web > CSS' 카테고리의 다른 글

반투명한 Div 만들기  (0) 2018.02.21

※ Spring Frame Work 3.2 기준 실제 사용 했던 Servlet.xml



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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-3.2.xsd">
        
 
 
 
    <!-- The controllers are autodetected POJOs labeled with the @Controller, @Service, @Component annotation. -->
    <!-- @Controller, @Service, @Component annotation 아래의 package를 스켄하여 @Autowired 
        어노테이션을 이용하여 해당하는 엔티티 및 서비스를 맵핑한다. -->
    <!-- <context:component-scan base-package="com.isource.web.controller, com.isource.domain.service, 
        com.isource.web.validator, com.isource.web.security"/> -->
        
        
        
        
    
    <context:component-scan base-package="com.myPackage.web" />
    <mvc:resources location="/WEB-INF/resources/" mapping="/resources/**" />
 
 
    <context:annotation-config></context:annotation-config>
<!--     <task:executor id="taskExecutor" pool-size="5"/>
    <task:annotation-driven executor="taskExecutor"/> -->
    
    
 
    <!-- Annotation 기반 트랜잭션 설정 -->
    <tx:annotation-driven transaction-manager="oracleTransactionManager" />
 
    <!-- 트랜잭션 매니저 -->
    <bean id="oracleTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:/mybatis/mybatisConfig.xml" />
        <property name="mapperLocations" value="classpath:/mybatis/sql/**/*.xml" />
    </bean>
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>
    <bean id="sqlBatchSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
        <constructor-arg index="1" value="BATCH" />
    </bean>
 
    <bean id="anotherTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="anotherDataSource" />
    </bean>
 
    <bean id="anotherSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="anotherDataSource" />
        <property name="configLocation" value="classpath:/mybatis/mybatisConfig_another.xml" />
        <property name="mapperLocations" value="classpath:/mybatis/sql_another/**/*.xml" />
    </bean>
 
    <bean id="anotherSqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="anotherSqlSessionFactory" />
    </bean>
    
    <bean id="anotherBatchSqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="anotherSqlSessionFactory" />
        <constructor-arg index="1" value="BATCH" />
    </bean>
 
    <!-- Validation 활성화(validator="validator"), conversionService 활성화, 메세지 컨버터 
        등록 (JSON을 바꿔주는부분) -->
    <mvc:annotation-driven conversion-service="conversionService">
        <mvc:message-converters>
            <bean
                class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.myPackage.web.converter.CustomObjectMapper" />
                </property>
            </bean>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
 
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <mvc:exclude-mapping path="/login**" />
            <mvc:exclude-mapping path="/login*" />
            <mvc:exclude-mapping path="/loginform**" />
            <mvc:exclude-mapping path="/resources/**" />
            <mvc:exclude-mapping path="/*.ico" />
            <bean class="com.isource.web.controller.IsourceInterceptor" />
        </mvc:interceptor>
 
        <bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="convertLocale" />
        </bean>
    </mvc:interceptors>
    
    
    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="ko" />
    </bean>
    
 
    <!-- Configure the multipart resolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- one of the properties available; the maximum file size in bytes about 
            10MB -->
        <property name="maxUploadSize" value="10000000" />
    </bean>
    <alias name="multipartResolver" alias="multipartResolver" />
 
    <!-- Configure the file upload directory -->
    <!-- <bean id="uploadDirResource" class="org.springframework.core.io.FileSystemResource"> 
        <constructor-arg> <value>C:/myPackage/upload/</value> </constructor-arg> </bean> -->
 
    <!-- tiles 2에서 전부처리되어 주석처리됨. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2" p:prefix="/WEB-INF/views/" p:suffix=".jsp"/> -->
 
    <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1" p:viewClass="org.springframework.web.servlet.view.tiles2.TilesView" />
    <bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles/tiles-def.xml</value>
            </list>
        </property>
    </bean>
 
    <!-- @Valid 에서 스프링의 Message.properties를 사용하기 위해 추기 -->
    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="validationMessageSource" ref="messageSource" />
    </bean>
 
    <!-- Message -->
    <bean id="messageSource"
        class="com.myPackage.extendz.IscReloadableResourceBundleMessageSource">
        <!-- class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> -->
        <property name="defaultEncoding" value="UTF-8" />
        <property name="basenames">
            <list>
                <value>classpath:/messages/messages</value>
                <value>classpath:/messages/buttons</value>
                <value>classpath:/messages/labels</value>
            </list>
        </property>
    </bean>
 
    <!-- Exception 처리 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
        <property name="order" value="1" />
    </bean>
    
    
    <bean
        class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="order" value="2" />
        <property name="defaultErrorView" value="/common/error500" />
        <!--.main 은 타일즈 standalone layout 적용 -->
    </bean>
 
 
    <!-- Conversion Service 기본 포멧터 사용 -->
    <bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
 
    <bean id="logDataSource_pos" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
        <constructor-arg ref="dataSource" />
        <property name="logFormatter">
            <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
                <property name="loggingType" value="MULTI_LINE" />
                <property name="sqlPrefix" value="SQL=>" />
            </bean>
        </property>
    </bean>
 
 
    <!-- Quartz -->
    <bean id="batchService" class="com.myPackage.schedule.quartz.job.service.BatchService" />
    <bean id="sapJcoTransfer" class="com.myPackage.schedule.quartz.job.transfer.SapJcoTransfer" />
    <bean id="procedureTransfer" class="com.myPackage.schedule.quartz.job.transfer.ProcedureTransfer" />
    
 
     <bean name="isourceJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" p:jobClass="com.isource.schedule.quartz.job.IsourceQuartzJobBean" p:durability="true">
        <property name="jobDataAsMap">
            <map>
                <entry key="batchService" value-ref="batchService" />
            </map>
        </property>
    </bean>
 
    <!-- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean" p:jobDetail-ref="isourceJob" p:startDelay="0" p:cronExpression="0/10 * * * * ?" /> -->
    
    <bean id="SimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail" ref="isourceJob" />
        <property name="startDelay" value="0" />
        <property name="repeatInterval" value="604800000" /
    </bean>
    
          
          
          
          
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="SimpleTrigger" />
            </list>
        </property>
    </bean>
    <bean class="com.myPackage.common.util.ApplicationContextAwareExtends"/>
    
    
    
    <bean class="com.myPackage.common.helper.mail.MailSendWorker">
        <constructor-arg>
            <ref bean="naverMailSender" />
        </constructor-arg>
    </bean>
    
    <!-- Gmail setting -->
    <bean name="gmailMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
            p:password="input your password"
            p:host="smtp.gmail.com"
            p:port="587"
            p:protocol="smtp"
            p:username="input your account"
            p:defaultEncoding="utf-8">
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.ssl.enable">false</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.ssl.trust">*</prop>
                <prop key="mail.smtp.port">587</prop><!-- mail.smtp.ssl.enable true인 경우 주석처리후 사용 -->
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.debug">true</prop>
            </props>
        </property>
    </bean>
    
    <!-- naver setting -->
    <bean name="naverMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
            p:password="input your password" 
            p:host="smtp.naver.com"
            p:port="465"
            p:protocol="smtps" 
            p:username="input your account"
            p:defaultEncoding="utf-8">
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.ssl.enable">true</prop>
                <prop key="mail.smtps.ssl.checkserveridentity">true</prop>
                <prop key="mail.smtps.ssl.trust">*</prop>
                <prop key="mail.debug">false</prop>
            </props>
        </property>
    </bean>
    
    <!-- Local Stmp setting -->
    <bean name="customMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
            p:host="smtp.mailplug.co.kr"
            p:protocol="SSL"
            p:defaultEncoding="utf-8">
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.port">465</prop>
                <prop key="mail.smtp.starttls.enable">false</prop>
                <prop key="mail.smtp.ssl.enable">true</prop>
                <prop key="mail.smtp.ssl.trust">*</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.debug">true</prop>
            </props>
        </property>
        <!-- <property name="username" value="customSTMPUser"/>
        <property name="password" value="customSTMPPassword"/> -->
 
    </bean>
    
 
</beans>
 
cs


어떤 데이터 베이스를 스크립트로 스키마 및 데이터를 포함하여 백업받은 적이 있었습니다.

무려 용량이 60기가정도...


Microsoft SQL Sever Management Studio는 이파일을 읽지 못하고 Out of Memory를 뱉어 냅니다. ㅠㅠ


테스크를 아무리 찾아봐도 스크립트를 통한 Import 기능이 없습니다. (제가 못찾는 것 일 수도..)


파일을 분할하여 야금야금 데이터를 넣는데 30메가 단위로 작업이 되니 60기가를 처리하기에는 시간이 너무 오래 걸려서 다른 방법을 찾아 보았습니다.


SQL Server에도 Comment 명령 기능을 제공하고 있더군요 


바로


sqlcmd 라는 오라클의 sqlplus같은 기능을 하는 녀석입니다. 


기본적인 내용은..



구문

sqlcmd   
   -a packet_size  
   -A (dedicated administrator connection)  
   -b (terminate batch job if there is an error)  
   -c batch_terminator  
   -C (trust the server certificate)  
   -d db_name  
   -e (echo input)  
   -E (use trusted connection)  
   -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] 
   -g (enable column encryption) 
   -G (use Azure Active Directory for authentication)
   -h rows_per_header  
   -H workstation_name  
   -i input_file  
   -I (enable quoted identifiers)  
   -j (Print raw error messages)
   -k[1 | 2] (remove or replace control characters)  
   -K application_intent  
   -l login_timeout  
   -L[c] (list servers, optional clean output)  
   -m error_level  
   -M multisubnet_failover  
   -N (encrypt connection)  
   -o output_file  
   -p[1] (print statistics, optional colon format)  
   -P password  
   -q "cmdline query"  
   -Q "cmdline query" (and exit)  
   -r[0 | 1] (msgs to stderr)  
   -R (use client regional settings)  
   -s col_separator  
   -S [protocol:]server[instance_name][,port]  
   -t query_timeout  
   -u (unicode output file)  
   -U login_id  
   -v var = "value"  
   -V error_severity_level  
   -w column_width  
   -W (remove trailing spaces)  
   -x (disable variable substitution)  
   -X[1] (disable commands, startup script, environment variables, optional exit)  
   -y variable_length_type_display_width  
   -Y fixed_length_type_display_width  
   -z new_password   
   -Z new_password (and exit)  
   -? (usage)  

명령줄 옵션

로그인 관련 옵션
-A
SQL server 관리자 전용된 연결 (DAC)로 로그입니다. 이 연결 유형은 서버 문제를 해결하는 데 사용됩니다. 이 연결은 DAC를 지원하는 서버 컴퓨터에만 사용할 수 있습니다. DAC를 사용할 수 없는 경우 sqlcmd 는 오류 메시지를 생성하고 종료됩니다. DAC에 대한 자세한 내용은 데이터베이스 관리자를 위한 진단 연결을 참조하세요. -A 옵션-G 옵션과 함께 지원 되지 않습니다. -A를 사용 하 여 SQL 데이터베이스에 연결할 때 SQL server 관리자 여야 합니다. DAC는 Azure Active Directory 관리자에 대 한 사용할 수 없습니다.

-C
이 스위치는 클라이언트에서 유효성 검사 없이 암시적으로 서버 인증서를 신뢰하는 데 사용됩니다. 이 옵션은 ADO.NET 옵션 TRUSTSERVERCERTIFICATE = true와 동일합니다.

-d db_name
sqlcmd를 시작할 때 USE db_name 문을 실행합니다. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDDBNAME을 설정합니다.이 변수는 초기 데이터베이스를 지정합니다. 기본값은 사용자 로그인의 기본 데이터베이스 속성입니다. 데이터베이스가 없을 경우 오류 메시지가 생성되고 sqlcmd 가 종료됩니다.

-l login_timeout
서버에 연결을 시도할 때 ODBC 드라이버에 대한 sqlcmd 로그인 시간 제한(초)을 지정합니다. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDLOGINTIMEOUT을 설정합니다. 기본 sqlcmd 로그인 제한 시간은 8초입니다. -G 옵션을 사용하여 SQL 데이터베이스 또는 SQL 데이터 웨어하우스에 연결하고 Azure Active Directory를 사용하여 인증하는 경우 최소 30초의 시간 제한 값이 권장됩니다. 로그인 제한 시간은 0에서 65534 사이의 숫자여야 합니다. 입력한 값이 숫자가 아니거나 이 범위에 속하지 않을 경우 sqlcmd 는 오류 메시지를 생성합니다. 값을 0으로 설정하면 제한 시간이 없습니다.

-E
SQL Server에 로그온 할 때 사용자 이름 및 암호를 사용 하는 대신 트러스트 된 연결을 사용 합니다. -E 를 지정하지 않으면 sqlcmd 는 기본적으로 트러스트된 연결 옵션을 사용합니다.

-E 옵션은 SQLCMDPASSWORD 등의 가능한 사용자 이름 및 암호 환경 변수 설정을 무시합니다. -E 옵션과 함께 -U 옵션 또는 -P 옵션을 사용하면 오류 메시지가 생성됩니다.

-g
열 암호화 설정을 Enabled로 설정합니다. 자세한 내용은 Always Encrypted를 참조하세요. Windows 인증서 저장소에 저장된 마스터 키만 지원됩니다. -g 스위치를 사용하려면 적어도 sqlcmd 버전 13.1이 필요합니다. 사용 중인 버전을 확인하려면 sqlcmd -?를 실행하세요.

-G
이 스위치는 Azure Active Directory 인증을 사용하여 사용자를 인증하도록 지정하기 위해 SQL 데이터 웨어하우스 또는 SQL 데이터베이스에 연결할 때 클라이언트에서 사용됩니다. 이 옵션은 sqlcmd 스크립팅 변수 SQLCMDUSEAAD = true를 설정합니다. -G 스위치를 사용하려면 적어도 sqlcmd 버전 13.1이 필요합니다. 사용 중인 버전을 확인하려면 sqlcmd -?를 실행하세요. 자세한 내용은 Azure Active Directory 인증을 사용하여 SQL Database 및 SQL Data Warehouse에 연결을 참조하세요. -A 옵션-G 옵션과 함께 지원 되지 않습니다.


위의 옵션중 -i 옵션을 이용하여 대용량의 데이터를 쉽고 귀찮지 않게 넣을수 있었습니다. 




먼저 해당 데이터베이스가 설치된 PC에서 작업을 기준으로 설명하겠습니다. 


sqlcmd -i <파일경로 + 파일명>




저렇게 한참을 기다린뒤 작업이 마무리가 되어 명령프롬프트가 되돌아 왔습니다. 


실제 데이터도 한글이나 기타 문자도 깨짐이 없이 잘 들어 갔습니다. 



원격으로 작업을 진행하셔야하는 분들은 위의 명령어에 로그인옵션을 추가하여 작업할 수 있습니다. 



sqlcmd -S tcp:<ip address,port> -i <파일경로>





www.oracle.com 에 접속을 한뒤 아래 그림과 같이 메뉴를 따라가서 다운로드 페이지까지 이동합니다.




아래와 같은 페이지가 나오면 아래 붉은색 박스를 클릭하여 상세 화면으로 이동합니다. 





아래 라이센스 동의를 Accept를 선택하시고 붉은색 박스를 선택하면 로그인 과정을 거친후 다운로드 받을 수 있습니다. 


Tablespace 확장 요청이 발생할 때마다 찾기가 귀찮아서 포스트를 작성합니다. 

 

 

# 테이블 스페이스 용량별로 조회하기 (단위 : BYTE)

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
SELECT A.TABLESPACE_NAME AS "테이블스페이스명"
       ,A.FILE_NAME  AS "파일경로 AS "
       ,(A.BYTES - B.FREE)  AS "사용공간"
       ,B.FREE  AS "잔여 공간"
       ,A.BYTES  AS "전체 크기"
       ,TO_CHAR((B.FREE / A.BYTES * 100), '999.99'|| '%'  AS "잔여공간"
  FROM (SELECT FILE_ID
              ,TABLESPACE_NAME
              ,FILE_NAME
              ,SUBSTR(FILE_NAME, 1200) FILE_NM
              ,SUM(BYTES) BYTES
          FROM DBA_DATA_FILES
         GROUP BY FILE_ID
                 ,TABLESPACE_NAME
                 ,FILE_NAME
                 ,SUBSTR(FILE_NAME, 1200)) A
      ,(SELECT TABLESPACE_NAME
              ,FILE_ID
              ,SUM(NVL(BYTES, 0)) FREE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME
                 ,FILE_ID) B
 WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
   AND A.FILE_ID = B.FILE_ID
 ORDER BY A.TABLESPACE_NAME, B.FREE;
cs

 

 

# DataFile 추가를 통한 Tablespace 확장

1
2
3
4
5
/* 
데이터 파일 추가를 통한 테이블 스페이스 확장  기본 500메가로 시작하여 50메가씩
증가하면서 최대 2기가까지 증가할 수 있다
2 기가를 설정하는 이유는 예전 리눅스 시스템이 2기가까지 밖에 인식하지 못함  
만약 오라클이 큰 용량의 테이블 스페이스 파일을 인식 하지 못하는 경우  오라클
시작시 largeFile로 Mount 하여야 한다.
*/ 
 
ALTER TABLESPACE TS_S4_DAT ADD DATAFILE 'D:\DATABASE\YOUR_DIR\TS_S4_DAT4.DBF' 
SIZE 500M AUTOEXTEND ON  NEXT 50M MAXSIZE 2048M;
cs

 

구글링은 안되게 막고 구글 광고는 표시하고 싶을때에 다음과 같이 설정하도록 합니다. 


<기존 : 모든 크롤링은 허용하지 않지만 구글봇에게는 허용합니다.>


User-agent:*

Disallow:/

User-agent: Googlebot

Allow:/



<변경 : 구글에서 검색은 안되지만 구글 광고는 가져다 쓸수 있음>

User-agent:*

Disallow:/

User-agent: Mediapartners-Google

Allow:/



참고 사이트

https://support.google.com/webmasters/answer/1061943?hi=ko

ORA-01847 : day of month must be between 1 and last day of month




왜 DB 관리툴로 돌리면 잘 수행 되는 쿼리가 서버에서 실행되면 오류가 발생할까?..


혹은


이와 반대의 경우를 경험할 때가 있다.



일반적으로 이 오류는 예를 들어 2018-12-32이라는 문자열을 날짜로 변환할 때 발생한다.


즉, 달력에 없는 날짜를 문자열을 이용하여 Date 타입으로 변환할 때 발생한다는 이야기이다. 


별도의 타입에 대한 변환이 명시되지 않으면 알아서(?) 타입을 변환해주는 오토케스팅이 낳은 좋지 않은 케이스라 할 수 있다. 





의외로 잘 깜박하는 예시를 들어보록 하자.


컬럼 Date_A 가 있다. 이 컬럼은 Date Type이며 Null 일 수 있다.


이 컬럼을 이용하여 아래와 같이 작성하면 ORA-01847을 만날 수 있다. 


1
2
3
4
        SELECT 
              ,TO_CHAR(NVL(A.DATE_A, '9999-12-31'), 'YYYY-MM-DD') AS DATE_A
 
        FROM  TABLE_NAME A
cs



위의 쿼리는 다음과 같이 작성되는것이 오류를 예방하고 혼란에 빠지지 않을 수 있다.



1
2
3
4
        SELECT 
              NVL(TO_CHAR(A.END_DATE, 'RRRR-MM-DD'), '9999-12-31')
 
        FROM  TABLE_NAME A
cs



설명을 약간 하자면 NVL 안에서 처리될때 문자열이 Null 인경우 문자열로 치환되어야 하는것이다. 
타입이 다른 것으로 치환되지 않도록 쿼리를 작성하는것이 포인트 이다. 

고쳐진 쿼리는 문자열로 변환 후 해당 문자열이 Null 인경우 대체되는 문자열로 변경하는것으로 작성되었다.




+ Recent posts