Obtain database and repository size

This section provides instructions about how to obtain the size of your database and repository.

Every project has its own database schema and file repository. All the steps in this topic should be performed for every project you want to migrate to SaaS.

Obtain SA database schema name

Follow the steps below to obtain the name of the Site Administration database schema.

  1. Log in to the server.

  2. Go to the directory where OpenText Application Quality Management is deployed or installed.

    Linux

    Deployment folder
    • 12.60 P1 or later: /var/opt/Micro Focus/ALM/

    • 12.60 or earlier: /var/opt/HP/ALM/

    Installation folder /opt/Micro Focus/ALM

    Windows

    Deployment folder C:\Quality Center or C:\QC
    Installation folder
    • 12.60 P1 or later: C:\Program Files\Micro Focus\ALM

    • 12.60 or earlier: C:\Program Files\HP\ALM

  3. Go to the directory where the siteadmin.xml file is saved, and open it in edit mode.

    Linux /var/opt/Micro Focus/ALM/webapps/qcbin/WEB-INF
    Windows

    One of the following:

    • <ALM/QC directory>/webapps/qcbin/WEB_INF

    • <ALM/QC directory>\jboss\server\default\deploy\10sabin.war\WEB-INF

    • <ALM/QC directory>\application\10sabin.war\WEB-INF

  4. Search for site admin schema name using the DBNAME tag.

    For example, <DbName>SA_SCHEMA_NAME</DbName>.

Back to top

Obtain file repository size

Follow the step below to obtain the size of the file repository from the file server.

  1. Open Site Administration.

  2. Select the project you want to migrate. In the Project Details tab, under the Project Directory field, find the file repository path of the project.

  3. On the file server machine, navigate to the repository path of the project and run the following command.

    • UNIX

      To summarize the directory and all sub-directories and display size values in a human-readable format, use:

      Copy code
      du –sh <directory name>

      For example,

      Copy code
      root@ubuntu# du -sh /usr/ X11R6

      4.0K /usr/X11R6

      If you find all your path repositories follow the same path, use the following command to show the summary of only the first level of the sub-directories within the folder. This summary lets you know the size of all the file repositories folders on the same path.

      For example,

      Copy code
      root@ubuntu# du -sh /usr/*

      4.0K /usr/X11R6
      96M /usr/bin
      24K /usr/games
      12M /usr/include
      164M /usr/lib
      0 /usr/lib64
      96K /usr/local
      25M /usr/sbin
      197M /usr/share
      4.0K /usr/src
    • Linux

      To summarize the directory and all sub-directories and display size values in a human-readable format, use:

      Copy code
      du – sh

      For example,

      Copy code
      $ du -sh svn/ports

      6.2M svn/ports
    • Windows

      Right-click the folder and select Properties to view the size of the folder.

Back to top

Obtain projects information from database

Obtain the number of all projects, the number of projects with version control enabled, and the number of checked-out entities within specific projects.

To obtain the number of all projects:

  1. Obtain the Site Administration database schema. See Obtain SA database schema name.

  2. Set the SA_SCHEMA parameter to the correct Site Administration schema name.

  3. Run the following query:

    Copy code
    SELECT COUNT(*) FROM '<SCHEMA>'.PROJECTS; 

To obtain the number of projects with version control enabled:

  1. Obtain the Site Administration database schema. See Obtain SA database schema name.

  2. Set the SA_SCHEMA parameter to the correct Site Administration schema name.

  3. Run the following query:

    Copy code
    SELECT * FROM PROJECTS WHERE PR_HAS_VCSDB='Y';

To obtain the number of checked-out entities within a specific project:

  1. Obtain the project database schema name of the project by doing one of the following:

    • Select the project in the Site Administration > Projects tab. Check the value of the Database Name field.

    • Run the following query on the Site Administration database schema, and from the query output, obtain the value of the DB_NAME field of the project:

      Copy code
      SELECT * FROM PROJECTS
  2. Run the following query within the project database schema:

    • Oracle server

      Copy code
      Select 
      (SELECT count(*) from vc_test) as Tests , 
      (Select count(*) from vc_req) as Requirements, 
      (select count (*) from vc_component) as Components, 
      (select count(*) from vc_resources) as Resources, 
      (Select count(*) FROM VC_ASSET_RELATIONS) as ASSET_RELATIONS , 
      (Select count(*) FROM VC_ASSET_REPOSITORY_ITEMS) as ASSET_REPOSITORY_ITEMS, 
      (Select count(*) FROM VC_BPTEST_TO_COMPONENTS) as BPTEST_TO_COMPONENTS, 
      (Select count(*) FROM VC_BP_ITERATION) as BP_ITERATION, 
      (Select count(*) FROM VC_BP_ITER_PARAM) as BP_ITER_PARAM, 
      (Select count(*) FROM VC_BP_PARAM) as BP_PARAM, 
      (Select count(*) FROM VC_COMPONENT_MULTIVALUE) as COMPONENT_MULTIVALUE, 
      (Select count(*) FROM VC_COMPONENT_STEP) as COMPONENT_STEP, 
      (Select count(*) FROM VC_COMPONENT_STEP_PARAMS) as COMPONENT_STEP_PARAMS, 
      (Select count(*) FROM VC_CROS_REF) as CROS_REF, 
      (Select count(*) FROM VC_DESSTEPS) as DESSTEPS , 
      (Select count(*) FROM VC_FRAMEWORK_PARAM) as FRAMEWORK_PARAM, 
      (Select count(*) FROM VC_REQ_MULTIVALUE) as REQ_MULTIVALUE, 
      (Select count(*) FROM VC_RUNTIME_PARAM) as RUNTIME_PARAM, 
      (Select count(*) FROM VC_STEP_PARAMS) as STEP_PARAMS, 
      (Select count(*) FROM VC_TEST_MULTIVALUE) as TEST_MULTIVALUE, 
      (Select count(*) FROM VC_TEST_PARAMS) as TEST_PARAMS, 
      (Select count(*) FROM VC_USER_ASSETS) as USER_ASSETS, 
      (Select count(*) FROM VER_CTRL) 
      from dual 
    • MS SQL server

      Copy code
      Select 
      (SELECT count(*) from td.vc_test) as Tests , 
      (Select count(*) from td.vc_req) as Requirements, 
      (select count (*) from td.vc_component) as Components, 
      (select count(*) from td.vc_resources) as Resources, 
      (Select count(*) FROM td.VC_ASSET_RELATIONS) as ASSET_RELATIONS , 
      (Select count(*) FROM td.VC_ASSET_REPOSITORY_ITEMS) as ASSET_REPOSITORY_ITEMS, 
      (Select count(*) FROM td.VC_BPTEST_TO_COMPONENTS) as BPTEST_TO_COMPONENTS, 
      (Select count(*) FROM td.VC_BP_ITERATION) as BP_ITERATION, 
      (Select count(*) FROM td.VC_BP_ITER_PARAM) as BP_ITER_PARAM, 
      (Select count(*) FROM td.VC_BP_PARAM) as BP_PARAM, 
      (Select count(*) FROM td.VC_COMPONENT_MULTIVALUE) as COMPONENT_MULTIVALUE, 
      (Select count(*) FROM td.VC_COMPONENT_STEP) as COMPONENT_STEP, 
      (Select count(*) FROM td.VC_COMPONENT_STEP_PARAMS) as COMPONENT_STEP_PARAMS, 
      (Select count(*) FROM td.VC_CROS_REF) as CROS_REF, 
      (Select count(*) FROM td.VC_DESSTEPS) as DESSTEPS , 
      (Select count(*) FROM td.VC_FRAMEWORK_PARAM) as FRAMEWORK_PARAM, 
      (Select count(*) FROM td.VC_REQ_MULTIVALUE) as REQ_MULTIVALUE, 
      (Select count(*) FROM td.VC_RUNTIME_PARAM) as RUNTIME_PARAM, 
      (Select count(*) FROM td.VC_STEP_PARAMS) as STEP_PARAMS, 
      (Select count(*) FROM td.VC_TEST_MULTIVALUE) as TEST_MULTIVALUE, 
      (Select count(*) FROM td.VC_TEST_PARAMS) as TEST_PARAMS, 
      (Select count(*) FROM td.VC_USER_ASSETS) as USER_ASSETS, 
      (Select count(*) FROM td.VER_CTRL) as VER_CTRL

Back to top

Obtain project database schema size

Follow the steps below to obtain the size of the project database schema.

  1. Open Site Administration.

  2. Select the project you want to migrate. In the Project Details tab, under the Database Name field, find the database schema of the project. Under the Database Server field, find the server where the schema is located.

  3. On the database server, run the following command to obtain the size of the database schema.

    • Oracle server

      To obtain the size of the DB_USER_SCHEMA schema, connect to the Oracle instance and run the following SQL query.

      • To obtain the size of each database schema, run:

        Copy code
        SELECT SUM(BYTES)/1024/1024 "MB" FROM DBA_SEGMENTS WHERE owner='<SCHEMA>';
      • To obtain the size of all database schemas at one time, run:

        Copy code
        SELECT owner, SUM(BYTES)/1024/1024 "MB" FROM DBA_SEGMENTS group by owner 

    • MS SQL Server

      Run the following command to print a summary of space used in the current database.

      Copy code
      sp_spaceused

      Output:

      Copy code
      database_name database_size
      --------------- ---------------------------
      master 5 MB
      reserved data index_size unused
      --------- --------- ----------- --------
      2176 KB 1374 KB 72 KB 730 KB

      Note: The database_size metric shows the size of the current database in megabytes, including both data and log files.

Back to top

Obtain database and repository size of all projects

Obtain all the projects details including their database schema and file repository size as stored in the database based on the smart repository mechanism.

This section is applicable only to version 11.00 and later that includes the smart repository mechanism.

Prerequisites:

  1. Obtain the Site Administration database schema. See Obtain SA database schema name.

  2. Set the SA_SCHEMA parameter to the correct Site Administration schema name.

To obtain database and repository size of all projects:

