Oracle의 version이 올라감에 따라 새로운 initialization parameters도 생기지만,

제거되는(deprecate) initialization parameters도 계속 생겨납니다.

 

deprecate parameters가 specify된 상태에서 instance를 기동하면,

다음과 같은 warning message가 출력되게 됩니다.

 

 SQL> startup;

 ORA-32004: obsolete and/or deprecated parameter(s) specified
 ORACLE instance started.

 Total System Global Area 1068937216 bytes
 Fixed Size                           2166536 bytes
 Variable Size                    754974968 bytes
 Database Buffers              306184192 bytes
 Redo Buffers                       5611520 bytes

 

 

여기서는 어떤 parameters가 deprecate되었는지 살펴보려고 합니다.

다음의 SQL문을 통해 11.1.0.7.0부터 deprecated parameters를 확인할 수 있습니다.

SQL> select name from v$parameter where isdeprecated = 'TRUE' order by 1;

name

background_dump_dest

buffer_pool_keep

buffer_pool_recycle

commit_write

cursor_space_for_time

drs_start

fast_start_io_target

global_context_pool_size

instance_groups

lock_name_space

log_archive_local_first

log_archive_start

max_commit_propagation_delay

max_enabled_roles

parallel_automatic_tuning

parallel_server

parallel_server_instances

plsql_debug

plsql_v2_compatibility

remote_os_authent

resource_manager_cpu_allocation

serial_reuse

sql_trace

sql_version

standby_archive_dest

user_dump_dest

 

 

26 rows selected.

 

이제 parameter 하나하나에 대해 의미 및 용도,

그리고 deprecate된 이유에 대해서 설명하고자 합니다.

 

1. background_dump_dest

 

    ●  의미 용도

           LGWR, DBWR등의 background process들이 활동을 하면서 발생되는 trace files

           저장되는 곳으로, alert_SID.log 이곳에 저장됩니다.

 

    ●  deprecate 이유

           Oracle11g부터는 새로운 diagnosability infrastructure 제공하는데,

           이것은 "diagnostic_dest"라는 initialization parameter 지정하는 directory

           trace and core files 저장하도록 합니다.

           background_dump_dest initialization parameter file 기술되어 있어도 무시됩니다.

 

2. buffer_pool_keep

 

    ●  의미 용도

           keep buffer 사이즈(blocks) 결정합니다.

 

    ●  deprecate 이유

           Oracle9i부터는 db_keep_cache_size 대신할 있게 되어서 deprecate되었습니다.

 

3. buffer_pool_recycle

 

    ●  의미 용도

           recycle buffer 사이즈(blocks) 결정합니다.

 

    ●  deprecate 이유

           Oracle9i부터는db_recycle_cache_size 대신할 있게 되어서 deprecate되었습니다.

 

4. commit_write

 

    ●  의미 용도

           asynchronous commit 허용할지 여부를 정합니다.

 

           parameter 의미를 설명하기 위해서는

           transaction commit되는 과정을 설명할 필요가 있습니다.

 

           일반적인 transaction 다음과 같은 과정을 거쳐서 처리됩니다.

           (1) user transaction 수행한다

           (2) user 수행하는 DMLs 관련된 data changes log buffer(memory) 담는다.

           (3) user commit 실행하는 순간, 즉시 해당 transaction 관련된 내용을

                log buffer로부터 online redo logs(disk) write한다.

           (4) online redo logs에의 write 끝난 이후에야 user 응답한다.

                (SQL*Plus 경우에는 "Commit complete."라는 message 반환됩니다)

 

           위는 transaction commit되는 동안 발생하는 default과정으로,

           (3)에서는 commit순간에 즉시(immediate) redo logs(disk) write 하고 있으며,

           (4)에서는 redo logs write 끝날 때까지 기다린(wait) 후에 user 응답하도록

           되어 있습니다.

 

           default과정 대신에

           commit되는 타이밍과 관계없이 redo logs를 적당한 timing에 모아서(batch) write하고,

           redo logs에 write가 끝날 때까지 기다리지 않고(nowait) 바로 user에 응답하도록

           설정을 변경할 수도 있습니다.

 

           위와 같이 설정을 변경하는 방법에는 2가지가 있는데,

           하나는 "commit" command option 통해 statement level에서 수행하는 것이며,

           다른 하나는 "commit_write"라는 parameter 사용해서

           instance level에서 적용되도록 하는 것입니다.

 

           일반적으로 SQL*Plus에서 commit 실행하는 것은,

           "commit write immediate wait;" (immediate wait 순서가 바뀌어도 상관없다)

           실행하는 것과 같습니다.

 

           만약 아래와 같은 command 실행하게 된다면,

           commit write batch nowait;   

           transaction 관련된 changes redo log files(disk) 바로 쓰여지지 않을 것이며,

           바로 user에게 "Commit complete."라는 message 반환하게 됩니다.

           설정을 instance level에서 적용시키고자 한다면,

           alter system set commit_write = 'batch,nowait';

           이라고 실행하면 됩니다.

 

           만약 아래와 같은 command 실행하게 된다면,

           commit write immediate nowait;            

           transaction 관련된 changes redo log files 바로 쓰여지게 되지만,

           redo log files에의 write 끝날 때까지 기다리지 않고

           바로 user에게 "Commit complete."라는 message 반환하게 됩니다.

 

           만약 parameter default값에서 다른 값으로 변경하는 경우,

           commit performance 좋아진다는 장점이 있지만,

           redo log files changes disk 저장되지 않은 상태에서 media failure 발생하는 경우,

           disk 저장되지 않은 transactions 대해서는

           instance recovery 통해서 복구할 없다는 단점이 있습니다.

 

    ●  deprecate 이유

           Oracle11g부터는 "commit_logging" "commit_wait"이라는 2개의 parameters 분리시켜서

           동일한 기능을 하도록 바뀌었기 때문에, "commit_write" deprecate되었습니다.

 

