Here is how to use what you have:

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 the BASE_SCHEMA variable to where the base(internal) Pg::Snapshot tables should be placed.

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/snapsho
t.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, username text, password text, datasource text, attributes text)
	dblinkname = name of the DBLINK to be created
	username = NAME of the remote database user
	password = PASSWORD of the remote database user
	datasource = Perl:DBI CONNECTION string to the remote database
	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)
        schemaname: name of the schema where the master table resides
        mastername: name of the master table

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

