├── .gitignore
├── DatabaseObjects
├── Clusters
│ └── intro
│ │ ├── _run.sql
│ │ ├── create-cluster.sql
│ │ ├── create-index.sql
│ │ ├── create-tables.sql
│ │ ├── data-dictionary.sql
│ │ ├── db-blocks.sql
│ │ ├── drop.sql
│ │ ├── insert.sql
│ │ └── plan.sql
├── Database-Links
│ └── function.sql
├── Indexes
│ ├── create_index_during_execution.pl
│ ├── create_index_during_execution.plsql
│ ├── foreign-key.sql
│ ├── global_partitioned_index.sql
│ ├── own-namespace.sql
│ ├── partial-index.sql
│ ├── partitioned
│ │ ├── global
│ │ │ └── create.sql
│ │ └── local
│ │ │ ├── aligned.sql
│ │ │ └── vs-ordinary
│ │ │ ├── create-local-index.sql
│ │ │ ├── create-ordinary-index.sql
│ │ │ ├── create-table.sql
│ │ │ ├── gather-stats.sql
│ │ │ ├── insert.sql
│ │ │ ├── user_ind_partitions.sql
│ │ │ ├── user_ind_statistics.sql
│ │ │ ├── user_ind_subpartitions.sql
│ │ │ └── user_indexes.sql
│ └── unique_indexes_null_values.sql
├── MaterializedViews
│ ├── on_prebuilt_table.sql
│ └── on_prebuilt_table_iot.sql
├── README.md
├── Sequences
│ ├── 12c
│ │ └── session.sql
│ ├── auto_increment.sql
│ ├── default-value-for-column.sql
│ ├── failed_insert.sql
│ └── sequence.sql
├── Tables
│ ├── 12c
│ │ └── identity_start_with.sql
│ ├── AlterTable
│ │ ├── add_column.sql
│ │ ├── add_foreign_key.sql
│ │ ├── drop_column.sql
│ │ ├── mark_column_unused.sql
│ │ └── rename_column.sql
│ ├── AttributeClustering
│ │ ├── interleaved-ordering-01.sql
│ │ ├── linear-ordering-01.sql
│ │ ├── show-reduction-in-used-db-blocks.sql
│ │ └── user_tables.sql
│ ├── Heap
│ │ └── create_heap_table.sql
│ ├── ILM
│ │ └── add-policy.sql
│ ├── IndexOrganized
│ │ └── create_iot.sql
│ ├── IntegrityConstraints
│ │ ├── drop_child.sql
│ │ ├── exceptions_into
│ │ │ └── enable_pk.sql
│ │ └── not_null_non_unique.sql
│ ├── Locks
│ │ └── lockmodes.sql
│ ├── Partitions
│ │ ├── README.md
│ │ ├── composite-interval-list.sql
│ │ ├── composite_list-hash.sql
│ │ ├── composite_range-list.sql
│ │ ├── distribution-techniques
│ │ │ ├── composite
│ │ │ │ └── subpartition-template
│ │ │ │ │ ├── interval-list-data-dictionary.sql
│ │ │ │ │ └── interval-list.sql
│ │ │ └── list
│ │ │ │ ├── create-table.sql
│ │ │ │ └── explain-plan.sql
│ │ ├── drop_partition.sql
│ │ ├── drop_partition_with_non_local_index.sql
│ │ ├── hash_partitioning.sql
│ │ ├── interval-based-on-char.sql
│ │ ├── interval-partition-number.sql
│ │ ├── interval_partitioning.sql
│ │ ├── local_partitioned_index.sql
│ │ ├── local_prefixed_vs_non_prefixed_index.sql
│ │ ├── ora-01841.sql
│ │ ├── range-range.sql
│ │ ├── range_partitioning.sql
│ │ └── truncate-partition.sql
│ ├── RecycleBin
│ │ ├── purge.sql
│ │ ├── purge_tablespace.sql
│ │ ├── show_recycle_bin_sql.sql
│ │ └── show_recycle_bin_sqlplus.sql
│ ├── columns
│ │ ├── default
│ │ │ └── sequence.sql
│ │ ├── diff-structure
│ │ │ ├── create-tables.sql
│ │ │ └── diff.sql
│ │ ├── identity
│ │ │ ├── intro.sql
│ │ │ └── returning.sql
│ │ └── virtual
│ │ │ ├── modify.sql
│ │ │ ├── test_02.sql
│ │ │ ├── test_03.sql
│ │ │ ├── test_04.sql
│ │ │ └── virt-cols-referencing-virt-cols.sql
│ ├── default-values
│ │ └── example-01.sql
│ ├── identity-column
│ │ └── example-01.sql
│ ├── parallel
│ │ └── degree-default-16.sql
│ ├── period-definition
│ │ └── example-01.sql
│ ├── row-archival
│ │ └── example-01.sql
│ ├── storage_clause
│ │ └── maxsize_01.sql
│ └── types
│ │ ├── create-some.sql
│ │ └── data-dictionary.sql
├── Triggers
│ ├── README.md
│ ├── before_for_each_row.sql
│ ├── ddl_instead_of.sql
│ └── determine_firing_sql.sql
├── Types
│ └── compile_force_with_dependends.plsql
├── Views
│ ├── UpdateableJoinViews
│ │ └── test_01.sql
│ └── triggersOnViews
│ │ ├── instead_of.sql
│ │ └── lostTrigger.sql
├── count_objects_per_user.sql
└── scripts
│ └── drop.sql
├── Globalization
└── nls_numeric_characters.sql
├── Installed
├── data-dictionary
│ ├── .gitignore
│ ├── addm
│ │ ├── findings
│ │ │ └── joins.sql
│ │ └── tasks
│ │ │ └── show.sql
│ ├── alert
│ │ ├── arguments
│ │ │ └── show.sql
│ │ └── history
│ │ │ └── show.sql
│ ├── audit
│ │ └── exists
│ │ │ └── show.sql
│ ├── catalog
│ │ └── table_types.sql
│ ├── col
│ │ └── comments
│ │ │ └── example-01.sql
│ ├── coll_types
│ │ └── example-01.sql
│ ├── common_audit_trail
│ │ ├── logon-logoff.sql
│ │ └── show.sql
│ ├── connect_role_grantees
│ │ └── show.sql
│ ├── cons_columns
│ │ └── show_constraint_columns.sql
│ ├── constraints
│ │ └── constraint_type.sql
│ ├── context
│ │ └── show.sql
│ ├── cpu_usage_statistics
│ │ └── show.sql
│ ├── data_files
│ │ └── show.sql
│ ├── datapump
│ │ ├── jobs
│ │ │ └── show.sql
│ │ └── sessions
│ │ │ └── show.sql
│ ├── db_links
│ │ ├── README.md
│ │ └── show.sql
│ ├── ddl_locks
│ │ └── show.sql
│ ├── def_audit_opts
│ │ └── show.sql
│ ├── dependencies
│ │ ├── clean-schema.sql
│ │ ├── example-01.sql
│ │ └── recursive.sql
│ ├── directories
│ │ └── privileges.sql
│ ├── dml_locks
│ │ └── example-01.sql
│ ├── errors
│ │ ├── common-error-messages.sql
│ │ └── joins.sql
│ ├── external
│ │ └── locations
│ │ │ └── joins.sql
│ ├── feature_usage_statistics
│ │ ├── names.sql
│ │ └── overview.sql
│ ├── free_space
│ │ └── joins.sql
│ ├── high_water_mark_statistics
│ │ └── names-and-descriptions.sql
│ ├── ind
│ │ └── columns
│ │ │ └── columns-of-index.sql
│ ├── indexes
│ │ └── indexes-on-table.sql
│ ├── invalid_objects
│ │ └── show.sql
│ ├── jobs
│ │ ├── running
│ │ │ └── show.sql
│ │ └── show.sql
│ ├── join_ind_columns
│ │ └── example-01.sql
│ ├── lock
│ │ └── show.sql
│ ├── logstdby
│ │ ├── parameters
│ │ │ └── parameter-names.sql
│ │ ├── skip
│ │ │ └── show.sql
│ │ └── unsupported
│ │ │ ├── show.sql
│ │ │ └── table
│ │ │ └── show.sql
│ ├── network
│ │ ├── acl_privileges
│ │ │ └── show.sql
│ │ └── acls
│ │ │ └── show.sql
│ ├── nls
│ │ ├── database_parameters
│ │ │ └── show.sql
│ │ ├── instance_parameters
│ │ │ └── show.sql
│ │ └── session_parameters
│ │ │ ├── compare-with-db-and-instance.sql
│ │ │ └── show.sql
│ ├── obj
│ │ └── audit_opts
│ │ │ └── show.sql
│ ├── object
│ │ └── size
│ │ │ └── show.sql
│ ├── objects
│ │ ├── joins.sql
│ │ ├── object_type.sql
│ │ └── possibly-unused-objects.sql
│ ├── outstanding_alerts
│ │ └── show.sql
│ ├── part_tables
│ │ └── README.md
│ ├── password_limits
│ │ └── resource_names.sql
│ ├── plsql_object_settings
│ │ └── example-01.sql
│ ├── profiles
│ │ └── pivot.sql
│ ├── recyclebin
│ │ └── example-01.sql
│ ├── registry
│ │ ├── banners
│ │ │ └── show.sql
│ │ ├── database
│ │ │ └── show.sql
│ │ └── show.sql
│ ├── represoultion
│ │ └── method
│ │ │ └── show.sql
│ ├── resource
│ │ ├── incarnations
│ │ │ └── show.sql
│ │ └── limits
│ │ │ └── show.sql
│ ├── role
│ │ ├── privs
│ │ │ └── show-privs-for-specific-user.sql
│ │ ├── role_privs
│ │ │ └── show.sql
│ │ ├── sys_privs
│ │ │ └── show-privs-for-specific-role.sql
│ │ └── tab_privs
│ │ │ └── show-privs-for-specific-role.sql
│ ├── roles
│ │ ├── oracle-maintained-roles.sql
│ │ └── show.sql
│ ├── scheduler
│ │ └── global_attribute
│ │ │ └── attribute_names.sql
│ ├── segments
│ │ └── find-largest.sql
│ ├── snapshots
│ │ └── show.sql
│ ├── source
│ │ └── show-package-bodys-source-text.sql
│ ├── sql
│ │ ├── management_config
│ │ │ └── parameter_names.sql
│ │ ├── monitor_usage
│ │ │ └── show.sql
│ │ ├── plan
│ │ │ ├── dir_objects
│ │ │ │ └── joins.sql
│ │ │ └── directives
│ │ │ │ └── show.sql
│ │ └── profiles
│ │ │ └── show.sql
│ ├── sqlset
│ │ └── show.sql
│ ├── stat_extensions
│ │ └── show.sql
│ ├── stmt_audit_option_map
│ │ └── names.sql
│ ├── stored_settings
│ │ └── show.sql
│ ├── streams
│ │ ├── columns
│ │ │ └── show.sql
│ │ ├── newly_supported
│ │ │ └── show.sql
│ │ └── unsupported
│ │ │ └── show.sql
│ ├── subscr_registration
│ │ └── show.sql
│ ├── sum_delta
│ │ └── joins.sql
│ ├── summaries
│ │ └── show.sql
│ ├── summary
│ │ ├── aggregates
│ │ │ └── show.sql
│ │ ├── detail_tables
│ │ │ └── show.sql
│ │ ├── joins
│ │ │ └── show.sql
│ │ └── keys
│ │ │ └── show.sql
│ ├── supplemental_logging
│ │ └── show.sql
│ ├── sys_privs
│ │ └── show-privs-for-specific-user.sql
│ ├── tab
│ │ ├── cols
│ │ │ └── hidden-and-virtual-columns.sql
│ │ ├── columns
│ │ │ └── find-table-with-name-of-2-columns.sql
│ │ ├── comments
│ │ │ └── show.sql
│ │ ├── histograms
│ │ │ └── simple.sql
│ │ ├── modifications
│ │ │ └── show.sql
│ │ ├── partitions
│ │ │ └── README.md
│ │ ├── privs
│ │ │ ├── grantors-grants.sql
│ │ │ ├── privilege-matrix.sql
│ │ │ └── show-privs-for-specific-user.sql
│ │ ├── statistics
│ │ │ ├── select.sql
│ │ │ └── stale-or-no-statistics.sql
│ │ └── subpartitions
│ │ │ └── README.md
│ ├── tablespace
│ │ └── usage_metrics
│ │ │ └── show.sql
│ ├── temp
│ │ └── free_space
│ │ │ └── show.sql
│ ├── transformations
│ │ └── show.sql
│ ├── trigger
│ │ └── cols
│ │ │ └── show.sql
│ ├── ts_quotas
│ │ └── show.sql
│ ├── type
│ │ ├── attrs
│ │ │ └── example-01.sql
│ │ └── methods
│ │ │ └── example-01.sql
│ ├── types
│ │ └── example-01.sql
│ ├── unused
│ │ └── col_tabs
│ │ │ └── show.sql
│ ├── updatable_columns
│ │ └── show.sql
│ ├── user_all_dba_cdb_notes.sql
│ ├── user_all_dba_cdb_view.sql
│ ├── user_all_dba_names.sql
│ ├── user_all_dba_names_2_html.sql
│ ├── users
│ │ ├── account_status.sql
│ │ ├── joins.sql
│ │ └── with_defpwd
│ │ │ └── joins.sql
│ ├── ustats
│ │ └── show.sql
│ ├── warning_settings
│ │ └── show.sql
│ ├── xml
│ │ └── tables
│ │ │ └── show.sql
│ └── xs
│ │ └── users
│ │ └── show.sql
├── dbms
│ ├── advanced_rewrite
│ │ └── intro
│ │ │ ├── _run.sql
│ │ │ ├── equivalence-1.sql
│ │ │ ├── grant.sql
│ │ │ ├── select-1.sql
│ │ │ └── table-1.sql
│ ├── audit_mgmt
│ │ ├── README.md
│ │ ├── archiving
│ │ │ ├── archive.sql
│ │ │ ├── bug_9164488.sql
│ │ │ └── init.sql
│ │ └── set_audit_trail_location.sql
│ ├── comparison
│ │ └── compare-table-content.sql
│ ├── crypto
│ │ └── hash
│ │ │ ├── md5.sql
│ │ │ └── sha-256.sql
│ ├── cube_log
│ │ ├── default_name.sql
│ │ └── table_create.sql
│ ├── datapump
│ │ ├── clone_schema
│ │ │ ├── README.md
│ │ │ ├── call_count_procs.sql
│ │ │ ├── cleanup.sql
│ │ │ ├── create_schemas.sql
│ │ │ ├── export.par
│ │ │ ├── export.plsql
│ │ │ ├── export_import_dp.sql
│ │ │ ├── export_import_plsql.sql
│ │ │ ├── import.par
│ │ │ ├── import.plsql
│ │ │ └── run.sql
│ │ └── extract_schema_sql
│ │ │ ├── README.md
│ │ │ ├── create_schema.sql
│ │ │ ├── dbms_datapump_exception.plsql
│ │ │ ├── export_dump.plsql
│ │ │ ├── export_sql.plsql
│ │ │ ├── import_sql_file.sql
│ │ │ └── run.sql
│ ├── describe
│ │ └── describe_procedure.sql
│ ├── errlog
│ │ ├── _run.sql
│ │ ├── error-table.sql
│ │ ├── insert-dest.sql
│ │ ├── insert-src.sql
│ │ ├── select.sql
│ │ └── table.sql
│ ├── fga
│ │ └── 01_add_policy.sql
│ ├── lob
│ │ ├── clob_from_long_string.sql
│ │ ├── clob_from_varchars.sql
│ │ ├── insert_into_with_blob.sql
│ │ ├── max_length.sql
│ │ ├── really_long_clob.sql
│ │ └── temporary
│ │ │ └── create-free.sql
│ ├── lobutil
│ │ └── inode.sql
│ ├── lock
│ │ ├── blue.sql
│ │ ├── green.sql
│ │ ├── run.bat
│ │ ├── session_blue.bat
│ │ ├── session_green.bat
│ │ ├── sleep.sql
│ │ └── stop_sessions
│ │ │ ├── blue.sql
│ │ │ ├── green.sql
│ │ │ ├── run.bat
│ │ │ ├── session_blue.bat
│ │ │ └── session_green.bat
│ ├── metadata
│ │ ├── extract_table_definition.sql
│ │ └── user.sql
│ ├── metadata_diff
│ │ └── diff_two_tables.sql
│ ├── mining
│ │ ├── model
│ │ │ └── attributes
│ │ │ │ └── show.sql
│ │ ├── models
│ │ │ └── show.sql
│ │ └── settings
│ │ │ └── show.sql
│ ├── pipe
│ │ ├── perl
│ │ │ ├── read_pipe.pl
│ │ │ └── write_pipe.plsql
│ │ ├── purge
│ │ │ ├── blue.sql
│ │ │ ├── green.sql
│ │ │ ├── run.bat
│ │ │ ├── session_blue.bat
│ │ │ └── session_green.bat
│ │ ├── readme.md
│ │ └── send_receive
│ │ │ ├── blue.sql
│ │ │ ├── green.sql
│ │ │ ├── run.bat
│ │ │ ├── session_blue.bat
│ │ │ └── session_green.bat
│ ├── predictive_analytics
│ │ └── explain_and_predict_and_profile.sql
│ ├── preprocessor
│ │ └── get_post_processed_source_1.sql
│ ├── random
│ │ ├── normal.sql
│ │ ├── string.sql
│ │ ├── terminate.sql
│ │ └── value.sql
│ ├── redefinition
│ │ └── rename-column_change-datatype
│ │ │ ├── _run.sql
│ │ │ ├── abort_redef_table.sql
│ │ │ ├── can_redef_table.sql
│ │ │ ├── copy_table_dependents.sql
│ │ │ ├── create-table-int.sql
│ │ │ ├── create-table.sql
│ │ │ ├── drop-tables.sql
│ │ │ ├── finish_redef_table.sql
│ │ │ ├── insert-data.sql
│ │ │ ├── select.sql
│ │ │ ├── start_redef_table.sql
│ │ │ └── sync_interim_table.sql
│ ├── rowid
│ │ ├── rowid_object.partition-of-record.sql
│ │ └── select.sql
│ ├── scheduler
│ │ ├── create_job_twice.plsql
│ │ └── program_schedule_job
│ │ │ ├── clean_up.plsql
│ │ │ ├── create.plsql
│ │ │ ├── package.plsql
│ │ │ └── table.sql
│ ├── scn
│ │ └── getcurrentscnparams.sql
│ ├── snapshot
│ │ └── refresh_commit.sql
│ ├── space
│ │ └── unused_space.sql
│ ├── space_admin
│ │ └── segment_dump
│ │ │ └── go.sql
│ ├── sql
│ │ ├── last_sql_function_code.sql
│ │ ├── parse
│ │ │ └── parse-twice.sql
│ │ ├── parse_gt_32k.plsql
│ │ ├── plsql_block_with_out_parameters.plsql
│ │ ├── return_result.sql
│ │ └── select_from_table.sql
│ ├── sql_translator
│ │ └── interface-package
│ │ │ ├── _run.sql
│ │ │ ├── body.sql
│ │ │ ├── get-translated.sql
│ │ │ ├── profile.sql
│ │ │ ├── select.sql
│ │ │ ├── set-events.sql
│ │ │ ├── set-profile.sql
│ │ │ └── spec.sql
│ ├── stat_funcs
│ │ └── summary.sql
│ ├── stats
│ │ ├── avg_row_len.sql
│ │ ├── constants.sql
│ │ ├── gather_table_stats_01.sql
│ │ ├── get_prefs.sql
│ │ └── transaction.sql
│ ├── system
│ │ └── read_ev.sql
│ ├── tf
│ │ ├── add-columns.sql
│ │ └── introduction
│ │ │ ├── columns.sql
│ │ │ └── run.sql
│ ├── utility
│ │ ├── compile_schema.plsql
│ │ ├── db_version.plsql
│ │ ├── expand_sql_text.sql
│ │ ├── expand_sql_text
│ │ │ └── script.ps1
│ │ ├── format
│ │ │ └── error.sql
│ │ ├── format_call_stack.plsql
│ │ ├── format_error_backtrace.plsql
│ │ ├── format_error_stack.plsql
│ │ ├── name_resolve.sql
│ │ └── time.plsql
│ ├── xa
│ │ ├── session_01.sql
│ │ ├── session_02.sql
│ │ ├── session_03.sql
│ │ └── setup.sql
│ └── xmlget
│ │ └── getxml.sql
├── dynamic-performance-views
│ ├── active
│ │ └── session_history
│ │ │ ├── did-user-exec.sql
│ │ │ ├── minutes_covered.sql
│ │ │ ├── session_states.sql
│ │ │ └── trace-session.sql
│ ├── alert_types
│ │ └── object_types.sql
│ ├── archive
│ │ └── dest
│ │ │ └── show-destinations.sql
│ ├── ash_info
│ │ └── show.sql
│ ├── bh
│ │ └── compare-with_Buffer_Cache_Size.sql
│ ├── controlfile
│ │ ├── record_section
│ │ │ └── type.sql
│ │ └── show.sql
│ ├── database
│ │ └── columns.sql
│ ├── database_incarnation
│ │ └── show.sql
│ ├── database_key_info
│ │ └── show.sql
│ ├── datafile
│ │ ├── README.md
│ │ └── header
│ │ │ └── last-checkpoint.sql
│ ├── db_transportable_platform
│ │ ├── README.md
│ │ └── show.sql
│ ├── dbfile
│ │ └── compare-to-datafile.sql
│ ├── dblink
│ │ └── README.md
│ ├── diag
│ │ └── trace_file
│ │ │ └── contents
│ │ │ └── file_name-function_name.sql
│ ├── enqueue_lock
│ │ └── compare-to-lock.sql
│ ├── enqueue_statistics
│ │ └── cum_wait_time.sql
│ ├── event_name
│ │ ├── distinct-parameters.sql
│ │ └── name_per_class.sql
│ ├── file_histogram
│ │ └── pivot.sql
│ ├── filemetric
│ │ └── show.sql
│ ├── filemetric_history
│ │ └── pivot.sql
│ ├── fixed
│ │ ├── table
│ │ │ ├── v-and-gv-views.sql
│ │ │ └── x.sql
│ │ └── view_definition
│ │ │ └── find-x$-tables.sql
│ ├── hm
│ │ └── check
│ │ │ └── name-description.sql
│ ├── indexed_fixed_column
│ │ └── column_name.sql
│ ├── iostat
│ │ ├── file
│ │ │ └── filetypes.sql
│ │ └── function
│ │ │ └── function_names.sql
│ ├── java
│ │ └── library_cache_memory
│ │ │ └── namespaces.sql
│ ├── latch
│ │ ├── holder
│ │ │ └── show.sql
│ │ └── show-statistics.sql
│ ├── license
│ │ └── show.sql
│ ├── lock
│ │ ├── general-information.sql
│ │ └── type
│ │ │ └── overview.sql
│ ├── locked_object
│ │ └── show.sql
│ ├── memory
│ │ └── dynamic_components
│ │ │ └── show.sql
│ ├── metric
│ │ ├── history
│ │ │ └── phys-read-write.sql
│ │ └── name
│ │ │ └── show.sql
│ ├── mystat
│ │ └── show.sql
│ ├── nls
│ │ ├── parameters
│ │ │ └── names.sql
│ │ └── valid_values
│ │ │ └── show.sql
│ ├── open_cursor
│ │ ├── cursor_types.sql
│ │ └── own-sessions-open-cursors.sql
│ ├── option
│ │ └── parameter.sql
│ ├── parameter
│ │ ├── README.md
│ │ ├── names.sql
│ │ ├── parameter_notes.sql
│ │ ├── parameter_view.sql
│ │ └── valid_values
│ │ │ └── pivot.sql
│ ├── parameter_valid_values
│ │ └── pivot.sql
│ ├── pq
│ │ ├── sesstat
│ │ │ └── show-statistics.sql
│ │ ├── slave
│ │ │ └── show.sql
│ │ ├── sysstat
│ │ │ └── statistic-names.sql
│ │ └── tqstat
│ │ │ └── show.sql
│ ├── process
│ │ └── joins.sql
│ ├── process_memory
│ │ ├── categories.sql
│ │ └── show_plsql_usage.sql
│ ├── px
│ │ ├── process_sysstat
│ │ │ └── in_use-available-highwater.sql
│ │ └── session
│ │ │ ├── group-by-qcsid.sql
│ │ │ └── joins.sql
│ ├── reserved_words
│ │ └── keywords.sql
│ ├── rman
│ │ ├── backup_type
│ │ │ └── show.sql
│ │ ├── compression_algorithm
│ │ │ └── show.sql
│ │ └── configuration
│ │ │ └── show.sql
│ ├── segment_statistics
│ │ ├── names.sql
│ │ └── simple-test.sql
│ ├── sess
│ │ ├── io
│ │ │ └── own-sessions-statistics.sql
│ │ └── time_model
│ │ │ └── stat_names.sql
│ ├── session
│ │ ├── .gitignore
│ │ ├── connect_info
│ │ │ └── own-sessions-values.sql
│ │ ├── cursor_cache
│ │ │ └── show.sql
│ │ ├── distinct_values.sql
│ │ ├── event
│ │ │ └── join-session.sql
│ │ ├── find-my-interesting-sessions.sql
│ │ ├── joinable.sql
│ │ ├── joins.sql
│ │ ├── module-action.sql
│ │ ├── module_hash.sql
│ │ ├── pdml-pddl-pq_status.sql
│ │ ├── programs.sql
│ │ ├── set-action-etc.cs
│ │ └── wait
│ │ │ └── show-waits.sql
│ ├── sesstat
│ │ ├── join-session.sql
│ │ └── show-statistics.sql
│ ├── sga
│ │ ├── dynamic_componentes
│ │ │ ├── components.sql
│ │ │ └── usage.sql
│ │ └── names.sql
│ ├── sort
│ │ └── usage
│ │ │ └── show.sql
│ ├── sql
│ │ ├── area
│ │ │ ├── address-unique.sql
│ │ │ ├── memory-usage.sql
│ │ │ ├── parsed-by-user.sql
│ │ │ └── sql_id-unique.sql
│ │ ├── bind
│ │ │ ├── capture
│ │ │ │ └── ex.sql
│ │ │ └── metadata
│ │ │ │ └── ex.sql
│ │ ├── command
│ │ │ ├── count-nouns.sql
│ │ │ ├── count-verbs.sql
│ │ │ ├── names.sql
│ │ │ ├── only-verb-statements.sql
│ │ │ └── verb_noun_view.sql
│ │ ├── cursor
│ │ │ └── join-sqlarea.sql
│ │ ├── diff-sql_sqlarea.sql
│ │ ├── feature
│ │ │ └── hierarchy
│ │ │ │ └── select-recursively.sql
│ │ ├── hint
│ │ │ ├── hints.sql
│ │ │ └── join-feature-hierarchy.sql
│ │ ├── monitor
│ │ │ └── select.sql
│ │ ├── plan
│ │ │ ├── column-position-id-eq-0.sql
│ │ │ ├── monitor
│ │ │ │ └── select-simple.sql
│ │ │ └── show-sql_id.sql
│ │ ├── shared
│ │ │ └── cursor
│ │ │ │ └── columns.sql
│ │ ├── statistics.sql
│ │ ├── text
│ │ │ └── tq84.sql
│ │ ├── text_with_newlines
│ │ │ ├── listagg.sql
│ │ │ └── sqlid-to-stmt.sql
│ │ └── workarea
│ │ │ └── select.sql
│ ├── statistics_level
│ │ └── show.sql
│ ├── statname
│ │ └── class_name.sql
│ ├── sys_time_model
│ │ ├── order-by-value.sql
│ │ └── stat_names.sql
│ ├── sysmetric
│ │ └── show.sql
│ ├── sysstat
│ │ └── names.sql
│ ├── system
│ │ ├── event
│ │ │ └── order-by-time_waited.sql
│ │ └── wait_class
│ │ │ └── wait_classes.sql
│ ├── tablespace
│ │ └── show.sql
│ ├── timezone
│ │ ├── file
│ │ │ └── show.sql
│ │ └── names
│ │ │ └── abbreviations.sql
│ ├── transaction
│ │ ├── join_session.sql
│ │ └── show-transactions.sql
│ ├── transportable_platform
│ │ ├── README.md
│ │ └── show.sql
│ └── version
│ │ └── select.sql
├── htf
│ ├── .gitignore
│ ├── create-simple-html-document.sql
│ └── escape_sc.sql
├── types
│ └── any
│ │ └── passAnyObject
│ │ ├── passAnyObject.sql
│ │ ├── run.sql
│ │ └── types.sql
└── utl
│ ├── call_stack
│ ├── example-01.sql
│ └── nested.sql
│ ├── compress
│ └── README.md
│ ├── file
│ ├── create_file.plsql
│ ├── delete_created_file.plsql
│ ├── read_created_file.plsql
│ └── read_created_file_until_end.plsql
│ ├── i18n
│ ├── get_common_time_zones.plsql
│ ├── get_local_languages.plsql
│ ├── get_local_territories.plsql
│ └── unescape_reference.sql
│ ├── ident
│ └── schow_constants.sql
│ ├── mail
│ └── send_mail.plsql
│ ├── match
│ └── test.sql
│ ├── raw
│ ├── cast_to_varchar2
│ ├── convert.plsql
│ └── xrange.plsql
│ ├── smtp
│ ├── README.md
│ ├── attachment.plsql
│ ├── auth.plsql
│ └── send_mail.plsql
│ └── xml
│ └── parse
│ ├── grant-execute.sql
│ ├── parse-query.sql
│ └── utl_xml_wrapper.sql
├── PL-SQL
├── CollectionTypes
│ ├── IndexByTables-aka-AssociativeArrays
│ │ ├── exists.plsql
│ │ └── iterate_over.plsql
│ ├── NestedTables
│ │ ├── count.plsql
│ │ ├── select_cardinality.sql
│ │ ├── select_from_table_table.sql
│ │ ├── select_from_the.sql
│ │ ├── select_from_the_the.sql
│ │ └── where_member_of.sql
│ ├── intro.sql
│ ├── return-table-from-function
│ │ ├── bulk-collect.sql
│ │ ├── clean-up.sql
│ │ ├── create-function.sql
│ │ ├── create-record-type.sql
│ │ ├── create-table-type.sql
│ │ ├── select-from-function-2.sql
│ │ └── select-from-function.sql
│ └── set_operations.sql
├── accessible_by
│ └── example-01.plsql
├── authid
│ ├── create_object.sql
│ ├── example-01
│ │ ├── _run.sql
│ │ ├── clean-up.sql
│ │ ├── create-users.sql
│ │ ├── exec-read_t_current_user.sql
│ │ ├── exec-read_u_definer.sql
│ │ ├── grant-execute-to-proc-user.sql
│ │ ├── proc-owner-log_msg.sql
│ │ ├── proc-owner-read_t_current_user.sql
│ │ ├── proc-owner-read_u_definer.sql
│ │ ├── proc-owner-tables.sql
│ │ └── proc-user-tables.sql
│ └── example_01.sql
├── block
│ └── exception-handler
│ │ └── sqlerrm-sqlcode
│ │ └── nested
│ │ └── run.sql
├── blocks
│ ├── error_in_declare.plsql
│ └── nested_proc_with_same_name.plsql
├── bulk_collect
│ ├── group_by
│ │ ├── multiple_layers.plsql
│ │ └── test_01.plsql
│ └── no_data_found.plsql
├── case
│ └── which_line_reports_error.plsql
├── compilation
│ └── conditional
│ │ ├── ErrorDirective.plsql
│ │ ├── README.md
│ │ ├── reuse_settings.plsql
│ │ ├── show_settings.plsql
│ │ └── test_01.sql
├── cursor
│ ├── cursor-attributes.sql
│ ├── for_rec_in_cur.sql
│ ├── open_close.sql
│ ├── rowcount.sql
│ └── while_found.sql
├── exception
│ ├── pragma_init_with_same_number
│ │ ├── catcher.pkb
│ │ ├── catcher.pks
│ │ ├── thrower_1.pkb
│ │ ├── thrower_1.pks
│ │ ├── thrower_2.pkb
│ │ └── thrower_2.pks
│ ├── raise_application_error.plsql
│ ├── thrower_and_catcher
│ │ ├── catcher.pkb
│ │ ├── catcher.pks
│ │ ├── thrower.pkb
│ │ └── thrower.pks
│ └── when_X_or_Y
│ │ ├── install.sql
│ │ └── run.sql
├── execute_immediate
│ ├── into.plsql
│ ├── into_rowtype.plsql
│ ├── select-returning-values.plsql
│ ├── using_in_out.plsql
│ ├── using_in_out_nested_type_extend.plsql
│ ├── using_out.plsql
│ ├── using_out_2.plsql
│ └── using_out_nested_type.plsql
├── forall
│ └── compare_time.sql
├── function-procedure
│ ├── deterministic
│ │ ├── cache-result
│ │ │ ├── _run.sql
│ │ │ ├── clean-up.sql
│ │ │ ├── func.sql
│ │ │ ├── log-table.sql
│ │ │ ├── select-count-from-log-table.sql
│ │ │ └── select.sql
│ │ └── where-clause
│ │ │ ├── _run.sql
│ │ │ ├── pkg.sql
│ │ │ ├── select.sql
│ │ │ └── tab.sql
│ ├── overhead-in-SQL
│ │ └── where
│ │ │ ├── _run.sql
│ │ │ ├── clean-up.sql
│ │ │ ├── funcs.sql
│ │ │ ├── select-count.sql
│ │ │ ├── select-deterministic.sql
│ │ │ ├── select-func.sql
│ │ │ ├── select-local-deterministic.sql
│ │ │ ├── select-local.sql
│ │ │ ├── select-result_cache.sql
│ │ │ ├── select-where.sql
│ │ │ └── table.sql
│ └── sql_macro
│ │ ├── basic-example
│ │ ├── data.sql
│ │ ├── func.sql
│ │ └── select.sql
│ │ └── parameters
│ │ ├── create-table.sql
│ │ ├── random-table-select.sql
│ │ ├── random-table.sql
│ │ ├── tabN-anonymous-block.sql
│ │ ├── tabN-select-1.sql
│ │ └── tabN.sql
├── loop
│ ├── continue.plsql
│ ├── for_in_x_x.plsql
│ ├── reverse.plsql
│ └── select_stmt_as_string.plsql
├── pragma
│ ├── autonomous_transaction
│ │ └── uncommited.plsql
│ ├── deprecate
│ │ ├── pkg_a.pkb
│ │ ├── pkg_a.pks
│ │ ├── pkg_b.pkb
│ │ ├── pkg_b.pks
│ │ ├── recompile.sql
│ │ ├── show-errors.sql
│ │ └── user_errors.sql
│ └── udf.sql
└── statements
│ └── pipe_row
│ └── do.sql
├── README.md
├── SQL
├── README.md
├── _examples
│ └── lendings
│ │ ├── _run.sql
│ │ ├── active-months.sql
│ │ ├── all-months.sql
│ │ ├── data.sql
│ │ ├── group-by.sql
│ │ ├── model.sql
│ │ ├── table.sql
│ │ └── unpivot.sql
├── _nouns
│ └── system
│ │ └── alter
│ │ └── dump
│ │ ├── dump_block_from_rowid-test.sql
│ │ └── dump_block_from_rowid.sql
├── alter
│ ├── package
│ │ └── compile_plsql_ccflags.sql
│ └── session
│ │ ├── close-open-database-link.sql
│ │ ├── commit-in-procedure
│ │ ├── _run.sql
│ │ ├── exec.sql
│ │ ├── pkg.sql
│ │ └── tab.sql
│ │ └── time_zone.sql
├── analyze
│ └── table
│ │ └── list-chained_rows.sql
├── cursors
│ └── ref_cursor_from_string.plsql
├── datatypes
│ ├── boolean
│ │ └── select.sql
│ ├── interval
│ │ └── some.sql
│ ├── lob
│ │ ├── ORA-06502.sql
│ │ └── clob
│ │ │ └── to-lines
│ │ │ ├── _run.sql
│ │ │ ├── data.sql
│ │ │ ├── select.sql
│ │ │ └── table.sql
│ ├── number
│ │ └── table.sql
│ ├── raw
│ │ └── rawtohex.sql
│ ├── rowid
│ │ └── select.sql
│ ├── timestamp
│ │ ├── subtract.sql
│ │ └── timezone-01.sql
│ └── varchar2
│ │ ├── byte-vs-char
│ │ └── script.sql
│ │ └── null
│ │ ├── concatenate.sql
│ │ ├── create-table.sql
│ │ ├── select-eq-empty-string.sql
│ │ └── select-is-null.sql
├── delete
│ └── subquery.sql
├── functions
│ ├── between.sql
│ ├── conversion
│ │ ├── rowid-to-varchar2.sql
│ │ └── validate_conversion.sql
│ ├── date_related
│ │ ├── add_month_vs_interval_month.sql
│ │ ├── dbtimezone.sql
│ │ ├── numtoyminterval.sql
│ │ ├── seconds_to_hh24-mi-ss.sql
│ │ ├── sessiontimezone.sql
│ │ ├── sys_extract_utc.sql
│ │ └── systimestamp.sql
│ ├── interval_related
│ │ └── numto_interval.sql
│ ├── json
│ │ └── objectagg
│ │ │ └── intro.sql
│ ├── math
│ │ ├── power.sql
│ │ └── width_bucket.sql
│ ├── multiset
│ │ ├── except.sql
│ │ ├── intersect.sql
│ │ ├── powermultiset_by_cardinality.sql
│ │ └── union.sql
│ ├── null_related
│ │ ├── lnnvl.sql
│ │ ├── nullif.sql
│ │ ├── nvl2.sql
│ │ ├── nvl_not_lazy_evaluated.sql
│ │ └── sys_op_map_nonnull.sql
│ ├── regr
│ │ └── go.sql
│ ├── regular_expressions
│ │ ├── regexp_count.sql
│ │ ├── regexp_like.plsql
│ │ ├── regexp_replace.sql
│ │ ├── regexp_substr
│ │ │ ├── extract-3rd-substring.sql
│ │ │ ├── extract-between-delimiters.sql
│ │ │ └── extract-number.sql
│ │ └── word_boundaries.sql
│ ├── strings
│ │ ├── joining.sql
│ │ └── repeating_strings.sql
│ ├── sys_context
│ │ └── userenv_find-own-session.sql
│ ├── sys_guid.sql
│ ├── text
│ │ └── substr
│ │ │ ├── three-parameters.sql
│ │ │ └── two-parameters.sql
│ ├── to_lob.sql
│ ├── type-conversion
│ │ ├── format-models
│ │ │ ├── day-of-week.sql
│ │ │ ├── number.sql
│ │ │ └── spell-julian-day.sql
│ │ └── to
│ │ │ └── number
│ │ │ ├── default-on-conversion-error.sql
│ │ │ └── nls-param.sql
│ └── xml
│ │ └── xmltable
│ │ └── select.xmltype.dual.sql
├── grant
│ ├── _run.sql
│ ├── table-create.sql
│ ├── table-select.sql
│ ├── table-update.sql
│ ├── users-create.sql
│ └── users-drop.sql
├── insert
│ ├── append_hint_ora_12838.sql
│ ├── insert_all
│ │ ├── conditional.sql
│ │ └── english-german.sql
│ ├── insert_all_01.sql
│ └── log_errors_into
│ │ ├── primary_key.sql
│ │ └── temporary_tables.sql
├── merge
│ ├── merge_on_condition.plsql
│ └── unique_constraint_violated.sql
├── rename
│ └── statistics.sql
├── select
│ ├── 12c
│ │ ├── lateral.sql
│ │ ├── row_limiting_clause
│ │ │ ├── fetch_first_n_percent_rows_only.sql
│ │ │ ├── fetch_first_n_rows_only.sql
│ │ │ └── offset_n_rows_fetch_next_m_rows.sql
│ │ └── with_function.sql
│ ├── aggregate
│ │ ├── approx_count_distinct.sql
│ │ ├── distinct.sql
│ │ ├── listagg
│ │ │ └── clob
│ │ │ │ ├── v1
│ │ │ │ ├── body.sql
│ │ │ │ ├── func.sql
│ │ │ │ ├── spec.sql
│ │ │ │ └── test.sql
│ │ │ │ └── v2
│ │ │ │ ├── body.sql
│ │ │ │ ├── func.sql
│ │ │ │ ├── spec.sql
│ │ │ │ └── test.sql
│ │ ├── median.sql
│ │ ├── nested
│ │ │ ├── create-table.sql
│ │ │ ├── run_.sql
│ │ │ ├── select-nested.sql
│ │ │ └── select.sql
│ │ ├── nulls.sql
│ │ └── stats_mode.sql
│ ├── analytical_functions
│ │ ├── cume_dist.sql
│ │ ├── cumulative_sum.sql
│ │ ├── cumulative_value_at_date.sql
│ │ ├── find-free-time-in-calendar.sql
│ │ ├── find_duplicate_newest.sql
│ │ ├── first_value.sql
│ │ ├── group_by.sql
│ │ ├── keep_dense_rank
│ │ │ ├── column_values_of_row_with_max_value.sql
│ │ │ └── group_by_vs_over.sql
│ │ ├── lag-vs-lead.sql
│ │ ├── nth_value.sql
│ │ ├── percent_rank.sql
│ │ ├── range_between.sql
│ │ ├── ranking
│ │ │ └── ratio_to_report
│ │ │ │ └── spending.sql
│ │ ├── row_number-vs-rank-vs-dense_rank.sql
│ │ └── windowing_clause
│ │ │ ├── count.sql
│ │ │ └── default.sql
│ ├── distinct
│ │ ├── distinct_01.sql
│ │ └── distinct_with_parantheses.sql
│ ├── group_by
│ │ ├── cube
│ │ │ ├── 2dim.sql
│ │ │ └── 2dim_fill_holes.sql
│ │ └── listagg.sql
│ ├── hierarchical_queries
│ │ ├── common_table_expressions
│ │ │ ├── cycle.sql
│ │ │ ├── ex_01.sql
│ │ │ ├── search_depth_first.sql
│ │ │ └── two_tables.sql
│ │ └── start-with_connect-by
│ │ │ ├── ancestor-descendant
│ │ │ ├── clean-up.sql
│ │ │ ├── create-table.sql
│ │ │ ├── insert-data.sql
│ │ │ ├── procedure.plsql
│ │ │ └── try.sql
│ │ │ ├── nocycle
│ │ │ ├── clean-up.sql
│ │ │ ├── create-table.sql
│ │ │ ├── directed-graph.txt
│ │ │ ├── insert-edges.sql
│ │ │ ├── nodes-reachable-from-A-nocycle.sql
│ │ │ ├── nodes-reachable-from-A.sql
│ │ │ └── nodes-reachable-from-F.sql
│ │ │ ├── pruning-branches
│ │ │ ├── clean-up.sql
│ │ │ ├── create-table.sql
│ │ │ ├── insert-data.sql
│ │ │ └── select-data.sql
│ │ │ └── recursive-additions
│ │ │ ├── clean-up.sql
│ │ │ ├── create-table.sql
│ │ │ ├── insert-data.sql
│ │ │ └── select-hierarchically.sql
│ ├── in
│ │ └── columns_of_outer_statement.sql
│ ├── join
│ │ ├── apply
│ │ │ └── cross
│ │ │ │ └── ex-1
│ │ │ │ ├── cleanup.sql
│ │ │ │ ├── data.sql
│ │ │ │ ├── explain-plan-join.sql
│ │ │ │ ├── explain-plan.sql
│ │ │ │ ├── select.sql
│ │ │ │ └── tables.sql
│ │ ├── full_outer_join
│ │ │ ├── 01_simple.sql
│ │ │ ├── 02_one_table.sql
│ │ │ └── outer_join_and_left_join.sql
│ │ └── outer_join
│ │ │ ├── 3_tables.sql
│ │ │ ├── left_left.sql
│ │ │ ├── outer_join_01.sql
│ │ │ ├── outer_join_02.sql
│ │ │ ├── partitioned_outer_join.sql
│ │ │ ├── pesky_outer_join
│ │ │ ├── README.md
│ │ │ ├── inkscape.svgz
│ │ │ └── script.sql
│ │ │ └── pits_test.sql
│ ├── match_recognize
│ │ ├── find-consecutive-rows
│ │ │ ├── all.sql
│ │ │ ├── data.sql
│ │ │ └── one-row-per-match.sql
│ │ ├── find-foo-bar-baz.sql
│ │ ├── find-sequence-of-same.sql
│ │ ├── find-three-in-a-row.sql
│ │ └── stock-price
│ │ │ ├── data.sql
│ │ │ ├── select.sql
│ │ │ └── visualization.sql
│ ├── misc
│ │ ├── ascii-histogram.sql
│ │ ├── csv_to_columns
│ │ │ ├── col-format.sql
│ │ │ ├── create-table.sql
│ │ │ ├── drop-table.sql
│ │ │ ├── insert-values.sql
│ │ │ ├── run-in-sqlplus.sql
│ │ │ └── select.sql
│ │ └── sample
│ │ │ └── select-approx-5-percent.sql
│ ├── model
│ │ └── intro
│ │ │ ├── _run.sql
│ │ │ ├── add-record.sql
│ │ │ ├── condition.sql
│ │ │ ├── err-00984.sql
│ │ │ ├── err-32611.sql
│ │ │ ├── err-32613.sql
│ │ │ ├── err-32622.sql
│ │ │ ├── minimal.sql
│ │ │ ├── test-data.sql
│ │ │ ├── update-col-3.sql
│ │ │ ├── update-with-previous.sql
│ │ │ └── use-dimension-value.sql
│ ├── order_by
│ │ └── test_01.sql
│ ├── partition_extension_clause
│ │ ├── README.md
│ │ └── select_from_partition.sql
│ ├── pivot
│ │ ├── test_02.sql
│ │ ├── test_03.sql
│ │ ├── two_aggregates.sql
│ │ └── un
│ │ │ ├── ex-01.sql
│ │ │ └── visualized.png
│ ├── regression
│ │ └── regr_slope.sql
│ ├── set_operators
│ │ ├── minus_01.sql
│ │ └── precedence.sql
│ ├── skip_locked
│ │ ├── README.md
│ │ ├── call_process_next_item.sql
│ │ ├── create_tab.sql
│ │ ├── insert_initial.sql
│ │ ├── install.sql
│ │ ├── process_items.bat
│ │ └── process_next_item.plsql
│ ├── top_n
│ │ ├── 12c-30-pct.sql
│ │ ├── 12c-first-3-rows-with-ties.sql
│ │ ├── 12c-first-3-rows.sql
│ │ ├── 12c-first-row.sql
│ │ ├── 12c-offset-4-next-2.sql
│ │ ├── clean-up.sql
│ │ ├── data.sql
│ │ ├── row_number-paging.sql
│ │ ├── rownum-inner-query.sql
│ │ ├── rownum-paging.sql
│ │ └── rownum-wrong.sql
│ └── with
│ │ └── inline-function
│ │ └── example-01.sql
├── statement
│ └── nouns
│ │ ├── session
│ │ └── alter
│ │ │ └── set
│ │ │ └── current_schema
│ │ │ └── execute-immediate
│ │ │ ├── _run.sql
│ │ │ ├── clean-up.sql
│ │ │ ├── create-users.sql
│ │ │ ├── pkg-owner.sql
│ │ │ └── pkg-user.sql
│ │ └── system
│ │ └── alter
│ │ └── kill-session
│ │ └── kill_my_session.sql
├── update
│ └── returning_into.sql
└── where_in.sql
├── SQLLoader
├── .gitignore
├── README.md
├── binary-data
│ ├── Binary-code.jpg
│ ├── Eschenbergturm.jpg
│ ├── Oracle-Buildings.jpg
│ ├── all.sql
│ ├── create_table.sql
│ ├── create_table_long_raw.sql
│ ├── file-index.dat
│ ├── load.ctl
│ ├── load_long_raw_Binary-code.ctl
│ ├── load_long_raw_Eschenbergturm.ctl
│ └── load_long_raw_Oracle-Buildings.ctl
├── ex-case-when
│ ├── create_table.sql
│ ├── load.ctl
│ └── load.dat
├── ex-express-optionally_enclosed_by
│ ├── create_table.sql
│ ├── import_data.bat
│ └── some.dat
├── ex_02
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_2.ctl
│ ├── load_2.dat
│ └── readme.txt
├── ex_03
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_3.ctl
│ ├── load_3.dat
│ └── readme.txt
├── ex_04
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_4.ctl
│ ├── load_4.dat
│ └── readme.txt
├── ex_05
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_5.ctl
│ └── load_5.dat
├── ex_06
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_6.ctl
│ ├── load_6.dat
│ └── load_6_ok.ctl
├── ex_07
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_7.ctl
│ └── load_7.dat
├── ex_08
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_8.csv
│ └── load_8.ctl
├── ex_09
│ ├── README.md
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_09.ctl
│ └── load_09.dat
├── ex_10
│ ├── all.sql
│ ├── create_func.plsql
│ ├── create_table.sql
│ ├── data.csv
│ └── load.ctl
├── ex_11
│ ├── all.sql
│ ├── create_table.sql
│ ├── some.dat
│ ├── with_trailing_nullcols.ctl
│ └── without_trailing_nullcols.ctl
├── ex_12_skip-columns
│ ├── all.sql
│ ├── create_table.sql
│ ├── data.csv
│ └── load.ctl
├── ex_13_make-unique-indexes-unusable
│ ├── create_table.sql
│ ├── tab_with_pk.ctl
│ └── tab_with_pk.dat
└── fixed-width
│ ├── all.sql
│ ├── create_table.sql
│ ├── load_1.ctl
│ └── load_1.dat
├── SQLPlus
├── attribute
│ └── attribute.sql
├── break
│ ├── on-skip.sql
│ └── on.sql
├── column
│ └── width.sql
├── echo
│ └── script.sql
├── new-value
│ ├── multiple-records.sql
│ └── one-record.sql
├── set
│ └── exitcommit
│ │ ├── exit_commit_off.sql
│ │ ├── exit_commit_on.sql
│ │ ├── run.bat
│ │ └── select.sql
├── start
│ └── test_depth_limit.sql
├── store
│ ├── .gitignore
│ ├── README.md
│ └── store_into_stored.sql
└── whenever
│ └── sqlerror
│ └── exit.sql
├── UsersRoles
├── CloneUser
│ ├── .gitignore
│ ├── create_clone_script.sql
│ └── create_schema.sql
└── Profiles
│ └── password_verify_function.sql
├── errors
└── ORA
│ ├── 02266_unique-primary-keys-in-table-referenced-by-enabled-foreign-keys
│ └── partition-in-hierarchical-table.sql
│ ├── 02449_unique-primary-keys-in-table-referenced-by-foreign-keys
│ └── go.sql
│ ├── 06512_at-line
│ └── show-offending-line
│ │ ├── _run.sql
│ │ ├── body.sql
│ │ ├── error-backtrace.sql
│ │ ├── exec-01.sql
│ │ ├── show-code-line.sql
│ │ ├── spec.sql
│ │ └── sqlerrm.sql
│ └── 14402_updating-partition-key-column-would-cause-a-partition-change
│ └── show_error.sql
├── expimp
├── .gitignore
├── from_to_schema
│ ├── all.sql
│ ├── create_schemas.sql
│ ├── create_table.sql
│ └── select.sql
├── schema
│ ├── .gitignore
│ ├── connect_with_admin_right.sql
│ ├── create_schema.sql
│ ├── create_user_script.sql
│ ├── drop_schema.sql
│ └── run.sql
└── table_with_trigger
│ ├── 01.sql
│ ├── 01_table.sql
│ └── 01_trigger.sql
├── init-parameters
├── README.md
└── nls
│ └── sort-comp
│ └── eq.sql
├── logical-structures
└── segment
│ └── header
│ └── dump
│ └── go.sql
└── misc
└── ODCI
├── aggregation
└── ex-01
│ ├── _run.sql
│ ├── clean-up.sql
│ ├── func.sql
│ ├── test-select.sql
│ ├── test-table.sql
│ ├── type-body.sql
│ └── type.sql
└── table
└── multiplication
├── body.plsql
├── img
└── result.png
└── spec.plsql
/.gitignore:
--------------------------------------------------------------------------------
1 | *.swp
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/_run.sql:
--------------------------------------------------------------------------------
1 | @create-cluster.sql
2 | @create-index.sql
3 | @create-tables.sql
4 | @insert.sql
5 | @data-dictionary.sql
6 | @db-blocks.sql
7 | @plan.sql
8 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/create-cluster.sql:
--------------------------------------------------------------------------------
1 | create cluster tq84_cluster(
2 | id integer
3 | );
4 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/create-index.sql:
--------------------------------------------------------------------------------
1 | create index tq84_cluster_ix on cluster tq84_cluster;
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/create-tables.sql:
--------------------------------------------------------------------------------
1 | create table tq84_cluster_parent (
2 | id integer primary key,
3 | dt date
4 | )
5 | cluster tq84_cluster(id);
6 |
7 | create table tq84_cluster_child (
8 | id integer references tq84_cluster_parent,
9 | tx varchar2(20)
10 | )
11 | cluster tq84_cluster(id);
12 |
13 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/data-dictionary.sql:
--------------------------------------------------------------------------------
1 | select * from user_clusters where cluster_name = 'TQ84_CLUSTER';
2 | select * from user_clu_columns where cluster_name = 'TQ84_CLUSTER';
3 |
4 |
--------------------------------------------------------------------------------
/DatabaseObjects/Clusters/intro/drop.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_cluster_child;
2 | drop table tq84_cluster_parent;
3 | drop cluster tq84_cluster;
4 |
--------------------------------------------------------------------------------
/DatabaseObjects/Database-Links/function.sql:
--------------------------------------------------------------------------------
1 | select
2 | func_name @ link_name('param one', 'param two')
3 | from
4 | dual;
5 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/own-namespace.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- The name of an index is in a different namespace thant
3 | -- the table. So, the following two statements
4 | -- cause no error:
5 | --
6 |
7 | create table tq84_foo (a number, b number);
8 | create index tq84_foo on tq84_foo(a);
9 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/create-local-index.sql:
--------------------------------------------------------------------------------
1 | create index tq84_part_local_ix on tq84_part_ix_test (val_2)
2 | local (
3 | partition p_lt_10000 (
4 | subpartition sp_foo,
5 | subpartition sp_bar,
6 | subpartition sp_baz
7 | )
8 | );
9 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/create-ordinary-index.sql:
--------------------------------------------------------------------------------
1 | create index tq84_part_ordinary_ix on tq84_part_ix_test (val_1);
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/gather-stats.sql:
--------------------------------------------------------------------------------
1 | exec dbms_stats.gather_table_stats(user, 'tq84_part_ix_test');
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/insert.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_part_ix_test values (10001, 'foo', 11, 13, 17);
2 | insert into tq84_part_ix_test values (10002, 'bar', 23, 29, 31);
3 | insert into tq84_part_ix_test values (20003, 'baz', 37, 39, 41);
4 |
5 | commit;
6 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/user_ind_partitions.sql:
--------------------------------------------------------------------------------
1 | select
2 | index_name,
3 | partition_name,
4 | global_stats,
5 | composite,
6 | status
7 | from
8 | user_ind_partitions
9 | where
10 | index_name in ('TQ84_PART_LOCAL_IX', 'TQ84_PART_GLOBAL_IX');
11 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/user_ind_statistics.sql:
--------------------------------------------------------------------------------
1 | select
2 | object_type ,
3 | index_name ,
4 | partition_name , subpartition_name
5 | partition_position, subpartition_position,
6 | num_rows,
7 | global_stats,
8 | last_analyzed,
9 | stale_stats
10 | from
11 | user_ind_statistics
12 | where
13 | table_name = 'TQ84_PART_IX_TEST';
14 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/user_ind_subpartitions.sql:
--------------------------------------------------------------------------------
1 | select
2 | index_name,
3 | partition_name,
4 | subpartition_name,
5 | global_stats,
6 | status
7 | from
8 | user_ind_subpartitions
9 | where
10 | index_name in ('TQ84_PART_LOCAL_IX', 'TQ84_PART_GLOBAL_IX');
11 |
--------------------------------------------------------------------------------
/DatabaseObjects/Indexes/partitioned/local/vs-ordinary/user_indexes.sql:
--------------------------------------------------------------------------------
1 | select
2 | index_name,
3 | partitioned,
4 | status
5 | from
6 | user_indexes
7 | where
8 | index_name in ('TQ84_PART_LOCAL_IX', 'TQ84_PART_GLOBAL_IX');
9 |
--------------------------------------------------------------------------------
/DatabaseObjects/MaterializedViews/on_prebuilt_table_iot.sql:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/DatabaseObjects/MaterializedViews/on_prebuilt_table_iot.sql
--------------------------------------------------------------------------------
/DatabaseObjects/README.md:
--------------------------------------------------------------------------------
1 | See ../Installed/data-dictionary/objects/object_type.sql
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Sequences/sequence.sql:
--------------------------------------------------------------------------------
1 | create sequence tq84_sequence
2 | start with 1
3 | increment by 1
4 | nocache
5 | nocycle;
6 |
7 | select tq84_sequence.nextval from dual;
8 |
9 | select * from user_sequences where sequence_name = 'TQ84_SEQUENCE';
10 |
11 | drop sequence tq84_sequence;
12 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/12c/identity_start_with.sql:
--------------------------------------------------------------------------------
1 | create table tq84_identity (
2 | id number generated as identity start with 10 increment by 3 primary key,
3 | txt varchar2(10)
4 | );
5 |
6 |
7 | insert into tq84_identity(txt) values ('ten' );
8 | insert into tq84_identity(txt) values ('thirteen');
9 | insert into tq84_identity(txt) values ('sixtenn' );
10 |
11 | select * from tq84_identity;
12 |
13 | drop table tq84_identity purge;
14 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/AlterTable/add_column.sql:
--------------------------------------------------------------------------------
1 | create table tq84_table (
2 | col_1 number,
3 | col_2 date
4 | );
5 |
6 | desc tq84_table;
7 |
8 | insert into tq84_table values (1, sysdate);
9 |
10 | alter table tq84_table add ( col_3 varchar2(10));
11 | alter table tq84_table add ( col_4 number, col_5 number);
12 | alter table tq84_table add ( col_6 number default 7);
13 |
14 | desc tq84_table;
15 |
16 | select * from tq84_table;
17 |
18 | drop table tq84_table purge;
19 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/AlterTable/drop_column.sql:
--------------------------------------------------------------------------------
1 | create table tq84_table (
2 | col_1 number,
3 | col_2 date,
4 | col_3 varchar2(10),
5 | col_4 varchar2(10)
6 | );
7 |
8 | insert into tq84_table values (1, sysdate, 'x', 'y');
9 |
10 | alter table tq84_table drop column col_1;
11 | alter table tq84_table drop (col_2, col_3);
12 |
13 | desc tq84_table;
14 |
15 | select * from tq84_table;
16 |
17 | drop table tq84_table purge;
18 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/AlterTable/rename_column.sql:
--------------------------------------------------------------------------------
1 | create table tq84_table (
2 | col_1 number,
3 | col_2 date
4 | );
5 |
6 | insert into tq84_table values (1, sysdate);
7 |
8 | alter table tq84_table rename column col_1 to nm;
9 | alter table tq84_table rename column col_2 to dt;
10 |
11 | desc tq84_table;
12 |
13 | select * from tq84_table;
14 |
15 | drop table tq84_table purge;
16 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/AttributeClustering/user_tables.sql:
--------------------------------------------------------------------------------
1 | create table tq84_clustering (
2 | id number primary key,
3 | flag_1 varchar2(2) not null,
4 | flag_2 varchar2(2) not null,
5 | col_1 varchar2(20),
6 | col_2 varchar2(20),
7 | col_3 varchar2(50)
8 | )
9 | clustering
10 | by linear order (
11 | flag_1,
12 | flag_2
13 | );
14 |
15 | select * from user_tables where clustering = 'YES';
16 |
17 | drop table tq84_clustering;
18 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/ILM/add-policy.sql:
--------------------------------------------------------------------------------
1 | create table tq84_ilm_policy (
2 | id number primary key,
3 | col_1 varchar2(10),
4 | col_2 varchar2(10)
5 | )
6 | ilm add policy row store compress advanced segment after 3 days of no modification
7 | ;
8 |
9 | -- Alternatively, with alter table:
10 | --
11 | -- alter table tq84_ilm_policy
12 | -- ilm add policy row store compress advanced segment after 3 days of no modification;
13 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/Partitions/distribution-techniques/composite/subpartition-template/interval-list.sql:
--------------------------------------------------------------------------------
1 | create table tq84_interval_list (
2 | num number,
3 | txt varchar2(3),
4 | val number
5 | )
6 | partition by range (num) interval (100)
7 | subpartition by list (txt)
8 | subpartition template (
9 | subpartition sp_foo values ('foo'),
10 | subpartition sp_bar values ('bar'),
11 | subpartition sp_baz values ('baz')
12 | )
13 | (
14 | partition p_init values less than (100)
15 | );
16 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/Partitions/hash_partitioning.sql:
--------------------------------------------------------------------------------
1 | create table tq84_hash_partition (
2 | id number,
3 | txt varchar2(10)
4 | )
5 | partition by hash (txt)
6 | partitions 4;
7 |
8 |
9 | select partition_name from user_tab_partitions where table_name = 'TQ84_HASH_PARTITION';
10 |
11 |
12 | drop table tq84_hash_partition purge;
13 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/RecycleBin/purge.sql:
--------------------------------------------------------------------------------
1 | purge recyclebin;
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/RecycleBin/purge_tablespace.sql:
--------------------------------------------------------------------------------
1 | purge tablespace users;
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/RecycleBin/show_recycle_bin_sql.sql:
--------------------------------------------------------------------------------
1 | select object_name, original_name, operation, droptime from recyclebin;
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/RecycleBin/show_recycle_bin_sqlplus.sql:
--------------------------------------------------------------------------------
1 | show recyclebin
2 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/columns/diff-structure/create-tables.sql:
--------------------------------------------------------------------------------
1 | drop table y;
2 | drop table x;
3 |
4 | create table x (a number, b number(2), c number(2,3), d varchar2(4) , f date null, g varchar2(20), h number(6,2));
5 | create table y (a number, c number(2,3), d date , e varchar2(5), f date not null, g varchar2(20), h number(7,2));
6 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/columns/virtual/modify.sql:
--------------------------------------------------------------------------------
1 | create table tq84_virtual_col (
2 | a number,
3 | b number,
4 | c as (a + b)
5 | );
6 |
7 |
8 | insert into tq84_virtual_col (a, b) values (1,1);
9 | insert into tq84_virtual_col (a, b) values (4,3);
10 | insert into tq84_virtual_col (a, b) values (2,7);
11 |
12 | select * from tq84_virtual_col;
13 |
14 | alter table tq84_virtual_col modify c as (a*b);
15 |
16 | select * from tq84_virtual_col;
17 |
18 | drop table tq84_virtual_col purge;
19 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/parallel/degree-default-16.sql:
--------------------------------------------------------------------------------
1 | create table tq84_parallel_degree_default (
2 | id number primary key,
3 | col_1 varchar2(10) not null,
4 | col_2 varchar2(10)
5 | )
6 | parallel (degree default);
7 |
8 |
9 | create table tq84_parallel_16 (
10 | id number primary key,
11 | col_1 varchar2(10) not null,
12 | col_2 varchar2(10)
13 | )
14 | parallel 16;
15 |
16 |
17 | select
18 | table_name,
19 | degree
20 | from
21 | user_tables
22 | where
23 | table_name like 'TQ84%';
24 |
--------------------------------------------------------------------------------
/DatabaseObjects/Tables/types/data-dictionary.sql:
--------------------------------------------------------------------------------
1 | select
2 | obj.object_name,
3 | obj.object_type,
4 | obj.temporary,
5 | -- tab.temporary,
6 | tab.duration,
7 | tab.iot_type,
8 | tab.tablespace_name
9 | from
10 | user_objects obj left join
11 | user_tables tab on obj.object_name = tab.table_name
12 | where
13 | substr(object_name, 1, 9) = 'TBL_TYPE_' or
14 | substr(object_name, 1, 8) = 'ORA$PTT_' -- <== private temporary tables not shown in user_objects
15 | ;
16 |
--------------------------------------------------------------------------------
/DatabaseObjects/Triggers/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 | Using triggers to apply sequences to primary keys «auto_increment»: [auto_increment.sql](https://github.com/ReneNyffenegger/oracle-patterns/blob/master/DatabaseObjects/Sequences/auto_increment.sql).
3 |
4 | [Triggers on views](https://github.com/ReneNyffenegger/oracle-patterns/tree/master/DatabaseObjects/Views/triggersOnViews).
5 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/.gitignore:
--------------------------------------------------------------------------------
1 | user_all_dba_names.html
2 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/alert/arguments/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | sequence_id,
3 | reason_message_id,
4 | reason_argument_count,
5 | reason_argument_1,
6 | reason_argument_2,
7 | reason_argument_3,
8 | reason_argument_4,
9 | reason_argument_5,
10 | action_message_id,
11 | action_argument_count,
12 | action_argument_1,
13 | action_argument_2,
14 | action_argument_3,
15 | action_argument_4,
16 | action_argument_5
17 | from
18 | dba_alert_arguments;
19 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/alert/history/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | --reason_id,
3 | owner,
4 | object_name,
5 | subobject_name,
6 | object_type,
7 | reason
8 | from
9 | dba_alert_history
10 | order by
11 | sequence_id desc;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/audit/exists/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | os_username,
3 | timestamp,
4 | owner,
5 | obj_name,
6 | action_name,
7 | returncode,
8 | sql_text
9 | from
10 | dba_audit_exists;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/catalog/table_types.sql:
--------------------------------------------------------------------------------
1 | select
2 | --count(*),
3 | lower(table_type) table_type
4 | from
5 | dba_catalog
6 | group by
7 | table_type
8 | order by
9 | table_type;
10 | --
11 | -- sequence
12 | -- synonym
13 | -- table
14 | -- view
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/connect_role_grantees/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | grantee,
3 | path_of_connect_role_grant,
4 | admin_opt
5 | from
6 | dba_connect_role_grantees
7 | order by
8 | grantee;
9 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/cons_columns/show_constraint_columns.sql:
--------------------------------------------------------------------------------
1 | create table tq84_cons (
2 | col_a number,
3 | col_b varchar2(10),
4 | col_c date,
5 | col_d varchar2(10),
6 | col_e number,
7 | --
8 | constraint tq84_cons_pk primary key(col_e, col_b)
9 | );
10 |
11 | select
12 | column_name
13 | from
14 | user_cons_columns
15 | where
16 | constraint_name = 'TQ84_CONS_PK'
17 | order by
18 | position;
19 | -- COL_E
20 | -- COL_B
21 |
22 | drop table tq84_cons purge;
23 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/constraints/constraint_type.sql:
--------------------------------------------------------------------------------
1 | select
2 | -- count(*),
3 | constraint_type
4 | from
5 | dba_constraints
6 | group by
7 | constraint_type
8 | order by
9 | count(*) desc;
10 | -- C
11 | -- P
12 | -- R
13 | -- O
14 | -- U
15 | -- F
16 | -- V
17 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/context/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | schema,
3 | namespace,
4 | package,
5 | type
6 | from
7 | dba_context
8 | order by
9 | schema,
10 | namespace;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/cpu_usage_statistics/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | timestamp,
3 | cpu_count,
4 | cpu_core_count,
5 | cpu_socket_count,
6 | version,
7 | dbid
8 | from
9 | dba_cpu_usage_statistics
10 | order by
11 | timestamp desc;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/data_files/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | status,
3 | online_status,
4 | tablespace_name,
5 | to_char(bytes /1024/1024, '999,999.00') mb,
6 | to_char(user_bytes /1024/1024, '999,999.00') user_mb,
7 | to_char(maxbytes /1024/1024, '999,999.00') max_mb,
8 | -- blocks,
9 | -- user_blocks
10 | file_id,
11 | relative_fno,
12 | increment_by,
13 | file_name
14 | from
15 | dba_data_files
16 | order by
17 | status,
18 | online_status,
19 | tablespace_name;
20 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/datapump/jobs/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner_name,
3 | job_name,
4 | operation,
5 | job_mode,
6 | state,
7 | degree,
8 | attached_sessions,
9 | datapump_sessions
10 | from
11 | dba_datapump_jobs
12 | order by
13 | owner_name,
14 | job_name;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/datapump/sessions/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner_name,
3 | job_name,
4 | inst_id,
5 | saddr,
6 | session_type
7 | from
8 | dba_datapump_sessions
9 | order by
10 | owner_name,
11 | job_name;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/db_links/README.md:
--------------------------------------------------------------------------------
1 | # dba_db_links
2 |
3 | Show existing database links.
4 |
5 | Use [v$dblink](https://github.com/ReneNyffenegger/oracle-patterns/tree/master/Installed/dynamic-performance-views/dblink)
6 | to show the open database links in a session.
7 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/db_links/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | db_link,
4 | username,
5 | host,
6 | created
7 | from
8 | dba_db_links
9 | order by
10 | db_link;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/ddl_locks/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | name,
4 | type,
5 | mode_held,
6 | mode_requested,
7 | session_id
8 | from
9 | dba_ddl_locks
10 | order by
11 | case mode_requested
12 | when 'Exclusive' then 1
13 | when 'Share' then 2
14 | when 'None' then 3
15 | else 4 end,
16 | owner,
17 | name
18 | ;
19 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/def_audit_opts/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | alt "alter" ,
3 | aud "audit" ,
4 | com "comment" ,
5 | del "delete" ,
6 | gra "grant" ,
7 | ind "index" ,
8 | ins "insert" ,
9 | loc "lock" ,
10 | ren "rename" ,
11 | sel "select" ,
12 | upd "update" ,
13 | --ref -- Obsolete
14 | exe "execute" ,
15 | fbk "flashback",
16 | rea "read"
17 | from
18 | all_def_audit_opts
19 | ;
20 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/dependencies/example-01.sql:
--------------------------------------------------------------------------------
1 | create table tq84_root (a number);
2 |
3 | create view tq84_dep_1 as select a*2 a2 from tq84_root;
4 |
5 | create view tq84_dep_2 as select a2*2 a4 from tq84_dep_1;
6 |
7 | select name from user_dependencies where referenced_name = 'TQ84_ROOT';
8 | -- TQ84_DEP_1
9 |
10 | select name from user_dependencies where referenced_name = 'TQ84_DEP_1';
11 | -- TQ84_DEP_2
12 |
13 | drop view tq84_dep_2;
14 | drop view tq84_dep_1;
15 | drop table tq84_root purge;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/dml_locks/example-01.sql:
--------------------------------------------------------------------------------
1 | create table tq84_dml_lock_test (
2 | pk number primary key
3 | );
4 |
5 | select * from dba_dml_locks;
6 |
7 | insert into tq84_dml_lock_test values (1);
8 |
9 | select
10 | mode_held,
11 | mode_requested,
12 | --last_convert currend_mode_granted_secs_ago,
13 | blocking_others
14 | from
15 | dba_dml_locks
16 | where
17 | owner = user;
18 | --
19 | -- Row-X (SX) None Not Blocking
20 | --
21 |
22 | drop table tq84_dml_lock_test purge;
23 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/feature_usage_statistics/overview.sql:
--------------------------------------------------------------------------------
1 | select
2 | name,
3 | detected_usages,
4 | currently_used,
5 | description,
6 | first_usage_date,
7 | last_usage_date
8 | from
9 | dba_feature_usage_statistics
10 | where
11 | version = '11.2.0.3.0';
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/invalid_objects/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | object_name,
4 | subobject_name,
5 | -- object_id,
6 | -- data_object_id,
7 | object_type,
8 | last_ddl_time,
9 | status,
10 | timestamp,
11 | temporary,
12 | generated,
13 | secondary,
14 | namespace,
15 | edition_name
16 | from
17 | dba_invalid_objects
18 | order by
19 | owner,
20 | object_name;
21 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/jobs/running/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | jru.sid,
3 | jru.last_date,
4 | jru.this_date,
5 | jbb.log_User,
6 | jbb.priv_user,
7 | jbb.schema_user
8 | from
9 | dba_jobs_running jru join
10 | dba_jobs jbb on jru.job = jbb.job;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/jobs/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | job,
3 | log_user,
4 | priv_user,
5 | schema_user,
6 | last_date,
7 | --last_sec,
8 | --this_date,
9 | --this_sec,
10 | next_date,
11 | --next_sec,
12 | round(total_time),
13 | broken,
14 | interval,
15 | failures,
16 | what
17 | --nls_env,
18 | --misc_env,
19 | --instance
20 | from
21 | dba_jobs
22 | order by
23 | job;
24 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/logstdby/parameters/parameter-names.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(name)
3 | from
4 | dba_logstdby_parameters
5 | order by
6 | lower(name);
7 | --
8 | -- allow_transformation
9 | -- apply_servers
10 | -- event_log_dest
11 | -- log_auto_delete
12 | -- log_auto_del_retention_target
13 | -- max_events_recorded
14 | -- max_servers
15 | -- max_sga
16 | -- prepare_servers
17 | -- preserve_commit_order
18 | -- record_applied_ddl
19 | -- record_skip_ddl
20 | -- record_skip_errors
21 | -- record_unsupported_operations
22 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/logstdby/skip/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | name,
4 | statement_opt,
5 | use_like,
6 | esc,
7 | proc,
8 | error
9 | from
10 | dba_logstdby_skip
11 | order by
12 | owner;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/logstdby/unsupported/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | column_name,
5 | attributes,
6 | data_type
7 | from
8 | dba_logstdby_unsupported
9 | order by
10 | owner,
11 | table_name,
12 | column_name;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/logstdby/unsupported/table/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name
4 | from
5 | dba_logstdby_unsupported_table
6 | order by
7 | owner,
8 | table_name;
9 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/network/acl_privileges/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | prv.principal,
3 | prv.privilege,
4 | acl.host,
5 | acl.lower_port,
6 | acl.upper_port,
7 | --acl.acl,
8 | prv.is_grant,
9 | prv.invert,
10 | prv.start_date
11 | from
12 | dba_network_acl_privileges prv join
13 | dba_network_acls acl on prv.aclid = acl.aclid
14 | order by
15 | prv.principal,
16 | prv.privilege;
17 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/network/acls/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | host,
3 | lower_port,
4 | upper_port,
5 | acl,
6 | aclid
7 | from
8 | dba_network_acls;
9 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/nls/database_parameters/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(parameter) parameter,
3 | lower(value ) value
4 | from
5 | nls_database_parameters
6 | order by
7 | parameter;
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/nls/instance_parameters/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(parameter) parameter,
3 | lower(value ) value
4 | from
5 | nls_instance_parameters
6 | order by
7 | parameter;
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/nls/session_parameters/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(parameter) parameter,
3 | lower(value ) value
4 | from
5 | nls_session_parameters
6 | order by
7 | parameter;
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/obj/audit_opts/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | object_name,
4 | object_type,
5 | alt,
6 | aud,
7 | com,
8 | del,
9 | gra,
10 | ind,
11 | loc,
12 | ren,
13 | sel,
14 | upd,
15 | ref,
16 | exe,
17 | cre,
18 | rea,
19 | wri,
20 | fbk
21 | from
22 | dba_obj_audit_opts
23 | order by
24 | owner,
25 | object_name;
26 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/object/size/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | name,
4 | type,
5 | source_size,
6 | parsed_size,
7 | code_size,
8 | error_size
9 | from
10 | dba_object_size
11 | order by
12 | owner,
13 | greatest(source_size, parsed_size, code_size) desc;
14 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/outstanding_alerts/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | -- sequence_id
3 | -- reasonid, -- Join with v$alert_Types
4 | reason,
5 | suggested_action,
6 | metric_value,
7 | message_type,
8 | message_level,
9 | advisor_name
10 | owner,
11 | object_name,
12 | subobject_name,
13 | object_type,
14 | message_group
15 | -- time_suggested,
16 | -- creation_time
17 | from
18 | dba_outstanding_alerts;
19 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/part_tables/README.md:
--------------------------------------------------------------------------------
1 |
2 | ## Links
3 | https://github.com/ReneNyffenegger/oracle-patterns/tree/master/DatabaseObjects/Tables/Partitions
4 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/password_limits/resource_names.sql:
--------------------------------------------------------------------------------
1 | select
2 | resource_name
3 | from
4 | user_password_limits
5 | order by
6 | resource_name;
7 | --
8 | -- FAILED_LOGIN_ATTEMPTS
9 | -- PASSWORD_GRACE_TIME
10 | -- PASSWORD_LIFE_TIME
11 | -- PASSWORD_LOCK_TIME
12 | -- PASSWORD_REUSE_MAX
13 | -- PASSWORD_REUSE_TIME
14 | -- PASSWORD_VERIFY_FUNCTION
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/registry/banners/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | banner
3 | from
4 | all_registry_banners
5 | order by
6 | lower(banner);
7 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/registry/database/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | platform_id,
3 | platform_name,
4 | edition
5 | from
6 | dba_registry_database;
7 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/registry/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | comp_id,
3 | comp_name,
4 | schema,
5 | procedure,
6 | version,
7 | status,
8 | modified,
9 | namespace,
10 | other_schemas
11 | from
12 | dba_registry
13 | order by
14 | lower(comp_name);
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/represoultion/method/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | conflict_type,
3 | method_name
4 | from
5 | dba_represolution_method
6 | order by
7 | conflict_type,
8 | method_name;
9 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/resource/incarnations/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | resource_type,
3 | resource_name,
4 | db_unique_name,
5 | db_domain,
6 | instance_name,
7 | host_name,
8 | startup_time
9 | from
10 | dba_resource_incarnations;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/resource/limits/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(resource_name),
3 | limit
4 | from
5 | user_resource_limits
6 | order by
7 | lower(resource_name);
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/role/privs/show-privs-for-specific-user.sql:
--------------------------------------------------------------------------------
1 | select
2 | granted_role,
3 | admin_option,
4 | default_role
5 | from
6 | dba_role_privs
7 | where
8 | grantee = 'RNYFFENEGGER'
9 | order by
10 | granted_role;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/role/role_privs/show.sql:
--------------------------------------------------------------------------------
1 | select * from role_role_privs;
2 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/role/sys_privs/show-privs-for-specific-role.sql:
--------------------------------------------------------------------------------
1 | select
2 | role,
3 | privilege,
4 | admin_option
5 | from
6 | role_sys_privs
7 | where
8 | role in ('CONNECT', 'RESOURCE')
9 | order by
10 | role,
11 | privilege;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/role/tab_privs/show-privs-for-specific-role.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | column_name,
5 | privilege,
6 | grantable
7 | from
8 | role_tab_privs
9 | where
10 | role = 'R_DEVELOP'
11 | order by
12 | owner,
13 | table_name,
14 | column_name nulls last,
15 | privilege;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/roles/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | role,
3 | password_required,
4 | authentication_type,
5 | common,
6 | oracle_maintained
7 | from
8 | dba_roles
9 | order by
10 | oracle_maintained,
11 | role;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/scheduler/global_attribute/attribute_names.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(attribute_name) name
3 | from
4 | dba_scheduler_global_attribute
5 | order by
6 | lower(attribute_name);
7 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/segments/find-largest.sql:
--------------------------------------------------------------------------------
1 | select /*+ parallel(16) */
2 | round(bytes / 1024/1024/1024, 2) size_gb,
3 | owner,
4 | segment_name,
5 | tablespace_name,
6 | segment_type,
7 | segment_subtype
8 | from
9 | dba_segments
10 | order by
11 | bytes desc nulls last;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/source/show-package-bodys-source-text.sql:
--------------------------------------------------------------------------------
1 | select
2 | line,
3 | text
4 | from
5 | dba_source
6 | where
7 | line between 5 and 15 and
8 | owner = user and
9 | -- name = 'STANDARD' and
10 | name = 'TQ84_PKG_B' and
11 | type in ('PACKAGE BODY', 'TYPE BODY', 'PROCEDURE', 'FUNCTION')
12 | -- origin_con_id = 0
13 | order by
14 | line;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sql/management_config/parameter_names.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(parameter_name)
3 | from
4 | dba_sql_management_config
5 | order by
6 | parameter_name;
7 | --
8 | -- plan_retention_weeks
9 | -- space_budget_percent
10 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sql/monitor_usage/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | num_db_reports,
3 | num_em_reports,
4 | first_db_report_time,
5 | last_db_report_time,
6 | first_em_report_time,
7 | last_em_report_time
8 | from
9 | dba_sql_monitor_usage
10 | order by
11 | first_db_report_time;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sql/plan/dir_objects/joins.sql:
--------------------------------------------------------------------------------
1 | select
2 | obj.object_name,
3 | obj.subobject_name,
4 | dir.reason,
5 | dir.created,
6 | dir.type,
7 | obj.object_type
8 | from
9 | dba_sql_plan_dir_objects obj join
10 | dba_sql_plan_directives dir on obj.directive_id = dir.directive_id
11 | where
12 | obj.owner = 'RNYFFENEGGER'
13 | order by
14 | dir.created desc;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sql/plan/directives/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | directive_id,
3 | type,
4 | enabled,
5 | auto_drop,
6 | reason,
7 | to_char(created , 'dd.mm.yy hh24:mi:ss') created,
8 | to_char(last_modified, 'dd.mm.yy hh24:mi:ss') last_modified,
9 | to_char(last_used , 'dd.mm.yy hh24:mi:ss') last_used
10 | --notes
11 | from
12 | dba_sql_plan_directives
13 | order by
14 | created desc;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sql/profiles/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | name,
3 | category,
4 | created,
5 | last_modified,
6 | description,
7 | type,
8 | task_id,
9 | task_exec_name,
10 | --task_obj_id,
11 | --task_fnd_id,
12 | --task_rec_id,
13 | --task_con_dbid,
14 | sql_text,
15 | signature,
16 | status
17 | from
18 | dba_sql_profiles
19 | order by
20 | status,
21 | created desc;
22 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sqlset/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | id,
3 | owner,
4 | name,
5 | description,
6 | statement_count,
7 | con_dbid,
8 | created,
9 | last_modified
10 | from
11 | dba_sqlset
12 | order by
13 | owner,
14 | created desc;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/stat_extensions/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | extension_name,
5 | extension,
6 | creator,
7 | droppable
8 | from
9 | dba_stat_extensions
10 | order by
11 | owner,
12 | table_name;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/stored_settings/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | object_name,
4 | param_name,
5 | param_value,
6 | object_type,
7 | origin_con_id
8 | --object_id
9 | from
10 | dba_stored_settings
11 | order by
12 | owner,
13 | object_name;
14 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/streams/columns/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | column_name,
5 | sync_capture_version,
6 | sync_capture_reason,
7 | apply_version,
8 | apply_reason
9 | from
10 | dba_streams_columns
11 | order by
12 | owner,
13 | table_name,
14 | column_name;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/streams/newly_supported/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | reason,
5 | compatible
6 | from
7 | dba_streams_newly_supported
8 | order by
9 | owner,
10 | table_name;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/streams/unsupported/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | reason,
5 | auto_filtered
6 | from
7 | dba_streams_unsupported
8 | order by
9 | owner,
10 | table_name;
11 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sum_delta/joins.sql:
--------------------------------------------------------------------------------
1 | select /*+ parallel(16) */
2 | obj.owner,
3 | obj.object_name,
4 | obj.object_type,
5 | --sdt.tableobj#,
6 | --sdt.partitionobj#,
7 | sdt.dmloperation,
8 | sdt.scn,
9 | sdt.timestamp,
10 | sdt.lowrowid,
11 | sdt.highrowid,
12 | sdt.sequence,
13 | sdt.xid
14 | from
15 | all_sumdelta sdt left join
16 | dba_objects obj on sdt.tableobj# = obj.object_id
17 | where
18 | sdt.timestamp <= sysdate -- ???
19 | order by
20 | sdt.timestamp desc;
21 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/summaries/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | summary_name,
4 | container_owner,
5 | container_name,
6 | refresh_method,
7 | contains_views,
8 | summary,
9 | unusable,
10 | restricted_syntax,
11 | inc_refreshable,
12 | known_stale,
13 | query_len
14 | query,
15 | --last_refresh_scn,
16 | last_refresh_date,
17 | fullrefreshtim,
18 | increfreshtim
19 | from
20 | dba_summaries
21 | order by
22 | owner,
23 | last_refresh_date desc;
24 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/summary/aggregates/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | summary_name,
4 | --position_in_select,
5 | container_column,
6 | agg_function,
7 | distinctflag,
8 | measure
9 | from
10 | dba_summary_aggregates
11 | order by
12 | owner,
13 | summary_name,
14 | position_in_select;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/summary/detail_tables/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | summary_name,
4 | detail_owner,
5 | detail_relation,
6 | detail_type,
7 | detail_alias
8 | from
9 | dba_summary_detail_tables
10 | order by
11 | owner,
12 | summary_name;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/summary/joins/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | summary_name,
4 | detailobj1_owner,
5 | detailobj1_relation,
6 | detailobj1_column,
7 | operator,
8 | detailobj2_owner,
9 | detailobj2_relation,
10 | detailobj2_column
11 | from
12 | dba_summary_joins
13 | order by
14 | owner,
15 | summary_name;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/summary/keys/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | summary_name,
4 | position_in_select,
5 | container_column,
6 | detailobj_owner,
7 | detailobj_name,
8 | detailobj_alias,
9 | detailobj_type,
10 | detailobj_column
11 | from
12 | dba_summary_keys
13 | order by
14 | owner,
15 | summary_name,
16 | position_in_select;
17 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/supplemental_logging/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | minimal,
3 | primary_key,
4 | unique_index,
5 | foreign_key,
6 | all_column,
7 | procedural
8 | from
9 | dba_supplemental_logging;
10 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/sys_privs/show-privs-for-specific-user.sql:
--------------------------------------------------------------------------------
1 | select
2 | privilege,
3 | admin_option
4 | from
5 | dba_sys_privs
6 | where
7 | grantee = 'RNYFFENEGGER';
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/cols/hidden-and-virtual-columns.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | column_name,
5 | hidden_column,
6 | virtual_column,
7 | data_type,
8 | qualified_col_name,
9 | column_id,
10 | internal_column_id,
11 | segment_column_id
12 | from
13 | dba_tab_cols
14 | where
15 | hidden_column <> 'NO' or
16 | virtual_column <> 'NO'
17 | order by
18 | owner,
19 | table_name,
20 | column_id;
21 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/comments/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | comments,
5 | table_type,
6 | origin_con_id
7 | from
8 | dba_tab_comments
9 | where
10 | comments is not null
11 | order by
12 | owner,
13 | table_name
14 | ;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/modifications/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | table_owner,
3 | table_name,
4 | partition_name,
5 | subpartition_name,
6 | inserts,
7 | updates,
8 | deletes,
9 | truncated,
10 | drop_segments,
11 | timestamp
12 | from
13 | dba_tab_modifications
14 | order by
15 | table_owner,
16 | timestamp desc;
17 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/partitions/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 | https://github.com/ReneNyffenegger/oracle-patterns/tree/master/DatabaseObjects/Tables/Partitions
3 |
4 | https://github.com/ReneNyffenegger/oracle-patterns/tree/master/Installed/data-dictionary/tab_subpartitions
5 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/privs/show-privs-for-specific-user.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | grantor,
5 | privilege,
6 | grantable,
7 | hierarchy
8 | from
9 | dba_tab_privs
10 | where
11 | grantee = 'RENE'
12 | order by
13 | owner,
14 | table_name,
15 | privilege;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/statistics/stale-or-no-statistics.sql:
--------------------------------------------------------------------------------
1 | select
2 | tst.owner,
3 | tst.table_name,
4 | tst.last_analyzed,
5 | tst.object_type
6 | from
7 | all_tab_statistics tst join
8 | all_users usr on tst.owner = usr.username
9 | where
10 | ( stale_stats is null or stale_stats = 'YES' ) and
11 | usr.oracle_maintained <> 'Y' and
12 | table_name not like 'BIN$%'
13 | order by
14 | owner,
15 | table_name;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/tab/subpartitions/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 |
3 | https://github.com/ReneNyffenegger/oracle-patterns/tree/master/DatabaseObjects/Tables/Partitions
4 |
5 | https://github.com/ReneNyffenegger/oracle-patterns/tree/master/Installed/data-dictionary/tab_partitions
6 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/temp/free_space/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | tablespace_name,
3 | round(tablespace_size /1024/1204/1024, 2) size_gb,
4 | round(allocated_space /1024/1024/1024, 2) alloc_gb,
5 | round(free_space /1024/1024/1024, 2) free_gb
6 | from
7 | dba_temp_free_space;
8 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/transformations/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | transformation_id,
3 | owner,
4 | name,
5 | from_type,
6 | to_type
7 | from
8 | dba_transformations
9 | order by
10 | owner,
11 | name;
12 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/trigger/cols/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | table_owner,
3 | table_name,
4 | column_name,
5 | column_list,
6 | column_usage,
7 | trigger_owner,
8 | trigger_name
9 | from
10 | dba_trigger_cols
11 | order by
12 | table_owner,
13 | table_name,
14 | column_name;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/ts_quotas/show.sql:
--------------------------------------------------------------------------------
1 | select /*+ parallel(16) */
2 | username,
3 | tablespace_name,
4 | round(bytes/1024/1024/1024, 2) gb,
5 | max_bytes,
6 | blocks,
7 | max_blocks
8 | from
9 | dba_ts_quotas
10 | order by
11 | username,
12 | tablespace_name;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/unused/col_tabs/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | count
5 | from
6 | dba_unused_col_tabs
7 | order by
8 | owner,
9 | table_name;
10 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/updatable_columns/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | column_name,
5 | insertable,
6 | deletable
7 | from
8 | dba_updatable_columns
9 | order by
10 | owner,
11 | table_name,
12 | column_name;
13 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/users/account_status.sql:
--------------------------------------------------------------------------------
1 | select
2 | count(*),
3 | account_status
4 | from
5 | dba_users
6 | group by
7 | account_status
8 | order by
9 | account_status;
10 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/users/joins.sql:
--------------------------------------------------------------------------------
1 | select
2 | usr.username,
3 | usr.user_id,
4 | pwf.sysdba,
5 | pwf.sysoper,
6 | pwf.sysasm
7 | --pwf.sysbackup,
8 | --pwf.sysdg,
9 | --pwf.syskm
10 | from
11 | dba_users usr left join
12 | v$pwfile_users pwf on usr.username = pwf.username
13 | ;
14 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/users/with_defpwd/joins.sql:
--------------------------------------------------------------------------------
1 | select
2 | dp.username,
3 | dp.product,
4 | us.account_status,
5 | us.lock_date,
6 | us.expiry_date,
7 | us.oracle_maintained
8 | from
9 | dba_users_with_defpwd dp join
10 | dba_users us on dp.username = us.username
11 | order by
12 | us.oracle_maintained desc,
13 | dp.username;
14 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/ustats/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | object_owner,
3 | object_name,
4 | partition_name,
5 | object_type,
6 | association,
7 | column_name,
8 | statstype_schema,
9 | statstype_name,
10 | statistics
11 | from
12 | dba_ustats
13 | order by
14 | object_owner,
15 | object_name;
16 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/warning_settings/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | object_name,
4 | object_type,
5 | warning,
6 | setting,
7 | object_id
8 | from
9 | dba_warning_settings
10 | order by
11 | owner,
12 | object_name,
13 | object_type;
14 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/xml/tables/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | table_name,
4 | xmlschema,
5 | schema_owner,
6 | element_name,
7 | storage_type,
8 | anyschema,
9 | nonschema
10 | from
11 | dba_xml_tables
12 | order by
13 | owner,
14 | table_name;
15 |
--------------------------------------------------------------------------------
/Installed/data-dictionary/xs/users/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | name,
3 | guid,
4 | external_source,
5 | roles_default_enabled,
6 | status,
7 | account_status,
8 | lock_date,
9 | expiry_date,
10 | profile,
11 | schema,
12 | start_date,
13 | end_date,
14 | direct_logon_user,
15 | verifier_type,
16 | description
17 | from
18 | dba_xs_users
19 | order by
20 | name;
21 |
--------------------------------------------------------------------------------
/Installed/dbms/advanced_rewrite/intro/_run.sql:
--------------------------------------------------------------------------------
1 | @ grant
2 |
3 | connect rene/rene
4 | @ table-1
5 | @ equivalence-1
6 | @ select-1
7 |
8 | begin
9 | sys.dbms_advanced_rewrite.drop_rewrite_equivalence('return_twice_the_num');
10 | end;
11 | /
12 |
13 | drop table tq84_rewrite_tab_1;
14 |
--------------------------------------------------------------------------------
/Installed/dbms/advanced_rewrite/intro/equivalence-1.sql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | sys.dbms_advanced_rewrite.declare_rewrite_equivalence (
4 | name => 'return_twice_the_num',
5 | source_stmt => 'select num, txt from tq84_rewrite_tab_1',
6 | destination_stmt => 'select 2*num, txt from tq84_rewrite_tab_1',
7 | validate => false,
8 | rewrite_mode => 'general'
9 | );
10 |
11 | end;
12 | /
13 |
--------------------------------------------------------------------------------
/Installed/dbms/advanced_rewrite/intro/grant.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 |
3 | grant execute on dbms_advanced_rewrite to rene;
4 | grant create materialized view to rene;
5 |
--------------------------------------------------------------------------------
/Installed/dbms/advanced_rewrite/intro/select-1.sql:
--------------------------------------------------------------------------------
1 | alter system set query_rewrite_integrity=trusted scope=memory;
2 | alter system set query_rewrite_enabled =force scope=memory;
3 |
4 | select
5 | txt,
6 | num
7 | from
8 | tq84_rewrite_tab_1;
9 |
10 | select
11 | txt,
12 | num / 2 as num
13 | from
14 | tq84_rewrite_tab_1;
15 |
--------------------------------------------------------------------------------
/Installed/dbms/advanced_rewrite/intro/table-1.sql:
--------------------------------------------------------------------------------
1 | create table tq84_rewrite_tab_1 (
2 | num number,
3 | txt varchar2(20)
4 | );
5 |
6 | insert into tq84_rewrite_tab_1 values (1, 'one' );
7 | insert into tq84_rewrite_tab_1 values (2, 'two' );
8 | insert into tq84_rewrite_tab_1 values (3, 'three');
9 | insert into tq84_rewrite_tab_1 values (4, 'four' );
10 | insert into tq84_rewrite_tab_1 values (5, 'five' );
11 |
12 | commit;
13 |
--------------------------------------------------------------------------------
/Installed/dbms/audit_mgmt/README.md:
--------------------------------------------------------------------------------
1 | The directory `archiving` contains a most simple setup
2 | to demonstrate how archiving of fine grained audited data
3 | could be achieved.
4 |
--------------------------------------------------------------------------------
/Installed/dbms/crypto/hash/md5.sql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | txt varchar2(100) := 'foo, bar and baz.';
4 | md5 raw(16); -- MD5 is 128 = 16 * 8 bits
5 |
6 | begin
7 |
8 | md5 := dbms_crypto.hash(
9 | utl_i18n.string_to_raw(txt, 'AL32UTF8'),
10 | dbms_crypto.hash_md5
11 | );
12 |
13 | dbms_output.put_line('MD5 is: ' || md5);
14 |
15 | end;
16 | /
17 |
--------------------------------------------------------------------------------
/Installed/dbms/crypto/hash/sha-256.sql:
--------------------------------------------------------------------------------
1 | declare
2 | h raw(32); -- 32 * 8-bit = 256-bit
3 |
4 | c clob := q'[foo
5 | bar
6 | baz]';
7 |
8 | begin
9 | h := dbms_crypto.HASH(c, dbms_crypto.hash_sh256);
10 | dbms_output.put_line('hash: ' || rawtohex(h));
11 | end;
12 | /
13 |
--------------------------------------------------------------------------------
/Installed/dbms/cube_log/table_create.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- Create table cube_build_log (See default_name.sql)
3 | --
4 | exec dbms_cube_log.table_create(dbms_cube_log.type_build)
5 |
6 |
7 | select
8 | object_type,
9 | sysdate - created
10 | from
11 | user_objects where object_name = 'CUBE_BUILD_LOG';
12 |
13 |
14 | desc cube_build_log
15 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/clone_schema/call_count_procs.sql:
--------------------------------------------------------------------------------
1 | exec dbms_output.put_line('package_a_1.count_a: ' || package_a_1.count_a);
2 | exec dbms_output.put_line('package_a_1.count_b: ' || package_a_1.count_b);
3 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/clone_schema/export.par:
--------------------------------------------------------------------------------
1 | content=metadata_only
2 | directory=DATAPUMP_DIR
3 | dumpfile=clone_schema_a.dmp
4 | schemas=from_schema_a
5 | # exclude=trigger
6 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/clone_schema/export_import_dp.sql:
--------------------------------------------------------------------------------
1 | $expdp exp_imp_admin/p parfile=export.par
2 | $impdp exp_imp_admin/p parfile=import.par
3 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/clone_schema/export_import_plsql.sql:
--------------------------------------------------------------------------------
1 | connect exp_imp_admin/p
2 |
3 | @export.plsql
4 | @import.plsql
5 |
6 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/clone_schema/import.par:
--------------------------------------------------------------------------------
1 | directory=DATAPUMP_DIR
2 | dumpfile=clone_schema_a.dmp
3 | remap_schema=from_schema_a:to_schema_a
4 | transform=OID:n
5 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/extract_schema_sql/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 |
3 | My question on [dba.stackexchange.com](http://dba.stackexchange.com/questions/91149/how-to-generate-an-sql-file-with-dbms-datapump).
4 |
5 | 1519981.1: How to Generate A SQL File Using The DBMS_DATAPUMP_API?
6 | Unfortunately, this note is a bit misleading in that it doesn't explitely say that the '.dmp' file must have been created
7 | first.
8 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/extract_schema_sql/import_sql_file.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 | @drop_schema_if_exists tq84_user
3 |
4 | create user tq84_user
5 | identified by p
6 | quota unlimited on users;
7 |
8 | grant create procedure,
9 | create table,
10 | create session,
11 | create view
12 | to tq84_user;
13 |
14 | connect tq84_user/p
15 |
16 | @c:\temp\schema.sql
17 |
--------------------------------------------------------------------------------
/Installed/dbms/datapump/extract_schema_sql/run.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 |
3 | @@drop_if_exists DATAPUMP_DIR
4 | create directory DATAPUMP_DIR as 'c:\temp';
5 |
6 | @@create_schema
7 |
8 | @@export_dump.plsql
9 | @@export_sql.plsql
10 |
11 | @@import_sql_file
12 |
13 | $@del c:\temp\EXPORT.DMP
14 | $@del c:\temp\schema.sql
15 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/_run.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_src;
2 | drop table tq84_dest;
3 | drop table tq84_dest_err;
4 |
5 | @ table
6 | @ error-table
7 |
8 | @ insert-src
9 | @ insert-dest
10 |
11 | commit;
12 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/error-table.sql:
--------------------------------------------------------------------------------
1 | begin
2 | dbms_errlog.create_error_log(
3 | 'tq84_dest',
4 | 'tq84_dest_err'
5 | );
6 | end;
7 | /
8 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/insert-dest.sql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | insert into tq84_dest
4 | select
5 | id,
6 | txt || '!',
7 | 42/num
8 | from
9 | tq84_src
10 | log errors into tq84_dest_err
11 | --
12 | -- Log all errors:
13 | --
14 | reject limit unlimited;
15 |
16 |
17 | insert into tq84_dest values (99, '2nd statement', 42);
18 |
19 | end;
20 | /
21 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/insert-src.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_src values (1, 'def' , 7);
2 | insert into tq84_src values (2, 'nop' , 9);
3 | insert into tq84_src values (3, 'abc' , 0);
4 | insert into tq84_src values (4, 'klm' , 6);
5 | insert into tq84_src values (5, 'nop' , 6);
6 | insert into tq84_src values (6, 'qrs' , 9);
7 | insert into tq84_src values (4, 'tuv' , 2);
8 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/select.sql:
--------------------------------------------------------------------------------
1 | select
2 | ora_err_number$,
3 | ora_err_mesg$,
4 | id,
5 | txt,
6 | num
7 | from
8 | tq84_dest_err;
9 |
--------------------------------------------------------------------------------
/Installed/dbms/errlog/table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_src (
2 | id number(2),
3 | txt varchar2(20) not null,
4 | num number
5 | );
6 |
7 | create table tq84_dest (
8 | id number(2),
9 | txt varchar2(20) not null,
10 | num number,
11 | constraint tq84_err_log_pk primary key(id)
12 | );
13 |
--------------------------------------------------------------------------------
/Installed/dbms/lob/temporary/create-free.sql:
--------------------------------------------------------------------------------
1 | create table tq84_temporary_clob(c clob);
2 |
3 | declare
4 | c_ clob;
5 | begin
6 | dbms_lob.createtemporary(c_, false);
7 |
8 | dbms_lob.append(c_, 'foo');
9 | dbms_lob.append(c_, 'bar');
10 | dbms_lob.append(c_, 'baz');
11 |
12 | insert into tq84_temporary_clob values (c_);
13 |
14 | dbms_lob.freetemporary(c_);
15 | end;
16 | /
17 |
18 | select * from tq84_temporary_clob;
19 |
20 | drop table tq84_temporary_clob;
21 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/run.bat:
--------------------------------------------------------------------------------
1 | @set connection_string=rene/rene
2 |
3 | @start session_blue.bat
4 | @start session_green.bat
5 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/session_blue.bat:
--------------------------------------------------------------------------------
1 | @rem echo %connection_string%
2 |
3 | @color 1f
4 |
5 | @sqlplus -S %connection_string% @blue
6 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/session_green.bat:
--------------------------------------------------------------------------------
1 | @rem echo %connection_string%
2 |
3 | @color 2f
4 |
5 | @sqlplus -S %connection_string% @green
6 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/sleep.sql:
--------------------------------------------------------------------------------
1 | begin
2 | dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || ': going to sleep for 3 seconds.');
3 | dbms_lock.sleep(3);
4 |
5 | dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || ': going to sleep for 5 seconds.');
6 | dbms_lock.sleep(5);
7 |
8 | dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || ': finished.');
9 | end;
10 | /
11 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/stop_sessions/run.bat:
--------------------------------------------------------------------------------
1 | @set connection_string=rene/rene
2 |
3 | @rem --------------------------------
4 | @rem start four sessions
5 |
6 | @start session_blue.bat
7 | @start session_blue.bat
8 | @start session_blue.bat
9 | @start session_blue.bat
10 |
11 |
12 |
13 | @rem --------------------------------
14 | @rem start another session to stop the
15 | @rem executions of the other four
16 | @rem sessions:
17 |
18 | @start session_green.bat
19 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/stop_sessions/session_blue.bat:
--------------------------------------------------------------------------------
1 | @color 1f
2 |
3 | @sqlplus -S %connection_string% @blue
4 |
--------------------------------------------------------------------------------
/Installed/dbms/lock/stop_sessions/session_green.bat:
--------------------------------------------------------------------------------
1 | @color 2f
2 |
3 | @sqlplus -S %connection_string% @green
4 |
--------------------------------------------------------------------------------
/Installed/dbms/metadata/user.sql:
--------------------------------------------------------------------------------
1 | select dbms_metadata.get_ddl('USER', 'RENE') from dual;
2 |
--------------------------------------------------------------------------------
/Installed/dbms/mining/model/attributes/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | model_name,
4 | attribute_name,
5 | attribute_type,
6 | data_type,
7 | data_length,
8 | data_precision,
9 | data_scale,
10 | usage_type,
11 | target,
12 | attribute_spec
13 | from
14 | dba_mining_model_attributes
15 | order by
16 | owner,
17 | model_name,
18 | attribute_name;
19 |
--------------------------------------------------------------------------------
/Installed/dbms/mining/models/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | model_name,
4 | mining_function,
5 | algorithm,
6 | creation_date,
7 | build_duration,
8 | model_size,
9 | comments
10 | from
11 | dba_mining_models
12 | order by
13 | owner,
14 | model_name;
15 |
--------------------------------------------------------------------------------
/Installed/dbms/mining/settings/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | owner,
3 | model_name,
4 | setting_name,
5 | setting_value,
6 | setting_type
7 | from
8 | dba_mining_model_settings
9 | order by
10 | owner,
11 | model_name,
12 | setting_name;
13 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/perl/write_pipe.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | status number;
3 | begin
4 | dbms_pipe.pack_message('hello world');
5 | status := dbms_pipe.send_message('TestPipe');
6 | end;
7 | /
8 |
9 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/purge/run.bat:
--------------------------------------------------------------------------------
1 | @set connect_string=rene/rene
2 |
3 | @start session_blue.bat
4 | @start session_green.bat
5 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/purge/session_blue.bat:
--------------------------------------------------------------------------------
1 | @color 1f
2 |
3 | @sqlplus -S %connect_string% @blue
4 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/purge/session_green.bat:
--------------------------------------------------------------------------------
1 | @color 2f
2 |
3 | @sqlplus -S %connect_string% @green
4 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/readme.md:
--------------------------------------------------------------------------------
1 | The directory `perl` contains a perl script (`read_pipe.pl`) to read from a pipe.
2 |
3 | `send_receive` is a most simple example of a session that writes into a pipe
4 | and another session that reads from the pipe.
5 |
6 | `purge` demonstrates `dbms_pipe.purge`.
7 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/send_receive/blue.sql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | v number;
4 |
5 | begin
6 |
7 | -- Wait 3 seconds...
8 | dbms_lock.sleep(3);
9 |
10 | -- ... then write a message into a pipe
11 |
12 | dbms_pipe.pack_message('Hello from the blue session!');
13 |
14 | v := dbms_pipe.send_message('tq84-send-receive-pipe');
15 |
16 | dbms_output.put_line('Message sent [' || v || ']');
17 |
18 | end;
19 | /
20 |
21 | exit
22 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/send_receive/green.sql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | v number;
4 |
5 | m varchar2(4096);
6 |
7 | begin
8 |
9 | -- Waiting for the message sent in the green session:
10 |
11 | v := dbms_pipe.receive_message('tq84-send-receive-pipe');
12 |
13 | dbms_pipe.unpack_message(m);
14 |
15 | dbms_output.put_line('Message received [' || v || ']');
16 | dbms_output.put_line(' ' || m);
17 |
18 |
19 | end;
20 | /
21 |
22 | exit
23 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/send_receive/run.bat:
--------------------------------------------------------------------------------
1 | @set connect_string=rene/rene
2 |
3 | @start session_blue.bat
4 | @start session_green.bat
5 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/send_receive/session_blue.bat:
--------------------------------------------------------------------------------
1 | @color 1f
2 |
3 | @sqlplus -S %connect_string% @blue
4 |
--------------------------------------------------------------------------------
/Installed/dbms/pipe/send_receive/session_green.bat:
--------------------------------------------------------------------------------
1 | @color 2f
2 |
3 | @sqlplus -S %connect_string% @green
4 |
--------------------------------------------------------------------------------
/Installed/dbms/random/terminate.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- dbms_random.terminate() is terminated (that is: deprecated) with Oracle 11R1
3 | --
4 |
--------------------------------------------------------------------------------
/Installed/dbms/random/value.sql:
--------------------------------------------------------------------------------
1 | create table tq84_random_value (
2 | val number
3 | );
4 |
5 | insert into tq84_random_value
6 | select
7 | dbms_random.value(8, 12)
8 | from
9 | dual
10 | connect by
11 | level <= 100;
12 |
13 | select
14 | min(val) min_val,
15 | max(val) max_val,
16 | avg(val) avg_val
17 | from
18 | tq84_random_value;
19 |
20 | drop table tq84_random_value purge;
21 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/abort_redef_table.sql:
--------------------------------------------------------------------------------
1 | begin
2 | dbms_redefinition.abort_redef_table (
3 | uname => user,
4 | orig_table =>'tq84_redefinition',
5 | int_table =>'tq84_redefinition_int',
6 | part_name => null
7 | );
8 |
9 | end;
10 | /
11 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/can_redef_table.sql:
--------------------------------------------------------------------------------
1 | begin
2 | dbms_redefinition.can_redef_table(user, 'tq84_redefinition');
3 | end;
4 | /
5 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/create-table-int.sql:
--------------------------------------------------------------------------------
1 | create table tq84_redefinition_int (
2 | id number , -- No primary key to prevent «ORA-01408: such column list already indexed»
3 | num number(6,2), -- Change varchar2 to number
4 | dt date -- Rename column and data type
5 | );
6 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/create-table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_redefinition (
2 | id number primary key,
3 | num varchar2(10),
4 | ts timestamp
5 | );
6 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/drop-tables.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_redefinition_int purge;
2 | drop table tq84_redefinition purge;
3 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/finish_redef_table.sql:
--------------------------------------------------------------------------------
1 | exec dbms_redefinition.finish_redef_table(user, 'tq84_redefinition', 'tq84_redefinition_int');
2 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/insert-data.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_redefinition values (1, '42' , systimestamp + 59/23);
2 | insert into tq84_redefinition values (2, '-9.876', systimestamp + 51/31);
3 | insert into tq84_redefinition values (3, '1.2e3' , systimestamp + 61/17);
4 |
5 | commit;
6 |
7 | select * from tq84_redefinition;
8 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/select.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_redefinition;
2 | select * from tq84_redefinition_int;
3 |
--------------------------------------------------------------------------------
/Installed/dbms/redefinition/rename-column_change-datatype/sync_interim_table.sql:
--------------------------------------------------------------------------------
1 | exec dbms_redefinition.sync_interim_table(user, 'tq84_redefinition', 'tq84_redefinition_int');
2 |
--------------------------------------------------------------------------------
/Installed/dbms/scheduler/program_schedule_job/package.plsql:
--------------------------------------------------------------------------------
1 | create or replace package tq84_pkg as -- {
2 |
3 | procedure proc;
4 |
5 | end tq84_pkg; -- }
6 | /
7 |
8 | create or replace package body tq84_pkg as -- {
9 |
10 | procedure proc is -- {
11 | begin
12 | insert into tq84_table values (sysdate, 'Inserted from tq84_pkg.proc');
13 | end proc; -- }
14 |
15 | end tq84_pkg; -- }
16 | /
17 |
--------------------------------------------------------------------------------
/Installed/dbms/scheduler/program_schedule_job/table.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_table purge;
2 | create table tq84_table (
3 | tm date,
4 | txt varchar2(50)
5 | );
6 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/_run.sql:
--------------------------------------------------------------------------------
1 | @ spec
2 | @ body
3 | @ profile
4 | @ set-profile
5 | @ get-translated
6 | @ set-events
7 | @ select
8 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/get-translated.sql:
--------------------------------------------------------------------------------
1 | declare
2 | sql_new clob;
3 | begin
4 | dbms_sql_translator.translate_sql(
5 | 'select * from dba_users',
6 | sql_new
7 | );
8 |
9 | dbms_output.put_line('Translated SQL is:');
10 | dbms_output.put_line(' ' || sql_new);
11 | end;
12 | /
13 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/select.sql:
--------------------------------------------------------------------------------
1 | select * from dba_objects;
2 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/set-events.sql:
--------------------------------------------------------------------------------
1 | alter session set events = '10601 trace name context forever, level 32';
2 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/set-profile.sql:
--------------------------------------------------------------------------------
1 | alter session set sql_translation_profile = renes_sql_translation_profile;
2 |
--------------------------------------------------------------------------------
/Installed/dbms/sql_translator/interface-package/spec.sql:
--------------------------------------------------------------------------------
1 | create or replace package renes_sql_translator as
2 |
3 | procedure translate_sql(
4 | sql_text in clob,
5 | translated_text out clob
6 | );
7 |
8 | procedure translate_error(
9 | error_code in binary_integer,
10 | translated_code out binary_integer,
11 | translated_sqlstate out varchar2
12 | );
13 |
14 | end renes_sql_translator;
15 | /
16 |
--------------------------------------------------------------------------------
/Installed/dbms/utility/db_version.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | version varchar2(100);
3 | compatibility varchar2(100);
4 | begin
5 | dbms_utility.db_version(version, compatibility);
6 |
7 | dbms_output.put_line('DB Version: ' || version );
8 | dbms_output.put_line('Compatibiliy: ' || compatibility);
9 |
10 | end;
11 | /
12 |
--------------------------------------------------------------------------------
/Installed/dbms/utility/time.plsql:
--------------------------------------------------------------------------------
1 | begin
2 | dbms_output.put_line('time: ' || dbms_utility.get_time);
3 | dbms_output.put_line('cpu time: ' || dbms_utility.get_cpu_time);
4 | end;
5 | /
6 |
--------------------------------------------------------------------------------
/Installed/dbms/xa/session_03.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_xa;
2 |
3 | declare
4 | ret_txt varchar2(100);
5 | begin
6 |
7 | ret_txt := tq84_xa_result_to_string( sys.dbms_xa.xa_commit(dbms_xa_xid(42), onePhase => true) );
8 |
9 | if ret_txt != 'OK' then
10 | dbms_output.put_line('Error committing: ' || ret_txt);
11 | end if;
12 | end;
13 | /
14 |
15 | select * from tq84_xa;
16 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/active/session_history/minutes_covered.sql:
--------------------------------------------------------------------------------
1 | select
2 | extract(second from sysdate - max(sample_time)) seconds_since_most_recent ,
3 | extract(minute from sysdate - min(sample_time)) minutes_since_least_recent,
4 | extract(minute from max(sample_time) - min(sample_time)) minutes_covered
5 | from
6 | v$active_session_history;
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/active/session_history/session_states.sql:
--------------------------------------------------------------------------------
1 | select
2 | --count(*),
3 | session_state
4 | from
5 | v$active_session_History
6 | group by
7 | session_state;
8 | --
9 | -- WAITING
10 | -- ON CPU
11 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/archive/dest/show-destinations.sql:
--------------------------------------------------------------------------------
1 | select
2 | dest_id,
3 | destination
4 | from
5 | v$archive_dest
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/bh/compare-with_Buffer_Cache_Size.sql:
--------------------------------------------------------------------------------
1 | select
2 | to_char((select count(*) from v$bh), '999,999,999') cnt_bh,
3 | to_char((select
4 | bytes/(select value from v$parameter where name = 'db_block_size')
5 | from
6 | v$sgainfo
7 | where
8 | name = 'Buffer Cache Size'
9 | ), '999,999,999') buf_cache_size
10 | from
11 | dual;
12 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/controlfile/show.sql:
--------------------------------------------------------------------------------
1 | select * from v$controlfile;
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/database_incarnation/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | incarnation# i,
3 | status,
4 | resetlogs_time,
5 | prior_resetlogs_time,
6 | resetlogs_id,
7 | flashback_database_allowed
8 | resetlogs_change#,
9 | prior_resetlogs_change#
10 | from
11 | v$database_incarnation
12 | order by
13 | incarnation# desc;
14 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/database_key_info/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | encryptionalg,
3 | encrytpedkey, -- (sic!)
4 | masterkeyid
5 | from
6 | v$database_key_info;
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/datafile/README.md:
--------------------------------------------------------------------------------
1 | Compare to `v$dbfile`.
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/datafile/header/last-checkpoint.sql:
--------------------------------------------------------------------------------
1 | select
2 | substr(name, 1, 100) data_file,
3 | checkpoint_change# scn,
4 | to_char(checkpoint_time, 'dd.mm.yyyy hh24:mi:ss') date_
5 | from
6 | v$datafile_header;
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/db_transportable_platform/README.md:
--------------------------------------------------------------------------------
1 | Compare with `v$transportable_platform`
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/db_transportable_platform/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | platform_id,
3 | platform_name,
4 | endian_format
5 | from
6 | v$db_transportable_platform
7 | order by
8 | lower(platform_name);
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/dbfile/compare-to-datafile.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- The resultset of the following query should be empty:
3 | --
4 | ( select name from v$datafile minus select name from v$dbfile ) union all
5 | ( select name from v$dbfile minus select name from v$datafile);
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/dblink/README.md:
--------------------------------------------------------------------------------
1 | # v$dblink
2 |
3 | Shows *open* database links in the current session.
4 |
5 | Use [dba_db_links](https://github.com/ReneNyffenegger/oracle-patterns/blob/master/Installed/data-dictionary/db_links/show.sql)
6 | to show all database links.
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/enqueue_lock/compare-to-lock.sql:
--------------------------------------------------------------------------------
1 | select addr, kaddr, sid, type, id1, id2, lmode, request, block from v$enqueue_lock minus
2 | select addr, kaddr, sid, type, id1, id2, lmode, request, block from v$lock;
3 |
4 | select addr, kaddr, sid, type, id1, id2, lmode, request, block from v$lock minus
5 | select addr, kaddr, sid, type, id1, id2, lmode, request, block from v$enqueue_lock;
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/enqueue_statistics/cum_wait_time.sql:
--------------------------------------------------------------------------------
1 | select * from v$enqueue_statistics order by cum_wait_time desc;
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/filemetric/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | df.name,
3 | physical_reads,
4 | physical_writes,
5 | physical_block_reads,
6 | physical_block_writes,
7 | --
8 | round(average_read_time , 2) avg_read_tm,
9 | round(average_write_time , 2) avg_write_tm
10 | from
11 | v$filemetric fm join
12 | v$dbfile df on fm.file_id = df.file#
13 | order by
14 | greatest(average_read_time, average_write_time) desc;
15 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/indexed_fixed_column/column_name.sql:
--------------------------------------------------------------------------------
1 | select
2 | ft.name,
3 | ic.column_name
4 | from
5 | v$fixed_table ft join
6 | v$indexed_fixed_column ic on ft.name = ic.table_name
7 | order by
8 | ft.name,
9 | ic.index_number;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/iostat/function/function_names.sql:
--------------------------------------------------------------------------------
1 | select
2 | function_id,
3 | function_name
4 | from
5 | v$iostat_function
6 | order by
7 | lower(function_name);
8 | -- 3 ARCH
9 | --12 Archive Manager
10 | -- 8 Buffer Cache Reads
11 | -- 6 Data Pump
12 | -- 1 DBWR
13 | -- 9 Direct Reads
14 | --10 Direct Writes
15 | -- 2 LGWR
16 | --13 Others
17 | -- 7 Recovery
18 | -- 0 RMAN
19 | --11 Smart Scan
20 | -- 5 Streams AQ
21 | -- 4 XDB
22 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/java/library_cache_memory/namespaces.sql:
--------------------------------------------------------------------------------
1 | select
2 | lc_namespace
3 | from
4 | v$java_library_cache_memory
5 | order by
6 | lower(lc_namespace);
7 | -- BODY
8 | -- CLUSTER
9 | -- INDEX
10 | -- JAVA DATA
11 | -- JAVA RESOURCE
12 | -- JAVA SOURCE
13 | -- OBJECT
14 | -- OTHER/SYSTEM
15 | -- PIPE
16 | -- SQL AREA
17 | -- TABLE/PROCEDURE
18 | -- TRIGGER
19 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/latch/holder/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | lah.laddr latch_address,
3 | lah.name latch_name,
4 | prc.latchwait,
5 | prc.latchspin,
6 | prc.pname,
7 | prc.username prc_username,
8 | ses.username ses_username,
9 | ses.osuser,
10 | lah.gets
11 | from
12 | v$latchholder lah join
13 | v$session ses on lah.sid = ses.sid join
14 | v$process prc on lah.pid = prc.pid;
15 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/latch/show-statistics.sql:
--------------------------------------------------------------------------------
1 | select
2 | --lnm.name,
3 | lat.name,
4 | lat.addr,
5 | lat.gets,
6 | lat.misses,
7 | lat.sleeps,
8 | lat.immediate_gets,
9 | lat.immediate_misses,
10 | lah.pid latch_holder_pid
11 | from
12 | v$latch lat left join
13 | v$latchholder lah on lat.addr = lah.laddr /*left join
14 | v$latchname lnm on lat.latch# = lnm.latch# */
15 | order by
16 | lat.gets desc;
17 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/license/show.sql:
--------------------------------------------------------------------------------
1 | select * from v$license;
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/mystat/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | nam.name,
3 | mys.value
4 | from
5 | v$mystat mys join
6 | v$statname nam on mys.statistic# = nam.statistic#
7 | order by
8 | nam.name;
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/open_cursor/cursor_types.sql:
--------------------------------------------------------------------------------
1 | select
2 | --count(*),
3 | cursor_type
4 | from
5 | v$open_cursor
6 | group by
7 | cursor_type
8 | order by
9 | cursor_type;
10 | -- BUNDLE DICTIONARY LOOKUP CACHED
11 | -- DICTIONARY LOOKUP CURSOR CACHED
12 | -- OPEN
13 | -- OPEN-PL/SQL
14 | -- OPEN-RECURSIVE
15 | -- PL/SQL CURSOR CACHED
16 | -- SESSION CURSOR CACHED
17 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/parameter/README.md:
--------------------------------------------------------------------------------
1 | See also `v$obsolete_parameter`.
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/pq/sesstat/show-statistics.sql:
--------------------------------------------------------------------------------
1 | select * from v$pq_sesstat order by statistic;
2 |
3 | select /*+ parallel */ count(*) from all_objects;
4 |
5 | select * from v$pq_sesstat order by statistic;
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/pq/slave/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | slave_name,
3 | status, -- BUSY, IDLE
4 | sessions,
5 | idle_time_cur,
6 | busy_time_cur,
7 | cpu_secs_cur,
8 | msgs_sent_cur,
9 | msgs_rcvd_cur,
10 | idle_time_total,
11 | busy_time_total,
12 | cpu_secs_total,
13 | msgs_sent_total,
14 | msgs_rcvd_total
15 | from
16 | v$pq_slave;
17 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/process/joins.sql:
--------------------------------------------------------------------------------
1 | select
2 | prc.pid,
3 | prc.serial#,
4 | prc.program,
5 | bgp.description bg_process,
6 | pxp.status px_status
7 | from
8 | v$process prc left join
9 | v$px_process pxp on prc.pid = pxp.pid left join
10 | v$bgprocess bgp on prc.addr = bgp.paddr;
11 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/process_memory/categories.sql:
--------------------------------------------------------------------------------
1 | select
2 | --count(*),
3 | category
4 | from
5 | v$process_memory
6 | group by
7 | category
8 | order by
9 | category;
10 | -- Freeable
11 | -- Other
12 | -- PL/SQL
13 | -- SQL
14 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/reserved_words/keywords.sql:
--------------------------------------------------------------------------------
1 | select
2 | lower(keyword) keyword,
3 | reserved,
4 | res_type,
5 | res_attr,
6 | res_semi,
7 | duplicate
8 | from
9 | v$reserved_words order by keyword;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/rman/backup_type/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | weight,
3 | lower(input_type) input_type
4 | from
5 | v$rman_backup_type
6 | order by
7 | input_type;
8 | --
9 | -- 4 archivelog
10 | -- 1 backupset
11 | -- 3 controlfile
12 | -- 6 datafile full
13 | -- 5 datafile incr
14 | -- 9 db full
15 | -- 7 db incr
16 | -- 8 recvr area
17 | -- 2 spfile
18 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/segment_statistics/names.sql:
--------------------------------------------------------------------------------
1 | select
2 | distinct statistic_name
3 | from
4 | v$segment_statistics
5 | minus
6 | select
7 | name
8 | from
9 | v$segstat_name;
10 |
11 | ---
12 |
13 | select
14 | name
15 | from
16 | v$segstat_name
17 | minus
18 | select
19 | distinct statistic_name
20 | from
21 | v$segment_statistics
22 | ;
23 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sess/io/own-sessions-statistics.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- Show session io statistics for executing session
3 | --
4 | select
5 | sio.block_gets,
6 | sio.consistent_gets,
7 | sio.physical_reads,
8 | sio.block_changes,
9 | sio.consistent_changes,
10 | sio.optimized_physical_reads
11 | from
12 | v$session ses join
13 | v$sess_io sio on ses.sid = sio.sid
14 | where
15 | ses.audsid = sys_context('userenv', 'sessionid');
16 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/.gitignore:
--------------------------------------------------------------------------------
1 | Oracle.DataAccess.dll
2 | set-action-etc.exe
3 | set-action-etc.pdb
4 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/connect_info/own-sessions-values.sql:
--------------------------------------------------------------------------------
1 | select
2 | sci.authentication_type,
3 | sci.osuser,
4 | sci.client_charset,
5 | sci.client_connection,
6 | sci.client_oci_library,
7 | sci.client_version,
8 | sci.client_driver,
9 | sci.client_lobattr,
10 | sci.network_service_banner,
11 | sci.client_regid
12 | from
13 | v$session ses join
14 | v$session_connect_info sci on ses.sid = sci.sid
15 | where
16 | ses.audsid = sys_context('userenv', 'sessionid');
17 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/cursor_cache/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | maximum,
3 | (select value from v$parameter2 where name = 'session_cached_cursors') session_cached_cursors,
4 | count,
5 | opens,
6 | hits,
7 | hit_ratio
8 | from
9 | v$session_cursor_cache;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/distinct_values.sql:
--------------------------------------------------------------------------------
1 | select
2 | count( * ),
3 | count(distinct saddr ),
4 | count(distinct sid ),
5 | count(distinct serial#),
6 | count(distinct paddr ),
7 | count( taddr ),
8 | count(distinct taddr )
9 | from
10 | v$session;
11 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/module-action.sql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | dbms_application_info.set_module (
4 | module_name => 'tq84_module',
5 | action_name => 'tq84_action'
6 | );
7 |
8 | end;
9 | /
10 |
11 | select
12 | sid,
13 | to_number(sys_context('userenv', 'sid')) sid_verify,
14 | action
15 | from
16 | v$session
17 | where
18 | module = 'tq84_module';
19 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/session/module_hash.sql:
--------------------------------------------------------------------------------
1 | select
2 | module,
3 | module_hash,
4 | ora_hash(module)
5 | from
6 | v$session
7 | where
8 | module_hash != ora_hash(module);
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sesstat/show-statistics.sql:
--------------------------------------------------------------------------------
1 | select
2 | sest.sid,
3 | stat.name,
4 | sest.value
5 | from
6 | v$sesstat sest join
7 | v$statname stat on sest.statistic# = stat.statistic#
8 | ;
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sga/dynamic_componentes/usage.sql:
--------------------------------------------------------------------------------
1 | select
2 | component,
3 | to_char(current_size / 1024/1024, '999,999') size_mb
4 | from
5 | v$sga_dynamic_components
6 | order by
7 | current_size desc;
8 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sga/names.sql:
--------------------------------------------------------------------------------
1 | select
2 | name
3 | from
4 | v$sga
5 | order by
6 | name;
7 | --
8 | -- Fixed Size
9 | -- Variable Size
10 | -- Database Buffers
11 | -- Redo Buffers
12 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/area/address-unique.sql:
--------------------------------------------------------------------------------
1 | select
2 | count(*),
3 | address
4 | from
5 | v$sqlarea
6 | group by
7 | address
8 | order by
9 | count(*) desc;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/area/memory-usage.sql:
--------------------------------------------------------------------------------
1 | select
2 | to_char(sum(sharable_mem ) / 1024/1024, '999,999') total_sharable_mem_mb,
3 | to_char(sum(persistent_mem) / 1024/1024, '999,999') total_persistent_mem_mb,
4 | to_char(sum(runtime_mem ) / 1024/1024, '999,999') total_runtime_mem_mb
5 | from
6 | v$sqlarea;
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/area/sql_id-unique.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- sql_id is unique in v$sqlarea:
3 | --
4 | select
5 | count(*),
6 | sql_id
7 | from
8 | v$sqlarea
9 | group by
10 | sql_id
11 | order by
12 | count(*) desc;
13 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/command/count-nouns.sql:
--------------------------------------------------------------------------------
1 | select
2 | count(*),
3 | noun
4 | from
5 | sqlcommand_verb_noun
6 | where
7 | noun is not null
8 | group by
9 | noun
10 | order by
11 | noun
12 | ;
13 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/command/count-verbs.sql:
--------------------------------------------------------------------------------
1 | select
2 | count(*),
3 | verb
4 | from
5 | sqlcommand_verb_noun
6 | where
7 | verb is not null
8 | group by
9 | verb
10 | order by
11 | verb
12 | ;
13 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/command/only-verb-statements.sql:
--------------------------------------------------------------------------------
1 | select
2 | verb
3 | from
4 | sqlcommand_verb_noun
5 | where
6 | noun is null
7 | order by
8 | verb;
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/cursor/join-sqlarea.sql:
--------------------------------------------------------------------------------
1 | select
2 | cur.status,
3 | cur.child_pin,
4 | cur.pers_heap_mem,
5 | cur.work_heap_mem,
6 | cur.bind_vars,
7 | sql.sql_text
8 | from
9 | v$sql_cursor cur join
10 | v$sqlarea sql on cur.parent_handle = sql.address
11 | ;
12 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/plan/column-position-id-eq-0.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | v$sql_plan
4 | where
5 | id = 0 and
6 | nvl(position, -1) <> nvl(cost,-1)
7 | ;
8 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/text/tq84.sql:
--------------------------------------------------------------------------------
1 | select /* tq84-tq84 */
2 | t.sql_text
3 | from
4 | v$sqlarea a join
5 | v$sqltext t on a.sql_id = t.sql_id
6 | where
7 | a.sql_text like '%tq84-tq84%'
8 | order by
9 | t.piece;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/text_with_newlines/listagg.sql:
--------------------------------------------------------------------------------
1 | select /* tq84: v$sqltext_with_newlines */
2 | listagg(t.sql_text, '') within group (order by t.piece)
3 | from
4 | v$sqlarea a join
5 | v$sqltext_with_newlines t on a.sql_id = t.sql_id
6 | where
7 | a.sql_text like '%tq84: v$sqltext_with_newlines %'
8 | order by
9 | t.piece;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sql/text_with_newlines/sqlid-to-stmt.sql:
--------------------------------------------------------------------------------
1 | select
2 | listagg(t.sql_text, '') within group (order by t.piece)
3 | from
4 | v$sqltext_with_newlines t
5 | where
6 | t.sql_id = '...';
7 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/statistics_level/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | statistics_name,
3 | description,
4 | statistics_view_name
5 | from
6 | v$statistics_level
7 | order by
8 | lower(statistics_name);
9 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/sys_time_model/order-by-value.sql:
--------------------------------------------------------------------------------
1 | select
2 | stat_name,
3 | to_char(value/1024/1024, '999,999,990.00') seconds
4 | from
5 | v$sys_time_model
6 | order by
7 | value desc;
8 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/system/event/order-by-time_waited.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | v$system_event
4 | order by
5 | time_waited desc;
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/system/wait_class/wait_classes.sql:
--------------------------------------------------------------------------------
1 | select
2 | wait_class
3 | from
4 | v$system_wait_class
5 | order by
6 | wait_class;
7 | --
8 | -- Administrative
9 | -- Application
10 | -- Commit
11 | -- Concurrency
12 | -- Configuration
13 | -- Idle
14 | -- Network
15 | -- Other
16 | -- System I/O
17 | -- User I/O
18 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/tablespace/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | ts#,
3 | name,
4 | included_in_database_backup,
5 | bigfile,
6 | flashback_on,
7 | encrypt_in_backup
8 | from
9 | v$tablespace
10 | order by
11 | name;
12 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/timezone/file/show.sql:
--------------------------------------------------------------------------------
1 | select
2 | filename,
3 | version
4 | from
5 | v$timezone_file;
6 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/transaction/join_session.sql:
--------------------------------------------------------------------------------
1 | select
2 | trx.addr,
3 | ses.taddr,
4 | trx.ses_addr,
5 | ses.saddr,
6 | case when trx.addr != ses.taddr then 'trx.addr != ses.taddr' end cmp_taddr
7 | from
8 | v$transaction trx left join
9 | v$session ses on trx.ses_addr = ses.saddr;
10 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/transportable_platform/README.md:
--------------------------------------------------------------------------------
1 | Compare with `v$db_transportable_platform`
2 |
--------------------------------------------------------------------------------
/Installed/dynamic-performance-views/version/select.sql:
--------------------------------------------------------------------------------
1 | select
2 | banner,
3 | banner_full,
4 | banner_legacy,
5 | con_id
6 | from
7 | v$version;
8 |
--------------------------------------------------------------------------------
/Installed/htf/.gitignore:
--------------------------------------------------------------------------------
1 | simple-html-document.html
2 |
--------------------------------------------------------------------------------
/Installed/htf/escape_sc.sql:
--------------------------------------------------------------------------------
1 | set define off
2 | select
3 | htf.escape_sc
4 | (
5 | 'bar & baz / bar''n "baz"'
6 | )
7 | from dual;
8 | --
9 | -- <foo>bar & baz / bar'n "baz"</foo>
10 | --
11 |
--------------------------------------------------------------------------------
/Installed/types/any/passAnyObject/types.sql:
--------------------------------------------------------------------------------
1 | drop type type_one;
2 | create type type_one as object (
3 | foo number (5,2),
4 | bar varchar2(100 byte),
5 | baz date
6 | );
7 | /
8 |
9 | drop type type_two;
10 | create type type_two as object (
11 | a number(5,2),
12 | b char (5 byte)
13 | );
14 | /
15 |
16 | -- TODO...
17 | -- create type type_two_t as table of type_two;
18 | -- /
19 |
--------------------------------------------------------------------------------
/Installed/utl/compress/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 |
3 | [zipper](https://github.com/ReneNyffenegger/oracle_scriptlets/tree/master/zipper)
4 |
--------------------------------------------------------------------------------
/Installed/utl/file/delete_created_file.plsql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | utl_file.fremove('TMP_DIR', 'utl_file.test');
4 |
5 | -- Directory not needed anymore:
6 | execute immediate 'drop directory TMP_DIR';
7 |
8 | end;
9 | /
10 |
--------------------------------------------------------------------------------
/Installed/utl/file/read_created_file.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | f utl_file.file_type;
4 |
5 | line varchar2(100);
6 |
7 | begin
8 |
9 | f := utl_file.fopen('TMP_DIR', 'utl_file.test', 'R');
10 |
11 | utl_file.get_line(f, line); dbms_output.put_line(line);
12 | utl_file.get_line(f, line); dbms_output.put_line(line);
13 |
14 | utl_file.fclose(f);
15 |
16 | end;
17 | /
18 |
--------------------------------------------------------------------------------
/Installed/utl/file/read_created_file_until_end.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | f utl_file.file_type;
4 |
5 | line varchar2(100);
6 |
7 | begin
8 |
9 | f := utl_file.fopen('TMP_DIR', 'utl_file.test', 'R');
10 |
11 | begin loop
12 |
13 | utl_file.get_line(f, line);
14 | dbms_output.put_line(line);
15 |
16 | end loop;
17 |
18 | exception when no_data_found then
19 | null; -- Last line read read
20 | end;
21 |
22 | utl_file.fclose(f);
23 |
24 | end;
25 | /
26 |
--------------------------------------------------------------------------------
/Installed/utl/i18n/get_local_languages.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | languages utl_i18n.string_array;
3 | langNo number;
4 | begin
5 |
6 | languages := utl_i18n.get_local_languages('Switzerland');
7 |
8 | langNo := languages.first;
9 | while langNo is not null loop
10 | dbms_output.put_line(langNo || ': ' || initcap(languages(langNo)));
11 | langNo := languages.next(langNo);
12 | end loop;
13 |
14 | end;
15 | /
16 | -- 0: German
17 | -- 1: French
18 | -- 2: Italian
19 |
--------------------------------------------------------------------------------
/Installed/utl/i18n/get_local_territories.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | territories utl_i18n.string_array;
4 | terrNo number;
5 |
6 | begin
7 |
8 | territories := utl_i18n.get_local_territories('German');
9 |
10 | terrNo := territories.first;
11 | while terrNo is not null loop
12 | dbms_output.put_line(terrNo || ': ' || initcap(territories(terrNo)));
13 | terrNo := territories.next(terrNo);
14 | end loop;
15 |
16 | end;
17 | /
18 | -- 0: Germany
19 | -- 1: Austria
20 | -- 2: Luxembourg
21 | -- 3: Switzerland
22 |
--------------------------------------------------------------------------------
/Installed/utl/ident/schow_constants.sql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | function b2v(b boolean) return varchar2 is -- {
4 | begin
5 | if b then return 'true'; end if;
6 | return 'false';
7 | end b2v; -- }
8 |
9 | begin
10 |
11 | dbms_output.put_line('is_oracle_server: ' || b2v(utl_ident.is_oracle_server));
12 | dbms_output.put_line('is_oracle_client: ' || b2v(utl_ident.is_oracle_client));
13 | dbms_output.put_line('is_timesten: ' || b2v(utl_ident.is_timesten ));
14 |
15 | end;
16 | /
17 |
--------------------------------------------------------------------------------
/Installed/utl/mail/send_mail.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | --
3 | --
4 | -- @?/rdbms/admin/utlmail.sql
5 | -- @?/rdbms/admin/prvtmail.plb
6 | --
7 | -- grant execute on utl_mail to some_user;
8 | --
9 | -- alter system set smtp_out_server = 'some.mail.server.xyz';
10 | --
11 | begin
12 |
13 | sys.utl_mail.send(
14 | sender => 'foo@bar.xy',
15 | recipients => 'someone.else@bar.xy',
16 | subject => 'utl_mail test',
17 | message => 'This is a test. Does it work?'
18 | );
19 |
20 | end;
21 | /
22 |
--------------------------------------------------------------------------------
/Installed/utl/raw/cast_to_varchar2:
--------------------------------------------------------------------------------
1 | select
2 | utl_raw.cast_to_varchar2(
3 | hextoraw (
4 | '48' || -- H
5 | '65' || -- e
6 | '6C' || -- l
7 | '6C' || -- l
8 | '6F' || -- o
9 | '20' || --
10 | '77' || -- W
11 | '6F' || -- o
12 | '72' || -- r
13 | '6C' || -- l
14 | '64' -- d
15 | )
16 | ) say_hello
17 | from
18 | dual;
19 |
--------------------------------------------------------------------------------
/Installed/utl/raw/xrange.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | range varchar2(200);
3 | begin
4 | range := utl_raw.xrange('6A', '82');
5 | dbms_output.put_line(range);
6 | -- 6A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182
7 |
8 | dbms_output.put_line(regexp_replace(range, '(..)', '\1 - '));
9 | -- 6A - 6B - 6C - 6D - 6E - 6F - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 7A - 7B - 7C - 7D - 7E - 7F - 80 - 81 - 82 -
10 | end;
11 | /
12 |
--------------------------------------------------------------------------------
/Installed/utl/smtp/README.md:
--------------------------------------------------------------------------------
1 | ## Links
2 |
3 | [mailer](https://github.com/ReneNyffenegger/oracle_scriptlets/tree/master/mailer)
4 |
--------------------------------------------------------------------------------
/Installed/utl/xml/parse/grant-execute.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 | grant execute on utl_xml_lib to rene;
3 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/bulk-collect.sql:
--------------------------------------------------------------------------------
1 | create or replace function return_objects (
2 | p_max_num_rows in number
3 | )
4 | return t_table as
5 | v_ret t_table;
6 | begin
7 |
8 | select
9 | t_record(rownum, object_name)
10 | bulk collect into
11 | v_ret
12 | from
13 | user_objects
14 | where
15 | rownum <= p_max_num_rows;
16 |
17 | return v_ret;
18 |
19 | end return_objects;
20 | /
21 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop type t_table;
2 | drop type t_record;
3 | drop function return_table;
4 | drop function return_objects;
5 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/create-record-type.sql:
--------------------------------------------------------------------------------
1 | create or replace type t_record as object (
2 | i number,
3 | n varchar2(30)
4 | );
5 | /
6 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/create-table-type.sql:
--------------------------------------------------------------------------------
1 | create or replace type t_table as table of t_record;
2 | /
3 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/select-from-function-2.sql:
--------------------------------------------------------------------------------
1 | select * from table(return_objects(5));
2 |
--------------------------------------------------------------------------------
/PL-SQL/CollectionTypes/return-table-from-function/select-from-function.sql:
--------------------------------------------------------------------------------
1 | select * from table(return_table);
2 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/_run.sql:
--------------------------------------------------------------------------------
1 | @create-users.sql
2 |
3 | @proc-owner-tables.sql
4 | @proc-owner-log_msg.sql
5 | @proc-owner-read_t_current_user.sql
6 | @proc-owner-read_u_definer.sql
7 | @grant-execute-to-proc-user.sql
8 |
9 | @proc-user-tables.sql
10 | @exec-read_t_current_user.sql
11 | @exec-read_u_definer.sql
12 |
13 | @clean-up.sql
14 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/clean-up.sql:
--------------------------------------------------------------------------------
1 | connect rene/rene
2 |
3 | drop user proc_owner cascade;
4 | drop user proc_user cascade;
5 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/create-users.sql:
--------------------------------------------------------------------------------
1 | connect rene/rene
2 |
3 | create user proc_owner identified by pw default tablespace data quota unlimited on data;
4 | create user proc_user identified by pw default tablespace data quota unlimited on data;
5 |
6 | grant create session, create procedure, create table, create view to proc_owner;
7 | grant create session, create procedure, create table, create view to proc_user ;
8 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/exec-read_t_current_user.sql:
--------------------------------------------------------------------------------
1 | set serveroutput on
2 | begin
3 | proc_owner.read_t_current_user;
4 | end;
5 | /
6 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/exec-read_u_definer.sql:
--------------------------------------------------------------------------------
1 | begin
2 | proc_owner.read_u_definer;
3 | end;
4 | /
5 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/grant-execute-to-proc-user.sql:
--------------------------------------------------------------------------------
1 | grant execute on read_t_current_user to proc_user;
2 | grant execute on read_u_definer to proc_user;
3 |
4 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/proc-owner-log_msg.sql:
--------------------------------------------------------------------------------
1 | create procedure log_msg(msg varchar2) as begin
2 | dbms_output.put_line('PROC_OWNER: ' || msg);
3 | end log_msg;
4 | /
5 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/proc-owner-read_t_current_user.sql:
--------------------------------------------------------------------------------
1 | create procedure read_t_current_user
2 | AUTHID CURRENT_USER
3 | as begin
4 | for rec in (select txt from t) loop
5 | log_msg(rec.txt);
6 | end loop;
7 | end;
8 | /
9 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/proc-owner-read_u_definer.sql:
--------------------------------------------------------------------------------
1 | create procedure read_u_definer
2 | AUTHID DEFINER
3 | as begin
4 | for rec in (select txt from u) loop
5 | log_msg(rec.txt);
6 | end loop;
7 | end;
8 | /
9 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/proc-owner-tables.sql:
--------------------------------------------------------------------------------
1 | connect proc_owner/pw;
2 |
3 | create table t (txt varchar2(40));
4 | insert into t values (q'!This is proc_owner's table!');
5 |
6 | create table u (txt varchar2(40));
7 | insert into u values (q'!This is proc_owner's table!');
8 |
9 | grant select on t to proc_user;
10 | -- no grant on u
11 |
--------------------------------------------------------------------------------
/PL-SQL/authid/example-01/proc-user-tables.sql:
--------------------------------------------------------------------------------
1 | connect proc_user/pw;
2 |
3 | create table t (txt varchar2(40));
4 | insert into t values (q'!This is proc_user's table!');
5 |
6 | create table u (txt varchar2(40));
7 | insert into u values (q'!This is proc_user's table!');
8 |
--------------------------------------------------------------------------------
/PL-SQL/blocks/nested_proc_with_same_name.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | procedure p (a in varchar2) is
4 |
5 | procedure p (a in varchar2) is
6 | begin
7 |
8 | dbms_output.put_line('inner: ' || a);
9 |
10 | end p;
11 |
12 | begin
13 |
14 | p('outer: ' || a);
15 |
16 | end p;
17 |
18 | begin
19 |
20 | p('foo');
21 |
22 | end;
23 | /
24 |
--------------------------------------------------------------------------------
/PL-SQL/compilation/conditional/ErrorDirective.plsql:
--------------------------------------------------------------------------------
1 | prompt create package
2 | create or replace package tq84_error_directive as
3 |
4 |
5 | $IF $$FLAG_VERSION_ERROR $THEN
6 | $ERROR 'At least version 4 required' $END
7 | $END
8 |
9 | end;
10 | /
11 | show errors
12 |
13 | prompt alter session
14 | alter session set plsql_ccflags = 'FLAG_VERSION_ERROR:true';
15 |
16 | prompt recompile package
17 | alter package tq84_error_directive compile;
18 | show errors package tq84_error_directive;
19 |
--------------------------------------------------------------------------------
/PL-SQL/cursor/rowcount.sql:
--------------------------------------------------------------------------------
1 | create table tq84_rowcount (a number);
2 |
3 | insert into tq84_rowcount values ( 42);
4 | insert into tq84_rowcount values ( 12);
5 | insert into tq84_rowcount values (1000);
6 |
7 |
8 | declare
9 |
10 | cursor c is select * from tq84_rowcount;
11 |
12 | begin
13 |
14 | for r in c loop
15 |
16 | dbms_output.put_line(to_char(r.a, '9999') || ' ' || c%rowcount);
17 |
18 | end loop;
19 |
20 | end;
21 | /
22 |
23 | drop table tq84_rowcount purge;
24 |
--------------------------------------------------------------------------------
/PL-SQL/exception/pragma_init_with_same_number/catcher.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_catcher as
2 |
3 | procedure go;
4 |
5 | end tq84_catcher;
6 | /
7 |
--------------------------------------------------------------------------------
/PL-SQL/exception/pragma_init_with_same_number/thrower_1.pkb:
--------------------------------------------------------------------------------
1 | create or replace package body tq84_thrower_1 as
2 |
3 | procedure go is begin
4 | raise_application_error(-20777, 'Package is tq84_thrower_1');
5 | end go;
6 |
7 | end tq84_thrower_1;
8 | /
9 |
--------------------------------------------------------------------------------
/PL-SQL/exception/pragma_init_with_same_number/thrower_1.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_thrower_1 as
2 |
3 | procedure go;
4 |
5 | exc exception;
6 | pragma exception_init(exc, -20777);
7 |
8 | end tq84_thrower_1;
9 | /
10 |
--------------------------------------------------------------------------------
/PL-SQL/exception/pragma_init_with_same_number/thrower_2.pkb:
--------------------------------------------------------------------------------
1 | create or replace package body tq84_thrower_2 as
2 |
3 | procedure go is begin
4 | raise_application_error(-20777, 'Package is tq84_thrower_2');
5 | end go;
6 |
7 | end tq84_thrower_2;
8 | /
9 |
--------------------------------------------------------------------------------
/PL-SQL/exception/pragma_init_with_same_number/thrower_2.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_thrower_2 as
2 |
3 | procedure go;
4 |
5 | exc exception;
6 | pragma exception_init(exc, -20777);
7 |
8 | end tq84_thrower_2;
9 | /
10 |
--------------------------------------------------------------------------------
/PL-SQL/exception/thrower_and_catcher/catcher.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_catcher as
2 |
3 | procedure go;
4 |
5 | end tq84_catcher;
6 | /
7 |
--------------------------------------------------------------------------------
/PL-SQL/exception/when_X_or_Y/run.sql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | procedure p(x in number) is
4 | begin
5 | tq84_bar.proc(x);
6 | exception
7 | when tq84_foo.exc_one then
8 | dbms_output.put_line('run.sql caught expected exc_one');
9 | when others then
10 | dbms_output.put_line('run.sql caught other error');
11 | end p;
12 |
13 |
14 | begin
15 |
16 | p(1);
17 | p(2);
18 | p(3);
19 |
20 | end;
21 | /
22 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/into.plsql:
--------------------------------------------------------------------------------
1 | create table tq84_exec_imm (
2 | a number,
3 | b number
4 | );
5 |
6 | insert into tq84_exec_imm values (1,2);
7 |
8 | declare
9 | a number;
10 | b number;
11 | begin
12 |
13 | execute immediate 'select a, b from tq84_exec_imm' into a, b;
14 |
15 | dbms_output.put_line('a: ' || a || ', b: ' || b);
16 |
17 | end;
18 | /
19 |
20 |
21 | drop table tq84_exec_imm purge;
22 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/into_rowtype.plsql:
--------------------------------------------------------------------------------
1 | create table tq84_exec_imm (
2 | a number,
3 | b number
4 | );
5 |
6 | insert into tq84_exec_imm values (1,2);
7 |
8 | declare
9 | r tq84_exec_imm%rowtype;
10 | begin
11 |
12 | execute immediate 'select * from tq84_exec_imm' into r;
13 |
14 | dbms_output.put_line('a: ' || r.a || ', b: ' || r.b);
15 |
16 | end;
17 | /
18 |
19 |
20 | drop table tq84_exec_imm purge;
21 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/using_in_out.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | n number := 21;
4 |
5 | begin
6 |
7 | execute immediate 'begin :1 := :1 * 2; end;' using in out n;
8 |
9 | dbms_output.put_line('n: ' || n);
10 |
11 | end;
12 | /
13 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/using_out.plsql:
--------------------------------------------------------------------------------
1 | declare
2 |
3 | n number;
4 |
5 | begin
6 |
7 | execute immediate 'begin :1 := 42; end;' using out n;
8 |
9 | dbms_output.put_line('n: ' || n);
10 |
11 | end;
12 | /
13 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/using_out_2.plsql:
--------------------------------------------------------------------------------
1 | declare
2 | n number;
3 | begin
4 |
5 | execute immediate 'declare l number; begin l := 42; :1 := l; end;' using out n;
6 |
7 | dbms_output.put_line('n: ' || n);
8 |
9 | end;
10 | /
11 |
--------------------------------------------------------------------------------
/PL-SQL/execute_immediate/using_out_nested_type.plsql:
--------------------------------------------------------------------------------
1 | create type tq84_number_t as table of number;
2 | /
3 |
4 |
5 |
6 | declare
7 | number_t tq84_number_t;
8 | begin
9 |
10 | execute immediate
11 | 'begin :1 := tq84_number_t(42,null,-1.2, 1e7); end;'
12 | using out number_t;
13 |
14 |
15 | for i in 1 .. number_t.count loop
16 | dbms_output.put_line('i: ' || number_t(i));
17 | end loop;
18 |
19 | end;
20 | /
21 |
22 | drop type tq84_number_t;
23 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/_run.sql:
--------------------------------------------------------------------------------
1 | @log-table
2 | @func
3 | @select
4 | @select-count-from-log-table
5 | @clean-up
6 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_call_log;
2 | drop function tq84_double;
3 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/func.sql:
--------------------------------------------------------------------------------
1 | create or replace function tq84_double(i number) return number deterministic
2 | is
3 | procedure write_log_entry
4 | is
5 | pragma autonomous_transaction;
6 | begin
7 | insert into tq84_call_log values (systimestamp, i);
8 | commit;
9 | end write_log_entry;
10 | begin
11 | write_log_entry;
12 | return i*2;
13 | end tq84_double;
14 | /
15 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/log-table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_call_log (
2 | tm timestamp(6),
3 | param_value number
4 | );
5 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/select-count-from-log-table.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_call_log;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/cache-result/select.sql:
--------------------------------------------------------------------------------
1 | set rowprefetch 20
2 | set arraysize 99
3 |
4 | truncate table tq84_call_log;
5 | select
6 | mod(level-1, 17) a,
7 | tq84_double(mod(level-1, 17)) b
8 | from
9 | dual connect by level <= 1000;
10 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/where-clause/_run.sql:
--------------------------------------------------------------------------------
1 | @ pkg
2 | @ tab
3 | @ select
4 |
5 | drop table tq84_tab;
6 | drop package tq84_pkg;
7 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/where-clause/select.sql:
--------------------------------------------------------------------------------
1 | set timing on
2 |
3 | select * from tq84_tab where id = tq84_pkg.f_non_deterministic(1);
4 | select * from tq84_tab where id = tq84_pkg.f_deterministic(1);
5 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/deterministic/where-clause/tab.sql:
--------------------------------------------------------------------------------
1 | create table tq84_tab (
2 | id number,
3 | tx varchar2(10)
4 | );
5 |
6 | insert into tq84_tab values (1, 'one');
7 | insert into tq84_tab values (2, 'two');
8 | insert into tq84_tab values (3, 'three');
9 |
10 | commit;
11 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/_run.sql:
--------------------------------------------------------------------------------
1 | @table
2 | @funcs
3 |
4 | set timing on
5 |
6 | @select-count
7 | @select-where
8 |
9 | @select-func
10 | @select-result_cache
11 | @select-deterministic
12 | @select-local
13 |
14 | set timing off
15 |
16 | @clean-up
17 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_tab;
2 | drop function tq84_func;
3 | drop function tq84_func_deterministic;
4 | drop function tq84_func_result_cache;
5 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-count.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_tab;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-deterministic.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_tab where tq84_func_deterministic(nm) = 1;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-func.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_tab where tq84_func (nm) = 1;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-local-deterministic.sql:
--------------------------------------------------------------------------------
1 | with function tq84_func_local(nm number) return integer deterministic is
2 | begin
3 | if nm = 42 then return 1; end if;
4 | return 0;
5 | end tq84_func_local;
6 | select count(*) from tq84_tab where tq84_func_local(nm) = 1;
7 | /
8 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-local.sql:
--------------------------------------------------------------------------------
1 | with function tq84_func_local(nm number) return integer is
2 | begin
3 | if nm = 42 then return 1; end if;
4 | return 0;
5 | end tq84_func_local;
6 | select count(*) from tq84_tab where tq84_func_local(nm) = 1;
7 | /
8 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-result_cache.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_tab where tq84_func_result_cache (nm) = 1;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/overhead-in-SQL/where/select-where.sql:
--------------------------------------------------------------------------------
1 | select count(*) from tq84_tab where nm = 42;
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/basic-example/data.sql:
--------------------------------------------------------------------------------
1 | drop table someData purge;
2 |
3 | create table someData (
4 | id varchar2(5) primary key,
5 | num number,
6 | txt varchar2(20)
7 | );
8 |
9 | insert into someData values ('foo', 42, 'twenty-four');
10 | insert into someData values ('bar', 99, 'ninety-nine');
11 | insert into someData values ('baz', -2, 'minus two' );
12 |
13 | commit;
14 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/basic-example/func.sql:
--------------------------------------------------------------------------------
1 | create or replace function selectData(p_id varchar2) return varchar2 sql_macro
2 | is begin
3 |
4 | return q'{
5 |
6 | select
7 | num,
8 | txt
9 | from
10 | someData
11 | where
12 | id = p_id -- Note that p_id is embedded in a string!
13 | }';
14 |
15 | end selectData;
16 | /
17 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/basic-example/select.sql:
--------------------------------------------------------------------------------
1 | select * from selectData('foo');
2 | -- NUM TXT
3 | -- ---------- --------------------
4 | -- 42 twenty-four
5 |
6 | select num, txt from selectData('bar');
7 | --
8 | -- NUM TXT
9 | -- ---------- --------------------
10 | -- 99 ninety-nine
11 |
12 | select txt, num from selectData('baz');
13 | --
14 | -- TXT NUM
15 | -- -------------------- ----------
16 | -- minus two -2
17 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/parameters/create-table.sql:
--------------------------------------------------------------------------------
1 | create table T (txt varchar2(10));
2 | create table T0 (txt varchar2(10));
3 | create table T1 (txt varchar2(10));
4 |
5 | insert into T values ('This is T' );
6 | insert into T0 values ('This is T0');
7 | insert into T1 values ('This is T1');
8 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/parameters/random-table-select.sql:
--------------------------------------------------------------------------------
1 | select * from randomTable();
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/parameters/random-table.sql:
--------------------------------------------------------------------------------
1 | create or replace function randomTable return varchar2 sql_macro
2 | is
3 | compile_date varchar2(19) := to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss');
4 | begin
5 |
6 | return '
7 | select
8 | ''' || compile_date || ''' compile_date,
9 | to_char(sysdate, ''yyyy-mm-dd hh24:mi:ss'') exec_date,
10 | txt
11 | from
12 | T' || mod(trunc(extract(second from systimestamp)), 2);
13 |
14 | end randomTable;
15 | /
16 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/parameters/tabN-select-1.sql:
--------------------------------------------------------------------------------
1 | select * from tabN(1);
2 |
--------------------------------------------------------------------------------
/PL-SQL/function-procedure/sql_macro/parameters/tabN.sql:
--------------------------------------------------------------------------------
1 | create or replace function tabN(n integer) return varchar2 sql_macro
2 | is
3 | begin
4 |
5 | dbms_output.put_line('tabN being called, n = ' || n);
6 |
7 | return 'select * from T' || mod(n, 2);
8 |
9 | end tabN;
10 | /
11 |
--------------------------------------------------------------------------------
/PL-SQL/loop/continue.plsql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 |
4 | for i in 1 .. 5 loop
5 |
6 | dbms_output.put_line('i: ' || i || ' ');
7 |
8 | for j in 1 .. 5 loop
9 |
10 | dbms_output.put_line(' j: ' || j);
11 |
12 | continue when i+j > 7;
13 |
14 | dbms_output.put_line('*');
15 |
16 |
17 |
18 | end loop;
19 |
20 | end loop;
21 |
22 |
23 | dbms_output.put_line('x');
24 |
25 |
26 | end;
27 | /
28 |
--------------------------------------------------------------------------------
/PL-SQL/loop/for_in_x_x.plsql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | dbms_output.put_line('for i in 5 .. 5');
4 | for i in 5 .. 5 loop
5 | dbms_output.put_line('i: ' || i);
6 | end loop;
7 |
8 | end;
9 | /
10 |
--------------------------------------------------------------------------------
/PL-SQL/loop/reverse.plsql:
--------------------------------------------------------------------------------
1 | begin
2 |
3 | for i in REVERSE 1 .. 10 loop
4 |
5 | dbms_output.put_line(i);
6 |
7 | end loop;
8 |
9 | end;
10 | /
11 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/pkg_a.pkb:
--------------------------------------------------------------------------------
1 | create or replace package body tq84_pkg_a as
2 |
3 | procedure prc_1 is begin
4 | null;
5 | end prc_1;
6 |
7 | procedure prc_2 is begin
8 | null;
9 | end prc_2;
10 |
11 | end tq84_pkg_a;
12 | /
13 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/pkg_a.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_pkg_a as
2 |
3 | procedure prc_1; pragma deprecate(prc_1, 'Don''t use tq84_pkg_a.prc_1, use prc_2');
4 | procedure prc_2;
5 |
6 | end tq84_pkg_a;
7 | /
8 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/pkg_b.pkb:
--------------------------------------------------------------------------------
1 | create or replace package body tq84_pkg_b as
2 |
3 | procedure run is
4 | begin
5 | tq84_pkg_a.prc_1;
6 | end run;
7 |
8 | end tq84_pkg_b;
9 | /
10 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/pkg_b.pks:
--------------------------------------------------------------------------------
1 | create or replace package tq84_pkg_b as
2 |
3 | procedure run;
4 |
5 | end tq84_pkg_b;
6 | /
7 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/recompile.sql:
--------------------------------------------------------------------------------
1 | alter session set plsql_warnings='enable:(6019, 6020, 6021, 6022)';
2 | alter package tq84_pkg_b compile;
3 | --
4 | -- SP2-0809: Package altered with compilation warnings
5 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/show-errors.sql:
--------------------------------------------------------------------------------
1 | show errors package body tq84_pkg_b;
2 |
3 | -- LINE/COL ERROR
4 | -- -------- -----------------------------------------------------------------
5 | -- 5/9 PLW-06020: reference to a deprecated entity: PRC_1 declared in
6 | -- unit TQ84_PKG_A[3,15]. Don't use tq84_pkg_a.prc_1, user prc_2
7 |
--------------------------------------------------------------------------------
/PL-SQL/pragma/deprecate/user_errors.sql:
--------------------------------------------------------------------------------
1 | select
2 | name,
3 | type,
4 | text
5 | from
6 | user_errors
7 | where
8 | message_number = 6020;
9 |
--------------------------------------------------------------------------------
/SQL/README.md:
--------------------------------------------------------------------------------
1 |
2 | select * from v$sqlcommand order by command_name;
3 |
--------------------------------------------------------------------------------
/SQL/_examples/lendings/_run.sql:
--------------------------------------------------------------------------------
1 | alter session set nls_date_format = 'yyyy-mm-dd';
2 |
3 | @ table
4 | @ data
5 | @ unpivot
6 | @ group-by
7 | @ active-months
8 | @ all-months
9 | @ model
10 |
11 | drop table tq84_lendings;
12 |
--------------------------------------------------------------------------------
/SQL/_examples/lendings/data.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_lendings values ('Peter', 'AAA', 4, date '2021-04-14', date '2021-10-04');
2 | insert into tq84_lendings values ('Peter', 'BBB', 22, date '2021-05-12', date '2021-11-02');
3 | insert into tq84_lendings values ('Peter', 'CCC', 7, date '2021-09-07', date '2021-10-18');
4 | insert into tq84_lendings values ('Peter', 'EEE', 9, date '2021-10-16', date '2021-11-15');
5 |
6 | insert into tq84_lendings values ('Maria', 'ZZZ', 14, date '2021-06-22', date '2021-09-12');
7 |
--------------------------------------------------------------------------------
/SQL/_examples/lendings/table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_lendings (
2 | whom varchar2(10),
3 | what varchar2( 5),
4 | value_ number ( 5),
5 | start_ date ,
6 | end_ date
7 | );
8 |
--------------------------------------------------------------------------------
/SQL/alter/session/commit-in-procedure/_run.sql:
--------------------------------------------------------------------------------
1 | @tab
2 | @pkg
3 |
4 | @exec
5 |
6 | drop package tq84_pkg_commit_test;
7 | drop table tq84_tab_commit_test;
8 |
--------------------------------------------------------------------------------
/SQL/alter/session/commit-in-procedure/tab.sql:
--------------------------------------------------------------------------------
1 | create table tq84_tab_commit_test (
2 | val number
3 | );
4 |
--------------------------------------------------------------------------------
/SQL/alter/session/time_zone.sql:
--------------------------------------------------------------------------------
1 | select
2 | dbtimezone,
3 | sessiontimezone
4 | from
5 | dual;
6 | --
7 | -- DBTIME SESSIONTIMEZONE
8 | -- ------ -----------------------
9 | -- +02:00 +01:00
10 |
11 |
12 | alter session set time_zone = '-3:00';
13 |
14 | select
15 | dbtimezone,
16 | sessiontimezone
17 | from
18 | dual;
19 | --
20 | -- DBTIME SESSIONTIMEZONE
21 | -- ------ ---------------------
22 | -- +02:00 -03:00
23 |
--------------------------------------------------------------------------------
/SQL/datatypes/lob/clob/to-lines/_run.sql:
--------------------------------------------------------------------------------
1 | @ table
2 | @ data
3 |
4 | column line format a20
5 | @ select
6 |
7 | drop table tq84_text;
8 |
--------------------------------------------------------------------------------
/SQL/datatypes/lob/clob/to-lines/select.sql:
--------------------------------------------------------------------------------
1 | select
2 | regexp_substr(txt, '.+', 1, level, 'm') line
3 | from
4 | tq84_text
5 | start with
6 | id = 2
7 | connect by
8 | prior id = id and
9 | level <= regexp_count(prior txt, '.+' , 1, 'm')
10 | ;
11 |
--------------------------------------------------------------------------------
/SQL/datatypes/lob/clob/to-lines/table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_text (
2 | id number primary key,
3 | txt clob
4 | );
5 |
--------------------------------------------------------------------------------
/SQL/datatypes/raw/rawtohex.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- Determine hex representation of "Hello world"
3 | --
4 | select
5 | rawtohex(
6 | utl_raw.cast_to_raw('Hello world')
7 | ) hex
8 | from
9 | dual;
10 |
11 | -- 48656C6C6F20776F726C64
12 |
--------------------------------------------------------------------------------
/SQL/datatypes/rowid/select.sql:
--------------------------------------------------------------------------------
1 | create table tq84_rowid (
2 | id number,
3 | col_1 varchar2(20)
4 | );
5 |
6 | insert into tq84_rowid values(1, 'foo');
7 | insert into tq84_rowid values(2, 'bar');
8 | insert into tq84_rowid values(3, 'baz');
9 |
10 | select
11 | rowid
12 | r.*
13 | from
14 | tq84_rowid r;
15 |
16 | drop table tq84_rowid;
17 |
--------------------------------------------------------------------------------
/SQL/datatypes/varchar2/null/concatenate.sql:
--------------------------------------------------------------------------------
1 | select
2 | text_1 || text_2 || NULL concatenated
3 | from
4 | tq84_null_test;
5 | --
6 | -- CONCATENATED
7 | -- ----------------------------------------
8 | -- helloworld
9 | -- other is null
10 | -- other is empty
11 |
--------------------------------------------------------------------------------
/SQL/datatypes/varchar2/null/create-table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_null_test (
2 | text_1 varchar2(20),
3 | text_2 varchar2(20)
4 | );
5 |
6 | insert into tq84_null_test values ('hello', 'world' );
7 | insert into tq84_null_test values (null , 'other is null' );
8 | insert into tq84_null_test values ('' , 'other is empty');
9 |
10 | commit;
11 |
--------------------------------------------------------------------------------
/SQL/datatypes/varchar2/null/select-eq-empty-string.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_null_test where text_1 = '';
2 |
--------------------------------------------------------------------------------
/SQL/datatypes/varchar2/null/select-is-null.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_null_test where text_1 is null;
2 | --
3 | -- TEXT_1 TEXT_2
4 | -- -------------------- --------------------
5 | -- other is null
6 | -- other is empty
7 |
--------------------------------------------------------------------------------
/SQL/functions/conversion/rowid-to-varchar2.sql:
--------------------------------------------------------------------------------
1 | create table tq84_rowid (
2 | id number,
3 | col_1 varchar2(20)
4 | );
5 |
6 | insert into tq84_rowid values(1, 'foo');
7 | insert into tq84_rowid values(2, 'bar');
8 | insert into tq84_rowid values(3, 'baz');
9 |
10 |
11 | select
12 | rowid,
13 | rowidtochar(rowid) c
14 | from
15 | tq84_rowid r;
16 |
17 |
18 | drop table tq84_rowid;
19 |
--------------------------------------------------------------------------------
/SQL/functions/date_related/dbtimezone.sql:
--------------------------------------------------------------------------------
1 | select
2 | dbtimezone
3 | from
4 | dual;
5 | --
6 | -- DBTIME
7 | -- ------
8 | -- +02:00
9 |
--------------------------------------------------------------------------------
/SQL/functions/date_related/seconds_to_hh24-mi-ss.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- 12345 seconds are 3 hours, 25 minutes and 45 seconds.
3 | --
4 | -- http://stackoverflow.com/a/13030680/180275
5 | --
6 | select to_char(
7 | to_date(12345, 'sssss'),
8 | 'hh24:mi:ss'
9 | )
10 | from dual;
11 |
--------------------------------------------------------------------------------
/SQL/functions/date_related/sessiontimezone.sql:
--------------------------------------------------------------------------------
1 | select
2 | sessiontimezone
3 | from
4 | dual;
5 | --
6 | -- SESSIONTIMEZONE
7 | -- -----------------------
8 | -- +01:00
9 |
10 |
11 | alter session set time_zone = '-3:00';
12 |
13 | select
14 | sessiontimezone
15 | from
16 | dual;
17 | --
18 | -- SESSIONTIMEZONE
19 | -- ---------------------
20 | -- -03:00
21 |
--------------------------------------------------------------------------------
/SQL/functions/date_related/sys_extract_utc.sql:
--------------------------------------------------------------------------------
1 | select
2 | sys_extract_utc(timestamp '2000-10-10 10:00:00 +3:00') utc_
3 | from
4 | dual;
5 |
6 | -- UTC_
7 | -- -----------------------------------------------
8 | -- 10.10.00 07:00:00.000000000
9 |
--------------------------------------------------------------------------------
/SQL/functions/date_related/systimestamp.sql:
--------------------------------------------------------------------------------
1 | declare
2 | t0 timestamp;
3 | t1 timestamp;
4 |
5 | diff_interval interval day(0) to second(6);
6 | diff_seconds number;
7 | begin
8 |
9 | t0 := systimestamp;
10 | t1 := systimestamp;
11 |
12 | diff_interval := t1 - t0;
13 | diff_seconds := extract(second from diff_interval);
14 |
15 |
16 | dbms_output.put_line('Diff: ' || diff_seconds || ' seconds.');
17 |
18 | end;
19 | /
20 |
--------------------------------------------------------------------------------
/SQL/functions/null_related/nullif.sql:
--------------------------------------------------------------------------------
1 | with expr as (
2 | select 'foo' val from dual union all
3 | select 'baz' val from dual union all
4 | select 'bar' val from dual union all
5 | select null val from dual
6 | )
7 | select
8 | first.val, second.val,
9 | nullif(first.val, second.val) "Null if equal, first otherwise",
10 | case when first.val = second.val then null else first.val end "same same"
11 | from
12 | expr first, expr second
13 | where
14 | first.val is not null;
15 |
--------------------------------------------------------------------------------
/SQL/functions/null_related/nvl2.sql:
--------------------------------------------------------------------------------
1 | create table tq84_nvl2 (
2 | a number
3 | );
4 |
5 | insert into tq84_nvl2 values (null);
6 | insert into tq84_nvl2 values ( 0);
7 | insert into tq84_nvl2 values ( 42);
8 |
9 | select
10 | a,
11 | nvl2(a, 'not null', 'null')
12 | from
13 | tq84_nvl2;
14 |
15 | drop table tq84_nvl2 purge;
16 |
--------------------------------------------------------------------------------
/SQL/functions/regular_expressions/regexp_substr/extract-between-delimiters.sql:
--------------------------------------------------------------------------------
1 | declare
2 | str varchar2(100) := 'foo bar >words and such< baz';
3 | begin
4 | dbms_output.put_line(regexp_substr(
5 | str , -- Text
6 | '[^><]+', -- Any repetation of characters that don't match the delimiters > and <
7 | 1 , -- Start at first position
8 | 2 -- Second occurence (The first is before >)
9 | )
10 | );
11 | end;
12 | /
13 |
14 |
--------------------------------------------------------------------------------
/SQL/functions/regular_expressions/regexp_substr/extract-number.sql:
--------------------------------------------------------------------------------
1 | select regexp_substr('foo3245bar', '\d+') from dual;
2 | --
3 | -- 2345
4 |
--------------------------------------------------------------------------------
/SQL/functions/strings/repeating_strings.sql:
--------------------------------------------------------------------------------
1 | declare
2 | result varchar2(100);
3 | str varchar2( 10);
4 | n number;
5 | begin
6 |
7 | str :='foo';
8 | n := 4; -- repeat 4 times
9 |
10 | result := rpad(str, n*length(str), str);
11 |
12 | dbms_output.put_line('result: ' || result);
13 | end;
14 | /
15 |
--------------------------------------------------------------------------------
/SQL/functions/sys_context/userenv_find-own-session.sql:
--------------------------------------------------------------------------------
1 | select
2 | ses.sid,
3 | sys_context('userenv', 'sid' ) ctx_sid,
4 | ses.audsid,
5 | sys_context('userenv', 'sessionid') ctx_sessionid
6 | from
7 | v$session ses
8 | where
9 | ses.sid = sys_context('userenv', 'sid' ) or
10 | ses.audsid = sys_context('userenv', 'sessionid');
11 |
--------------------------------------------------------------------------------
/SQL/functions/sys_guid.sql:
--------------------------------------------------------------------------------
1 | select
2 | sys_guid()
3 | from
4 | dual;
5 |
--------------------------------------------------------------------------------
/SQL/functions/text/substr/three-parameters.sql:
--------------------------------------------------------------------------------
1 | select
2 | substr(
3 | '1234567890', -- Text
4 | 5 , -- Start position
5 | 3 -- Length
6 | )
7 | from
8 | dual;
9 | --
10 | -- 567
11 |
--------------------------------------------------------------------------------
/SQL/functions/text/substr/two-parameters.sql:
--------------------------------------------------------------------------------
1 | select
2 | substr(
3 | '1234567890', -- Text
4 | 5 -- Start position
5 | )
6 | from
7 | dual;
8 | --
9 | -- 567890
10 |
--------------------------------------------------------------------------------
/SQL/functions/type-conversion/format-models/day-of-week.sql:
--------------------------------------------------------------------------------
1 | alter session set nls_territory='Switzerland';
2 | select to_char(date '2021-01-01','D') from dual;
3 | --
4 | -- 5
5 |
6 | alter session set nls_territory='America';
7 | select to_char(date '2021-01-01','D') from dual;
8 | --
9 | -- 6
10 |
--------------------------------------------------------------------------------
/SQL/functions/type-conversion/format-models/spell-julian-day.sql:
--------------------------------------------------------------------------------
1 | select
2 | to_char(date '-4712-01-01' , 'Jsp') as one,
3 | to_char(date '-4712-01-01' + 41, 'Jsp') as forty_two,
4 | to_char(date '-4712-01-01' + 998, 'Jsp') as nine_nine_nine
5 | from
6 | dual;
7 |
--------------------------------------------------------------------------------
/SQL/functions/type-conversion/to/number/default-on-conversion-error.sql:
--------------------------------------------------------------------------------
1 | select
2 | to_number( '22/3' default '-1' on conversion error) n1,
3 | to_number( '22.3' default '-1' on conversion error) n2,
4 | to_number(' 22.3' default '-1' on conversion error) n3,
5 | to_number(' 22.3x' default '-1' on conversion error) n4
6 | from
7 | dual;
8 |
--------------------------------------------------------------------------------
/SQL/functions/type-conversion/to/number/nls-param.sql:
--------------------------------------------------------------------------------
1 | select
2 | to_number('123456.78', '999999D99', q'[ nls_numeric_characters = '.,' ]' ) n1,
3 | to_number('123,456.78', '999G999D99', q'[ nls_numeric_characters = '.,' ]' ) n2
4 | from
5 | dual;
6 |
--------------------------------------------------------------------------------
/SQL/grant/_run.sql:
--------------------------------------------------------------------------------
1 | @ users-create
2 |
3 | @ table-create
4 |
5 | @ table-select
6 | @ table-update
7 | @ table-select
8 |
9 | @ users-drop
10 |
--------------------------------------------------------------------------------
/SQL/grant/table-create.sql:
--------------------------------------------------------------------------------
1 | connect usr_1/pw_1
2 |
3 | create table tab_1 (
4 | col_1 number,
5 | col_2 varchar2(10),
6 | col_3 varchar2(10),
7 | col_4 varchar2(10)
8 | );
9 |
10 | insert into tab_1 values (1, 'one', 'foo', 'important');
11 | insert into tab_1 values (2, 'two', 'bar', 'data!' );
12 |
13 | grant select,
14 | update( col_2, col_3)
15 | on tab_1
16 | to usr_2;
17 |
--------------------------------------------------------------------------------
/SQL/grant/table-select.sql:
--------------------------------------------------------------------------------
1 | connect usr_2/pw_2
2 |
3 | select
4 | *
5 | from
6 | usr_1.tab_1;
7 |
--------------------------------------------------------------------------------
/SQL/grant/table-update.sql:
--------------------------------------------------------------------------------
1 | update
2 | usr_1.tab_1
3 | set
4 | col_2 = 'TWO'
5 | where
6 | col_1 = 2;
7 |
8 | --
9 | -- ORA-01031: insufficient privileges
10 | --
11 | -- update
12 | -- usr_1.tab_1
13 | -- set
14 | -- col_4 = '***'
15 | -- where
16 | -- col_1 = 1;
17 |
--------------------------------------------------------------------------------
/SQL/grant/users-create.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 |
3 | create user usr_1
4 | identified by pw_1
5 | default tablespace data
6 | quota unlimited on data;
7 |
8 | create user usr_2
9 | identified by pw_2;
10 |
11 | grant connect,
12 | create table
13 | to usr_1;
14 |
15 | grant connect
16 | to usr_2;
17 |
--------------------------------------------------------------------------------
/SQL/grant/users-drop.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 |
3 | drop user usr_2;
4 | drop user usr_1 cascade;
5 |
--------------------------------------------------------------------------------
/SQL/insert/append_hint_ora_12838.sql:
--------------------------------------------------------------------------------
1 | create table tq84_ora_12838 (
2 | col_1 number,
3 | col_2 varchar2(30)
4 | );
5 |
6 |
7 | insert /*+ append */ into tq84_ora_12838 select rownum, object_name from all_objects where rownum < 10;
8 |
9 | --
10 | -- commit the transaction and the ORA-12838 disappears.
11 | --
12 | -- commit;
13 | --
14 |
15 | -- Without commit: ORA-12838
16 | select * from tq84_ora_12838;
17 |
18 | drop table tq84_ora_12838 purge;
19 |
--------------------------------------------------------------------------------
/SQL/insert/insert_all_01.sql:
--------------------------------------------------------------------------------
1 | create table tq84_insert_all (
2 | a number,
3 | b varchar2(10)
4 | );
5 |
6 | insert all
7 | into tq84_insert_all values (1, 'one' )
8 | into tq84_insert_all values (2, 'two' )
9 | into tq84_insert_all values (3, 'three')
10 | select 1 from dual;
11 |
12 | select * from tq84_insert_all;
13 |
14 | drop table tq84_insert_all purge;
15 |
--------------------------------------------------------------------------------
/SQL/select/12c/row_limiting_clause/fetch_first_n_percent_rows_only.sql:
--------------------------------------------------------------------------------
1 | create table tq84_table (
2 | id number,
3 | txt varchar2(10)
4 | );
5 |
6 | begin
7 |
8 | for r in 1 .. 10000 loop
9 |
10 | insert into tq84_table values (r, dbms_random.string('a', 10));
11 |
12 | end loop;
13 |
14 | end;
15 | /
16 |
17 | -- select 10 (= 0.1 percent of 10000) records:
18 | select * from tq84_table
19 | order by txt
20 | fetch first 0.1 percent rows only;
21 |
22 |
23 | drop table tq84_table purge;
24 |
--------------------------------------------------------------------------------
/SQL/select/12c/with_function.sql:
--------------------------------------------------------------------------------
1 | create table tq84_with_function (
2 | id number,
3 | txt varchar2(10)
4 | );
5 |
6 | insert into tq84_with_function values (1, 'one');
7 | insert into tq84_with_function values (2, 'two');
8 |
9 | with function dup (txt in varchar2) return varchar2 as
10 | begin
11 | return txt || '-' || txt;
12 | end dup;
13 | select
14 | id,
15 | substr(dup(txt), 1, 40) dup
16 | from
17 | tq84_with_function
18 | /
19 |
20 | drop table tq84_with_function;
21 |
22 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/approx_count_distinct.sql:
--------------------------------------------------------------------------------
1 | select
2 | approx_count_distinct(object_name) approx_cnt,
3 | count(distinct(object_name)) exact_cnt
4 | from
5 | dba_objects;
6 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/listagg/clob/v1/func.sql:
--------------------------------------------------------------------------------
1 | create or replace function tq84_listagg_f(
2 | value varchar2,
3 | separator varchar2
4 | ) return clob
5 | parallel_enable
6 | aggregate using tq84_listagg_t;
7 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/listagg/clob/v1/test.sql:
--------------------------------------------------------------------------------
1 | select
2 | tq84_listagg_f(object_name, ' - ')
3 | from
4 | user_objects
5 | ;
6 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/listagg/clob/v2/func.sql:
--------------------------------------------------------------------------------
1 | create or replace function tq84_listagg_f(
2 | rec tq84_listagg_rec,
3 | separator varchar2
4 | )
5 | return clob authid definer
6 | -- parallel_enable
7 | aggregate using tq84_listagg_t;
8 | /
9 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/listagg/clob/v2/test.sql:
--------------------------------------------------------------------------------
1 | select
2 | tq84_listagg_f(tq84_listagg_rec(object_name, object_id), ' - ')
3 | from
4 | user_objects
5 | ;
6 |
7 | select
8 | tq84_listagg_f(tq84_listagg_rec(column_name, -column_id), ',')
9 | from
10 | user_tab_columns
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/nested/run_.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_nested_aggr_func_test;
2 |
3 | @create-table.sql
4 | @select.sql
5 | @select-nested.sql
6 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/nested/select-nested.sql:
--------------------------------------------------------------------------------
1 | select
2 | sum(avg(val_2)) val_2_sum_of_avg,
3 | avg(sum(val_2)) val_2_avg_of_sum
4 | from
5 | tq84_nested_aggr_func_test
6 | group by
7 | val_1
8 | ;
9 | --
10 | -- VAL_2_SUM_OF_AVG VAL_2_AVG_OF_SUM
11 | -- ---------------- ----------------
12 | -- 19 10
13 |
--------------------------------------------------------------------------------
/SQL/select/aggregate/nested/select.sql:
--------------------------------------------------------------------------------
1 | select
2 | val_1 val_1 ,
3 | avg(val_2) val_2_avg,
4 | sum(val_2) val_2_sum
5 | from
6 | tq84_nested_aggr_func_test
7 | group by
8 | val_1;
9 | --
10 | -- VAL_1 VAL_2_AVG VAL_2_SUM
11 | -- ----- ---------- ----------
12 | -- GHI 10 10
13 | -- DEF 7 14
14 | -- ABC 2 6
15 |
--------------------------------------------------------------------------------
/SQL/select/analytical_functions/keep_dense_rank/column_values_of_row_with_max_value.sql:
--------------------------------------------------------------------------------
1 | create table tq84_a (
2 | a varchar2(10),
3 | b number
4 | );
5 |
6 | insert into tq84_a values ('a', 1);
7 | insert into tq84_a values ('b', 2);
8 | insert into tq84_a values ('a', 4);
9 | insert into tq84_a values ('b', 3);
10 |
11 | select
12 | max(a) keep (dense_rank first order by b desc) a,
13 | max(b) keep (dense_rank first order by b desc) b
14 | from
15 | tq84_a
16 | ;
17 |
18 | drop table tq84_a purge;
19 |
--------------------------------------------------------------------------------
/SQL/select/distinct/distinct_01.sql:
--------------------------------------------------------------------------------
1 | create table tq84_distinct (
2 | a number
3 | );
4 |
5 | insert into tq84_distinct values (1);
6 | insert into tq84_distinct values (1);
7 |
8 | insert into tq84_distinct values (2);
9 |
10 | insert into tq84_distinct values (3);
11 |
12 | insert into tq84_distinct values (4);
13 | insert into tq84_distinct values (4);
14 |
15 | select distinct a from tq84_distinct;
16 |
17 | drop table tq84_distinct purge;
18 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/ancestor-descendant/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table parent_child purge;
2 | drop procedure is_ancestor_descendant;
3 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/ancestor-descendant/create-table.sql:
--------------------------------------------------------------------------------
1 | create table parent_child(
2 | parent_ varchar2(20),
3 | child_ varchar2(20)
4 | );
5 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/ancestor-descendant/try.sql:
--------------------------------------------------------------------------------
1 | exec is_ancestor_descendant('ab', 'abet');
2 | exec is_ancestor_descendant('b' , 'bi' );
3 | exec is_ancestor_descendant('a' , 'biq' );
4 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table directed_graph purge;
2 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/create-table.sql:
--------------------------------------------------------------------------------
1 | create table directed_graph (
2 | node_from char(1),
3 | node_to char(1)
4 | );
5 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/directed-graph.txt:
--------------------------------------------------------------------------------
1 | A-->C<--D-->F-->L
2 | | | ^ | ^
3 | v v | v |
4 | B H-->I J-->K
5 | | | |
6 | v v v
7 | E G M
8 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/nodes-reachable-from-A-nocycle.sql:
--------------------------------------------------------------------------------
1 | select
2 | lpad(' ', level-1) || node_from || '->' || node_to
3 | from
4 | directed_graph
5 | start with
6 | node_from = 'A'
7 | connect by nocycle
8 | prior node_to = node_from;
9 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/nodes-reachable-from-A.sql:
--------------------------------------------------------------------------------
1 | select
2 | lpad(' ', level-1) || node_from || '->' || node_to
3 | from
4 | directed_graph
5 | start with
6 | node_from = 'A'
7 | connect by
8 | prior node_to = node_from;
9 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/nocycle/nodes-reachable-from-F.sql:
--------------------------------------------------------------------------------
1 | select
2 | lpad(' ', level-1) || node_from || '->' || node_to
3 | from
4 | directed_graph
5 | start with
6 | node_from = 'F'
7 | connect by
8 | prior node_to = node_from;
9 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/pruning-branches/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table prune_test purge;
2 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/pruning-branches/create-table.sql:
--------------------------------------------------------------------------------
1 | create table prune_test (
2 | parent number,
3 | child number
4 | );
5 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/pruning-branches/select-data.sql:
--------------------------------------------------------------------------------
1 | select
2 | lpad(' ', 2*level) || child
3 | from
4 | prune_test
5 | start with
6 | parent is null
7 | connect by
8 | prior child = parent and
9 | parent not in (1, 71) -- Exclude children below and 71
10 | ;
11 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/recursive-additions/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table recursive_additions purge;
2 |
3 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/recursive-additions/create-table.sql:
--------------------------------------------------------------------------------
1 | set feedback off
2 |
3 | create table recursive_additions (
4 | parent number,
5 | child number
6 | --constraint uq_tcb unique (child)
7 | );
8 |
9 | comment on table recursive_additions is 'The sum of all children with the same parent is equal to this parent';
10 |
--------------------------------------------------------------------------------
/SQL/select/hierarchical_queries/start-with_connect-by/recursive-additions/select-hierarchically.sql:
--------------------------------------------------------------------------------
1 | select
2 | lpad(' ',2*(level-1)) || to_char(child) s
3 | from
4 | recursive_additions
5 | start with
6 | parent is null
7 | connect by
8 | prior child = parent;
9 |
--------------------------------------------------------------------------------
/SQL/select/join/apply/cross/ex-1/cleanup.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_right purge;
2 | drop table tq84_left purge;
3 |
--------------------------------------------------------------------------------
/SQL/select/join/apply/cross/ex-1/data.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_left values (1, 'foo');
2 | insert into tq84_left values (2, 'bar');
3 | insert into tq84_left values (3, 'baz');
4 |
5 | insert into tq84_right values (1, 1.01);
6 | insert into tq84_right values (1, 10.10);
7 | insert into tq84_right values (1, 100.00);
8 |
9 | insert into tq84_right values (2, 222.22);
10 |
11 | insert into tq84_right values (3, 300.12);
12 | insert into tq84_right values (3, 33.21);
13 |
14 | commit;
15 |
--------------------------------------------------------------------------------
/SQL/select/join/apply/cross/ex-1/select.sql:
--------------------------------------------------------------------------------
1 | select
2 | l.text,
3 | a.total
4 | from
5 | tq84_left l cross apply
6 | (select
7 | sum(r.val) total
8 | from
9 | tq84_right r
10 | where
11 | r.id_left = l.id
12 | ) a;
13 | --
14 | -- foo 111.11
15 | -- bar 222.22
16 | -- baz 333.33
17 |
--------------------------------------------------------------------------------
/SQL/select/join/apply/cross/ex-1/tables.sql:
--------------------------------------------------------------------------------
1 | create table tq84_left (
2 | id integer primary key,
3 | text varchar2(3) not null
4 | );
5 |
6 | create table tq84_right (
7 | id_left integer not null references tq84_left,
8 | val number(5,2)
9 | );
10 |
--------------------------------------------------------------------------------
/SQL/select/join/outer_join/pesky_outer_join/README.md:
--------------------------------------------------------------------------------
1 | See [my blog](http://renenyffenegger.blogspot.ch/2014/09/oh-that-pesky-oracle-outer-join-symbol.html).
2 |
--------------------------------------------------------------------------------
/SQL/select/join/outer_join/pesky_outer_join/inkscape.svgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/SQL/select/join/outer_join/pesky_outer_join/inkscape.svgz
--------------------------------------------------------------------------------
/SQL/select/match_recognize/find-consecutive-rows/one-row-per-match.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_consecutive_rows
2 | match_recognize (
3 | order by id
4 | measures
5 | min(id) start_id,
6 | max(id) end_id
7 | pattern (R C*)
8 | define C as id = prev(id) + 1
9 | );
10 | --
11 | -- START_ID END_ID
12 | -- ---------- ----------
13 | -- 1 3
14 | -- 5 5
15 | -- 8 11
16 | -- 20 20
17 |
--------------------------------------------------------------------------------
/SQL/select/misc/csv_to_columns/col-format.sql:
--------------------------------------------------------------------------------
1 | column col_1 format a10
2 | column col_2 format a10
3 | column col_3 format a10
4 | column col_4 format a10
5 |
--------------------------------------------------------------------------------
/SQL/select/misc/csv_to_columns/create-table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_csv_data (
2 | csv_line varchar2(100)
3 | );
4 |
--------------------------------------------------------------------------------
/SQL/select/misc/csv_to_columns/drop-table.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_csv_data purge;
2 |
--------------------------------------------------------------------------------
/SQL/select/misc/csv_to_columns/insert-values.sql:
--------------------------------------------------------------------------------
1 | insert into tq84_csv_data values ( 'one,two,three,four');
2 | insert into tq84_csv_data values ( 'foo,bar,baz,qux' );
3 | insert into tq84_csv_data values ( '1,,3,' );
4 | insert into tq84_csv_data values ( 'i,ii,iii,iv' );
5 | insert into tq84_csv_data values ( ' ,**,***,****' );
6 | insert into tq84_csv_data values ( ',,,' );
7 |
--------------------------------------------------------------------------------
/SQL/select/misc/csv_to_columns/run-in-sqlplus.sql:
--------------------------------------------------------------------------------
1 | @create-table
2 | @insert-values
3 | @col-format
4 | @select
5 | @drop-table
6 |
--------------------------------------------------------------------------------
/SQL/select/misc/sample/select-approx-5-percent.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sample_src (
2 | id number
3 | );
4 |
5 | insert into tq84_sample_src
6 | select level from dual
7 | connect by level <= 1000;
8 |
9 | select count(*) from tq84_sample_src;
10 | -- 1000
11 |
12 | create table tq84_sample_dest as
13 | select * from tq84_sample_src sample (5);
14 |
15 | select count(*) from tq84_sample_dest;
16 | -- 52
17 |
18 | select * from tq84_sample_dest;
19 |
20 | drop table tq84_sample_src purge;
21 | drop table tq84_sample_dest purge;
22 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/_run.sql:
--------------------------------------------------------------------------------
1 | set feedback off
2 | @ test-data
3 | @ minimal
4 | @ update-col-3
5 | @ condition
6 | @ add-record
7 | @ use-dimension-value
8 | @ update-with-previous
9 |
10 | @ err-32611
11 | @ err-32613
12 | @ err-32622
13 | @ err-00984
14 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/add-record.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_1[ 7 ] = 101,
10 | col_2[ 7 ] = 102,
11 | col_3[ 7 ] = 103
12 | )
13 | ;
14 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/condition.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_3[row_ > 3] = 42
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/err-00984.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_1[row_] = col_1 * 2
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/err-32611.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_3[cv() > 3] = 42
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/err-32613.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures (col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_1 = col_1 * 2
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/err-32622.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_1[row_] = col_2[row_] * col_3[row_]
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/minimal.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | /* rules go here */
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/update-col-3.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_3[any] = 42
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/update-with-previous.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_3[any] = nvl(col_2[cv()-1], -9999)
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/model/intro/use-dimension-value.sql:
--------------------------------------------------------------------------------
1 | select
2 | *
3 | from
4 | tq84_model_clause
5 | model
6 | dimension by ( row_ )
7 | measures ( col_1, col_2, col_3, col_4, col_5 )
8 | (
9 | col_3[any] = cv(row_) * 111
10 | )
11 | ;
12 |
--------------------------------------------------------------------------------
/SQL/select/partition_extension_clause/README.md:
--------------------------------------------------------------------------------
1 |
2 | ## Links
3 | [Table partitions](https://github.com/ReneNyffenegger/oracle-patterns/tree/master/DatabaseObjects/Tables/Partitions)
4 |
--------------------------------------------------------------------------------
/SQL/select/pivot/un/visualized.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/SQL/select/pivot/un/visualized.png
--------------------------------------------------------------------------------
/SQL/select/skip_locked/call_process_next_item.sql:
--------------------------------------------------------------------------------
1 | set feedback off
2 |
3 | set timing on
4 | begin
5 | tq84_process_next_item;
6 | end;
7 | /
8 |
9 | exit
10 |
--------------------------------------------------------------------------------
/SQL/select/skip_locked/create_tab.sql:
--------------------------------------------------------------------------------
1 | create table tq84_queue (
2 | item number(7) primary key,
3 | status varchar2(4) not null check (status in ('TODO', 'DONE'))
4 | );
5 |
--------------------------------------------------------------------------------
/SQL/select/skip_locked/insert_initial.sql:
--------------------------------------------------------------------------------
1 | set feedback off
2 |
3 | insert into tq84_queue values (4, 'TODO');
4 | insert into tq84_queue values (5, 'TODO');
5 | insert into tq84_queue values (6, 'TODO');
6 | insert into tq84_queue values (1, 'TODO');
7 | insert into tq84_queue values (2, 'TODO');
8 | insert into tq84_queue values (3, 'TODO');
9 |
10 | commit;
11 |
--------------------------------------------------------------------------------
/SQL/select/skip_locked/install.sql:
--------------------------------------------------------------------------------
1 | drop procedure tq84_process_next_item;
2 | drop table tq84_queue;
3 |
4 | @create_tab.sql
5 | @insert_initial.sql
6 | @process_next_item.plsql
7 |
8 | prompt execute process_items.bat now.
9 |
--------------------------------------------------------------------------------
/SQL/select/top_n/12c-30-pct.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | order by
5 | num
6 | fetch first 30 percent rows only;
7 |
--------------------------------------------------------------------------------
/SQL/select/top_n/12c-first-3-rows-with-ties.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | order by
5 | num
6 | fetch first 3 rows with ties;
7 |
--------------------------------------------------------------------------------
/SQL/select/top_n/12c-first-3-rows.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | order by
5 | num
6 | fetch first 3 rows only;
7 |
--------------------------------------------------------------------------------
/SQL/select/top_n/12c-first-row.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | order by
5 | num
6 | fetch first row only;
7 |
--------------------------------------------------------------------------------
/SQL/select/top_n/12c-offset-4-next-2.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | order by
5 | num
6 | offset 4 rows
7 | fetch next 2 rows only;
8 |
--------------------------------------------------------------------------------
/SQL/select/top_n/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table top_n_test purge;
2 |
--------------------------------------------------------------------------------
/SQL/select/top_n/row_number-paging.sql:
--------------------------------------------------------------------------------
1 | select
2 | num,
3 | txt,
4 | lng
5 | from (
6 | select
7 | t.*,
8 | row_number() over (order by num) r
9 | from
10 | top_n_test t
11 | )
12 | where
13 | r between 4 and 6;
14 |
--------------------------------------------------------------------------------
/SQL/select/top_n/rownum-inner-query.sql:
--------------------------------------------------------------------------------
1 | select * from (
2 | select *
3 | from
4 | top_n_test
5 | order by
6 | num
7 | )
8 | where
9 | rownum < 4;
10 |
--------------------------------------------------------------------------------
/SQL/select/top_n/rownum-paging.sql:
--------------------------------------------------------------------------------
1 | select * from (
2 | select *
3 | from
4 | top_n_test
5 | order by
6 | num
7 | )
8 | where
9 | rownum between 4 and 6;
10 |
--------------------------------------------------------------------------------
/SQL/select/top_n/rownum-wrong.sql:
--------------------------------------------------------------------------------
1 | select *
2 | from
3 | top_n_test
4 | where
5 | rownum < 4
6 | order by
7 | num;
8 |
--------------------------------------------------------------------------------
/SQL/statement/nouns/session/alter/set/current_schema/execute-immediate/_run.sql:
--------------------------------------------------------------------------------
1 | connect rene/rene
2 | @create-users.sql
3 |
4 | connect pkg_owner/pw
5 | @pkg-owner
6 |
7 | connect pkg_user/pw
8 | @pkg-user
9 |
10 | connect rene/rene
11 | @clean-up.sql
12 |
--------------------------------------------------------------------------------
/SQL/statement/nouns/session/alter/set/current_schema/execute-immediate/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop user pkg_user cascade;
2 | drop user pkg_owner cascade;
3 |
--------------------------------------------------------------------------------
/SQL/statement/nouns/session/alter/set/current_schema/execute-immediate/create-users.sql:
--------------------------------------------------------------------------------
1 | create user pkg_owner identified by pw default tablespace data quota unlimited on data;
2 | create user pkg_user identified by pw default tablespace data quota unlimited on data;
3 |
4 | grant create session, create procedure to pkg_owner;
5 | grant create session to pkg_user;
6 |
--------------------------------------------------------------------------------
/SQL/statement/nouns/session/alter/set/current_schema/execute-immediate/pkg-user.sql:
--------------------------------------------------------------------------------
1 | begin
2 | pkg_owner.pkg_definer .do_something;
3 | pkg_owner.pkg_current_user.do_something;
4 | end;
5 | /
6 |
--------------------------------------------------------------------------------
/SQLLoader/.gitignore:
--------------------------------------------------------------------------------
1 | *.log
2 | *.bad
3 | *.dsc
4 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/Binary-code.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/SQLLoader/binary-data/Binary-code.jpg
--------------------------------------------------------------------------------
/SQLLoader/binary-data/Eschenbergturm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/SQLLoader/binary-data/Eschenbergturm.jpg
--------------------------------------------------------------------------------
/SQLLoader/binary-data/Oracle-Buildings.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/SQLLoader/binary-data/Oracle-Buildings.jpg
--------------------------------------------------------------------------------
/SQLLoader/binary-data/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_blob (
2 | filename varchar2(20),
3 | author varchar2(16),
4 | url varchar2(80),
5 | image blob
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/create_table_long_raw.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_long_raw (
2 | filename varchar2(20),
3 | author varchar2(16),
4 | url varchar2(80),
5 | image long raw
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/file-index.dat:
--------------------------------------------------------------------------------
1 | Binary-code.jpg|Christiaan Colen|https://ccsearch.creativecommons.org/photos/f63dd034-4de4-49c8-a500-270aedec50c5
2 | Eschenbergturm.jpg|Nouhailler|https://ccsearch.creativecommons.org/photos/bb7d21fe-40de-46cb-a6e1-02df76cfa15a
3 | Oracle-Buildings.jpg|Otto Gelderman|https://ccsearch.creativecommons.org/photos/53cbf2b7-0bc2-427a-abc3-cbf0413d9abb
4 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/load.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'file-index.dat'
3 | into table tq84_sql_loader_blob
4 | fields terminated by '|'
5 | (
6 | filename char(20),
7 | author char(16),
8 | url char(80),
9 | image lobfile(filename) terminated by eof
10 | )
11 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/load_long_raw_Binary-code.ctl:
--------------------------------------------------------------------------------
1 | options(bindsize=197032, rows=1)
2 | load data
3 | infile 'Binary-code.jpg' "fix 49258"
4 | concatenate 4 -- 4 * 49258 = 197032
5 | preserve blanks
6 | into table tq84_sql_loader_long_raw
7 | append
8 | (
9 | filename constant 'Binary-code.jpg' ,
10 | author constant 'Christiaan Colen',
11 | url constant 'https://ccsearch.creativecommons.org/photos/f63dd034-4de4-49c8-a500-270aedec50c5',
12 | image raw(197032)
13 | )
14 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/load_long_raw_Eschenbergturm.ctl:
--------------------------------------------------------------------------------
1 | options(bindsize=197032, rows=1)
2 | load data
3 | infile 'Eschenbergturm.jpg' "fix 35879"
4 | concatenate 5 -- 5 * 35789 = 179395
5 | preserve blanks
6 | into table tq84_sql_loader_long_raw
7 | append
8 | (
9 | filename constant 'Eschenbergturm.jpg' ,
10 | author constant 'Nouhailler',
11 | url constant 'https://ccsearch.creativecommons.org/photos/bb7d21fe-40de-46cb-a6e1-02df76cfa15a',
12 | image raw(179395)
13 | )
14 |
--------------------------------------------------------------------------------
/SQLLoader/binary-data/load_long_raw_Oracle-Buildings.ctl:
--------------------------------------------------------------------------------
1 | options(bindsize=267083, rows=1)
2 | load data
3 | infile 'Oracle-Buildings.jpg' "fix 14057"
4 | concatenate 19 -- 19 * 14057 = 267083
5 | preserve blanks
6 | into table tq84_sql_loader_long_raw
7 | append
8 | (
9 | filename constant 'Oracle-Buildings.jpg' ,
10 | author constant 'Otto Geldermann',
11 | url constant 'https://ccsearch.creativecommons.org/photos/53cbf2b7-0bc2-427a-abc3-cbf0413d9abb',
12 | image raw(267083)
13 | )
14 |
--------------------------------------------------------------------------------
/SQLLoader/ex-case-when/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_case_when (
2 | type_ varchar2(3),
3 | num integer
4 | );
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex-case-when/load.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load.dat' -- "str '\r\n'"
3 | truncate into table tq84_sql_loader_case_when
4 | fields terminated by ';' (
5 | type_ "case :type_
6 | when '1' then 'foo'
7 | when '2' then 'bar'
8 | when '3' then 'baz'
9 | else '???'
10 | end",
11 | num char
12 | )
13 |
--------------------------------------------------------------------------------
/SQLLoader/ex-case-when/load.dat:
--------------------------------------------------------------------------------
1 | 2;42
2 | 1;9
3 | 3;18
4 | 6;123
5 | 3;5
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex-express-optionally_enclosed_by/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_express (
2 | col_1 varchar( 3),
3 | col_2 varchar(10),
4 | num integer
5 | );
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex-express-optionally_enclosed_by/import_data.bat:
--------------------------------------------------------------------------------
1 | sqlldr rene/rene@ora18 ^
2 | data = some.dat ^
3 | table = tq84_sql_loader_express ^
4 | external_table = not_used ^
5 | field_names = first_ignore ^
6 | characterset = utf8 ^
7 | errors = 0 ^
8 | silent = header,feedback ^
9 | optionally_enclosed_by ='\"'
10 |
--------------------------------------------------------------------------------
/SQLLoader/ex-express-optionally_enclosed_by/some.dat:
--------------------------------------------------------------------------------
1 | col_1;col_2;col_3
2 | foo,abc,2
3 | bar,"def,hij",4
4 | baz,lmn,6
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex_02/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_2.ctl userid=rene
4 |
5 | select * from tq84_sql_loader_2;
6 |
7 | drop table tq84_sql_loader_2;
8 |
9 | prompt
10 | prompt Check load_2.bad file
11 | prompt
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_02/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_2 (
2 | field_1 varchar2(10),
3 | field_2 number
4 | );
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex_02/load_2.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load_2.dat' "str '\r\n'"
3 | insert
4 | into table tq84_sql_loader_2
5 | fields terminated by ','
6 | (
7 | field_1 char,
8 | field_2 integer external
9 | )
10 |
--------------------------------------------------------------------------------
/SQLLoader/ex_02/load_2.dat:
--------------------------------------------------------------------------------
1 | one,1
2 | two,2
3 | fifty,50
4 | eighty-eight,88
5 | one hundred,100
6 | fifteen,15
7 |
--------------------------------------------------------------------------------
/SQLLoader/ex_02/readme.txt:
--------------------------------------------------------------------------------
1 | http://www.adp-gmbh.ch/ora/tools/sql_loader/example_2.html
2 |
--------------------------------------------------------------------------------
/SQLLoader/ex_03/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_3.ctl userid=rene
4 |
5 | select * from tq84_sql_loader_3;
6 |
7 | drop table tq84_sql_loader_3 purge;
8 |
9 | prompt
10 | prompt Check the load_3.dsc file
11 | prompt
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_03/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_3 (
2 | field_1 varchar2(10),
3 | field_2 varchar2(10)
4 | );
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex_03/load_3.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load_3.dat' "str '\r\n'"
3 | discardfile 'load_3.dsc'
4 | insert
5 | into table tq84_sql_loader_3
6 | when field_2 = 'Fruit'
7 | fields terminated by ';'
8 | (
9 | field_1 char,
10 | field_2 char
11 | )
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_03/load_3.dat:
--------------------------------------------------------------------------------
1 | Banana;Fruit;
2 | Lemon;Fruit;
3 | Avocado;Fruit
4 | Ford;Car;
5 | Pear;Fruit;
6 | Apple;Fruit;
7 |
--------------------------------------------------------------------------------
/SQLLoader/ex_03/readme.txt:
--------------------------------------------------------------------------------
1 | http://www.adp-gmbh.ch/ora/tools/sql_loader/example_3.html
2 |
--------------------------------------------------------------------------------
/SQLLoader/ex_04/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_4.ctl userid=rene
4 |
5 | prompt
6 |
7 | select * from tq84_sql_loader_4_a;
8 |
9 | prompt
10 |
11 | select * from tq84_sql_loader_4_b;
12 |
13 | drop table tq84_sql_loader_4_a purge;
14 | drop table tq84_sql_loader_4_b purge;
15 |
--------------------------------------------------------------------------------
/SQLLoader/ex_04/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_4_a (
2 | field_1 varchar2(10),
3 | field_2 varchar2(10)
4 | );
5 |
6 | create table tq84_sql_loader_4_b (
7 | field_1 varchar2(10),
8 | field_2 varchar2(10)
9 | );
10 |
--------------------------------------------------------------------------------
/SQLLoader/ex_04/load_4.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load_4.dat' "str '\r\n'"
3 | discardfile 'load_4.dsc'
4 | insert
5 | into table tq84_sql_loader_4_a
6 | when field_2 = 'Fruit'
7 | (
8 | field_1 position(1) char(8),
9 | field_2 position(9) char(5)
10 | )
11 | into table tq84_sql_loader_4_b
12 | when field_2 = 'City'
13 | (
14 | field_1 position(1) char(8),
15 | field_2 position(9) char(5)
16 | )
17 |
--------------------------------------------------------------------------------
/SQLLoader/ex_04/load_4.dat:
--------------------------------------------------------------------------------
1 | Banana Fruit
2 | Lemon Fruit
3 | Tokyo City
4 | Avocado Fruit
5 | Boston City
6 | Ford Car
7 | Pear Fruit
8 | Apple Fruit
9 |
--------------------------------------------------------------------------------
/SQLLoader/ex_04/readme.txt:
--------------------------------------------------------------------------------
1 | http://www.adp-gmbh.ch/ora/tools/sql_loader/example_4.html
2 |
--------------------------------------------------------------------------------
/SQLLoader/ex_05/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_5.ctl userid=rene
4 |
5 | select id, to_char(dt, 'dd.mm.yyyy') dt from tq84_sql_loader_5;
6 |
7 | prompt
8 | prompt Note, record with "20101010" is also loaded
9 | prompt
10 |
11 | drop table tq84_sql_loader_5 purge;
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_05/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_5 (
2 | id number not null,
3 | dt date
4 | );
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex_05/load_5.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | into table tq84_sql_loader_5
3 | fields terminated by "|"
4 | (
5 | id,
6 | dt date "yyyy.mm.dd"
7 | )
8 |
--------------------------------------------------------------------------------
/SQLLoader/ex_05/load_5.dat:
--------------------------------------------------------------------------------
1 | 1|2012.12.12
2 | 2|2011.11.11
3 | 3|20101010
4 |
--------------------------------------------------------------------------------
/SQLLoader/ex_06/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_6 (
2 | id number not null,
3 | tx varchar2(4000)
4 | );
5 |
6 | create table tq84_sql_loader_6_ok (
7 | id number not null,
8 | tx varchar2(4000)
9 | );
10 |
--------------------------------------------------------------------------------
/SQLLoader/ex_06/load_6.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | into table tq84_sql_loader_6
3 | fields terminated by "|"
4 | (
5 | id,
6 | tx
7 | )
8 |
--------------------------------------------------------------------------------
/SQLLoader/ex_06/load_6.dat:
--------------------------------------------------------------------------------
1 | 1|This line should be fine
2 | 2|This line contains more than 255 characters and will cause an "Field in data file exceeds maximum length" error message. Of course, I need some more text here in order to reach this 255 character limit. For example, by adding some city names: New York, Los Angeles, Berlin, Berne, Lucerne, Winterthur, Basle, Paris, Tokyo, Cape Town etc.
3 | 3|This line should be fine, too
4 |
--------------------------------------------------------------------------------
/SQLLoader/ex_06/load_6_ok.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | into table tq84_sql_loader_6_ok
3 | fields terminated by "|"
4 | (
5 | id,
6 | tx char(4000)
7 | )
8 |
--------------------------------------------------------------------------------
/SQLLoader/ex_07/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_7.ctl userid=rene
4 |
5 | select * from tq84_sql_loader_7;
6 |
7 | drop table tq84_sql_loader_7;
8 |
9 | prompt
10 | prompt Check load_7.bad file
11 | prompt
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_07/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_7 (
2 | field_1 varchar2(10),
3 | field_2 varchar2(10),
4 | field_3 varchar2(10),
5 | field_4 varchar2(10)
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/ex_07/load_7.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load_7.dat' "str '\r\n'"
3 | insert
4 | into table tq84_sql_loader_7
5 | fields terminated by ','
6 | (
7 | field_3 char,
8 | field_2 char,
9 | field_4 char,
10 | field_1 char
11 | )
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_07/load_7.dat:
--------------------------------------------------------------------------------
1 | one,two,three,four
2 | 1,2,3,4
3 |
--------------------------------------------------------------------------------
/SQLLoader/ex_08/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_8.ctl userid=rene
4 |
5 | select * from tq84_sql_loader_8;
6 |
7 | drop table tq84_sql_loader_8;
8 |
9 | prompt
10 | prompt Check load_8.bad file
11 | prompt
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_08/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_8 (
2 | id number primary key,
3 | txt varchar2(20),
4 | num number,
5 | dt date
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/ex_08/load_8.csv:
--------------------------------------------------------------------------------
1 | id,txt,num,dt
2 | 1,"foo,bar,baz",44.22,21.02.2014
3 | 2,"one,two,three",31.28,06.06.2014
4 | 3,bla bla,-19.2,28.08.2014
5 |
--------------------------------------------------------------------------------
/SQLLoader/ex_08/load_8.ctl:
--------------------------------------------------------------------------------
1 | options(skip=1)
2 | load data
3 | infile 'load_8.csv'
4 | insert
5 | into table tq84_sql_loader_8
6 | fields
7 | terminated by ','
8 | optionally enclosed by '"'
9 | (
10 | id,
11 | txt,
12 | num "to_number(:num, '99999999999D9999', 'nls_numeric_characters=''.,''')",
13 | dt "to_date(:dt, 'dd.mm.yyyy')"
14 | )
15 |
--------------------------------------------------------------------------------
/SQLLoader/ex_09/README.md:
--------------------------------------------------------------------------------
1 | An example that loads dates. When these dates are empty, it inserts `sysdate` instead.
2 |
3 | See also [http://stackoverflow.com/questions/27830824/sqlloader-using-sysdate-if-incoming-value-is-blank](http://stackoverflow.com/questions/27830824/sqlloader-using-sysdate-if-incoming-value-is-blank).
4 |
--------------------------------------------------------------------------------
/SQLLoader/ex_09/all.sql:
--------------------------------------------------------------------------------
1 | start create_table
2 |
3 | host sqlldr control=load_09.ctl userid=rene/rene
4 |
5 | select * from tq84_sql_loader_09;
6 |
7 | drop table tq84_sql_loader_09 purge;
8 |
--------------------------------------------------------------------------------
/SQLLoader/ex_09/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_09 (
2 | txt varchar2(10) not null,
3 | dt date not null,
4 | num number not null
5 | );
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex_09/load_09.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'load_09.dat' "str '\r\n'"
3 | insert
4 | into table tq84_sql_loader_09
5 | (
6 | txt position( 1:10),
7 | dt position(11:20) "nvl(to_date(trim(:dt), 'dd.mm.yyyy'), sysdate)",
8 | num position(21:24)
9 | )
10 |
--------------------------------------------------------------------------------
/SQLLoader/ex_09/load_09.dat:
--------------------------------------------------------------------------------
1 | abcdefghij18.07.2015 42
2 | !!!!!!!!!! 9876
3 |
--------------------------------------------------------------------------------
/SQLLoader/ex_10/all.sql:
--------------------------------------------------------------------------------
1 | start create_table.sql
2 | start create_func.plsql
3 |
4 | host sqlldr control=load.ctl userid=rene/rene
5 |
6 | select * from tq84_sql_loader_10;
7 |
8 | prompt
9 | prompt check load.bad file
10 | prompt
11 |
--------------------------------------------------------------------------------
/SQLLoader/ex_10/create_func.plsql:
--------------------------------------------------------------------------------
1 | create function tq84_func(op varchar2, num1 in number, num2 in number) return number is
2 | begin
3 |
4 | if op = 'plus' then return num1 + num2; end if;
5 | if op = 'minus' then return num1 - num2; end if;
6 | if op = 'mult' then return num1 * num2; end if;
7 | if op = 'div' then return num1 / num2; end if;
8 | return 0;
9 |
10 | end tq84_func;
11 | /
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_10/create_table.sql:
--------------------------------------------------------------------------------
1 | @drop_if_exists tq84_sql_loader_10
2 |
3 | create table tq84_sql_loader_10 (
4 | id varchar2(10),
5 | result number
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/ex_10/data.csv:
--------------------------------------------------------------------------------
1 | id,op,num1,num2
2 | abc,plus,22,20
3 | def,minus,12,4
4 | ghi,mult,10,10
5 | jkl,div,35,7
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex_10/load.ctl:
--------------------------------------------------------------------------------
1 | options(skip=1)
2 | load data
3 | infile 'data.csv'
4 | insert
5 | into table tq84_sql_loader_10
6 | fields
7 | terminated by ','
8 | optionally enclosed by '"'
9 | (
10 | id,
11 | op boundfiller,
12 | num1 boundfiller,
13 | num2 boundfiller,
14 | result "tq84_func(:op, :num1, :num2)"
15 | )
16 |
--------------------------------------------------------------------------------
/SQLLoader/ex_11/all.sql:
--------------------------------------------------------------------------------
1 | @create_table.sql
2 |
3 | host sqlldr userid=rene/rene control=without_trailing_nullcols.ctl
4 |
5 | prompt Only one record loaded:
6 | select * from tq84_trailing_nullcols;
7 |
8 | host sqlldr userid=rene/rene control=with_trailing_nullcols.ctl
9 | prompt All (two) records loaded:
10 | select * from tq84_trailing_nullcols;
11 |
12 | drop table tq84_trailing_nullcols purge;
13 |
--------------------------------------------------------------------------------
/SQLLoader/ex_11/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_trailing_nullcols (
2 | col_1 varchar2(10),
3 | col_2 varchar2(10),
4 | col_3 varchar2(10)
5 | );
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex_11/some.dat:
--------------------------------------------------------------------------------
1 | col_1|col_2|col_3
2 | one|two|three
3 | foo||
4 |
--------------------------------------------------------------------------------
/SQLLoader/ex_11/with_trailing_nullcols.ctl:
--------------------------------------------------------------------------------
1 | options (skip=1, silent=(all))
2 | load data
3 | infile 'some.dat'
4 | into table tq84_trailing_nullcols
5 | truncate
6 | fields terminated by '|'
7 | trailing nullcols
8 | (
9 | col_1,
10 | col_2,
11 | col_3
12 | )
13 |
--------------------------------------------------------------------------------
/SQLLoader/ex_11/without_trailing_nullcols.ctl:
--------------------------------------------------------------------------------
1 | options (skip=1,silent=(all))
2 | load data
3 | infile 'some.dat'
4 | into table tq84_trailing_nullcols
5 | truncate
6 | fields terminated by '|'
7 | (
8 | col_1,
9 | col_2,
10 | col_3
11 | )
12 |
--------------------------------------------------------------------------------
/SQLLoader/ex_12_skip-columns/all.sql:
--------------------------------------------------------------------------------
1 | @create_table.sql
2 |
3 | host sqlldr userid=rene/rene control=load.ctl
4 |
5 | select * from tq84_sql_loader_12;
6 |
7 | drop table tq84_trailing_nullcols purge;
8 |
--------------------------------------------------------------------------------
/SQLLoader/ex_12_skip-columns/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_12 (
2 | col_1 varchar2(10),
3 | col_3 varchar2(10),
4 | col_5 varchar2(10)
5 | );
6 |
--------------------------------------------------------------------------------
/SQLLoader/ex_12_skip-columns/data.csv:
--------------------------------------------------------------------------------
1 | col_1,col_2,col_3,col_4,col_5
2 | one,two,three,four,five
3 | eins,zwei,drei,vier,fünf
4 |
--------------------------------------------------------------------------------
/SQLLoader/ex_12_skip-columns/load.ctl:
--------------------------------------------------------------------------------
1 | load data
2 | infile 'data.csv'
3 | insert
4 | into table tq84_sql_loader_12
5 | fields
6 | terminated by ','
7 | (
8 | col_1 ,
9 | col_2 filler,
10 | col_3 ,
11 | col_4 filler,
12 | col_5
13 | )
14 |
15 |
--------------------------------------------------------------------------------
/SQLLoader/ex_13_make-unique-indexes-unusable/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_tab_with_pk (
2 | id number,
3 | txt varchar2(10),
4 | --
5 | constraint tq84_tab_pk primary key (id)
6 | );
7 |
8 | insert into tq84_tab_with_pk values (1, 'foo');
9 | insert into tq84_tab_with_pk values (2, 'bar');
10 | insert into tq84_tab_with_pk values (3, 'baz');
11 |
12 | commit;
13 |
--------------------------------------------------------------------------------
/SQLLoader/ex_13_make-unique-indexes-unusable/tab_with_pk.ctl:
--------------------------------------------------------------------------------
1 | options (
2 | direct=true,
3 | errors=0,
4 | parallel=false
5 | )
6 | unrecoverable
7 | load data infile "tab_with_pk.dat"
8 | into table tq84_tab_with_pk
9 | append
10 | fields terminated by ","
11 | (
12 | id,
13 | txt
14 | )
15 |
--------------------------------------------------------------------------------
/SQLLoader/ex_13_make-unique-indexes-unusable/tab_with_pk.dat:
--------------------------------------------------------------------------------
1 | 7,seven
2 | 11,eleven
3 | 2,double
4 | 5,five
5 |
--------------------------------------------------------------------------------
/SQLLoader/fixed-width/all.sql:
--------------------------------------------------------------------------------
1 | @ create_table
2 |
3 | host sqlldr control=load_1.ctl userid=rene/rene
4 |
5 | column num format 99990.99
6 | select
7 | load_time,
8 | num,
9 | txt_1 || '<' txt_1,
10 | txt_2 || '<' txt_2
11 | from
12 | tq84_sql_loader_1;
13 |
14 | drop table tq84_sql_loader_1;
15 |
--------------------------------------------------------------------------------
/SQLLoader/fixed-width/create_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_sql_loader_1 (
2 | load_time date,
3 | num number(7,2),
4 | txt_1 varchar2(7),
5 | txt_2 varchar2(10)
6 | );
7 |
--------------------------------------------------------------------------------
/SQLLoader/fixed-width/load_1.dat:
--------------------------------------------------------------------------------
1 | 12345.67 one two abcdefghij
2 | 42.42 three ABC EF HIJ
3 | -9 four xx
4 | n/a yyy yy
5 | 7.777 !
6 |
--------------------------------------------------------------------------------
/SQLPlus/attribute/attribute.sql:
--------------------------------------------------------------------------------
1 | column foo format 999.99
2 |
3 | attribute foo
4 | -- COLUMN foo ON
5 | -- FORMAT 999.99
6 |
7 | prompt
8 | attribute error
9 | -- COLUMN ERROR ON
10 | -- FORMAT A65
11 | -- word_wrap
12 |
--------------------------------------------------------------------------------
/SQLPlus/echo/script.sql:
--------------------------------------------------------------------------------
1 | prompt selecting a message
2 |
3 | select
4 | 'hello world' message
5 | from
6 | dual;
7 |
--------------------------------------------------------------------------------
/SQLPlus/new-value/multiple-records.sql:
--------------------------------------------------------------------------------
1 | set feedback off
2 | set verify off
3 |
4 | create table new_value_test (
5 | col Varchar2(20)
6 | );
7 |
8 |
9 | insert into new_value_test values ('val one' );
10 | insert into new_value_test values ('val two' );
11 | insert into new_value_test values ('val three');
12 |
13 | column col new_value var
14 |
15 | select col from new_value_test;
16 |
17 | drop table new_value_test purge;
18 |
19 | prompt var is: &var
20 | /*
21 | var is: val three
22 | */
23 |
--------------------------------------------------------------------------------
/SQLPlus/set/exitcommit/exit_commit_off.sql:
--------------------------------------------------------------------------------
1 | set exitcommit off
2 |
3 | drop table tq84_exitcommit purge;
4 |
5 | create table tq84_exitcommit (a number);
6 |
7 | insert into tq84_exitcommit values (1);
8 | insert into tq84_exitcommit values (2);
9 |
10 | commit;
11 |
12 | insert into tq84_exitcommit values (3);
13 | insert into tq84_exitcommit values (4);
14 |
15 | exit
16 |
--------------------------------------------------------------------------------
/SQLPlus/set/exitcommit/exit_commit_on.sql:
--------------------------------------------------------------------------------
1 | set exitcommit on
2 |
3 | drop table tq84_exitcommit purge;
4 |
5 | create table tq84_exitcommit (a number);
6 |
7 | insert into tq84_exitcommit values (1);
8 | insert into tq84_exitcommit values (2);
9 |
10 | commit;
11 |
12 | insert into tq84_exitcommit values (3);
13 | insert into tq84_exitcommit values (4);
14 |
15 | exit
16 |
--------------------------------------------------------------------------------
/SQLPlus/set/exitcommit/run.bat:
--------------------------------------------------------------------------------
1 | sqlplus -S %connection% @exit_commit_off
2 | sqlplus -S %connection% @select
3 |
4 | sqlplus -S %connection% @exit_commit_on
5 | sqlplus -S %connection% @select
6 |
--------------------------------------------------------------------------------
/SQLPlus/set/exitcommit/select.sql:
--------------------------------------------------------------------------------
1 | select * from tq84_exitcommit;
2 | exit
3 |
--------------------------------------------------------------------------------
/SQLPlus/start/test_depth_limit.sql:
--------------------------------------------------------------------------------
1 | prompt Test depht limit
2 | start test_depth_limit.sql
3 |
--------------------------------------------------------------------------------
/SQLPlus/store/.gitignore:
--------------------------------------------------------------------------------
1 | stored.sql
2 |
--------------------------------------------------------------------------------
/SQLPlus/store/README.md:
--------------------------------------------------------------------------------
1 |
2 | `store` stores sqlplus settings into a file.
3 |
4 | `store` won't work if restriction level is set to at least 2 (`sqlplus -r 2 ...`)
5 |
--------------------------------------------------------------------------------
/SQLPlus/store/store_into_stored.sql:
--------------------------------------------------------------------------------
1 | store set stored
2 |
--------------------------------------------------------------------------------
/SQLPlus/whenever/sqlerror/exit.sql:
--------------------------------------------------------------------------------
1 | whenever sqlerror exit
2 |
3 | select q'[This statement is executed]' txt from dual;
4 |
5 | select 1 from "no such table";
6 |
7 | select q'[This statement won't be executed]' txt from dual;
8 |
--------------------------------------------------------------------------------
/UsersRoles/CloneUser/.gitignore:
--------------------------------------------------------------------------------
1 | create_cloned_user.sql
2 |
--------------------------------------------------------------------------------
/errors/ORA/06512_at-line/show-offending-line/_run.sql:
--------------------------------------------------------------------------------
1 | @ spec
2 | @ body
3 |
4 | @ exec-01.sql
5 | @ sqlerrm
6 | @ error-backtrace.sql
7 | @ show-code-line.sql
8 |
--------------------------------------------------------------------------------
/errors/ORA/06512_at-line/show-offending-line/error-backtrace.sql:
--------------------------------------------------------------------------------
1 | begin
2 | tq84_err_test.go;
3 | exception when others then
4 | dbms_output.put_line(dbms_utility.format_error_backtrace);
5 | end;
6 | /
7 | --
8 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 5
9 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 10
10 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 15
11 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 20
12 | -- ORA-06512: at line 2
13 |
--------------------------------------------------------------------------------
/errors/ORA/06512_at-line/show-offending-line/exec-01.sql:
--------------------------------------------------------------------------------
1 | begin
2 | tq84_err_test.go;
3 | end;
4 | /
5 | --
6 | -- ERROR at line 1:
7 | -- ORA-20888: Raising errors is easier than raising money
8 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 5
9 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 10
10 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 15
11 | -- ORA-06512: at "RENE.TQ84_ERR_TEST", line 20
12 | -- ORA-06512: at line 2
13 |
--------------------------------------------------------------------------------
/errors/ORA/06512_at-line/show-offending-line/spec.sql:
--------------------------------------------------------------------------------
1 | create or replace package tq84_err_test as
2 |
3 | procedure go;
4 |
5 | end tq84_err_test;
6 | /
7 |
--------------------------------------------------------------------------------
/errors/ORA/06512_at-line/show-offending-line/sqlerrm.sql:
--------------------------------------------------------------------------------
1 | begin
2 | tq84_err_test.go;
3 | exception when others then
4 | dbms_output.put_line(sqlerrm);
5 | end;
6 | /
7 | --
8 | -- ORA-20888: Raising errors is easier than raising money
9 |
--------------------------------------------------------------------------------
/expimp/.gitignore:
--------------------------------------------------------------------------------
1 | *.dmp
2 |
--------------------------------------------------------------------------------
/expimp/from_to_schema/all.sql:
--------------------------------------------------------------------------------
1 | connect / as sysdba
2 |
3 | @ create_schemas
4 |
5 | @ create_table
6 |
7 | host exp userid=rene/rene tables=(u1.tq84_table_for_export)
8 |
9 | host imp userid=rene/rene fromuser=u1 touser=u2
10 |
11 | drop user u1 cascade;
12 |
13 | @select
14 |
15 | drop user u2 cascade;
16 |
--------------------------------------------------------------------------------
/expimp/from_to_schema/create_schemas.sql:
--------------------------------------------------------------------------------
1 | create user u1 identified by u1
2 | default tablespace data
3 | quota unlimited on data;
4 |
5 | grant
6 | create session,
7 | create table to u1;
8 |
9 | create user u2 identified by u2
10 | default tablespace data
11 | quota unlimited on data;
12 |
13 | grant
14 | create session,
15 | create table to u2;
16 |
--------------------------------------------------------------------------------
/expimp/from_to_schema/create_table.sql:
--------------------------------------------------------------------------------
1 | connect u1/u1
2 |
3 | create table tq84_table_for_export (
4 | col_1 number,
5 | col_2 number
6 | );
7 |
8 | insert into tq84_table_for_export values (1,2);
9 | insert into tq84_table_for_export values (2,3);
10 |
11 | commit;
12 |
--------------------------------------------------------------------------------
/expimp/from_to_schema/select.sql:
--------------------------------------------------------------------------------
1 | connect rene/rene
2 |
3 | select * from u2.tq84_table_for_export;
4 |
--------------------------------------------------------------------------------
/expimp/schema/.gitignore:
--------------------------------------------------------------------------------
1 | exp.log
2 | imp.log
3 | just_a_user_clone.sql
4 |
--------------------------------------------------------------------------------
/expimp/schema/connect_with_admin_right.sql:
--------------------------------------------------------------------------------
1 | connect meta/meta
2 |
--------------------------------------------------------------------------------
/expimp/schema/drop_schema.sql:
--------------------------------------------------------------------------------
1 | @connect_with_admin_right
2 | drop user just_a_schema cascade;
3 |
--------------------------------------------------------------------------------
/expimp/table_with_trigger/01.sql:
--------------------------------------------------------------------------------
1 | start 01_table
2 | start 01_trigger
3 |
4 | insert into tq84_table_with_trigger (col_1) values (1);
5 | commit;
6 | select * from tq84_table_with_trigger;
7 |
8 | host exp tables=(tq84_table_with_trigger)
9 |
10 | drop table tq84_table_with_trigger;
11 |
12 | host imp full=yes
13 |
14 | insert into tq84_table_with_trigger (col_1) values (2);
15 | commit;
16 | select * from tq84_table_with_trigger;
17 |
--------------------------------------------------------------------------------
/expimp/table_with_trigger/01_table.sql:
--------------------------------------------------------------------------------
1 | create table tq84_table_with_trigger (
2 | col_1 number,
3 | col_2 varchar2(30)
4 | );
5 |
--------------------------------------------------------------------------------
/expimp/table_with_trigger/01_trigger.sql:
--------------------------------------------------------------------------------
1 | create trigger tq84_table_with_trigger_trg
2 | before insert
3 | on tq84_table_with_trigger
4 | for each row
5 | begin
6 |
7 | :new.col_2 := to_char(sysdate, 'hh24:mi:ss');
8 |
9 | end tq84_table_with_trigger_trg;
10 | /
11 |
--------------------------------------------------------------------------------
/init-parameters/README.md:
--------------------------------------------------------------------------------
1 | session_cached_cursors: Compare with `v$session_cursor_cache` (columm `maximum`).
2 |
3 | [parameter_valid_values: pivot.sql](https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/master/Installed/dynamic-performance-views/parameter_valid_values/pivot.sql)
4 |
--------------------------------------------------------------------------------
/misc/ODCI/aggregation/ex-01/_run.sql:
--------------------------------------------------------------------------------
1 | @ type
2 | @ type-body
3 | @ func
4 | @ test-table
5 | @ test-select
6 |
7 | @ clean-up
8 |
--------------------------------------------------------------------------------
/misc/ODCI/aggregation/ex-01/clean-up.sql:
--------------------------------------------------------------------------------
1 | drop table tq84_agg_test;
2 | drop function tq84_text_range;
3 | drop type tq84_text_range_t;
4 |
--------------------------------------------------------------------------------
/misc/ODCI/aggregation/ex-01/func.sql:
--------------------------------------------------------------------------------
1 | create or replace function tq84_text_range(
2 | value varchar2 -- The value to be aggregated per group
3 | ) return varchar2
4 | parallel_enable
5 | aggregate
6 | using
7 | tq84_text_range_t;
8 | /
9 |
--------------------------------------------------------------------------------
/misc/ODCI/aggregation/ex-01/test-select.sql:
--------------------------------------------------------------------------------
1 | column b_conc format a30
2 |
3 | select
4 | a,
5 | tq84_text_range(b) b_conc
6 | from
7 | tq84_agg_test
8 | group by
9 | a;
10 | --
11 | -- A B_CONC
12 | ------------ ------------------------------
13 | -- 1 colporteur .. skimmington
14 | -- 2 bergschrund .. suedehead
15 | -- 3 apoptosis .. xenology
16 |
--------------------------------------------------------------------------------
/misc/ODCI/table/multiplication/img/result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ReneNyffenegger/oracle-patterns/34f470b99f8af7ad61aa370fc366b3693916c3a5/misc/ODCI/table/multiplication/img/result.png
--------------------------------------------------------------------------------