获取数据库和存储库大小
此部分提供有关如何获取 ALM 数据库和存储库大小的说明。
每个 ALM 项目都有自己的数据库架构和文件存储库。对于要迁移到 SaaS 的每个项目,都应执行本主题中的所有步骤。
获取 SA 数据库架构名称
按照以下步骤获取站点管理数据库架构的名称。
-
登录 ALM 服务器。
-
转到部署或安装 ALM/QC 的目录。
Linux
部署文件夹 -
ALM 12.60 P1 或更高版本: /var/opt/Micro Focus/ALM/
-
ALM 12.60 或更早版本: /var/opt/HP/ALM/
安装文件夹 /opt/Micro Focus/ALM
Windows
部署文件夹 C:\Quality Center 或 C:\QC 安装文件夹 -
ALM 12.60 P1 或更高版本: C:\Program Files\Micro Focus\ALM
-
ALM 12.60 或更早版本: C:\Program Files\HP\ALM
-
-
转到 siteadmin.xml 文件所在的目录,以编辑模式打开。
Linux /var/opt/Micro Focus/ALM/webapps/qcbin/WEB-INF Windows 以下之一:
-
<ALM/QC 目录>/webapps/qcbin/WEB_INF
-
<ALM/QC 目录>\jboss\server\default\deploy\10sabin.war\WEB-INF
-
<ALM/QC 目录>\application\10sabin.war\WEB-INF
-
-
使用 DBNAME 标记搜索站点管理架构名称。
例如,<DbName>SA_SCHEMA_NAME</DbName>。
获取文件存储库大小
按照以下步骤从文件服务器获取文件存储库的大小。
-
打开 ALM 站点管理。
-
选择要迁移的项目。在“项目详细信息”选项卡的“项目目录”字段下,找到项目的文件存储库路径。
-
在文件服务器机器上,导航到项目的存储库路径并运行以下命令。
UNIX
要以人类可读的格式汇总目录和所有子目录并显示大小值,请使用:
Copy codedu –sh <目录名>例如,
Copy coderoot@ubuntu# du -sh /usr/ X11R6
4.0K /usr/X11R6如果您发现所有路径存储库都遵循相同的路径,请使用以下命令仅显示文件夹中第一级子目录的摘要。此摘要可让您了解同一路径上所有文件存储库文件夹的大小。
例如,
Copy coderoot@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
Windows
右键单击文件夹并选择“属性”以查看文件夹的大小。
从数据库中获取项目信息
获取所有项目的数量、启用版本控制的项目数量以及特定项目中签出的实体数量。
要获取所有项目的数量,请执行以下操作:
-
获取站点管理数据库架构。请参阅获取 SA 数据库架构名称。
-
将 SA_SCHEMA 参数设置为正确的站点管理架构名称。
-
运行以下查询:
Copy codeSELECT COUNT(*) FROM '<SCHEMA>'.PROEJCTS;
要获取启用版本控制的项目的数量,请执行以下操作:
-
获取站点管理数据库架构。请参阅获取 SA 数据库架构名称。
-
将 SA_SCHEMA 参数设置为正确的站点管理架构名称。
-
运行以下查询:
Copy codeSELECT * FROM PROJECTS WHERE PR_HAS_VCSDB='Y';
要获取特定项目中已签出实体的数量,请执行以下操作:
-
通过执行以下操作之一获取项目的项目数据库架构名称:
-
在“站点管理”>“项目”选项卡中选择项目。检查“数据库名称”字段的值。
-
对站点管理数据库架构运行以下查询,并从查询输出中获取项目的 DB_NAME 字段的值:
Copy codeSELECT * FROM PROJECTS
-
-
在项目数据库架构中运行以下查询:
Oracle 服务器
Copy codeSelect
(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 codeSelect
(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
获取项目数据库架构大小
按照以下步骤获取项目数据库架构的大小。
-
打开 ALM 站点管理。
-
选择要迁移的项目。在“项目详细信息”选项卡的“数据库名称”字段下,找到项目的数据库架构。在“数据库服务器”字段下,找到架构所在的服务器。
-
在数据库服务器上,运行以下命令以获取数据库架构的大小。
获取所有项目的数据库和存储库大小
根据智能存储库机制获取所有项目详细信息,包括存储在数据库中的项目数据库架构和文件存储库大小。
此部分仅适用于包含智能存储库机制的 ALM 11.00 及更高版本。
先决条件:
-
获取站点管理数据库架构。请参阅获取 SA 数据库架构名称。
-
将 SA_SCHEMA 参数设置为正确的站点管理架构名称。
要获取所有项目的数据库和存储库大小,请执行以下操作:
运行以下查询:
SET serveroutput ON size unlimited;
DECLARE
sa_name VARCHAR2(50 CHAR) := '<SA_SCHEMA>';
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;
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\HP\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)
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\HP\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 wish:
--drop table master..project_size_report /* <@report_table> */
导出数据库架构
导出要迁移的每个项目的数据库架构。
先决条件
在导出数据库架构之前,考虑以下先决条件。
| AWS S3 存储桶 | 您的 CSM 应在迁移过程中提供 AWS S3 存储桶位置。 |
| MD5 软件 | 例如,md5。 |
| FTP 服务器 | 只有当 AWS S3 存储桶由于某种原因不可用时,您的 CSM 才应在迁移过程中提供 FTP 服务器位置。 |
要导出数据库架构,请执行以下操作:
根据您的数据库类型,执行以下导出操作之一:
-
以数据库用户身份连接到数据库服务器。
-
为要导出的每个架构运行以下命令。
Copy codeexpdp system/<密码> schemas=<schema name> dumpfile=<架构名称>_<日期>.dmp
logfile=<架构名称>_<日期>.log exclude=statistics directory=DATA_PUMP_DIR -
以系统用户身份连接数据库,例如
sqlplus system/<密码>,然后运行以下命令找到您的数据转储目录:Copy codeSELECT directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR'; -
切换到目录,您将看到所有转储文件。
-
压缩数据库架构的备份。
-
运行
md5sum。 -
打开命令窗口,导航到解压缩 md5.zip 文件的位置,然后运行以下命令。
Copy codemd5.exe -generate <压缩文件夹路径><压缩文件夹名称.zip>例如,
Copy codemd5.exe – generate C:\”Documents and Settings”\Desktop\ project1_filereposiotry.zip该命令返回 md5sum 输出。例如,
Copy code24BCED0C939DD7E61C6E4CCE252687BE db_schemas.zip -
将输出复制到文本文件。
-
将压缩的数据库架构和文本文件上传到 FTP 服务器。
-
通过以下选项之一备份数据库架构。
-
压缩数据库架构的备份。
-
运行
md5sum。 -
打开命令窗口,导航到解压缩 md5.zip 文件的位置,然后运行以下命令。
Copy codemd5.exe -generate <压缩文件夹路径><压缩文件夹名称.zip>例如,
Copy codemd5.exe – generate C:\”Documents and Settings”\Desktop\ project1_filereposiotry.zip该命令返回 md5sum 输出。例如,
Copy code24BCED0C939DD7E61C6E4CCE252687BE db_schemas.zip -
将输出复制到文本文件。
-
将压缩的数据库架构和文本文件上传到 FTP 服务器。
接下来的步骤:

