Intermediate VS senior DBA

Hi ,
I was wondering if any of the[u] SENIOR DBAs can answer this question !
Difference between an intermediate and a senior DBA ???
Also can we look at the difference at a broad level, with out considering the huge automation and self managing 10g database and with taking into account the automation, so precisely my question would be....
intermediate VS senior DBA
with automation VS with out automation
Thank you for your time.

I suspect that the answer really depends on the organization and the individual. Different organizations have vastly different definitions for the same job title. Different individuals will progress down rather different paths.
I'm also not sure that I see where automation is relevent. A good DBA, regardless of the experience level, will use automatic features when they offer benefits over doing it manually and will avoid automatic features that are more trouble than they're worth. The cost/benefit calculation, though, is going to be application and organization-specific.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC

Similar Messages

  • Jr. DBA needs Senior DBA's Advice..!!

    Dear all Senior DBA’s
    I need you advice/suggestions.
    I m Oracle9i DBA OCP Certified, Currently working as Assistant DBA. I m working in Oracle10g based Environment; it’s been around four months now, I m writing below my duties as DBA:
    1.     There is checklist that I need to submit to IT Manager that shows the status of Oracle Services, Listeners, Archived Redo Log Numbers, Hot Backup & Export of Primary, Standby and Test Databases.
    2.     I used to take the export of live user before updating the live database with Queries, Procedures, and Functions, forwarded by Software Engineering Department.
    3.     I take the export of live database user and update the test database user with the latest dumps.
    Other things I have learned:
    4.     I learned how to configure Stand By database. It was test project for me, NOT a live project, but I learned a lot.
    I have written all the steps in my blog:
    http://rakeshocp.blogspot.com/2007/12/creating-stand-by-database-steps.html
    5.     I was 9i Certified, and it is good learning for me to use 10g Database at Live environment.
    6.     I have studied RAC, and waiting for Blade Servers, and green signal from Management, then I will learn Live RAC Project.
    Now Confusion here is:
    Once I check the CheckList, I wait for the work, but hardly get any kinda database related work, only I do execute scripts, and exports/imports. Is that the overall role of DBA besides implementing above mentioned projects?
    I need your advice, I m willing to learn, but I don’t think I will be learning in the above DBA duties.
    I want be a good/expert DBA.
    Could you please advice/guide what should I do?
    Rakesh Soni
    http://rakeshocp.blogspot.com/

    Hi Rakesh,
    Is that the overall role of DBA besides implementing above mentioned projects?This is a great question, since the DBA job role has been expanding recently.
    I have notes here:
    http://www.dba-oracle.com/t_job_duties.htm
    Also, see these notes on DBA duties:
    http://www.dba-oracle.com/oracle_tips_dba_job_skills.htm
    System Analysis & Design skills – Many Oracle professionals must take an active role in the analysis and design of new database systems. Hence, knowledge of data flow diagrams, data dictionary techniques, CASE tools, Entity-relation modeling and design techniques, enhance the Oracle professional’s scope of ability.
    · Database Design skills – Many Oracle jobs require knowledge of database normalization theory, STAR schema design, and data modeling techniques.
    · Physical Disk Storage skills – Understanding of disk hardware architecture, RAID implementation, cache controllers, and disk load balancing are beneficial to any Oracle professional.
    · Data Security skills – An understanding of relational database security including role-based security is useful, especially for US Government positions.
    · Backup and Recovery skills – Many backup and recovery methods involve third-party software (Veritas, Legato, ADSM), and the candidate should have real-world experience implementing backup and recovery methods.
    · Change Control Management skills – In many cases the Oracle professional is charged with the task of implementing change control and insuring that changes to the production database are properly coordinated. Knowledge of third-party change control tools such as the UNIX Source Code Control System (SCCS) is beneficial.
    HTH. . . .
    Donald K. Burleson

  • For senior DBA

    dear all
    i a junior database administrator with 2 years experience with oracle server under linux and windows
    seeking to work in arabian countries ( saudi arabia or emiratee)
    in an environement where my skills can be apllied and developed
    plz contact me if this possible at 0020126149968

    i am quite surprise by your answer to him, YES u need
    dba and then give out the phone nos, first of all you
    need to understand this is not JOB site, and by
    giving responses more and more people would be
    encourged to post like this,
    u seem to have over 1000 post, and still you are
    doing such silly things, either your company is too
    desparate for dba, or its very sad situation
    Message was edited by:
    Nicloei WThere shouldn't be bad consequences on this. What's wrong on giveing an interview to someone you don't know... when you already know the candidate and its skills the interview loses its sense.
    If the candidate would reveal himself a good employer they will be happy, if not it doesn't matter, things won't change this time.
    Good Luck

  • What  skills a senior oracle dba  should have??

    Hi....all,
    I'm working as an oracle dba for a small company for 5-6 months.My duty is like doing the typical dba jobs.But i know,i would not be able to survive in long term with these limited set of skills.I,m planning to learn new new things by my own effort.
    Now...my ques. what are the areas or technology where should i emphasis???....
    Hope...experienced dba guys would give me a proper suggestion in order to build my career.
    Regards......

    And when you become truly a senior dba , you actually start working on those things which you just learnt and went ahead, like some things which appear very basic in the starting but when you start digging out them , you find lots of details of them. Its going back to basics all the time when you come to a senior level just like in martial arts, after the 10th dan , you are awarded with the white belt, from where you started in the very first place. Steve Jobs of Apple Corp, said 4 great words which I follow and refer, "stay hungry, stay foolish" !
    Just my 2 cents!
    Aman....
    Edited by: Aman.... on Apr 1, 2010 5:53 PM
    oops, sorry Ansiktet, the reply was for the OP!

  • How to prepare to became the top level oracle dba in the industry..

    Hello,
    I am an OCP in oracle 11g .Recently got a job as oracle dba in a bank. Its amazing to work as a dba..it gives a gr8 feeling to handle such a huge responsibility.
    While working as dba, it gives give lot a idle time..as there are some other senior dba are there. Now i want to prepare my self to became top level dba among the market,
    but i don't knw how to start, as there is lots of things except database like OS,storage,networking..goes on..
    please guide me how to plan for the next 2-3 years so that i can work any where in the world.
    thanks,

    >
    I am an OCP in oracle 11g .Recently got a job as oracle dba in a bank. Its amazing to work as a dba..it gives a gr8 feeling to handle such a huge responsibility.
    While working as dba, it gives give lot a idle time..as there are some other senior dba are there. Now i want to prepare my self to became top level dba among the market,
    but i don't knw how to start, as there is lots of things except database like OS,storage,networking..goes on..
    >
    First - STOP BEING SO LAZY AND START HELPING YOUR TEAMMATES!
    Second - you can't possibly be 'working as dba' if you say you have 'lot a idle time'. You might have been hired as a DBA but you clearly aren't 'working'.
    Third - you also can't possibliby have 'such a hugh responsibility' if you have lots of idle time.
    I have worked with many 'senior' DBAs over the years and several of those times were at a large international bank. There were NEVER periods when anyone had lots of idle time. There was always more work than we could handle and it had to be prioritized and scheduled.
    And, since I've never known anyone that would hire someone that they don't really need, especially a bank.
    Sounds to me like you are just lazy and need a serious attitude adjustment.
    You learn by DOING not by reading. Those senior DBAs will have PLENTY of things you can do to get a solid base of skills. I'm sure they would just LOVE to have you tell them yhou have lots of 'idle time' and they will have no problem at all answering the question you posted here.
    Jump in with both feet and start contributing to your team. Help out your fellow DBAs. They will reciprocate by sharing their knowledge with you. After all you have to become BETTER THAN THEM before you can become the 'top' of the market.
    If what you posted is true then you have EVERYTHING you need RIGHT IN FRONT OF YOU:
    1. Opportunity - Banks use almost every DBA skill that there is: backup/recovery, architecture, tuning, and so on
    2. Hardware Resources - Banks have plenty of equipment to work with and many different environments (PROD, QA, TEST, DEV) that need supported.
    3. People Resources - You have several senior DBAs ready and willing to give you work to do and to help you learn new skills that will take more of the load off of them. Doesn't sound like you have been cultivating those 'people' relationships at all.
    4. Time - you said you have lots of 'idle time'. For one, I don't believe you. But if it is true then why aren't you using that idle time to take advantage of items #1, #2 and #3 that I just listed.
    I know people that would LOVE to have the opportunity that you say you have and they sure wouldn't wasted their time here in the forums asking questions that they own teammates could help them with.
    You won't be at the top of ANYTHING if you don't change your attitude and get to work! What a pity.

  • Oracle DBA to Oracle Apps

    Friends.
    I have around 6 years of experince in Oracle DBA and working in MNC as Senior DBA. For feature growth I am planning to study the course Oracle Apps 11i.
    Is it right to shift or any suggestions are welcome?
    Thanks,
    Rahul

    user602872 wrote:
    Friends.
    I have around 6 years of experince in Oracle DBA and working in MNC as Senior DBA. For feature growth I am planning to study the course Oracle Apps 11i.
    Is it right to shift or any suggestions are welcome?
    Thanks,
    RahulFor future growth, there's no such thing as wasted education. Real career growth comes from having good knowledge from a broad range of subjects and being able to bring that knowledge together to solve problems. It doesn't come from attending a specific course on a specific subject and letting that define a specific job title and/or letting a specific job title define the specific tasks you do on the job.
    The most valuable people in a business are not those who narrowly define their jobs by the last formal class they took. They are people who define their jobs as "problem solver".
    I would look at studying Oracle apps as an expansion, not a shift. As would studying networking .... and unix systems management ... and storage management ... and data anlysis .... and business systems analysis .... and human behavior .... and ... and ...

  • Urgently  needs advice from DBA friend's here

    Buddies, I have posted similar type of thread before but it is a moment of total despair and huge challenge for me to survive, so looking for more & more ideas.. Well as per my background regarding Oracle I have very limited knowledge in SQL, almost nil knowledge in UNIX platforms. Recently I am assigned to a project where I need to perform Oracle DBA related tasks. The project is going to live Next Week on Monday and they all have Solaris 10 in their boxes. I have just one senior DBA sitting in onsite during US timing, so a good amount of responsibility lies on my shoulder. In the last post, I got to know that Oracle Documentation is an excellent way to start off as beginner but for grasping it is taking lot of time for me and I am getting lesser time to focus on both UNIX and Oracle at the same time. I love Oracle and getting rolled off from this project is not a solution for me. This forum have many veteran DBA's , so it will be great if anyone can give me any workaround or share any plan suitable for my scenario for me to survive here in this assignment.
    Any advices/input in this emergency time will be great for me.

    This is how I tend to approach a technical subject that I want to know more about, whether I am experienced or just a beginner.
    1. For the project at hand (immediate knowledge needs) use Google, OTN forums, blogs, expert websites like Ask Tom, online documentation, and personal contacts (coworkers, friends, etc). You need the information now, and someone probably has been there and has the answer you need.
    2. Never let anything go without understanding it. Too often I see people give up after the problem goes away and write it off as, "Well that was weird, oh well, moving on." Get to the root cause, dig deeper, do not stop studying that issue until you grok the topic.
    3. Read the best books cover to cover. This is not to solve your immediate problems. This is ongoing training. Pick up current, highly rated books and read. Get one on Oracle or Linux or whatever, and start at page 1 and just read. Just do 10-20 pages a day. Do not try to digest the whole thing at once. Even experienced people benefit from doing this. You can read 2 books at once if you want. One in the morning and one later in the day. I always have a book by my workstation that I read when I am waiting (for a reboot, for a process to finish, etc.). You would be amazed at how quickly you can get through 800 pages by just reading a little each day.
    4. Have a practice environment. You need to have a play area to try stuff out. It should be something other than the official Development environment. You need something you can completely trash and put back without affecting other people.
    5. Frequently challenge your assumptions and test your knowledge. Good ways to do this include trying to teach others / answer other people's questions. Also interact with people who know more than you do (in person, at conferences, at their websites).

  • Searching Criteria to find out the friends of friend

    Senior DBA'S
    i need to make database where i need to search the person from the current user. Current user can have many friends in his friend list but whom current user searching may be he is not a friend of current user and find out how current user known to that person. Like a friend's Chain.
    Suppose that i m Aman finding out "San". my friends are Abhi, johan, satish etc,
    further abhi's friend is "San" and
    Satish is friend of Mohan, Mohan further friend of Sanju and Sanju will be friend of "San"
    so "Aman" known to "San" by two ways one way by Abhi and 2nd way by Satish. Like link will be
    Aman -> Abhi -> San
    Aman -> Satish -> Mohan -> Sanju -> San
    which way i am asking that is used by linkedin (www.linkedin.com)
    So, Please tell me what best searching criteria will be used to achieve the target with performance because Records can be in billions.

    should be like that
    create table PALS (
    pal_id number primary key ,
    Name varchar2(100));
    drop table FRIENDS;
    create table FRIENDS(
    pal_id number ,
    friend_id number ,
    primary key(pal_id , friend_id),
    foreign key (pal_id) references PALS(pal_id),
    foreign key (friend_id) references PALS(pal_id)
    insert into pals values (1,'A');
    insert into pals values (2,'B');
    insert into pals values (3,'C');
    insert into pals values (4,'D');
    insert into pals values (5,'E');
    insert into pals values (6,'F');
    insert into pals values (7,'G');
    insert into friends values (1,2);
    insert into friends values (1,3);
    insert into friends values (2,5);
    insert into friends values (5,7);
    insert into friends values (3,4);
    insert into friends values (4,6);
    insert into friends values (6,7);
    commit;
    -- find leads to G
    with PF as (
    select p.pal_id, p.name, f.friend_id, pf.name friend
    from pals p
    join friends f on p.pal_id=f.pal_id
    join pals pf on pf.pal_id=f.friend_id)
    select level, pf.name, pf.friend
    from PF
    connect by prior pal_id = friend_id start with friend='G';
         LEVEL NAME       FRIEND  
             1 E          G         
             2 B          E         
             1 F          G         
             2 D          F         
             3 C          D          then you have to unwrap it in application.
    May be it is possible in SQL also.
    Edited by: Mark Malakanov (user11181920) on Jan 10, 2013 10:56 AM
    I've found how to do it
    with PF as (
    select p.pal_id, p.name, f.friend_id, pf.name friend
    from pals p
    join friends f on p.pal_id=f.pal_id
    join pals pf on pf.pal_id=f.friend_id),
    W as (
    select level, pf.name, pf.friend,
    CONNECT_BY_ROOT name R,
    SYS_CONNECT_BY_PATH(friend,' -> ') P,
    CONNECT_BY_ISLEAF IsLeaf
    from PF
    connect by pal_id = prior friend_id start with name='A'
    select R || P P from W where IsLeaf=1 and friend='G';
    P                                                                             
    A -> B -> E -> G                                                                
    A -> C -> D -> F -> G  Edited by: Mark Malakanov (user11181920) on Jan 10, 2013 11:28 AM
    Edited by: Mark Malakanov (user11181920) on Jan 10, 2013 11:33 AM
    So, Please tell me what best searching criteria will be used to achieve the target with performance because Records can be in billions.create index PALS_NAME on PALS(NAME);
    or use PAL_ID in
    connect by pal_id = prior friend_id start with PAL_ID=1
    Edited by: Mark Malakanov (user11181920) on Jan 10, 2013 11:42 AM
    Edited by: Mark Malakanov (user11181920) on Jan 10, 2013 11:44 AM

  • Issue in Complete Refresh of a Materialized View

    Hello,
    We have an MV in the Datawarehouse that does a FAST REFRESH daily. Every Saturday, a COMPLETE REFRESH is done as part of the normal Database Activities. The Database is Oracle 9i. The MV contains a Join between a Dimension and Fact Table of a Datawarehouse and does a FAST REFRESH using the MV logs.
    However, last Sat, the COMPLETE REFRESH has failed. The DBA tried to run the script twice again but it failed on both occasions with an UNDO TABLESPACE error (ORA-30036). The DBA tried to extend the Tablespace; it did not help either.
    - Could this be linked to Tablespace allocations for the MV? Are there any specific steps that can be followed to resolve this?
    - Can the MV be dropped and re-created?
    Would appreciate a response on the same.
    Many Thanks,
    Ketan

    Hi Ketan,
    I guess this is probably because MV complete refresh performs "delete" from the MV and then insert. If the MV is large, it may fail on undo allocation.
    Please take a look at Re: materialized view refresh time!  Plz Help me! you can see the explanation, metalink note and the solution (how to perform truncate instead of delete).
    HTH
    Liron Amitzi
    Senior DBA consultant
    [www.dbsnaps.com]
    [www.orbiumsoftware.com]

  • How can I get rid of windows 8.1 in my new lenovo and get windows 7 put in?

    How can I get rid of Windows 8.1 on my new Lenovo laptop and install Windows 7?

    Hi,
    I'll assume your laptop was upgraded from Windows 7 to Windows 8.1
    1. Start by copying all your personal folders (Documents, Pictures, Music, Videos, Favourites, local databases,
    hosts files, etc) into an external disk, DVD, tape, whatever.
    2. If I were you, I wouldn't use Windows 8.1 backup tool, I'm not sure Windows 7 Restore applet will be able
    to read a Windows 8.1 backup.
    3. Check that you have all the necessary licenses, CDs and executables to reinstall your former Windows 7
    applications, components, browsers, plugins, Java, .NET Frameworks, etc. Be aware that some applications require
    to keep same hostname and/or same IP and/or or same local username (or all of them) as they were on the original
    Windows 7 machine.
    4. Check that you have your Windows 7 CD and license handy.
    5. Do you have a Windows 7 image backup of your laptop (prior to the Windows 8 upgrade)?
    5.a Yes? Then restore that image and restore your personal folders on top. You might need to
    install or reinstall some of the applications I mentioned on #3
    5.b No? You'll have to format your laptop, install Windows 7 from scratch, create your local
    user with administrative rights, install SP1, install necessary updates, reinstall all your
    applications and finally restore your personal folders.
    Sebastian Sajaroff Senior DBA Pharmacies Jean Coutu

  • How to upgrade oracle 32 to 64 bit on sun solaris x86 64 bit OS?

    Hi,
    I want to upgrade/convert 32 bit Oracle Database 10.2.0.2 to 64 bit database. Existing 32 bit database is RAC and it is running on Sun Solaris X86 64 bit OS.
    First, I want to know is it possible?
    If yes, then what are the exact steps?

    Hi,
    Such a migration can be done, just follow the steps in Metalink note 62290.1
    It is important to remember that 64-bit database requires more shared pool memory so you should increase your shared pool size.
    Liron Amitzi
    Senior DBA consultant
    [www.dbsnaps.com]
    [www.orbiumsoftware.com]
    Edited by: Liron Amitzi on Jul 1, 2009 3:08 PM

  • 32 bit Oracle server installation on 64-bit Linux box

    Hi All,
    I would like to know if it is suggested to install 32 bit oracle software on a 64 bit Linux box.
    Details of our new DB box below:
    $ cat /etc/SuSE-release
    SUSE LINUX Enterprise Server 9 (x86_64)
    VERSION = 9
    PATCHLEVEL = 4
    $ free -m
    total used free shared buffers cached
    Mem: 48293 33114 15179 0 412 31496
    -/+ buffers/cache: 1205 47088
    Swap: 65535 0 65535
    $ grep -i name /proc/cpuinfo
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    model name : Intel(R) Xeon(R) CPU X5355 @ 2.66GHz
    $ uname -a
    Linux stllin06 2.6.5-7.311-smp #1 SMP Mon Mar 10 13:12:16 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux
    Oracle : Oracle server Enterprise Edition 9.2.0.8
    We need this setup to match the other two 32bit linux DB server boxes so that we can use DB cloning and Transportable Tablespace feautres between these three linux machines.
    Thanks in advance for your help.
    PS: I did raise a request to support and waiting for the update.
    Thanks,
    Krishna Bussu

    Thanks Girish. But all my findings says NO NO and NO.
    From http://www.oracle.com/technology/support/metalink/index.html
    Certify - Product Version and Other Selections: Oracle Database - Enterprise Edition On Linux x86-64 (AMD64/EM64T)
    General Notes For Oracle Database - Enterprise Edition On Linux x86-64 (AMD64/EM64T):
    Processor Chip Information:
    Linux x86-64, support on AMD64/EM64T and Intel Processor Chips that adhere to the x86-64 architecture with supported Linux releases.
    "Running Oracle 32-bit on AMD64/EM64T (64-bit OS) is not supported . "
    Oracle 32-bit running on AMD64/EM64T with a 32-bit OS is supported, refer to platform Linux x86 for more information on product availability.
    Note: As Ivan confirmed EM64T is mark for Intel 64 (x86-64) processors.
    Even the metalink Note: 182999.1 says...
    "A 32-bit application will work on both a 32-bit and 64-bit O/S, whereas a 64-bit application will only work on a 64-bit O/S."
    but the same articel says
    "Note: These statements do not necessarily apply to Oracle on Windows O/S's, Itanium or AMD64/EM64T based Platforms. See Certify for specific information."
    and then I got update from Support. Even they Say....
    "No it is not suggested that you run Oracle at 32 bits for a Linux X86_64 platform. This would not be a good idea"
    I guess I need to sit with my senior DBAs and SA tomorrow to find the path forward...
    Thanks all.
    Krishna Bussu.

  • Oracle 11g: Oracle insert/update operation is taking more time.

    Hello All,
    In Oracle 11g (Windows 2008 32 bit environment) we are facing following issue.
    1) We are inserting/updating data on some tables (4-5 tables and we are firing query with very high rate).
    2) After sometime (say 15 days with same load) we are feeling that the Oracle operation (insert/update) is taking more time.
    Query1: How to find actually oracle is taking more time in insert/updates operation.
    Query2: How to rectify the problem.
    We are having multithread environment.
    Thanks
    With Regards
    Hemant.

    Liron Amitzi wrote:
    Hi Nicolas,
    Just a short explanation:
    If you have a table with 1 column (let's say a number). The table is empty and you have an index on the column.
    When you insert a row, the value of the column will be inserted to the index. To insert 1 value to an index with 10 values in it will be fast. It will take longer to insert 1 value to an index with 1 million values in it.
    My second example was if I take the same table and let's say I insert 10 rows and delete the previous 10 from the table. I always have 10 rows in the table so the index should be small. But this is not correct. If I insert values 1-10 and then delete 1-10 and insert 11-20, then delete 11-20 and insert 21-30 and so on, because the index is sorted, where 1-10 were stored I'll now have empty spots. Oracle will not fill them up. So the index will become larger and larger as I insert more rows (even though I delete the old ones).
    The solution here is simply revuild the index once in a while.
    Hope it is clear.
    Liron Amitzi
    Senior DBA consultant
    [www.dbsnaps.com]
    [www.orbiumsoftware.com]Hmmm, index space not reused ? Index rebuild once a while ? That was what I understood from your previous post, but nothing is less sure.
    This is a misconception of how indexes are working.
    I would suggest the reading of the following interasting doc, they are a lot of nice examples (including index space reuse) to understand, and in conclusion :
    http://richardfoote.files.wordpress.com/2007/12/index-internals-rebuilding-the-truth.pdf
    "+Index Rebuild Summary+
    +•*The vast majority of indexes do not require rebuilding*+
    +•Oracle B-tree indexes can become “unbalanced” and need to be rebuilt is a myth+
    +•*Deleted space in an index is “deadwood” and over time requires the index to be rebuilt is a myth*+
    +•If an index reaches “x” number of levels, it becomes inefficient and requires the index to be rebuilt is a myth+
    +•If an index has a poor clustering factor, the index needs to be rebuilt is a myth+
    +•To improve performance, indexes need to be regularly rebuilt is a myth+"
    Good reading,
    Nicolas.

  • Use of Association Tables in Place of FK's  --  O/R Mapping

    We are currently in the process of redesigning one of our systems following an OO model to be implemented in Java. Our current Oracle database is 8.1.7. We care coding sql in JDBC directly without the use of mapping tools. My role in the project is a jr. schema dba.
    The oo designer on our team objects to holding foreign key attributes in the Java classes when (form the object model's perspective) they aren't need (i.e. using collections will indicate parent-child relationships).
    To get around the "foreign key problem" the oo designer is pushing for the use of "association tables" in the database to replace foreign key relationships. The designer and other members of the team (the sr. schema dba) cite literature on O/R mapping which suggests that this technique is a valid and viable approach.
    So as a simple example...
    DEP EMP
    =======          =======     
    # dep_no     # emp_no
    dep_name     dep_no
              emp_name
    Becomes...
    DEP EMP          A_DEP_EMP
    =======          =======     =========
    # dep_no     # emp_no     # dep_no
    dep_name     emp_name     # emp_no
    Where A_DEP_EMP is the association table showing the relationship between department and employee.
    To me it seems like we are making poor and unnecessary database design decisions to support the object model. My objections to this association table approach is that we are failing to use the inherent strengths of the a relational database:
    1) Both the dep and emp must exist before the association is built (assuming the association has FK's to the DEP and EMP tables) -- and yes I'm aware delaying the enforcement of FKs until commit time is an option
    2) The model does not protect against inserting orphaned emps into the EMP table (assuming we'd want to protect against this)
    3) The association table indicates a N:M cardinality. Assuming the design calls for a 1:M cardinality a UK on the emp_no column in the association table would be required. When I brought this up, the sr. schema dba raised concerns about the overhead of the UK and suggested that the application would be responsible for enforcing the cardinality requirements.
    The alternative that seems more appealing is managing the FK details in a persistence layer of the Java classes (currently the notion of separate view and entity objects is absent in our design -- the database interface is directly in each low-level java class).
    If i am correct in my understanding of Oracle's implementation of BC4J the foreign keys are handled in the persistence layer (view object) with out the need for actively maintaining them in the entity Object. Other O/R mapping models also seem to suggest that this is the way to go (e.g. Martin Fowler's recommendations http://www.martinfowler.com/isa/).
    So my question for the community at large:
    - Which approach would you use?
    - Has anyone been working with association tables in place of foreign keys? If so what are your experiences?
    - am i off-base with my objections?
    any feedback / comments much appreciated

    Martin,
    I have seen these kind of discussions over and over again and now you happen to be right in the middle of one. Without going into technical details some statements that might help:
    1) object model designers and relational model designers will NEVER 'agree' since the techniques used are, by nature, too different (they solve different problems, which is fine, but when you start to talk about them they give problems)
    2) my experience is that they do not have to 'agree', as long as they can 'work alongside eachother'. You are not there to tell the object designers how to do their work the same way they are not there to tell you how to do your job.
    3) as a senior DBA, I regard it my primary task to enforce regulations that will make the data stored as meaningfull and correct as possible. If I'm following relational principles to do so, I will use all of them where I find them applicable regardless how that data is used later on. Any suggestion by any person that undermines this principle will not get implemented. Exceptions (<0.1%) not taken into account. Also, there is a 'political correct' way of telling this and a 'bold' way.
    4) choose the 'political correct' one since it will save you a lot of stress :)
    5) if you violate rule 3, and shit happens, you will be held accountable (and rightfully so).
    6) if you have a more senior person telling you what to do, do it, but state your concerns very clearly in an email and save that mail + reply somewhere safe for future discussions. Refer to this if shit happens and you are, unrightfully so, held accountable.
    7) as a DBA, never trust application logic to enforce data integrity. It is your job, not the application developer's and you have the facilities to do so much easier than the app dev. Application developers don't have a primary task of testing data integrity, if it looks ok on the screen they pass their tests. you on the other hand perform special tests they don't. This is your additional value to the project.
    8) in oracle 8i and above I found the use of views and 'in stead of'-triggers very usefull for mimicing objects. Object designers/developers think they get simple tables they can map objects to and underneatch you yourself check everything is ok. The disadvantage of this is that you need to do some extra work not easily accounted for and might run into some performance issues, but that is your challange as you want to become a senior DBA ;). The advantage is that the discussion is over :) and reporting and other, none object applications can interface more easily (which might be an actual design decisive argument, I've used it successfully multiple times).
    9) try to stay away from discussions of how things are done best between the two methods and why one method 'is better' than the other. Try to find a workable solution that will violate the least of the two designing principles and implement that.
    A lot is dependent on your project and it might be that in your case these senior people are quite right in their suggestions, but I've found that the above 'rules' work most of the time for me. I hope they at least give you something to think about. From what I read from your post, it sounds like you know the technical pros and cons but you have a tough time communicating to your peers. Perhaps these rules help a bit.
    Success,
    Lennert
    We are currently in the process of redesigning one of our systems following an OO model to be implemented in Java. Our current Oracle database is 8.1.7. We care coding sql in JDBC directly without the use of mapping tools. My role in the project is a jr. schema dba.
    The oo designer on our team objects to holding foreign key attributes in the Java classes when (form the object model's perspective) they aren't need (i.e. using collections will indicate parent-child relationships).
    To get around the "foreign key problem" the oo designer is pushing for the use of "association tables" in the database to replace foreign key relationships. The designer and other members of the team (the sr. schema dba) cite literature on O/R mapping which suggests that this technique is a valid and viable approach.
    So as a simple example...
    DEP EMP
    =======          =======     
    # dep_no     # emp_no
    dep_name     dep_no
              emp_name
    Becomes...
    DEP EMP          A_DEP_EMP
    =======          =======     =========
    # dep_no     # emp_no     # dep_no
    dep_name     emp_name     # emp_no
    Where A_DEP_EMP is the association table showing the relationship between department and employee.
    To me it seems like we are making poor and unnecessary database design decisions to support the object model. My objections to this association table approach is that we are failing to use the inherent strengths of the a relational database:
    1) Both the dep and emp must exist before the association is built (assuming the association has FK's to the DEP and EMP tables) -- and yes I'm aware delaying the enforcement of FKs until commit time is an option
    2) The model does not protect against inserting orphaned emps into the EMP table (assuming we'd want to protect against this)
    3) The association table indicates a N:M cardinality. Assuming the design calls for a 1:M cardinality a UK on the emp_no column in the association table would be required. When I brought this up, the sr. schema dba raised concerns about the overhead of the UK and suggested that the application would be responsible for enforcing the cardinality requirements.
    The alternative that seems more appealing is managing the FK details in a persistence layer of the Java classes (currently the notion of separate view and entity objects is absent in our design -- the database interface is directly in each low-level java class).
    If i am correct in my understanding of Oracle's implementation of BC4J the foreign keys are handled in the persistence layer (view object) with out the need for actively maintaining them in the entity Object. Other O/R mapping models also seem to suggest that this is the way to go (e.g. Martin Fowler's recommendations http://www.martinfowler.com/isa/).
    So my question for the community at large:
    - Which approach would you use?
    - Has anyone been working with association tables in place of foreign keys? If so what are your experiences?
    - am i off-base with my objections?
    any feedback / comments much appreciated

  • Recover datafile in noarchivelog mode

    hi all
    i faced problem when opening the database that there are datafile needed recovery
    i'm working in noarchivelog mode
    i tried to take this datafile offline but this failed
    what are the exactly procedures to recover this file ?

    i tried to take this datafile offline but this failed Please check your alert log file. Since you are working with noarchivelog mode. You must be having a backup. Do you ?
    what are the exactly procedures to recover this file ?You have not provided enough information but here are hints;
    - What kind of backups you have? Rman or user managed backups?
    Also read;
    http://www.oracle.com/technology/documentation/index.html
    Ex Senior DBA
    Lazy: Those who do not read documentation

Maybe you are looking for