5. cursor_space_for_time

    ●  의미 용도

           하나의 SQL문이 실행되기 위해서는 parse execute단계를 거치게 됩니다.

           instance 기동된 , 처음으로 실행된 SQL문에 대해 parse 결과는 

           shared pool 저장되며, 이후에 실행되는 동일한 SQL문에 대해서는 parse 수행하지 않고

           shared pool 저장된 parsed 정보를 이용해서 execute하게 됩니다.

 

           새로운 정보를 shared pool(library cache) 기록하려는 순간에

           shared pool 있게 되면 우선 closed cursor정보를 제거하고,

           다음은 LRU(Least Recently Used) algorithm 따라 낡은(aged) 정보를 제거합니다.

           만약 open cursors shared pool 꽉찬 경우에는

           open cursor parsed 정보가 shared pool에서 제거되기도 합니다.

 

           그러므로 다량의 SQL문이 빈번하게 발행되는 환경에서는

           open cursor 대해, parse단계에서 존재했었던 parsed정보가

           execute단계에서 없어져 버리는 경우가 간혹 발생하게 됩니다.

           결국 다시 parse(hard parse)해야 하므로 performance 떨어지는 원인이 됩니다.

           하지만 "cursor_space_for_time" true 설정하게 되면,

           open cursor parsed정보가 제거되지 않게 됩니다.

 

           그런 의미에서 "cursor_space_for_time" 통해

           경우에 따라서는 약간의 성능향상을 기대할 있습니다.

 

    ●  deprecate 이유

           위에서 언급한 것처럼 open cursors shared pool 꽉차는 경우는

           shared pool 굉장히 작은 경우에나 발생하며,

           Oracle10g이후에는 Automatic Memory Management기능을 통해

           자동으로 shared pool 크기가 관리되기 때문에

           parameter 성능향상에 기여하는 경우는 거의 없어지게 되었습니다.

           initialization parameter수의 증가는 DB관리자를 피곤하게 뿐이므로,

           거의 활용도가 없는 parameter deprecate 것은 매우 긍정적이라고 생각됩니다.

 

6. drs_start

 

    ●  의미 용도

           DMON(Data Guard Broker)이라는 background process를 기동할 지 여부를 정합니다.

           Data Guard Broker란, Data Guard환경을 감시, 관리할 수 있도록 해주는 framework로,

           DGMGRL이라는 command-line interface(dgmgrl 이라는 binary file이 존재함)

           혹은 Enterprise Manager를 통해 Data Guard Broker기능을 이용할 수 있습니다.

           drs_start라는 parameter를 true로 설정해야만

           Data Guard Broker가 제공하는 기능을 이용할 수 있습니다.

           drs_start를 true로 설정하지 않고 Data Guard Broker를 활용하려고 하는 경우,

           다음과 같이 error가 발생하게 됩니다.

