Re: how to check 32 bit -> 64 bit migration

  • From: Hans Forbrich <fuzzy.graybeard@xxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Tue, 29 Nov 2016 21:50:12 -0700

While utlrp may be run as required, OP is discussing whether utlirp (note the 'i' ... 'invalidate') has been run because it is used to ensure all packages, procedures, etc. are recompiled by invalidating them first.

Subtle, but important, difference especially when converting from 32 to 64 bit environments.

I believe OP simply wants to find out whether there is any PL/SQL that needs to be recompiled to ensure it is in the correct format.

/Hans

On 2016-11-29 7:08 PM, Ram Srinivasan wrote:

Your first question was "Does anyone know if a database is currently in 64 or 32 bit?".
The answer is : select
2     length(addr)*4 || '-bits'
3  from
4     v$process
5  where
6     ROWNUM =1;
which gives you that the database is currently in 64 bit.
If you want to find out at what bit rate was the database created, then you have to use the case statement that I gave you.

After you ran both the queries, what you got as out is correct. That is, the database was first created as 32 bit, but it is currently at 64 bit.

Now if you want to know whether someone has already run utlrp.sql, there is no query for that. However, you can run the utlrp.sql any number of times. Nothing will happen to the database. If you are unsure of whether anyone has run the utlrp.sql script, you can run it again. No problem.

Ram

On Tue, Nov 29, 2016 at 7:17 PM, Ls Cheng <exriscer@xxxxxxxxx <mailto:exriscer@xxxxxxxxx>> wrote:

    this is before converting 32 bit database to 64 bit


    SQL> select platform_name from v$database;

    PLATFORM_NAME
    
-----------------------------------------------------------------------------------------------------
    Linux x86 64-bit

    SQL> select * from v$version;

    BANNER CON_ID
    
--------------------------------------------------------------------------------
    ----------
    Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
    Production              0
    PL/SQL Release 12.1.0.2.0 - Production 0
    CORE    12.1.0.2.0 Production 0
    TNS for Linux: Version 12.1.0.2.0 - Production 0
    NLSRTL Version 12.1.0.2.0 - Production 0

    SQL> select
      2     length(addr)*4 || '-bits'
      3  from
      4     v$process
      5  where
      6     ROWNUM =1;

    LENGTH(ADDR)*4||'-BITS'
    ---------------------------------------------
    64-bits

    SQL> select
      2    case
      3      when INSTR(metadata,'B047') > 1 then 'The Database is 64
    Bit.'
      4      when INSTR(metadata,'B023')  > 1 then 'The Database is 32
    Bit.'
      5      end as Result
      6  from sys.kopm$ ;

    RESULT
    -----------------------
    The Database is 32 Bit.



    this is after running URLIRP (32 bit to 64 bit conversion)

    SQL> select platform_name from v$database;

    PLATFORM_NAME
    
-----------------------------------------------------------------------------------------------------
    Linux x86 64-bit

    SQL> select * from v$version;

    BANNER CON_ID
    
--------------------------------------------------------------------------------
    ----------
    Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
    Production              0
    PL/SQL Release 12.1.0.2.0 - Production 0
    CORE    12.1.0.2.0 Production 0
    TNS for Linux: Version 12.1.0.2.0 - Production 0
    NLSRTL Version 12.1.0.2.0 - Production 0

    SQL> select
      2     length(addr)*4 || '-bits'
      3  from
      4     v$process
      5  where
      6     ROWNUM =1;

    LENGTH(ADDR)*4||'-BITS'
    ---------------------------------------------
    64-bits

    SQL> select
      2    case
      3      when INSTR(metadata,'B047') > 1 then 'The Database is 64
    Bit.'
      4      when INSTR(metadata,'B023')  > 1 then 'The Database is 32
    Bit.'
      5      end as Result
      6  from sys.kopm$ ;

    RESULT
    -----------------------
    The Database is 32 Bit.



    as we can see there is no difference so the queries provided gives
    no useful info.... any more suggestions?

    Thanks




    On Tue, Nov 29, 2016 at 5:01 PM, Ls Cheng <exriscer@xxxxxxxxx
    <mailto:exriscer@xxxxxxxxx>> wrote:

        Hi Ram


        I have used that query as well, I dont want to know if the
        database was created in 32 bit, I want to know if it currently
        runs in 64 bit mode, that is if UTLIRP.SQL has been run.

        I will test all your sugegstion anyways in a few hours time
        and let you know

        Thanks!


        On Tue, Nov 29, 2016 at 12:37 PM, Ram Srinivasan
        <srinivasanram2004@xxxxxxxxx
        <mailto:srinivasanram2004@xxxxxxxxx>> wrote:

            Cheng:
              Try this.  I used this query long time ago:


            /* To identify whether a database was created as 32-bit or
            64-bit,
                execute the following SQL statement:  */

            select
              case
                when INSTR(metadata,'B047') > 1 then 'The Database is
            64 Bit.'
                when INSTR(metadata,'B023')  > 1 then 'The Database is
            32 Bit.'
                end as Result
            from sys.kopm$ ;

            /*
            If the output references the string 'B023' ,  then it
            indicates that the database was created as 32-bit.

            If the output references the string 'B047' then it
            indicates that the database was created as 64-bit.
            */

            On Tue, Nov 29, 2016 at 3:56 AM, Ls Cheng
            <exriscer@xxxxxxxxx <mailto:exriscer@xxxxxxxxx>> wrote:

                Hi Ram

                I already tested that, once a database is migrated to
                64 bit and utlirp.sql is NOT executed that query
                returns 64 bit too!

                Thanks



                On Tue, Nov 29, 2016 at 1:40 AM, Ram Srinivasan
                <srinivasanram2004@xxxxxxxxx
                <mailto:srinivasanram2004@xxxxxxxxx>> wrote:

                    Try this:

                    select
                     length(addr)*4 || '-bits'
                    from
                     v$process
                    where
                       ROWNUM =1;

                    On Mon, Nov 28, 2016 at 1:53 PM, Ls Cheng
                    <exriscer@xxxxxxxxx <mailto:exriscer@xxxxxxxxx>>
                    wrote:

                        Hi

                        Does anyone know if a database is currently in
                        64 or 32 bit?

                        IHAC migrated a few database a couple of weeks
                        ago from Linux x86 to Linux x86_64 and they
                        unsure if utlirp.sql is run in all of them.

                        Anyone know how to check if the database is
                        running in 64 bit mode? All I have found is
                        how to check binary bitness but not the database.


                        Thanks





-- Sincerely
                    Ram Srinivasan





-- Sincerely
            Ram Srinivasan






--
Sincerely
Ram Srinivasan


Other related posts: