博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pg::Snapshot USAGE
阅读量:5737 次
发布时间:2019-06-18

本文共 5866 字,大约阅读时间需要 19 分钟。

上面那篇PostgreSQL MVIEW的USAGE:

As database superuser (often postgres, but check for your system), do the following:

INSTALLATION

1.  Load PL/Perlu into your database.  See the createlang documents for details on how to do this;

2.  Make shure that DBI is installed on your Perl system and that the DBD of the database you choose is also installed;

3. Edit the Makefile.sh file and change the KEY variable to a better "secret" value and theBASE_SCHEMA variable to where the base(internal) Pg::Snapshot tables should be placed. Also remember to setup the remaining variables like SUPERUSER.

4.  On the PostgreSQL::Snapshots root, execute:
    # ./Makefile.sh

5. Load the database driver:
    - On PostgreSQL:
    # psql -d <database> -h <host> -U <user> -f ./drivers/pg/snapshot.sql
    - On Oracle, inside SQL+:
    SQL> @./drivers/oracle/snapshot.sql

6.  Load the pgsnapshots.sql file:
    # psql -d <database> -h <host> -U <user> -f pgsnapshots.sql

7. Allow the access from your workstation(or remote server) to one or more master tables on the current database:
    - Inside psql, conected as POSTGRES user:
    db=# select snapshot_do('<key>', 'ALLOW', '<masterschema>', '<mastername>', '<ip>');
    - or inside SQL+, conected as SYS user:
    SQL> begin
         snapshot_do('<key>', 'ALLOW', '<masterschema>', '<mastername>', '<ip>');
         end;
         /

    Where:
        <key> is the "secret" value placed on the KEY variable inside the Makefile.sh file.
        <masterschema> is the schema name of the master table you wish to allow access to
        <mastername> is the name of the master table you wish to allow access to
        <ip> is the IP address of your workstation/server to whom you wish to give access

8.  Use the underlying methods aka functions as needed.

AVAILABLE FUNCTIONS

1. create_dblink (implementation of "CREATE DBLINK")
    This function creates a link between databases. It takes the name of the DBLINK to be created and the necessary parameters do establish the remote connection.
    
    Syntax:
    create_dblink(dblinkname text, datasource text, username text, password text, attributes text)
    dblinkname: name of the DBLINK to be created
    datasource: Perl:DBI CONNECTION string to the remote database
    username: NAME of the remote database user
    password: PASSWORD of the remote database user
    attributes: connection ATTRIBUTES, like AutoCommit, RaiseErrors, etc.

2. drop_dblink (implementation of "DROP DBLINK")
    This function removes a link between databases taking only the DBLink name as a parameter.
    
    Syntax:
    drop_dblink(dblinkname text)
    dblinkname: name of the DBLINK to be removed

3. create_snapshot (implementation of "CREATE SNAPSHOT" or "CREATE MATERIALIZED VIEW")
    This function creates a materialized view or snapshot based on a query. The query can be referencing a database link or not.
    
    Syntax:
    create_snapshot(schemaname text, snapshotname text, query text, dblink text, refresh_method text, prebuilt_table text)
    schemaname: name of the schema where the snapshot will be created
    snapshotname: name of the snapshot to be created
    query: SQL query that will be executed at the remote database and which result will fill the snapshot
    dblink: optional parameter that take the name of the DBLink to be used. If the value is NULL, the query will be executed by the local database.
    refresh_method: can be "COMPLETE", "FAST" or "FORCE".
    prebuilt_table: name of the prebuilt table, on the same schema of the snapshot, over which the snapshot will be created (existing data are preserved). This is an optional parameter.

    IMPORTANT: the table will not be filled by this function.

4. drop_snapshot (implementation of "DROP SNAPSHOT" or "DROP MATERIALIZED VIEW")
    This function removes a materialized view or snapshot taking the schema name and the snapshot name as parameters.
    
    Syntax:
    drop_snapshot (schemaname text, snapshotname text)
    schemaname: name of the schema where the snapshot resides
    snapshotname: name of the snapshot to be removed

5. create_snapshot_log (implementation of "CREATE MATERIALIZED VIEW LOG" or "CREATE SNAPSHOT LOG")
    This function creates a log table bound to a master table. This log table allows the creation of fast refreshing snapshot(FAST REFRESH).

    Syntax:
    create_snapshot_log (schemaname text, mastername text, withwhat text)
    schemaname: name of the schema where the master table resides
    mastername: name of the master table
    withwhat: use the this clause to indicate whether the snapshot log should record the primary key, the rowid, or both the primary key and rowid when rows in the master are updated. This clause also specifies whether the snapshot records filter columns, which are non-primary-key columns referenced by subquery snapshots. The syntax is:
        1) "PRIMARY KEY": indicate that the primary key of all rows updated in the master table should be recorded in the snapshot log;
        2) "OID": indicate that the OID of all rows updated in the master table should be recorded in the snapshot log;
        3) "(<filter-columns>)" : a parenthesis-delimited comma-separated list that specifies the filter columns to be recorded in the snapshot log. For fast-refreshable primary-key snapshots defined with subqueries, all filter columns referenced by the defining subquery must be recorded in the snapshot log;
        4) Any combination of the above in any order.

6. drop_snapshot_log (implementation of "DROP MATERIALIZED VIEW LOG" or "DROP SNAPSHOT LOG")
    This function removes a log table previously bound to a master table.

    Syntax:
    drop_snapshot_log (schemaname text, mastername text)
    schemaname: name of the schema where the master table resides
    mastername: name of the master table

5. refresh_snapshot (implementation of "DBMS_SNAPSHOTS.REFRESH")
    This function refreshes the data on a materialized view or snapshot taking the schema and snapshot names as parameters.
    
    Syntax:
    refresh_snapshot (schemaname text, snapshotname text)
    schemaname: name of the schema where the snapshot resides
    snapshotname: name of the snapshot to be refreshed

转载地址:http://rhwzx.baihongyu.com/

你可能感兴趣的文章
进程状态一步步理解Linux进程(1)--进程基础知识
查看>>
路由网址这是mvc时代系列之三:网络路由与ASP.NET MVC生命周期(上)
查看>>
windows重命名工具(仿linux下rename)
查看>>
TCPDump
查看>>
数据字典和动态性能视图——常用数据字典
查看>>
a标签在ie6下点了没反应
查看>>
类sqljdbc高级模板技术
查看>>
编码解码UTF-8,gb2312等百分号编码进行解码示例
查看>>
求2个集合的交集
查看>>
大数据的2013:SQL阵营将逆袭?
查看>>
Python调用DLL实现部分ADB功能
查看>>
视频分享:挨踢项目求生法则(2)——战略篇
查看>>
去掉android的屏幕上的title bar
查看>>
Windows Phone 页面切换动画
查看>>
winform下载网页代码
查看>>
内容输出Linux文件系统的的实现:创建一个文件的过程
查看>>
字节流和字符流
查看>>
JDBC连接MySQL 方法 实例及资料收集
查看>>
[C++STDlib基础]关于单字符的操作——C++标准库头文件<cctype>
查看>>
Android 网络编程 Socket Http
查看>>