DGMGRL> create configuration 'DRSolution' as primary database is 'North_Sales' connect identifier is North_Sales.foo.com;
Error:
ORA-16525: the Data Guard broker is not yet available
...

 

 

    ●  deprecate 이유

           Oracle9iR2부터 dg_broker_start라는 parameter로 대체되면서 deprecate되었는데,

           drs_start라는 parameter명이 Data Guard Broker를 떠올릴 만한 이름이 아닌 관계로,

           보다 구체적이고 합리적인 parameter명으로 대체된 듯 합니다.

 

7. fast_start_io_target

 

    ●  의미 용도

           이 parameter에 대해 설명하기 전에

           data가 변경되는 과정에 대해서 간단히 언급하고자 합니다.

 

           Oracle에서는 transaction을 통해 변경된 data정보를 바로 disk에 기록하지 않고,

           SGA의 buffer cache에 저장한 후, Oracle 스스로 system의 부하를 고려하여

           적당하다고 판단되는 타이밍에 몰아서(batch) disk에 기록을 하도록 되어 있습니다.

 

           그러므로 buffer cache상에는 memory상의 정보는 변경되었지만

           disk에는 아직 반영되지 않은 상태의 block이 항상 존재하게 됩니다.

           이런 block을 Oracle에서는 "dirty block"이라고 부릅니다.

           이 dirty block은 checkpoint가 발생하는 타이밍에 disk에 쓰여지게 됩니다.

 

           fast_start_io_target는 dirty blocks의 수를 제한하기 위한  parameter로,

           만약 1,000이라는 값을 설정했다면, dirty blocks가 1,000개를 넘기 전에

           dirty blocks를 disk에 write하게 됩니다.

 

           그러므로 이 fast_start_io_target를 보다 작은 값으로 설정할수록,

           checkpoint에 소요되는 시간이 줄어들며,

           roll forward할 양이 적어지므로 instance recovery에 걸리는 시간도 줄어들게 됩니다.

           참고로, "0"으로 설정하면 이 기능이 disable됩니다.

 

    ●  deprecate 이유

           10.1.0.4부터 fast_start_mttr_target parameter로 대체되면서 deprecate되었는데,

           그 이유는 fast_start_io_target를 잘못 설정할 경우,

           지나친 부하로 system이 다운될 수 있기 때문입니다.

 

8. global_context_pool_size

 

    ●  의미 용도

           지금까지 들어 본 적도 없는 parameter인데,

           조사해 보니, Oracle9i의 신기능과 더불어 등장한 parameter라고 합니다.

 

    ●  deprecate 이유

           10.1.0.4부터 deprecate되었는데, Oracle10g부터 Automatic Memory Management가

           주류가 되면서 이 parameter의 설정이 불필요해 진 것 같습니다.

 

 

9. instance_groups

 

 

    ●  의미 용도

           RAC환경에서만 의미를 가지는 parameter로,

           각각의 instance에 대해 자신이 속할 instance_group을 설정할 수 있으며,

           comma(,)로 구분하여 복수의 groups에 속하도록 설정할 수도 있습니다.

 

           여기서 설정되는 instance group은 parallel execution을 수행할 때만 의미를 가지므로,

           반드시 parallel_instance_group이라는 parameter와 함께 사용되어야 합니다.

           (이상하게도 parallel_instance_group parameter는 아직 deprecate되지 않았습니다.)

 

           예를 들어, instance 4개로 구성된 RAC이 있고,

           instance 1,2에 대해서만 instance_groups의 값을 sales라고 설정하고,

           parallel_instance_group값을 sales라고 설정한 후에 parallel execution을 실행하게 되면,

           sales group에 속하지 않은 instance 3,4는 parallel execution에 관여하지 않고

 

           오직 instance 1,2만 parallel execution에 참여하여 관련 processes가 발생하게 됩니다.

 

           사실 저 역시도 이 parameter를 사용해 보지 않아서 충분히 이해가 되지는 않습니다.

 

    ●  deprecate 이유

           11.1.0.6부터 deprecate되었는데, 정확한 이유는 모르겠지만,

           아마도 이 parameter의 사용법이 어려워서 

           제대로 활용하기가 힘들기 때문이 아닐까 싶습니다.

 

