분류없음2009/12/23 16:50
select * from USER_SOURCE where name in( select object_name from user_objects where object_type = 'PACKAGE' ) order by name, type,line ; select * from user_objects --where object_type = 'PACKAGE' where object_type = 'TABLE' ; 대충 확인만 한 쿼리라 만들때 확인이 필요함.. ^^
Posted by Tommy Lymm
분류없음2009/12/23 13:46

DBMS_METADATA package를 아십니까?

- 보통.. DB 내부에 생성되어 있는 Object에 대한 DDL (생성 Script)를 뽑기 위해서
여러가지 방법을 사용합니다. 예를 들어, export/import를 이용하여 script를 생성할수도
있고, 또한 시중에 나와 있는 Tool들을 이용해서 DDL을 만들수 있읍니다.

 그러나 DB내부에 기본적으로 제공되는 DDL생성 package가 있읍니다.
 이 package는 table, index는 물론, plsql로 생성해주며, 또한 User나 Role에
 Grant된 정보들도 뽑을수 있읍니다....

참고하시길..
 
 

SQL> SET LONG 1000000
SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual;
                                                                               
DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SYSTEM"                                                      
 
이때, segment attribute를 빼고 script를 생성하고자 한다면....

SQL> execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES', false);
SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual;
                                                                               
DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   )                                                        

또한 constraint(null, pk등), referencial constraint(fk), 그리고 ';' 로 output이
끝나도록 하기를 원하면...

SQL> execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'CONSTRAINTS', FALSE);
SQL> execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'REF_CONSTRAINTS', FALSE);
SQL> execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SQLTERMINATOR', TRUE);

SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual;

DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0)
   ) ;

이렇게 하면 됩니다.... 물론 pl/sql의 source도 뽑을수 있지요..


SQL> CREATE OR REPLACE PROCEDURE abc AS
     BEGIN
       NULL;
     END abc;
/

SQL> SET LONG 1000000
SQL> SELECT dbms_metadata.get_ddl(object_type, object_name)
     FROM   user_objects
     WHERE  object_name = 'ABC';

DBMS_METADATA.GET_DDL('PROCEDURE',OBJECT_NAME)
--------------------------------------------------------------
  CREATE OR REPLACE PROCEDURE "PLSQL_USER"."ABC" AS
BEGIN
   NULL;
END abc;


게다가... 임의의 User에게 Grant된 것도 뽑을수 있읍니다...캬......

ex)

SQL> CREATE USER HIKIM IDENTIFIED BY HIKIM;
SQL> GRANT CONNECT, RESOURCE, DBA TO HIKIM;
SQL> GRANT SELECT ON SCOTT.EMP TO HIKIM;

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','HIKIM')  --> system privelige.
     FROM   DUAL;

   GRANT UNLIMITED TABLESPACE TO "HIKIM"                                   
                                                                               
                                                                               
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','HIKIM')    --> role
   FROM   DUAL;
                                                                               
   GRANT "CONNECT" TO "HIKIM"                                             
   GRANT "RESOURCE" TO "HIKIM"                                            
   GRANT "DBA" TO "HIKIM"                                                 
  

SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','HIKIM')   --> grant받은 object
FROM   DUAL;
                                                                               
  GRANT SELECT ON "SCOTT"."EMP" TO "HIKIM"                                

SELECT DBMS_METADATA.GET_GRANTED_DDL('DEFAULT_ROLE','HIKIM')  --> default role 받기
FROM   DUAL;
                                                                               
   ALTER USER "HIKIM" DEFAULT ROLE ALL                                    


SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', 'DBA')   --> DBA role로 grant된 role.
FROM   DUAL;
                                                                               
   GRANT "SELECT_CATALOG_ROLE" TO "DBA" WITH ADMIN OPTION;                     
   GRANT "EXECUTE_CATALOG_ROLE" TO "DBA" WITH ADMIN OPTION;                    
   GRANT "DELETE_CATALOG_ROLE" TO "DBA" WITH ADMIN OPTION;                     


좋군요...ㅋㅋ.


If you get knocked down, don’t stay down…REBOUND!
The road to success has many obstacles. If you trip and fall, don’t stay down.
Get back up, dust yourself off and keep going. Winners never quit and quitters never win.
 
      Gabriel Corchado  


아래 사이트에서 스크랩하였습니다.
https://www.dbguide.net/dbqa/dbqa120001.jsp?mode=view&pg=28&idx=398

저작자 표시 비영리 변경 금지
Posted by Tommy Lymm
OLD_DATA/PHP tips2009/12/21 09:04

Subversive installation instructions

Subversive can be simply installed from within Eclipse using update manager. All what the user should do is just point update manager to the remote or local update site. To install Subversive:

  1. Start Eclipse and select menu item 'Help > Software Updates...'

    Software Updates

  2. Select the 'Available Software' tab group and click the 'Add Site...' button.

    Update manager

  3. On the 'Add Site' dialog enter the URL to SVN Connectors update site. The proper URL can be found on http://www.eclipse.org/subversive/downloads.php. Also the update-site for Subversive integration plug-ins can be added in the same way.
    • Please note that the use of the software you are about to access may be subject to third party terms and conditions and you are responsible for abiding by such terms and conditions.

    Click on the 'OK' button to store update site information.

    New update site

  4. The Subversive update site provides following features list.
      Required feature, which should be installed unconditionally:
    • SVN Team Provider - The Eclipse Team Provider for the Subversion version control system.


    • Optional integrations with other plug-ins, which can be installed if you use these plugins and want to have them integrated with Subversive:
    • Subversive Integration for the Mylyn Project - Integration with Mylyn (http://www.eclipse.org/mylyn/).


    • Other optional features:
    • JDT Ignore Extensions - The feature is useful for Java development because it allows to interpret output folders as ignored resources automatically.
    • SVN Team Provider Sources - The sources of the Eclipse Team Provider for Subversion.

    Select SVN Team Provider, Subversive SVN Connectors and other features if required and click the 'Install' button.

    Feature Search Result

  5. The update manager calculates dependencies and offers you a list of features to install. Select the needed ones and click the 'Next >' button.

    Features to Install

  6. Accept terms of license agreement and click the 'Finish' button in order to start the download of selected features.

    Feature License

  7. To apply installation changes and restart Eclipse click on the 'Yes' button.

    Restart dialog

  8. After Eclipse restart you are able to start using Subversive.
  9. You can find Subversive perspective and views in correspondent dialogs, activated by menu items 'Window > Open Perspective > Other...' and 'Window > Show View > Other...'.

    Open Perspective Show View


아래 사이트에서 스크랩하였습니다.
http://www.eclipse.org/subversive/documentation/gettingStarted/aboutSubversive/install.php
저작자 표시 비영리 변경 금지

'OLD_DATA > PHP tips' 카테고리의 다른 글

이클립스 SVN 설치  (0) 2009/12/21
Posted by Tommy Lymm