{"id":106,"date":"2016-02-28T15:17:44","date_gmt":"2016-02-28T21:17:44","guid":{"rendered":"http:\/\/www.aamirharoon.com\/?p=106"},"modified":"2016-03-12T16:19:15","modified_gmt":"2016-03-12T22:19:15","slug":"generate-meta-data-since-last-restorepoint","status":"publish","type":"post","link":"http:\/\/www.aamirharoon.com\/?p=106","title":{"rendered":"Generate Meta Data Since Last Restore Point"},"content":{"rendered":"<p>I was asked if it was possible to generate all ddl since last restore point. I came up with following script. It might help others looking to do something similar\u00a0<img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 3px; margin-right: 3px; vertical-align: middle; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;\" src=\"http:\/\/www.aamirharoon.com\/wp-content\/plugins\/wp-emoji-one\/icons\/1F600.png\" alt=\"\" width=\"16\" height=\"16\" \/><\/p>\n<pre class=\"c\" data-blogger-escaped-name=\"code\">set pages 0 long 200000 feedback off lines 2000 trims on newpage 0 space 0 echo off verify off heading off termout off\r\n\r\ncol USER_DDL format a500;\r\nspool\u00a0meta_data.sql\r\n\r\nSET SERVEROUTPUT ON\r\n\r\nDECLARE\r\n  MD_DDL\u00a0\u00a0 CLOB;\r\nBEGIN\r\n  DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'SQLTERMINATOR', true);\r\n  DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'PRETTY', true);\r\n\r\n--Generate all database objects using dba_objects\r\n  FOR I IN (SELECT OWNER, OBJECT_NAME,\r\n    CASE\r\n      WHEN OBJECT_TYPE = 'DATABASE LINK' THEN 'DB_LINK'\r\n      WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN 'PACKAGE_BODY'\r\n      ELSE OBJECT_TYPE\r\n    END OBJECT_TYPE\r\n      FROM DBA_OBJECTS\r\n    WHERE\u00a0\u00a0\u00a0\u00a0 (\u00a0\u00a0 CREATED &gt; (SELECT TIME FROM V$RESTORE_POINT)\r\n                OR LAST_DDL_TIME &gt; (SELECT TIME FROM V$RESTORE_POINT))\r\n                AND OWNER NOT LIKE '%SYS%'\r\n                AND OWNER NOT LIKE '%ORACLE%')\r\n  LOOP\r\n\r\n    MD_DDL := DBMS_METADATA.GET_DDL (I.OBJECT_TYPE, I.OBJECT_NAME, I.OWNER);\r\n    DBMS_OUTPUT.PUT_LINE (MD_DDL || chr(10));\r\n  END LOOP;\r\nEND;\r\n\/\r\n\r\n--Generate Roles\r\nSELECT DBMS_METADATA.GET_DDL ('ROLE', U.NAME) ROLE_DDL\r\n  FROM SYS.USER$ U, DBA_ROLES R\r\n  WHERE U.CTIME &gt; (SELECT TIME FROM V$RESTORE_POINT) AND U.NAME = R.ROLE;\r\n\r\n--Generate \"CREATE USER\" statements\r\nSELECT DBMS_METADATA.GET_DDL ('USER', U.USERNAME) USER_DDL\r\n  FROM DBA_USERS U\r\n    WHERE CREATED &gt; (SELECT TIME FROM V$RESTORE_POINT);\r\n\r\n--Generate GRANT ROLE statements\r\nSELECT 'GRANT ' || GRANTED_ROLE || ' TO ' || GRANTEE || ';' ROLE_GRANT\r\n  FROM DBA_ROLE_PRIVS\r\n    WHERE GRANTEE IN (SELECT NAME FROM SYS.USER$ U\r\n               WHERE CTIME &gt; (SELECT TIME FROM V$RESTORE_POINT));\r\n\r\n--Generate grants on database objects\r\nSELECT 'GRANT ' || PRIVILEGE || ' ON ' || OWNER || '.' || TABLE_NAME || ' TO ' || GRANTEE || ';' TAB_GRANT\r\n  FROM DBA_TAB_PRIVS\r\n    WHERE GRANTEE IN (SELECT NAME FROM SYS.USER$ U\r\n               WHERE CTIME &gt; (SELECT TIME FROM V$RESTORE_POINT));\r\n\r\n--This is step is optional.  Depending on your environment, you might not want to run the following statement\r\nSELECT 'ALTER USER ' || USERNAME || ' DEFAULT ROLE ALL;'\r\n  FROM DBA_USERS\r\n    WHERE CREATED &gt; (SELECT TIME FROM V$RESTORE_POINT);\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I was asked if it was possible to generate all ddl since last restore point. I came up with following script. It might help others<\/p>\n","protected":false},"author":1,"featured_media":168,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-11gr2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Generate Meta Data Since Last Restore Point - The Database Handyman<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.aamirharoon.com\/?p=106\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generate Meta Data Since Last Restore Point - The Database Handyman\" \/>\n<meta property=\"og:description\" content=\"I was asked if it was possible to generate all ddl since last restore point. I came up with following script. It might help others\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.aamirharoon.com\/?p=106\" \/>\n<meta property=\"og:site_name\" content=\"The Database Handyman\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-28T21:17:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-03-12T22:19:15+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png\" \/>\n\t<meta property=\"og:image:width\" content=\"858\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Aamir\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@aamir814\" \/>\n<meta name=\"twitter:site\" content=\"@aamir814\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Aamir\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106\"},\"author\":{\"name\":\"Aamir\",\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63\"},\"headline\":\"Generate Meta Data Since Last Restore Point\",\"datePublished\":\"2016-02-28T21:17:44+00:00\",\"dateModified\":\"2016-03-12T22:19:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106\"},\"wordCount\":37,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63\"},\"image\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png\",\"articleSection\":[\"Oracle Database 11gR2\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.aamirharoon.com\/?p=106#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106\",\"url\":\"http:\/\/www.aamirharoon.com\/?p=106\",\"name\":\"Generate Meta Data Since Last Restore Point - The Database Handyman\",\"isPartOf\":{\"@id\":\"http:\/\/www.aamirharoon.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#primaryimage\"},\"image\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png\",\"datePublished\":\"2016-02-28T21:17:44+00:00\",\"dateModified\":\"2016-03-12T22:19:15+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.aamirharoon.com\/?p=106\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#primaryimage\",\"url\":\"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png\",\"contentUrl\":\"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png\",\"width\":858,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.aamirharoon.com\/?p=106#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/www.aamirharoon.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generate Meta Data Since Last Restore Point\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.aamirharoon.com\/#website\",\"url\":\"http:\/\/www.aamirharoon.com\/\",\"name\":\"The Database Handyman\",\"description\":\"My notes about Oracle Database, APEX, OEM Cloud Control and whatever I learn\",\"publisher\":{\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.aamirharoon.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63\",\"name\":\"Aamir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cc5bb07711a1b9719cc47e13a8205072859c1aef30fac28f412baa84b9cf9b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cc5bb07711a1b9719cc47e13a8205072859c1aef30fac28f412baa84b9cf9b?s=96&d=mm&r=g\",\"caption\":\"Aamir\"},\"logo\":{\"@id\":\"http:\/\/www.aamirharoon.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.aamirharoon.com\/about\/\",\"https:\/\/x.com\/aamir814\"],\"url\":\"http:\/\/www.aamirharoon.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Generate Meta Data Since Last Restore Point - The Database Handyman","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.aamirharoon.com\/?p=106","og_locale":"en_US","og_type":"article","og_title":"Generate Meta Data Since Last Restore Point - The Database Handyman","og_description":"I was asked if it was possible to generate all ddl since last restore point. I came up with following script. It might help others","og_url":"http:\/\/www.aamirharoon.com\/?p=106","og_site_name":"The Database Handyman","article_published_time":"2016-02-28T21:17:44+00:00","article_modified_time":"2016-03-12T22:19:15+00:00","og_image":[{"width":858,"height":200,"url":"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png","type":"image\/png"}],"author":"Aamir","twitter_card":"summary_large_image","twitter_creator":"@aamir814","twitter_site":"@aamir814","twitter_misc":{"Written by":"Aamir","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.aamirharoon.com\/?p=106#article","isPartOf":{"@id":"http:\/\/www.aamirharoon.com\/?p=106"},"author":{"name":"Aamir","@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63"},"headline":"Generate Meta Data Since Last Restore Point","datePublished":"2016-02-28T21:17:44+00:00","dateModified":"2016-03-12T22:19:15+00:00","mainEntityOfPage":{"@id":"http:\/\/www.aamirharoon.com\/?p=106"},"wordCount":37,"commentCount":0,"publisher":{"@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63"},"image":{"@id":"http:\/\/www.aamirharoon.com\/?p=106#primaryimage"},"thumbnailUrl":"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png","articleSection":["Oracle Database 11gR2"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/www.aamirharoon.com\/?p=106#respond"]}]},{"@type":"WebPage","@id":"http:\/\/www.aamirharoon.com\/?p=106","url":"http:\/\/www.aamirharoon.com\/?p=106","name":"Generate Meta Data Since Last Restore Point - The Database Handyman","isPartOf":{"@id":"http:\/\/www.aamirharoon.com\/#website"},"primaryImageOfPage":{"@id":"http:\/\/www.aamirharoon.com\/?p=106#primaryimage"},"image":{"@id":"http:\/\/www.aamirharoon.com\/?p=106#primaryimage"},"thumbnailUrl":"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png","datePublished":"2016-02-28T21:17:44+00:00","dateModified":"2016-03-12T22:19:15+00:00","breadcrumb":{"@id":"http:\/\/www.aamirharoon.com\/?p=106#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.aamirharoon.com\/?p=106"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"http:\/\/www.aamirharoon.com\/?p=106#primaryimage","url":"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png","contentUrl":"http:\/\/www.aamirharoon.com\/wp-content\/uploads\/2016\/02\/Metadata-e1457821142927.png","width":858,"height":200},{"@type":"BreadcrumbList","@id":"http:\/\/www.aamirharoon.com\/?p=106#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/www.aamirharoon.com\/"},{"@type":"ListItem","position":2,"name":"Generate Meta Data Since Last Restore Point"}]},{"@type":"WebSite","@id":"http:\/\/www.aamirharoon.com\/#website","url":"http:\/\/www.aamirharoon.com\/","name":"The Database Handyman","description":"My notes about Oracle Database, APEX, OEM Cloud Control and whatever I learn","publisher":{"@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.aamirharoon.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":["Person","Organization"],"@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/dbcd256c4a97c6e27b7cc408200a9b63","name":"Aamir","image":{"@type":"ImageObject","inLanguage":"en","@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cc5bb07711a1b9719cc47e13a8205072859c1aef30fac28f412baa84b9cf9b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cc5bb07711a1b9719cc47e13a8205072859c1aef30fac28f412baa84b9cf9b?s=96&d=mm&r=g","caption":"Aamir"},"logo":{"@id":"http:\/\/www.aamirharoon.com\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.aamirharoon.com\/about\/","https:\/\/x.com\/aamir814"],"url":"http:\/\/www.aamirharoon.com\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/posts\/106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=106"}],"version-history":[{"count":5,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/posts\/106\/revisions"}],"predecessor-version":[{"id":143,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/posts\/106\/revisions\/143"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=\/wp\/v2\/media\/168"}],"wp:attachment":[{"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=106"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.aamirharoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}