Run the following query:

  • Oracle

    Copy code
    SET serveroutput ON size unlimited;
    DECLARE
      sa_name      VARCHAR2(50 CHAR) := '<SA_SCHEME>';
      table_exists NUMBER;
      create_table LONG;
    TYPE cur_type
    IS
      REF
      CURSOR;
        schema_cur cur_type;
        project_schemas_cur cur_type;
        projects_query LONG;
        project_size_query LONG;
        project_schema VARCHAR2(100 CHAR) ;
        project_name   VARCHAR2(100 CHAR) ;
        domain_name    VARCHAR2(100 CHAR) ;
        repo_path      VARCHAR2(100 CHAR) ;
        is_active      VARCHAR2(1 CHAR) ;
        is_template    VARCHAR2(1 CHAR) ;
        db_size        INTEGER;
    BEGIN
        projects_query := 'select p.domain_name, p.project_name, p.db_name, p.physical_directory, p.pr_is_active, p.IS_TEMPLATE , t.db_size_mb
    from ' || sa_name || '.projects p join (SELECT round(sum(bytes)/1024/1024,2) as db_size_mb, owner 
    FROM dba_segments WHERE lower(owner) in (select lower(db_name) from ' || sa_name || '.projects) group by owner) t  on lower(t.owner) = lower(p.db_name) ';
        dbms_output.put_line(projects_query);
        create_table:='  
    CREATE  TABLE project_size_report   
    (Domain VARCHAR2(50 CHAR),    
    project VARCHAR2(50 CHAR),    
    db_name  VARCHAR2(50 CHAR),     
    physical_directory   VARCHAR2(100 CHAR),  
    is_active  VARCHAR2(1 CHAR),  
    is_template  VARCHAR2(1 CHAR),  
    count_files integer,
    repo_size_mb number,
    db_size_mb VARCHAR2(50 CHAR)
    )';
        SELECT COUNT(*)
        INTO table_exists
        FROM dba_tables
        WHERE lower(table_name) = 'project_size_report';
      IF (table_exists         <> 0) THEN
        EXECUTE immediate 'drop TABLE project_size_report';
        COMMIT;
      END IF;
      EXECUTE immediate create_table;
      COMMIT;
      OPEN project_schemas_cur FOR projects_query;
      <<main_loop>>
      LOOP
        FETCH project_schemas_cur
        INTO domain_name,
          project_name,
          project_schema,
          repo_path,
          is_active,
          is_template,
          db_size ;
        IF project_schemas_cur%found THEN
          project_size_query := 'insert into project_size_report (Domain, project, db_name , physical_directory , is_active ,  is_template ,   count_files, repo_size_mb , db_size_mb)   
    Select ' || '''' || domain_name || '''' || 'as Domain, ' || '''' || project_name || '''' || ' as project,  ' || '''' || project_schema || '''' || ' as db_name, ' || '''' || repo_path || '''' || ' as physical_directory, ' || '''' || is_active || '''' || ' as is_active, ' || '''' || is_template || '''' || ' as is_template,  count_files, project_repo_size_mb, ' || '''' || db_size || '''' || ' as db_size_mb from  (select count(*) as count_files , round(sum(t.sz),2)  as project_repo_size_mb from  (select distinct srlf_physical_id, srlf_size/1024/1024 as sz   
    from  '|| project_schema || '.smart_repository_physical_file inner join  ' || project_schema ||'.smart_repository_logical_file  on  srlf_physical_id = srpf_id )t  )  ';
          dbms_output.put_line('running over project ' || domain_name || ' / ' || project_name);
          dbms_output.put_line(project_schemas_cur%ROWCOUNT);
          EXECUTE immediate project_size_query;
          COMMIT;
        ELSE
          EXIT;
        END IF;
      END LOOP main_loop;
      CLOSE project_schemas_cur;
      dbms_output.put_line('Finished script, please run: select * from project_size_report');
    END;
    /
    --- WHEN IT FINISHES RUN, YOU DO SELECT FROM THIS TABLE
    -------     select * from project_size_report;
  • MS SQL

    Copy code
    USE [master]
    GO
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    /*
      NOTE! you will have to find your value for the site admin db schema (sa_name).
      The default Site Administration database schema name is "qcsiteadmin_db"
      but it could have been changed when ALM/QC was installed
      Check the value <DbName> in siteadmin.xml under the deloyment directory,
      by default: C:\ProgramData\Micro Focus\ALM\webapps\qcbin\WEB-INF\siteadmin.xml
    */


    begin

    declare @sa_name varchar(100)
    declare @report_table varchar(100)
    declare @db_name varchar(100)
    declare @n_repo_count nvarchar(max)
    declare @n_repo_size  nvarchar(max)
    declare @n_db_size  nvarchar(max)
    declare @query nvarchar(max)
    declare @message varchar(500)
    end
      
      exec ('CREATE TABLE ' + @report_table +
       '(
        "PROJECT_NAME" varchar(255), 
        "DOMAIN_NAME" varchar(255), 
        "DB_NAME" varchar(60), 
        "PHYSICAL_DIRECTORY" varchar(255), 
        "PR_IS_ACTIVE" varchar(2), 
        "SEND_MAIL" varchar(2), 
        "PR_HAS_VCSDB" varchar(2), 
        "IS_TEMPLATE" varchar(2),
        "DB_SIZE" varchar(255),
        "REPO_SIZE" varchar(255),
        "REPO_COUNT" varchar(255)
       )')
          SET @message =  'Creating the report table ' 
    + @report_table   RAISERROR( @message, 10,1) WITH NOWAIT

      end 
      
    set @query = N'USE ' + @sa_name + + N'; declare objcursor CURSOR FOR select db_name from td.projects'
    exec sys.sp_executesql     @query 
        
    open objcursor

    fetch next from objcursor into @db_name
     while @@FETCH_STATUS = 0
     
    begin

    set @query = 'use master; SELECT @n_db_size = sum((size * 8) / 1024) FROM sys.master_files WHERE DB_NAME(database_id) = '''
                +@db_name+ ''' group by database_id'

       EXEC sp_executesql @query, N'@n_db_size varchar(max) OUTPUT', @n_db_size = @n_db_size OUTPUT

    set @query = 'use ' + @db_name + ';  select @n_repo_count = count(*) , @n_repo_size = round(sum(t.sz),2) from  ' + 
            '(select distinct srlf_physical_id, srlf_size/1024/1024 sz from  td.smart_repository_physical_file ' +
            'inner join  td.smart_repository_logical_file  on  srlf_physical_id = srpf_id) t '

           EXEC sp_executesql @query, 
                       N'@n_repo_count varchar(255) OUTPUT, @n_repo_size varchar(max) OUTPUT',
                       @n_repo_count = @n_repo_count OUTPUT, @n_repo_size = @n_repo_size OUTPUT


    set @query = 'use ' + @sa_name + '; insert into master..project_size_report select project_name, domain_name, db_name, '
    + 'physical_directory, pr_is_active, saq_is_active, pr_has_vcsdb, is_template, '''+ @n_db_size +
    + ''', ''' + @n_repo_size + ''' , ''' + @n_repo_count +  ''' from td.projects where db_name = ''' + @db_name + ''''

    exec sp_executesql @query 

    fetch next from objcursor into @db_name
    end

    close objcursor
    deallocate objcursor
    end;


    --  This script creates a table 'project_size_report' with the required information.
    --  Export the table in Excel or CSV format and send it back to your SaaS CSM:
    --select * from master..project_size_report /* <@report_table> */

    --  Delete the table afterward if you want:
    --drop table master..project_size_report /* <@report_table> */

Back to top

Export database schema

Export the database schema of each project you want to migrate.

Prerequisites

Consider the following prerequisites before you export the database schema.

AWS S3 Bucket An AWS S3 Bucket location should be provided by your CSM during the migration process.
MD5 software For example, md5.
FTP server Only when AWS S3 Bucket is not available for some reason, a FTP server location should be provided by your CSM during the migration process.

To export the database schema:

Perform one of the following export actions, depending on your database type:

  • Oracle

    1. Connect to the database server as a database user.

    2. Run the following command for each schema you want to export.

      Copy code
      expdp system/<password> schemas=<schema name> dumpfile=<schema name>_<date>.dmp logfile=<schema
      name>_<date>.log exclude=statistics directory=DATA_PUMP_DIR
    3. Connect to the database as a system user, for example, sqlplus system/<password>, and run the following command to locate your data pump directory:

      Copy code
      SELECT directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';
    4. Change to the directory, and you will see all the dump files.

    5. Compress the backups of the database schemas.

    6. Run md5sum.

    7. Open a command window, navigate to the location where the md5.zip file was extracted, and run the following command.

      Copy code
      md5.exe -generate <compressed folder path><compressed folder name.zip>

      For example,

      Copy code
      md5.exe – generate C:\”Documents and Settings”\Desktop\ project1_filereposiotry.zip

      The command returns the md5sum output. For example,

      Copy code
      24BCED0C939DD7E61C6E4CCE252687BE db_schemas.zip
    8. Copy the output to a text file.

    9. Upload the compressed database schema and the text file to the FTP server.

  • MS SQL Server

    1. Back up the database schemas by one of the following options.

      • Back up each database schema by running:

        Copy code
        Backup database X to disk=’<path>’
      • Detach each database schema by running:

        Copy code
        Sp_detach_db ‘database name’
    2. Compress the backups of the database schemas.

    3. Run md5sum.

    4. Open a command window, navigate to the location where the md5.zip file was extracted, and run the following command.

      Copy code
      md5.exe -generate <compressed folder path><compressed folder name.zip>

      For example,

      Copy code
      md5.exe – generate C:\”Documents and Settings”\Desktop\ project1_filereposiotry.zip

      The command returns the md5sum output. For example,

      Copy code
      24BCED0C939DD7E61C6E4CCE252687BE db_schemas.zip
    5. Copy the output to a text file.

    6. Upload the compressed database schema and the text file to the FTP server.

Back to top

Next steps: