2026-03-12 20:23:15
This commit is contained in:
98
csierra/spm_backup.sql
Normal file
98
csierra/spm_backup.sql
Normal file
@@ -0,0 +1,98 @@
|
||||
-- spm_backup.sql - Create DATAPUMP backup of SQL Plan Management (SPM) Repository for one PDB
|
||||
SET HEA ON LIN 500 PAGES 100 TAB OFF FEED OFF ECHO OFF VER OFF TRIMS ON TRIM ON TI OFF TIMI OFF;
|
||||
ALTER SESSION SET container = CDB$ROOT;
|
||||
SELECT name pdb_name FROM v$containers WHERE open_mode = 'READ WRITE' ORDER BY 1;
|
||||
PRO 1. Enter PDB_NAME failing with ORA-13831:
|
||||
DEF pdb_name = '&1.';
|
||||
UNDEF 1;
|
||||
PRO
|
||||
HOS echo $ORACLE_HOME
|
||||
PRO 2. Enter directory path ($ORACLE_HOME):
|
||||
DEF directory_path = '&2.';
|
||||
UNDEF 2;
|
||||
PRO
|
||||
PRO 3. Enter connect string such as: kiev-wfs-tenant-b-preprod.svc.ad2.r1/s_wfs_tenant_b_preprod.ad2.r1
|
||||
DEF connect_string = '&3'
|
||||
UNDEF 3;
|
||||
PRO
|
||||
PRO 4. Enter sys password
|
||||
DEF sys_pwd = '&4.';
|
||||
UNDEF 4;
|
||||
PRO
|
||||
SET FEED ON ECHO ON VER ON TI ON TIMI ON;
|
||||
-- connect to pdb
|
||||
ALTER SESSION SET container = &&pdb_name.;
|
||||
--
|
||||
CREATE OR REPLACE DIRECTORY CS_TEMP_DIR AS '&&directory_path.';
|
||||
-- prepares backup owner
|
||||
DEF repo_owner = 'C##IOD';
|
||||
COL default_tablespace NEW_V default_tablespace NOPRI;
|
||||
SELECT default_tablespace FROM dba_users WHERE username = UPPER('&&repo_owner.');
|
||||
ALTER USER &&repo_owner. QUOTA UNLIMITED ON &&default_tablespace.;
|
||||
-- backup SPM metadata (for subsequent datapump)
|
||||
COL backup_timestamp NEW_V backup_timestamp NOPRI;
|
||||
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD_HH24MISS') backup_timestamp FROM DUAL;
|
||||
CREATE TABLE &&repo_owner..sqllog$_&&backup_timestamp. AS SELECT * FROM sys.sqllog$;
|
||||
CREATE TABLE &&repo_owner..smb$config_&&backup_timestamp. AS SELECT * FROM sys.smb$config;
|
||||
CREATE TABLE &&repo_owner..sql$_&&backup_timestamp. AS SELECT * FROM sys.sql$;
|
||||
CREATE TABLE &&repo_owner..sql$text_&&backup_timestamp. AS SELECT * FROM sys.sql$text;
|
||||
CREATE TABLE &&repo_owner..sqlobj$_&&backup_timestamp. AS SELECT * FROM sys.sqlobj$;
|
||||
CREATE TABLE &&repo_owner..sqlobj$data_&&backup_timestamp. AS SELECT * FROM sys.sqlobj$data;
|
||||
CREATE TABLE &&repo_owner..sqlobj$auxdata_&&backup_timestamp. AS SELECT * FROM sys.sqlobj$auxdata;
|
||||
--CREATE TABLE &&repo_owner..sqlobj$plan_&&backup_timestamp. AS SELECT * FROM sys.sqlobj$plan;
|
||||
-- needed to avoid ORA-00997: illegal use of LONG datatype on column "other"
|
||||
CREATE TABLE &&repo_owner..sqlobj$plan_&&backup_timestamp. AS SELECT
|
||||
signature
|
||||
,category
|
||||
,obj_type
|
||||
,plan_id
|
||||
,statement_id
|
||||
,xpl_plan_id
|
||||
,timestamp
|
||||
,remarks
|
||||
,operation
|
||||
,options
|
||||
,object_node
|
||||
,object_owner
|
||||
,object_name
|
||||
,object_alias
|
||||
,object_instance
|
||||
,object_type
|
||||
,optimizer
|
||||
,search_columns
|
||||
,id
|
||||
,parent_id
|
||||
,depth
|
||||
,position
|
||||
,cost
|
||||
,cardinality
|
||||
,bytes
|
||||
,other_tag
|
||||
,partition_start
|
||||
,partition_stop
|
||||
,partition_id
|
||||
,TO_LOB(other) other -- TO_LOB() needed to avoid ORA-00997: illegal use of LONG datatype
|
||||
,distribution
|
||||
,cpu_cost
|
||||
,io_cost
|
||||
,temp_space
|
||||
,access_predicates
|
||||
,filter_predicates
|
||||
,projection
|
||||
,time
|
||||
,qblock_name
|
||||
,other_xml
|
||||
FROM sys.sqlobj$plan;
|
||||
--
|
||||
COL table_list NEW_V table_list;
|
||||
select LISTAGG(owner||'.'||replace(object_name,chr(36), chr(92)||chr(36) ),',') WITHIN GROUP (order by 1) as table_list
|
||||
from dba_objects where owner='C##IOD' and object_type='TABLE' AND object_name LIKE '%_&&backup_timestamp.';
|
||||
--
|
||||
PRO
|
||||
HOS expdp \"sys/&&sys_pwd.@&&connect_string. as sysdba\" file=SPM_&&backup_timestamp..dmp logfile=SPM_&&backup_timestamp..log DIRECTORY=CS_TEMP_DIR tables=&&table_list.
|
||||
--
|
||||
DROP DIRECTORY CS_TEMP_DIR;
|
||||
--
|
||||
HOS cp &&directory_path./SPM_&&backup_timestamp..* .
|
||||
HOS chmod 777 SPM_&&backup_timestamp..*
|
||||
HOS ls -lat SPM_&&backup_timestamp..*
|
||||
Reference in New Issue
Block a user