10. lock_name_space

 

    ●  의미 용도

           DLM(Distributed Lock Manager)가 lock이름을 생성하기 위해 사용하는 namespace를

           지정하는 parameter라고 하는데 잘 이해가 안되네요.

           (LOCK_NAME_SPACE specifies the namespace that the distributed lock manager (DLM)

           uses to generate lock names)

           이 parameter는, primary database와 동일한 host상에 standby database 혹은

           동일한 db_name을 가지는 clone database를 생성하고자 하는 경우에

           반드시 값을 설정해야 합니다.

 

           제가 혼자 Oracle을 공부하던 시절에 하나의 PC에

           primay 뿐만 아니라 standby database까지 생성한 적이 있습니다.

           이 당시에 lock_name_space를 설정하지 않으면 error가 발생했던 기억이 납니다.

 

    ●  deprecate 이유

           10.1.0.4부터는 db_unique_name이라는 새롭게 등장한 parameter가

           lock_name_space의 역할을 대신하게 되면서 deprecate되었습니다.

11. log_archive_local_first

 

    ●  의미 용도

           Data Guard환경에서만 의미를 가지는 parameter로,

           (=true) primary host상의 local destination에 archiving을 반드시 끝낸 이후에,

           standby host에 archiving을 수행할지, 아니면

           (=false) primary 및 standby host상에서 동시에 archiving을 수행할지를

           정하는 parameter입니다.

 

           전자의 경우에는, local에 archiving이 끝난 archived redo log를 standby host에 전송하는

           형태를 가지기 때문에 log transport service를 archiver process(ARCn)가 담당하게 되며,

           후자의 경우에는, standby destination에 동시에 redo data를 전송하기 때문에 

           log writer process(LGWR)가 log transport service를 담당하게 됩니다.

           그러면 standby host상의 archiver process는 전송받은 redo data를 가지고

           archived redo log를 생성하게 됩니다.

 

           이 parameter는 Oracle10g부터 등장했으며, 그 이전 version에서는,

           LGWR을 사용해서 동시에 archiving을 수행하는 것이 default설정이었습니다.

           하지만 Oracle10g이후부터는 "log_archive_local_first"의 default값이 "true"로,

           즉, local에 archiving이 끝난 이후에 standby host에 전송하는 방식이 default설정입니다.

 

    ●  deprecate 이유

           Oracle11g부터 deprecate되었으며, 정확한 이유는 모르겠지만, 아마도           

           "log_archive_local_first"값을 "false"로 설정할 필요가 있는 경우가 거의 없고,

           설정해도 큰 메리트가 없기 때문으로 보입니다.

 

12. log_archive_start

 

    ●  의미 용도

           ARCHIVELOG mode상태의 database가 online redo log가 full되는 시점에

           자동으로 archiving을 하도록 하기 위해 필요한 설정입니다.

 

    ●  deprecate 이유

           Oracle10g부터 deprecate되었는데,

           Oracle9i까지는 ARCHIVELOG mode상태의 database에 대해

           이 parameter값을 "true"로 설정함으로서 자동으로 archiving이 수행되게 할 수도 있고,

           이 parameter값을 "false"로 설정해서 수동으로만 archiving을 할 수 있도록

           설정할 수도 있었습니다.

           하지만 실제로 수동 archiving기능은 거의 사용되지 않았기 때문에,

           Oracle10g부터는 ARCHIVELOG mode로 설정을 하게 되면

           그 순간부터 자동 archiving이 수행되도록 바뀌었습니다.

           그 결과, "log_archive_start"라는 parameter는 쓸모가 없게 되었습니다.

 

13. max_commit_propagation_delay

 

    ●  의미 용도

           RAC환경에서만 적용되는 parameter인데,

           한 번도 본 적도 없고 사용한 적도 없는 parameter라 잘 모르겠네요.

           아래의 페이지에 잘 설명되어 있는 것 같습니다.

           http://wiki.ex-em.com/index.php/MAX_COMMIT_PROPAGATION_DELAY

 

    ●  deprecate 이유

           10.2.0.3부터 deprecate되었습니다.

 

 

14. max_enabled_roles

 

 

    ●  의미 용도

           한 user에 grant할 수 role의 개수의 최대치를 정하는 parameter입니다.

           예를 들어 이 값이 "10"인 경우, 10개의 roles까지만 grant할 수 있습니다.

           (이 "10"개의 role에, 실제 자신의 schema내의 objects에 접근할 수 있는 role과

           public objects에 접근할 수 있는 role, 이 2가지 role은 포함되지 않습니다)

 

    ●  deprecate 이유

           Oracle10g부터 deprecate되었으며, 148개까지의 roles를 grant할 수 있습니다.

           처음에는 이 parameter가 왜 생겨났는지 도무지 이해가 안되었는데,

           이 parameter를 적은 값으로 설정하면 할수록 

           resource(특히 memory)를 절약할 수 있는 잇점이 있는 것 같습니다.

           하지만 Oracle10g가 등장한 시절부터는 memory값이 많이 저렴해졌기 때문에,

           이 parameter의 설정을 통해 얻을 수 있는 잇점이 거의 없어진 것 같습니다.

 

15. parallel_automatic_tuning

 

    ●  의미 용도

           PX(parallel execution)와 관련된 다음의 5개의 parameters의 설정에 대해,

           true인 경우에는 Oracle이 기존 설정치를 무시하고 자동으로 설정을 변경할 수 있게 하며,

           false인 경우에는 자동으로 tuning하지 못하도록 하는 parameter입니다.

           (1) parallel_execution_message_size

           (2) parallel_adaptive_multi_user

           (3) large_pool_size

           (5) parallel_max_servers

 

           이 parameter가 의미를 갖기 위해서는, 병렬처리를 하고자 하는 target tables에 대해

           "parallel" clause를 반드시 지정해야 합니다.

    

           (4) processes

    ●  deprecate 이유

           Oracle9i까지는 를 true로 설정함으로서 parallel execution의 성능향상이 있었는데,

           즉, 위의 5개의 parameters값의 새로운 default값이 의미가 있었지만, 

           Oracle10g부터는 이 default값이 오히려 성능을 떨어뜨리는 경우가 많아지면서

           deprecate되게 되었다고 합니다.

           Oracle10g부터 SGA까지도 Oracle이 자동으로 관리해 주는 방식으로 변하면서,

           이 parameter가 불필요해 진 것 같습니다.

16. parallel_server

 

    ●  의미 용도

           database를 Oracle Parallel Server(OPS)환경에서 구동시키기 위해서 필요한 parameter로,

           single-instance database에서는 "false"라는 값을 가지게 되며,

           multi-instance database(OPS)환경에서는 "true"값이 설정되어야 합니다.

 

    ●  deprecate 이유

           이 OPS는 Oracle8i 까지 존재했던 cluster환경을 일컫는 용어이며,

           Oracle9i 이후에는 OPS 대신에 RAC(Real Application Cluster)라는 용어가 사용되고 있습니다.

           물론 용어만 달라진 것은 아니며, 내부 메커니즘도 크게 달라졌습니다.

           Oracle9i 부터 "parallel_server"를 "cluster_database"라는 parameter가 대체하게 되면서,

           이 parameter는 deprecate되었습니다.

 

17. parallel_server_instances

 

    ●  의미 용도

           database를 Oracle Parallel Server(OPS)환경에서 구동시키기 위해서 필요한 parameter로,

           OPS환경에 참가한 instances의 수가 설정됩니다.

           single-instance database에서는 당연히 "1" 이라는 값을 가지게 되며

           multi-instance로 구성된 OPS환경에서는 1보다 큰 값을 가지게 됩니다.

 

    ●  deprecate 이유

           앞의 "parallel_server"과 마찬가지로 

           "parallel_server_instances"는 OPS환경에서 사용되던 parameter로,

           Oracle9i 부터는 "cluster_database_instacnes"로 대체되면서 deprecate되었습니다.

 

18. plsql_debug

 

    ●  의미 용도

           PL/SQL의 debug를 돕기 위한 parameter입니다.

           programming을 마치고 debugging과정에 들어가게 되면,

           어디에서 문제가 발생하고, 특정 변수에 어떤 값이 들어가는지, 등등을 알기 위해,

           program 내부에 debug관련 code를 넣고,

           monitor등의 standard output에 debug관련 문자열을 출력시켜 가면서

           debugging하는 경우가 많이 있습니다.

           이 debug용 code는 debug가 끝나면 지워야 하는데, 또 다른 bug가 발생하게 되면

           다시 debug용 code를 입력해야 하는 번거로운 일이 생기게 됩니다.

 

           이 번거로운 과정을 줄이기 위해, 등장한 parameter가 plsql_debug입니다.

           아래의 예와 같이, 이 parameter값을 통해 debug문의 출력여부를 제어할 수 있습니다.

SQL> show parameter plsql_debug

name

type

value

plsql_debug

boolean

false

 

SQL> create or replace function sample_plsql return date

    2   is

    3     currentDate date;

    4   begin

    5     $if $$plsql_debug $then

    6       dbms_output.put_line('debug point----------1');

    7     $end

    8     select sysdate into currentDate from dual;

    9     return currentDate;

  10   end sample_plsql;

  11   /

 

Function created.

 

SQL> select sample_plsql from dual;

sample_plsql

2010/02/25 16:20:36

 

-- 아래에서는 session level에서 "plsql_debug" parameter값을 변경했지만

-- system level에서 변경도 가능합니다

SQL> alter system set plsql_debug = true;

Session altered.

 

-- 아래의 결과를 보면 이상하게도 "plsql_debug"값을 "true"로 변경했지만

-- debug문이 출력되지 않았습니다

SQL> select sample_plsql from dual;

sample_plsql

2010/02/25 16:21:06

 

SQL> alter function sample_plsql compile;

Function altered.

 

-- recompile하고 나서야 비로서 변경된 "plsql_debug"값이 반영되어

-- debug문이 출력되는 것을 알 수 있습니다.

SQL> select sample_plsql from dual;

sample_plsql

2010/02/25 16:20:36

 

debug point----------1

 

SQL> alter system set plsql_debug = false;

Session altered.

 

SQL> alter function sample_plsql compile;

Function altered.

 

-- "plsql_debug"를 "false"로 설정한 뒤 compile했더니 예상대로

-- debug문이 출력되지 않았습니다

SQL> select sample_plsql from dual;

sample_plsql

2010/02/25 16:21:06

 

 

SQL> alter function sample_plsql compile debug;

Function altered.

 

-- debug option을 붙여서 compile하게 되면, 아래의 결과와 같이

-- "plsql_debug"값과 관계없이 debug문이 출력됩니다.

SQL> select sample_plsql from dual;

sample_plsql

2010/02/25 16:20:36

 

 

debug point----------1

 

            ※ 위의 결과는 Oracle10gR2 환경에서 실행한 결과로서 다른 version에서는

                다른 결과가 나타날 수 있습니다.

 

    ●  deprecate 이유

           이 parameter는 Oracle11g부터 deprecate되었는데,

           위에서처럼, Oracle10gR2부터는 alter...comple문에 debug option이 사용가능해 지면서

           구태여 "plsql_debug" parameter를 설정할 필요가 없어지게 되었습니다.

 

19. plsql_v2_compatibility

 

    ●  의미 용도

           Oracle이 제공하는 PL/SQL에는 여러 가지 version이 있습니다.

           Version 1.0 부터 시작해서 1.1(Oracle6)→2.0(Oracle7.0)→2.1(Oracle7.1)→2.2(Oracle7.2)

           →2.3(Oracle7.3)→8.0(Oracle8.0)→... 으로 계속 version이 증가하고 있으며.

           2.3에서 8.0으로 갑자기 크게 증가한 이유는 PL/SQL에 엄청난 성능향상이 있어서 라기 보단

           PL/SQL version을 database version에 일치시키는 편이 좋다고 판단했기 때문입니다.

 

           PL/SQL 2.x version에는 PL/SQL 8 이후의 version에서 허용하지 않는 기능이 몇가지 있는데,

           이 "plsql_v2_compatibility" parameter를 "true"로 설정하게 되면,

           PL/SQL library 및 compiler가 2.x version에 기반해서 동작하게 됩니다.

           이 경우, PL/SQL 8 이후의 version에서만 허용하는 기능을 사용하면 error가 발생하게 됩니다.

 

    ●  deprecate 이유

           Oracle11g부터 이 parameter가 deprecate되었는데, 더 이상 Oracle7에 대한 compatibility를

           support하는 것은 의미없다고 Oracle이 판단한 것 같습니다.

 

           PL/SQL version은 아래와 같이 확인할 수 있는데, 보통 database version과 동일합니다.

SQL> select * from v$version;

 

banner

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

PL/SQL Release 11.1.0.7.0 - Production

CORE    11.1.0.7.0      Production

TNS for Linux: Version 11.1.0.7.0 - Production

NLSRTL Version 11.1.0.7.0 - Production

 

 

 

20. remote_os_authent

 

 

    ●  의미 용도

           "os_authent_prefix" parameter에 설정된 문자열을 prefix로 하는 O/S user에 대해

           remote host로부터 database에 access를 가능케 하기 위한 parameter입니다.

           거의 사용할 일이 없기 때문에 자세한 설명은 생략합니다.

 

    ●  deprecate 이유

           Oracle11g부터 deprecate되었으며, 그 이유는

           잘 사용되지도 않을 뿐더러 보안상의 약점이 될 수 있기 때문인 것 같습니다.

21. resource_manager_cpu_allocation

 

    ●  의미 용도

           Resource Manager 이용할 있는 CPU수를 제한하는 parameter입니다.

           Resource Manager 설정된 Resource Plan 따라 database 연결된 sessions 대해

           CPU 배분하는데, 보통 해당 server 모든 physical CPUs 활용됩니다.

           하지만, parameter값을 실제 CPU수보다 적은 값으로 설정하게 되면,

           설정된 CPU만이 database sessions handling 사용됩니다.

 

           예를 들어, physical CPUs "4"이고, 값으로 "3" 설정했다면,

           3개의 CPUs만이 database session handling 관여하고 1개의 CPU 관여하지 않게 됩니다.

 

    ●  deprecate 이유

            parameter 역사는 무척 짧습니다.

           11.1.0.6.0, 즉 11g에서 처음 등장했으며, 11.1.0.7.0에서 deprecate되었습니다.

           deprecate 정확한 이유는 모르겠습니다만,

           아마 값을 적절하게 설정하는 것이 무척 어렵고,

           설정했더니 오히려 performance 떨어지는 경우가 많았던 같습니다.

 

22. serial_reuse 

 

    ●  의미 용도

           어떤 종류의 cursor 대해 serial-reusable memory영역에 저장되도록 하여,

           재활용(reuse) 가능하게 정하는 parameter입니다.

           물론 동일한 cursor(동일한 SQL, PL/SQL block) 대해서만 재활용이 가능하며,

           여기서 말하는 "재활용"이란, 동일한 cursor 대해, SGA 저장되어 있는 parse 정보를

           재활용하는 것으로 다시 parse 하지 않도록 하는 것을 말합니다.

 

           값으로는, select, dml, plsql, all, disable 이라는 5가지 값을 설정할 있습니다.

           "select", select문에 대해서만 parse정보를 serial-reusable memory 저장한다는 것이며,

           "all", "select, dml, plsql" 모든 종류의 parse정보를 저장한다는 것을 말합니다.

 

    ●  deprecate 이유

            parameter 8.1.7.4.0에서 처음 등장했으며, 10g에서 deprecate되었습니다.

           deprecate 정확한 이유는 모르겠습니다만,

           metalink 확인해 결과, serial_reuse 설정하는 것과 관련해서

           여러 가지 bugs 보고되고 있습니다.

           , parameter 세밀하게 설정함으로서 얻는 성능향상의 효과보다는

           bug 때문에 얻게 되는 손실이 크다고 판단되어 deprecate 같습니다.

 

           그리고 parameter memory 부족하던 시절에 보다 효율적으로

           memory 활용하고자 하는 목적에서 등장했기 때문에,

           Oracle10g 등장한 시절은 SGA 여유도 많이 생겼고,

           결과 이렇게까지 세심한 tuning 필요없어 졌다고 보입니다.

 

23. sql_trace 

 

    ●  의미 용도

           SQL trace 가능여부를 정하는 parameter입니다.

           유명한 parameter이므로 자세한 설명은 생략하겠습니다.

 

    ●  deprecate 이유

 

            sql_trace라는 initialization parameter값을 SQL Trace 하기 위해 true 설정하게 되면

           해당 database상에서 발생하는 모든 SQL 대해 trace정보가 수집됩니다.

           사용자가 발행하는 SQL 제외하고도 그런 SQL 처리하기 위해 내부적으로

           data dictionary 참조하는 SQL문이 다량으로 발행되는데 이것까지 수집됩니다.

           이런 모든 SQL 대해 trace정보를 수집하는 것은 system 부하가 걸리게 됩니다.

           자칫하면 trace file 인해 disk full 발생 수도 있습니다.

           이런 배경에서 initialization parameter level에서 sql_trace true 설정하지 못하도록

           deprecate시킨 것으로 보입니다.

 

           (dbms_monitor database_trace_enable database_trace_disable 사용해서

           database level에서 SQL trace 활성화시킬 있습니다.)

           

            parameter Oracle10gR2부터 deprecate되었으며,

           session level에서 SQL trace기능을 enable/disable하는 것은

           dbms_monitor dbms_session package session_trace_enable

           session_trace_disable함수가 대신하게 되었습니다.

 

           dbms_monitor package의 관련 함수의 경우에는 별도의 권한이 필요하지만,

           dbms_session의 경우에는 별도의 권한없이 실행할 수 있습니다.

           두 함수다 다음과 같이 parameter없이 실행할 수 있으며,

           그 경우 접속중인 session에 대해서 SQL trace를 enable/disable시킵니다.

 

SQL> execute dbms_session.session_trace_enable();

PL/SQL procedure successfully completed.

 

SQL> select count(*) from emp;

 

SQL> execute dbms_session.session_trace_disable();

PL/SQL procedure successfully completed.

 

 

 

24. sql_version (생략)

 

25. standby_archive_dest

 

    ●  의미 용도

           Data Guard상에서 standby host가 primary host로부터 전송된 archived redo logs를

           저장하는 directory를 지정하는 parameter입니다.

 

           기본적으로 primary host로부터 전송된 archived logs는 "log_archive_dest_n" parameter의

           "location" attribute에 명시된 directory에 저장되는데,

           이것과 다른 directory에 저장하고자 하는 경우에 "standby_archive_dest"를 설정합니다.

           그러므로 이 2 parameters가 모두 설정된 경우에는 "standby_archive_dest" parameter에

           설정된 값이 "log_archive_dest_n" parameter의 값을 override합니다.

 

           참고로, standby host상에 archived logs가 저장되는 directory를 정리하면,

           다음과 같은 rule에 따라 결정됩니다.

           (1) "standby_archive_dest"값이 설정되어 있으면 그 곳에 저장됩니다.

           (2) "standby_archive_dest"값이 설정되어 있지 않으면,

                "valid_for=(standby_logfile, *)"를 포함하는 "log_archive_dest_n"의 "location"

                attribute에 명시된 directory에 저장됩니다.

           (3) "standby_archive_dest"값이 설정되어 있지 않으며,

                "valid_for=(standby_logfile, *)"를 포함하는 "log_archive_dest_n"이 없는 경우,

                "compatibility" parameter값이 10.0 이상인 경우에는,

                유효한 값이 설정된 "log_archive_dest_n"의 "locationattribute에 따라 결정됩니다.

           (4) 위의 조건 중 어느 것에도 해당하지 않는 경우에는,

                "standby_archive_dest" parameter의 default값(default location)에 저장됩니다.

                이 default값은 "show parameter standby_archive_dest"가 아닌,

                다음의 SQL을 통해 확인할 수 있습니다.

                (Oracle11g에서는 "standby_archive_dest" parameter의 default값은,

                 "log_archive_dest_n"의 "locationattribute에 명시된 directory와 동일합니다)

SQL> show parameter log_archive_dest_1

name

type

value

log_archive_dest_1

string

location=/oradata/DTMRTCN/archivelog valid_for=(all_logfiles, all_roles) db_unique_name=DTMRTCN

 

SQL> show parameter standby_archive_dest

name

type

value

standby_archive_dest

string

?/dbs/arch

 

SQL> select dest_name, destination from v$archive_dest

  2  where dest_name = 'STANDBY_ARCHIVE_DEST';

 

dest_name

destination

STANDBY_ARCHIVE_DEST

/oradata/DTMRTCN/archivelog

    ●  deprecate 이유

           이 parameter는 Data Guard의 개념이 등장한 8.1.7에 처음 등장하였고,

           Oracle11g부터 deprecate되었습니다.

 

           위에서 설명한 것 처럼, standby_archive_dest값이 설정되어 있지 않은 경우에는, 

           log_archive_dest_n이 가리키는 directory에 archived redo logs가 저장되므로

           standby_archive_dest가 반드시 필요한 것은 아닙니다.

           보통 standby_archive_dest parameter자체를 설정하지 않는 경우가 많으며,

           값을 설정하는 경우에는 일반적으로 log_archive_dest_n과 동일한 값을

           설정하는 경우가 많습니다.

 

           즉, 혼란만 부추길 뿐 반드시 필요한 parameter가 아니기 때문에 deprecate되었습니다.

           

26. user_dump_dest

 

 

    ●  의미 용도

           user process와 관련된 debugging trace files이 저장되는 directory를 가리킵니다.

 

    ●  deprecate 이유

           Oracle11g부터는 새로운 diagnosability infrastructure 제공하는데,

           이것은 "diagnostic_dest"라는 initialization parameter 지정하는 directory

           trace and core files 저장하도록 합니다.

           user_dump_dest initialization parameter file 기술되어 있어도 무시됩니다.

 

 

Posted by Any DB
,