2026-03-12 20:23:15

This commit is contained in:
root
2026-03-12 21:23:47 +01:00
parent eab4b36eca
commit 93039b8489
3332 changed files with 699614 additions and 0 deletions

52
tpt/demos/spm_synonym.sql Normal file
View File

@@ -0,0 +1,52 @@
-- Copyright 2019 Tanel Poder. All rights reserved. More info at https://blog.tanelpoder.com
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
-- this demos that a SQL Plan Baseline will still apply, even a synonym repoints to a different table.
-- the table has to have the same name (as otherwise the plan hash value changes), but the schema
-- is not part of plan hash value.
PROMPT This script will drop some tables called "T".
PROMPT Hit enter to continue, CTRL+C to cancel...
PAUSE
ALTER SESSION SET optimizer_use_sql_plan_baselines=TRUE;
DROP TABLE system.t;
DROP TABLE scott.t;
DROP SYNONYM syn;
CREATE TABLE system.t AS SELECT * FROM dba_objects;
CREATE TABLE scott.t AS SELECT * FROM system.t;
CREATE INDEX system.i ON system.t (object_id);
CREATE INDEX scott.i ON scott.t (object_id);
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYSTEM','T', cascade=>TRUE);
EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT' ,'T', cascade=>TRUE);
-- First point SYN to system schema
CREATE SYNONYM syn FOR system.t;
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
@x
SELECT /*+ FULL(t) */ COUNT(owner) FROM syn t WHERE object_id = 12345;
@x
@create_sql_baseline bfwpapz4cfwz2 2966233522 3v3yzqv6dp704
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
@x
-- Then point SYN to scott schema and run the same query text
DROP SYNONYM syn;
CREATE SYNONYM syn FOR scott.t;
SELECT COUNT(owner) FROM syn t WHERE object_id = 12345;
@x
@drop_sql_baseline SQL_547b571057dbd3d4